Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
ghostbuster — Beseitigen Sie ungenutzte Elastic IPs, indem Sie eine Analyse Ihrer Ressourcen in allen Ihren AWS-Konten durchführen. | Kitploit
Tools/GitHubGitHub/assetnote/ghostbuster
AufklärungSchwachstellenscannerCloud-SicherheitSubdomain-EnumerationDNS-Analyse
GitHubassetnote/ghostbuster

ghostbuster

Beseitigen Sie ungenutzte Elastic IPs, indem Sie eine Analyse Ihrer Ressourcen in allen Ihren AWS-Konten durchführen.

Repository anzeigen
27836vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Inhaltsverzeichnis

  • Inhaltsverzeichnis
  • Ghostbuster
    • Das Problem
    • Projektfunktionen
    • Ghostbuster installieren
    • Ghostbuster verwenden
    • Beispielausgabe
    • Einrichten Ihrer AWS-Konten
    • Einrichten von Cloudflare (Optional)
    • Autoren
    • Lizenz

Ghostbuster

Beseitigen Sie herrenlose elastische IPs, indem Sie eine Analyse Ihrer Ressourcen in allen Ihren AWS-Konten durchführen.

Ghostbuster ruft alle DNS-Einträge ab, die in all Ihren AWS-Konten (Route53) vorhanden sind, und kann optional Einträge über CSV-Eingabe oder über Cloudflare aufnehmen.

Nachdem diese Einträge gesammelt wurden, durchläuft Ghostbuster alle Ihre AWS-Elastic-IPs und öffentlichen IPs von Netzwerkschnittstellen und sammelt diese Daten.

Durch ein vollständiges Bild der DNS-Einträge (von Route53, Dateieingabe oder Cloudflare) und ein vollständiges Bild der Ihrem Unternehmen gehörenden AWS-IPs kann dieses Tool Subdomains erkennen, die auf herrenlose elastische IPs verweisen (IPs, die Sie nicht mehr besitzen).

Das Problem

Wenn Sie Infrastruktur auf AWS bereitstellen, starten Sie möglicherweise EC2-Instanzen, denen eine IP zugeordnet ist. Wenn Sie DNS-Einträge erstellen, die auf diese IPs verweisen, aber vergessen, die DNS-Einträge zu entfernen, nachdem die EC2-Instanz eine neue IP erhalten oder gelöscht wurde, sind Sie anfällig für Subdomain-Übernahmeangriffe.

Es gab eine große Menge an Forschung zu Elastic-IP-Übernahmen, bei denen Angreifer kontinuierlich elastische IPs beanspruchen können, bis sie eine IP erhalten, die mit einer Subdomain des von ihnen anvisierten Unternehmens verbunden ist.

Während AWS häufig Konten sperrt, die versuchen, dieses Angriffsmuster durchzuführen, wurde von AWS keine langfristige Lösung veröffentlicht.

Die Auswirkungen von Subdomain-Übernahmeangriffen durch herrenlose elastische IPs sind schwerwiegender als bei einer typischen Subdomain-Übernahme, bei der Sie nur den ausgelieferten Inhalt kontrollieren können. Bei Elastic-IP-Übernahmen ist es einem Angreifer möglich, Folgendes zu tun:

  • SSL-Zertifikate für die Subdomain zu beanspruchen
  • Datenverkehr auf allen Ports zu überwachen (möglicherweise sensible Informationen zu entdecken, die noch an die Subdomain gesendet werden)
  • Serverseitige Skripte auszuführen, mit der Fähigkeit, HTTPOnly-Cookies zu stehlen, was typischerweise zu einem Ein-Klick-Kontoübernahmeangriff führt, wenn Cookies auf *.domain.com beschränkt sind

Projektfunktionen

  • Durchläuft dynamisch jedes in .aws/config konfigurierte AWS-Profil
  • Ruft A-Einträge von AWS Route53 ab
  • Ruft A-Einträge von Cloudflare ab (optional)
  • Ruft A-Einträge aus CSV-Eingabe ab (optional)
  • Durchläuft alle Regionen, eine einzelne Region oder eine kommagetrennte Liste von Regionen
  • Ermittelt alle elastischen IPs, die mit all Ihren AWS-Konten verbunden sind
  • Ermittelt alle öffentlichen IPs, die mit all Ihren AWS-Konten verbunden sind
  • Kreuzt die DNS-Einträge mit den Ihrem Unternehmen gehörenden IPs, um potenzielle Übernahmen zu erkennen
  • Slack-Webhook-Support zum Senden von Benachrichtigungen über Übernahmen

Wichtig:

Damit dieses Tool effektiv ist, muss es ein vollständiges Bild Ihrer AWS-Umgebung haben. Wenn es kein vollständiges Bild hat, führt dies zu Fehlalarmen.

Ghostbuster installieren

Ghostbuster zu installieren ist so einfach wie das Ausführen von: pip install ghostbuster. Das CLI-Tool ist dann über den Befehl ghostbuster verfügbar.

Dies erfordert eine Python 3.x-Umgebung.

Ghostbuster verwenden

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.

Beispielbefehle

Ghostbuster mit Zugriff auf Cloudflare-DNS-Einträge ausführen, Benachrichtigungen an einen Slack-Webhook senden, jedes in .aws/config oder .aws/credentials konfigurierte AWS-Profil für alle AWS-Regionen durchlaufen:

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

Ghostbuster mit einer manuell eingegebenen Liste von Subdomain-A-Einträgen ausführen (siehe records.csv in diesem Repository für eine Beispieldatei):

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

