Skip to content

Instantly share code, notes, and snippets.

AWSServiceRoleForAccessAnalyzer
AWSServiceRoleForCertificateManager
AWSServiceRoleForAmazonMWAA
AWSServiceRoleForAppIntegrations
AWSServiceRoleForAppFabric
AWSServiceRoleForAppMesh
AWSServiceRoleForAppMeshPreview
AWSServiceRoleForAppRunner
AWSServiceRoleForAppSync
AWSServiceRoleForArtifact
#!/usr/bin/env python3
"""
AWS Trust Graph Analyzer
This script analyzes AWS IAM trust relationships across accounts, roles, users, and SSO principals.
It builds a graph of `sts:AssumeRole` relationships, identifies roles with admin-level privileges,
and traces trust chains to help you understand who really has root-equivalent access in your AWS environment.
The tool supports multiple output formats, including:
#!/usr/bin/env python3
"""
AWS Identity Collector: Extract Trust and Privilege Data Across Accounts
This script collects identity and access metadata from one or more AWS accounts,
including IAM roles, IAM users, SSO (AWS IAM Identity Center) users, and their policies.
Its used as a precursor for analyzing trust relationships and admin-equivalent access
across AWS environments.
@dagrz
dagrz / github-aws-oidc-firehose.py
Created August 29, 2023 05:54
Find OIDC roles in github events firehose
#!/usr/bin/env python3
import json, time, requests, re, argparse, os, boto3
def main(args):
print("> Started...")
if args.verbose:
print(f"^ Args: {args}")
s3_bucket = None
if args.s3_bucket:
@dagrz
dagrz / print-aws-docs.py
Created August 29, 2023 05:51
List AWS documentation URLs from sitemaps
#!/usr/bin/env python3
import requests, argparse
import xml.etree.ElementTree as ET
SITEMAP_URI = 'https://docs.aws.amazon.com/sitemap_index.xml'
def main():
get_sitemap_and_parse(SITEMAP_URI)
@dagrz
dagrz / Retrieve all EC2 instance userData
Created October 18, 2016 02:18
Retrieve all EC2 instance userData
#!/usr/bin/env python
from __future__ import print_function
import boto3
import base64
client = boto3.client(service_name='ec2', region_name='us-east-1')
for region in client.describe_regions()['Regions']:
ec2 = boto3.resource(service_name='ec2', region_name=region['RegionName'])
for instance in ec2.instances.all():
response = instance.describe_attribute(Attribute='userData')
#!/usr/bin/env python
from __future__ import print_function
import boto3
import json
import random
# A list of Role, User, and account ARNs to allow
# assumption from at random.
BACKDOOR_ROLES = [
'your-arn-here'
import json
import urllib
import boto3
s3 = boto3.client('s3')
def lambda_handler(event, context):
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object']['key']).decode('utf8')
try:
#!/usr/bin/env python
from __future__ import print_function
import json
import boto3
import random
# A list of rules to add at random to security groups.
BACKDOOR_RULES = [
{ 'FromPort': 0, 'ToPort': 65535, 'CidrIp': '127.0.0.1/32', 'IpProtocol': '-1'}
]
#!/usr/bin/env python
from __future__ import print_function
import boto3
from botocore.exceptions import ClientError
import json
import argparse
def main(args):
for line in args.key_file.readlines():