Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
ghostbuster — Elimine IPs elásticos órfãos realizando análises em seus recursos em todas as suas contas AWS. | Kitploit
Ferramentas/GitHubGitHub/assetnote/ghostbuster
ReconhecimentoScanners de VulnerabilidadesSegurança na NuvemEnumeração de SubdomíniosAnálise de DNS
GitHubassetnote/ghostbuster

ghostbuster

Elimine IPs elásticos órfãos realizando análises em seus recursos em todas as suas contas AWS.

Ver Repositório
27836há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Índice

  • Índice
  • Ghostbuster
    • O problema
    • Funcionalidades do Projeto
    • Instalando o Ghostbuster
    • Usando o Ghostbuster
    • Exemplo de Saída
    • Configurando suas contas AWS
    • Configurando Cloudflare (Opcional)
    • Autores
    • Licença

Ghostbuster

Elimine Elastic IPs órfãos realizando análises em seus recursos em todas as suas contas AWS.

O Ghostbuster obtém todos os registros DNS presentes em todas as suas contas AWS (Route53) e pode opcionalmente receber registros via entrada CSV ou via Cloudflare.

Após coletar esses registros, o Ghostbuster percorre todos os seus Elastic IPs da AWS e IPs Públicos de Interfaces de Rede e coleta esses dados.

Ao ter uma visão completa dos registros DNS (do Route53, entrada de arquivo ou Cloudflare) e uma visão completa dos IPs AWS pertencentes à sua organização, esta ferramenta pode detectar subdomínios que apontam para Elastic IPs órfãos (IPs que você não possui mais).

O problema

Ao implantar infraestrutura na AWS, você pode iniciar instâncias EC2 que possuem um IP associado a elas. Quando você cria registros DNS apontando para esses IPs, mas esquece de removê-los após a instância EC2 receber um novo IP ou ser destruída, você fica suscetível a ataques de takeover de subdomínio.

Houve uma grande quantidade de pesquisa sobre takeovers de Elastic IP, onde é possível que atacantes reivindiquem continuamente Elastic IPs até obterem um IP associado a um subdomínio da empresa que estão atacando.

Embora a AWS ban frequentemente contas que tentam executar esse padrão de ataque, nenhuma correção de longo prazo foi lançada pela AWS.

O impacto de ataques de takeover de subdomínio por Elastic IP órfão é mais grave do que um takeover de subdomínio típico, onde você só pode controlar o conteúdo sendo servido. Com takeovers de Elastic IP órfão, é possível que um atacante faça o seguinte:

  • Emitir certificados SSL para o subdomínio
  • Escutar tráfego em todas as portas (potencialmente descobrindo informações sensíveis ainda sendo enviadas ao subdomínio)
  • Executar scripts do lado do servidor com capacidade de roubar cookies HTTPOnly, tipicamente levando a um ataque de takeover de conta com um clique quando os cookies têm escopo em *.domain.com

Funcionalidades do Projeto

  • Itera dinamicamente por cada perfil AWS configurado em .aws/config
  • Obtém registros A do AWS Route53
  • Obtém registros A do Cloudflare (opcional)
  • Obtém registros A de entrada CSV (opcional)
  • Itera por todas as regiões, uma única região ou uma lista de regiões separadas por vírgula
  • Obtém todos os Elastic IPs associados a todas as suas contas AWS
  • Obtém todos os IPs Públicos associados a todas as suas contas AWS
  • Cruza os registros DNS com os IPs pertencentes à sua organização para detectar possíveis takeovers
  • Suporte a Slack Webhook para enviar notificações de takeovers

Importante:

Para que esta ferramenta seja eficaz, ela deve ter uma visão completa do seu ambiente AWS. Se não tiver uma visão completa, isso levará a falsos positivos.

Instalando o Ghostbuster

Instalar o Ghostbuster é tão simples quanto executar: pip install ghostbuster. A ferramenta CLI estará então acessível através do comando ghostbuster.

Isso requer um ambiente Python 3.x.

Usando o 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.

Exemplos de Comandos

Executar o Ghostbuster com acesso aos registros DNS do Cloudflare, enviar notificações para um Slack webhook, iterar por todos os perfis AWS configurados em .aws/config ou .aws/credentials para todas as regiões AWS

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

