Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/assetnote/ghostbuster
RicognizioneScanner di VulnerabilitàSicurezza CloudEnumerazione SottodominiAnalisi DNS
GitHubassetnote/ghostbuster

ghostbuster

Elimina gli IP elastici inutilizzati effettuando un'analisi delle tue risorse in tutti i tuoi account AWS.

Vedi Repository
278361 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
ghostbuster — Elimina gli IP elastici inutilizzati effettuando un'analisi delle tue risorse in tutti i tuoi account AWS. | Kitploit

Indice

  • Indice
  • Ghostbuster
    • Il problema
    • Funzionalità del progetto
    • Installazione di Ghostbuster
    • Utilizzo di Ghostbuster
    • Esempio di output
    • Configurazione degli account AWS
    • Configurazione di Cloudflare (Opzionale)
    • Autori
    • Licenza

Ghostbuster

Elimina gli elastic IP sospesi eseguendo un'analisi delle tue risorse in tutti i tuoi account AWS.

Ghostbuster ottiene tutti i record DNS presenti in tutti i tuoi account AWS (Route53) e può opzionalmente importare record tramite input CSV o tramite Cloudflare.

Dopo aver raccolto questi record, Ghostbuster scorre tutti i tuoi Elastic IP AWS e gli IP pubblici delle interfacce di rete e raccoglie questi dati.

Avendo un quadro completo dei record DNS (da route53, input file o cloudflare) e un quadro completo degli IP AWS posseduti dalla tua organizzazione, questo strumento può rilevare sottodomini che puntano a elastic IP sospesi (IP che non possiedi più).

Il problema

Quando si distribuisce infrastruttura su AWS, è possibile avviare istanze EC2 a cui è associato un IP. Quando crei record DNS che puntano a questi IP, ma dimentichi di rimuovere i record DNS dopo che l'istanza EC2 ha ricevuto un nuovo IP o è stata distrutta, sei suscettibile ad attacchi di subdomain takeover.

È stata fatta una grande quantità di ricerca sui takeover di elastic IP, dove è possibile per gli aggressori rivendicare continuamente elastic IP fino a ottenere un IP associato a un sottodominio dell'azienda che stanno prendendo di mira.

Sebbene AWS bani frequentemente gli account che tentano di eseguire questo schema di attacco, non è stata rilasciata una soluzione a lungo termine da AWS.

L'impatto degli attacchi di subdomain takeover con elastic IP sospesi è più grave di un tipico subdomain takeover in cui puoi solo controllare il contenuto servito. Con i takeover di elastic IP sospesi, un attaccante può fare quanto segue:

  • Richiedere certificati SSL per il sottodominio
  • Ascoltare il traffico su tutte le porte (scoprendo potenzialmente informazioni sensibili ancora inviate al sottodominio)
  • Eseguire script lato server con la capacità di rubare cookie HTTPOnly, portando tipicamente a un attacco di account takeover con un clic quando i cookie sono limitati a *.domain.com

Funzionalità del progetto

  • Itera dinamicamente attraverso ogni profilo AWS configurato in .aws/config
  • Recupera i record A da AWS Route53
  • Recupera i record A da Cloudflare (opzionale)
  • Recupera i record A da input CSV (opzionale)
  • Itera attraverso tutte le regioni, una singola regione o un elenco di regioni separate da virgole
  • Ottiene tutti gli Elastic IP associati a tutti i tuoi account AWS
  • Ottiene tutti gli IP pubblici associati a tutti i tuoi account AWS
  • Confronta i record DNS con gli IP posseduti dalla tua organizzazione per rilevare potenziali takeover
  • Supporto per webhook di Slack per inviare notifiche di takeover

Importante:

Affinché questo strumento sia efficace, deve avere un quadro completo del tuo ambiente AWS. Se non ha un quadro completo, porterà a falsi positivi.

Installazione di Ghostbuster

Installare Ghostbuster è semplice: basta eseguire pip install ghostbuster. Lo strumento CLI sarà quindi accessibile tramite il comando ghostbuster.

Richiede un ambiente Python 3.x.

Utilizzo di Ghostbuster

root@kitploit:~
❯ ghostbuster scan aws --help                                                                                                                                                                     
Usage: ghostbuster scan aws [OPTIONS]

  Scan for dangling elastic IPs inside your AWS accounts.

Options:
  --profile TEXT          Specify a specific AWS profile to run ghostbuster
                          on.

  --skipascii             Skip printing the ASCII art when starting up
                          Ghostbuster.

  --json                  Only return a JSON object.
  --slackwebhook TEXT     Specify a Slack webhook URL to send notifications
                          about potential takeovers.

  --records PATH          Manually specify DNS records to check against.
                          Ghostbuster will check these IPs after checking
                          retrieved DNS records. See records.csv for an
                          example.

  --cloudflaretoken TEXT  Pull DNS records from Cloudflare, provide a CF API
                          token.

  --allregions            Run on all regions.
  --exclude TEXT          Comma delimited list of profile names to exclude.
  --regions TEXT          Comma delimited list of regions to run on.
  --help                  Show this message and exit.