Sie können mit --regions bestimmte Regionen angeben, die auf eine kommagetrennte Liste von Regionen gesetzt werden, z.B. us-east-1,us-west-1.

Beispielausgabe

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']}

Einrichten Ihrer AWS-Konten

Der erste Schritt ist das Erstellen von Schlüsseln oder Rollen in Ihren AWS-Konten, die die erforderlichen Berechtigungen zum Lesen von Route53-Einträgen und zum Beschreiben von elastischen Adressen und EC2-Netzwerkschnittstellen gewähren.

  1. Um einen neuen IAM-Benutzer in AWS zu erstellen, besuchen Sie die folgende URL: https://console.aws.amazon.com/iam/home#/users$new?step=details
  2. Wählen Sie nur Access key - Programmatic access aus und klicken Sie auf Next: Permissions.
  3. Klicken Sie auf Attach existing policies directly und dann auf Create policy.
  4. Klicken Sie auf JSON und fügen Sie die folgende Richtlinie ein:
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. Klicken Sie auf Next: Tags und dann auf Next: Review.
  2. Setzen Sie den Namen der Richtlinie auf GhostbusterPolicy.
  3. Klicken Sie auf Create Policy.
  4. Gehen Sie zu https://console.aws.amazon.com/iam/home#/users$new?step=permissions&accessKey&userNames=ghostbuster&permissionType=policies
  5. Wählen Sie GhostbusterPolicy aus.
  6. Klicken Sie auf Next: Tags und dann auf Next: Review.
  7. Klicken Sie auf Create user und richten Sie die AWS-Anmeldedaten in Ihrer .aws/credentials-Datei ein.

Wiederholen Sie die obigen Schritte für jedes AWS-Konto, das Sie besitzen.

Dieses Tool funktioniert mit der Art und Weise, wie Sie Ihre AWS-Konfiguration eingerichtet haben (mehrere Schlüssel oder Profile mit rollenübergreifendem Assume-Role). Dies wird von boto3 verwaltet, der Bibliothek, die für die Schnittstelle zu AWS verwendet wird.

Eine Beispielkonfiguration sieht wie folgt aus:

.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

Alternativ können Sie anstelle von Rollen, die angenommen werden, auch die .aws/credentials-Datei so konfigurieren, dass sie eine Liste von Profilen und zugehörigen Schlüsseln mit eingeschränktem Zugriff enthält.

Sobald Ihre AWS-Konfiguration mit allen Konten in Ihrer AWS-Umgebung eingerichtet ist, können Sie das Tool mit dem folgenden Befehl ausführen:

Einrichten Ihrer AWS-Berechtigungen für --roles

Ghostbuster kann Rollen anstelle von Profilen verwenden, was die Notwendigkeit vieler Anmeldeinformationen an einem Ort überflüssig macht. Der Rollenansatz erfordert jedoch das Erstellen zusätzlicher IAM-Richtlinien innerhalb Ihrer Organisation.

Rollen können über die Flags --roles roles.csv oder --autoroles verwendet werden. Damit --roles funktioniert, muss in jedem Konto, das gescannt wird, eine Rolle namens GhostbusterTargetAccountRole genau so benannt erstellt werden:

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 wird in Lambda/EC2/whatever mit der Rolle ghostbuster ausgeführt – nennen wir sie Ghostbuster-Master-Rolle. Die Master-Rolle muss in der Lage sein, TargetAccountRoles anzunehmen.

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"
  }
}

Einrichten Ihrer AWS-Berechtigungen für --autoroles

Die automatische Kontoerkennung erfordert im Vergleich zu --roles zusätzliche Berechtigungen. Nachdem Sie --roles eingerichtet haben, sollten Sie die folgende IAM-Richtlinie in einem Konto hinzufügen, das eine Organisationsübersicht hat:

root@kitploit:~
{
    sid = "BaseAccess"

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

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

Fügen Sie dann in dem Konto, das Ghostbuster ausführt, die folgende Richtlinie an die Ghostbuster-Master-Rolle an, damit sie die Organisations-Lookup-Rolle annehmen kann:

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

Vergessen Sie nicht, ORG_LOOKUP_ACCOUNT_ID durch die tatsächliche Konto-ID zu ersetzen.

Einrichten von Cloudflare (Optional)

Wenn Ghostbuster alle A-Einträge abrufen soll, die Sie in Cloudflare eingerichtet haben, müssen Sie einen API-Token einrichten, der Zonen lesen kann.

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

Richten Sie einen Cloudflare-API-Token wie im folgenden Screenshot ein:

Sobald Sie diesen API-Token erhalten haben, notieren Sie ihn sich (Passwortmanager). Um ihn mit Ghostbuster zu verwenden, übergeben Sie ihn über das cloudflaretoken-Argument.

Autoren

  • Shubham Shah - Initial work - github

Siehe auch die Liste der Mitwirkenden, die an diesem Projekt teilgenommen haben.

Lizenz

GNU Affero General Public License

Ghostbuster testen

  1. Klonen Sie dieses Repository.
  2. Installieren Sie virtualenv mit pip3 install virtualenv
  3. Erstellen Sie eine virtuelle Umgebung mit virtualenv venv
  4. Aktivieren Sie die virtuelle Umgebung mit . venv/bin/activate
  5. Installieren Sie Ghostbuster, indem Sie zum Root des Repos gehen. pip3 install --editable .
  6. Nehmen Sie Ihre Änderungen vor und führen Sie den Ghostbuster-Befehl aus.
Tool herunterladen