Executar o Ghostbuster com uma lista inserida manualmente de registros A de subdomínio (veja records.csv neste repositório para um exemplo de arquivo):

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

Você pode especificar regiões específicas usando --regions definido como uma lista separada por vírgulas de regiões, ex.: us-east-1,us-west-1.

Exemplo de Saída

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

Configurando suas contas AWS

O primeiro passo é criar chaves ou funções (roles) em suas contas AWS que concedam os privilégios necessários para ler registros Route53 e descrever endereços elásticos e interfaces de rede EC2.

  1. Para criar um novo usuário IAM na AWS, acesse o seguinte URL: https://console.aws.amazon.com/iam/home#/users$new?step=details
  2. Escolha apenas Access key - Programmatic access e clique em Next: Permissions.
  3. Clique em Attach existing policies directly e depois em Create policy.
  4. Clique em JSON e cole a seguinte política:
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. Clique em Next: Tags e depois Next: Review.
  2. Defina o nome da política como GhostbusterPolicy.
  3. Clique em Create Policy.
  4. Acesse https://console.aws.amazon.com/iam/home#/users$new?step=permissions&accessKey&userNames=ghostbuster&permissionType=policies
  5. Selecione GhostbusterPolicy.
  6. Clique em Next: Tags e depois Next: Review.
  7. Clique em Create user e configure as credenciais AWS no seu arquivo .aws/credentials.

Repita os passos acima para cada conta AWS que você possui.

Esta ferramenta funcionará com a configuração AWS que você tiver (várias chaves ou perfis de assumir função entre contas). Isso é gerenciado pelo boto3, a biblioteca usada para interface com a AWS.

Um exemplo de configuração é assim:

.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

Alternativamente, em vez de ter funções que são assumidas, você também pode configurar o arquivo .aws/credentials para ter uma lista de perfis e chaves associadas com acesso delimitado.

Assim que sua configuração AWS estiver definida com todas as contas do seu ambiente AWS, você pode executar a ferramenta usando o seguinte comando:

Configurando suas permissões AWS para --roles

O Ghostbuster pode usar funções (roles) em vez de perfis, o que elimina a necessidade de ter tantas credenciais em um só lugar. No entanto, a abordagem de funções exigirá a criação de políticas IAM adicionais dentro da sua organização.

Funções podem ser usadas via flags --roles roles.csv ou --autoroles. Para configurar --roles para funcionar, é necessário criar a função GhostbusterTargetAccountRole nomeada exatamente assim em cada conta que está sendo escaneada:

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": "*"
        }
    ]
}

O Ghostbuster será executado em lambda/ec2/qualquer coisa com a função ghostbuster – vamos chamá-la de função mestre ghostbuster. A função mestre deve ser capaz de assumir as 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"
  }
}

Configurando suas permissões AWS para --autoroles

A descoberta automática de contas requer permissão adicional em comparação com --roles. Após configurar --roles para funcionar, considere adicionar a seguinte política IAM em uma conta que tenha visão geral da organização:

root@kitploit:~
{
    sid = "BaseAccess"

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

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

Em seguida, na conta que está executando o Ghostbuster, anexe a seguinte política à função mestre Ghostbuster para que ela possa assumir a função de consulta da organização:

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

Não se esqueça de substituir ORG_LOOKUP_ACCOUNT_ID pelo ID real da conta.

Configurando Cloudflare (Opcional)

Se você quiser que o Ghostbuster obtenha todos os registros A que você configurou no Cloudflare, será necessário configurar um token de API que possa ler zonas.

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

Configure um token de API do Cloudflare como mostrado na captura de tela abaixo:

Assim que obtiver este token de API, anote-o em algum lugar (gerenciador de senhas). Para usá-lo com o Ghostbuster, passe-o através do argumento cloudflaretoken.

Autores

  • Shubham Shah - Trabalho inicial - github

Veja também a lista de contribuidores que participaram deste projeto.

Licença

GNU Affero General Public License

Testando o Ghostbuster

  1. Clone este repositório.
  2. Instale virtualenv usando pip3 install virtualenv
  3. Crie um ambiente virtual usando virtualenv venv
  4. Ative o ambiente virtual usando . venv/bin/activate
  5. Instale o Ghostbuster indo para a raiz do repositório: pip3 install --editable .
  6. Faça suas alterações e execute o comando ghostbuster.
Baixar ferramenta