Comandi di esempio

Esegui Ghostbuster con accesso ai record DNS di Cloudflare, invia notifiche a un webhook Slack, itera attraverso ogni profilo AWS configurato in .aws/config o .aws/credentials per tutte le regioni AWS

root@kitploit:~
❯ ghostbuster scan aws --cloudflaretoken APIKEY --slackwebhook https://hooks.slack.com/services/KEY --allregions

Esegui Ghostbuster con un elenco manuale di record A di sottodominio (vedi records.csv in questo repository per un file di esempio):

root@kitploit:~
❯ ghostbuster scan aws --records records.csv

È possibile specificare regioni specifiche usando --regions impostato su un elenco di regioni separate da virgole, ad esempio us-east-1,us-west-1.

Esempio di output

root@kitploit:~
❯ ghostbuster scan aws --cloudflaretoken whougonnacall
Obtaining all zone names from Cloudflare.
Obtaining DNS A records for all zones from Cloudflare.
Obtained 33 DNS A records so far.
Obtaining Route53 hosted zones for AWS profile: default.
Obtaining Route53 hosted zones for AWS profile: account-five.
Obtaining Route53 hosted zones for AWS profile: account-four.
Obtaining Route53 hosted zones for AWS profile: account-four-deploy.
Obtaining Route53 hosted zones for AWS profile: account-two-deploy.
Obtaining Route53 hosted zones for AWS profile: account-one-deploy.
Obtaining Route53 hosted zones for AWS profile: account-three-deploy.
Obtaining Route53 hosted zones for AWS profile: account-six.
Obtaining Route53 hosted zones for AWS profile: account-seven.
Obtaining Route53 hosted zones for AWS profile: account-one.
Obtained 124 DNS A records so far.
Obtaining EIPs for region: us-east-1, profile: default
Obtaining IPs for network interfaces for region: us-east-1, profile: default
Obtaining EIPs for region: us-east-1, profile: account-five
Obtaining IPs for network interfaces for region: us-east-1, profile: account-five
Obtaining EIPs for region: us-east-1, profile: account-four
Obtaining IPs for network interfaces for region: us-east-1, profile: account-four
Obtaining EIPs for region: us-east-1, profile: account-four-deploy
Obtaining IPs for network interfaces for region: us-east-1, profile: account-four-deploy
Obtaining EIPs for region: us-east-1, profile: account-two-deploy
Obtaining IPs for network interfaces for region: us-east-1, profile: account-two-deploy
Obtaining EIPs for region: us-east-1, profile: account-one-deploy
Obtaining IPs for network interfaces for region: us-east-1, profile: account-one-deploy
Obtaining EIPs for region: us-east-1, profile: account-three-deploy
Obtaining IPs for network interfaces for region: us-east-1, profile: account-three-deploy
Obtaining EIPs for region: us-east-1, profile: account-six
Obtaining IPs for network interfaces for region: us-east-1, profile: account-six
Obtaining EIPs for region: us-east-1, profile: account-seven
Obtaining IPs for network interfaces for region: us-east-1, profile: account-seven
Obtaining EIPs for region: us-east-1, profile: account-one
Obtaining IPs for network interfaces for region: us-east-1, profile: account-one
Obtained 415 unique elastic IPs from AWS.


Takeover possible: {'name': 'takeover.assetnotecloud.com', 'records': ['52.54.24.193']}

Configurazione degli account AWS

Il primo passo è creare chiavi o ruoli nei tuoi account AWS che concedano i privilegi necessari per leggere i record Route53 e descrivere gli indirizzi elastic e le interfacce di rete EC2.

  1. Per creare un nuovo utente IAM in AWS, visita il seguente URL: https://console.aws.amazon.com/iam/home#/users$new?step=details
  2. Scegli solo Access key - Programmatic access e clicca su Next: Permissions.
  3. Clicca su Attach existing policies directly e poi clicca su Create policy.
  4. Clicca su JSON e quindi incolla la seguente policy:
root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GhostbusterPolicy",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAddresses",
                "ec2:DescribeNetworkInterfaces",
                "route53:ListResourceRecordSets",
                "route53:ListHostedZonesByName",
                "route53:GetTrafficPolicyInstance",
                "route53:GetTrafficPolicy"
            ],
            "Resource": "*"
        }
    ]
}
  1. Clicca su Next: Tags e poi su Next: Review.
  2. Imposta il nome della policy come GhostbusterPolicy.
  3. Clicca su Create Policy.
  4. Vai a https://console.aws.amazon.com/iam/home#/users$new?step=permissions&accessKey&userNames=ghostbuster&permissionType=policies
  5. Seleziona GhostbusterPolicy.
  6. Clicca su Next: Tags e poi su Next: Review.
  7. Clicca su Create user e configura le credenziali AWS nel tuo file .aws/credentials.

Ripeti i passaggi precedenti per ogni account AWS che possiedi.

Questo strumento funzionerà con qualsiasi configurazione AWS tu abbia impostato (chiavi multiple o profili cross-account assume role). Questo è gestito da boto3, la libreria usata per interfacciarsi con AWS.

Un esempio di configurazione è il seguente:

.aws/credentials:

root@kitploit:~
[default]
aws_access_key_id = AKIAIII...
aws_secret_access_key = faAaAaA...

.aws/config:

root@kitploit:~
[default]
output = table
region = us-east-1

[profile account-one]
role_arn = arn:aws:iam::911111111113:role/Ec2Route53Access
source_profile = default
region = us-east-1

[profile account-two]
role_arn = arn:aws:iam::911111111112:role/Ec2Route53Access
source_profile = default
region = us-east-1

[profile account-three]
region = us-east-1
role_arn = arn:aws:iam::911111111111:role/Ec2Route53Access
source_profile = default

In alternativa, invece di avere ruoli assunti, puoi anche configurare il file .aws/credentials per avere un elenco di profili e chiavi associate con accesso con ambito.

Una volta configurato l'AWS con tutti gli account nel tuo ambiente AWS, puoi eseguire lo strumento usando il seguente comando:

Configurazione delle autorizzazioni AWS per --roles

Ghostbuster può utilizzare ruoli invece di profili, il che elimina la necessità di avere così tante credenziali in un unico posto. Tuttavia, l'approccio con i ruoli richiederà la creazione di policy IAM aggiuntive all'interno della tua organizzazione.

I ruoli possono essere utilizzati tramite i flag --roles roles.csv o --autoroles. Per configurare --roles in modo che funzioni, è necessario creare un ruolo GhostbusterTargetAccountRole esattamente con questo nome in ogni account che viene scansionato:

root@kitploit:~
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GhostbusterTargetAccountRole",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeAddresses",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "route53:ListResourceRecordSets",
                "route53:ListHostedZonesByName",
                "route53:GetTrafficPolicyInstance",
                "route53:GetTrafficPolicy"
            ],
            "Resource": "*"
        }
    ]
}

Ghostbuster verrà eseguito in lambda/ec2/qualsiasi cosa con il ruolo ghostbuster - chiamiamolo ruolo master ghostbuster. Il ruolo master deve essere in grado di assumere i TargetAccountRoles.

root@kitploit:~
resource "aws_iam_policy" "ghostbuster_target_account_roles" {
  name        = "ghostbuster_target_account_roles"
  path        = "/"
  description = "Allow inspecting DNS and elastic IP data."

  policy = jsonencode({
    "Version" : "2012-10-17",
    "Statement" : [
      {
        "Effect" : "Allow",
        "Action" : "sts:AssumeRole",
        "Resource" : ["arn:aws:iam::*:role/GhostbusterTargetAccountRole"]
    }]
  })

  tags = {
    Project = "ghostbuster"
  }
}

Configurazione delle autorizzazioni AWS per --autoroles

La scoperta automatica degli account richiede autorizzazioni aggiuntive rispetto a --roles. Dopo aver configurato --roles per funzionare, considera di aggiungere la seguente policy IAM in un account che ha una visione d'insieme dell'organizzazione:

root@kitploit:~
{
    sid = "BaseAccess"

    actions = [
      "organizations:DescribeAccount",
      "organizations:ListAccounts"
    ]

    resources = ["*"]
    effect    = "Allow"
  }
}

Quindi, nell'account che esegue ghostbuster, allega la seguente policy al ruolo master ghostbuster in modo che possa assumere il ruolo di ricerca dell'organizzazione:

root@kitploit:~
{
    "Version" : "2012-10-17",
    "Statement" : [
      {
        "Effect" : "Allow",
        "Action" : "sts:AssumeRole",
        "Resource" : ["arn:aws:iam::ORG_LOOKUP_ACCOUNT_ID:role/ghostbuster-org-role"]
    }]
}

Non dimenticare di sostituire ORG_LOOKUP_ACCOUNT_ID con l'ID account effettivo.

Configurazione di Cloudflare (Opzionale)

Se vuoi che Ghostbuster recuperi tutti i record A che hai impostato in Cloudflare, dovrai configurare un token API in grado di leggere le zone.

https://dash.cloudflare.com/profile/api-tokens

Configura un token API Cloudflare come mostrato nello screenshot qui sotto:

Una volta ottenuto questo token API, annotalo in un posto sicuro (gestore di password). Per utilizzarlo con Ghostbuster, passalo tramite l'argomento cloudflaretoken.

Autori

  • Shubham Shah - Lavoro iniziale - github

Vedi anche l'elenco dei contributori che hanno partecipato a questo progetto.

Licenza

GNU Affero General Public License

Test di Ghostbusters

  1. Clona questo repository.
  2. Installa virtualenv usando pip3 install virtualenv
  3. Crea un ambiente virtuale usando virtualenv venv
  4. Attiva l'ambiente virtuale usando . venv/bin/activate
  5. Installa ghostbuster andando nella root del repository. pip3 install --editable .
  6. Fai le tue modifiche ed esegui il comando ghostbuster.
Scarica lo strumento