Quando se trata de iniciar um teste de penetração ou uma avaliação de segurança, a fase de reconhecimento é absolutamente crítica. Quanto mais informações você conseguir reunir sobre o alvo sem ser detectado, melhor será sua posição para identificar vulnerabilidades reais. É aqui que o OWASP Amass entra em cena como uma ferramenta indispensável para profissionais de segurança, Red Teamers e Bug Bounty Hunters.
O Amass é uma ferramenta de código aberto, escrita em Go, que realiza o mapeamento detalhado da superfície de ataque de uma organização através de técnicas de coleta de informações de fontes abertas (OSINT) e reconhecimento ativo. Neste artigo, exploraremos como instalar e usar o Amass no Kali Linux, resolveremos problemas comuns que você pode encontrar, e compararemos com ferramentas alternativas, incluindo a popular Sublist3r.
O Amass é um projeto do OWASP que combina múltiplas técnicas de reconhecimento para descobrir a superfície de ataque de uma organização. A ferramenta coleta dados de mais de 55 fontes diferentes, incluindo motores de busca, APIs de inteligência de ameaças, registros de certificados de transparência (CT logs) e servidores DNS públicos.
Diferentemente de ferramentas simples que apenas listam subdomínios, o Amass vai além: ele mapeia relacionamentos entre ativos, identifica blocos CIDR, números de ASN (Autonomous System Number) e até mesmo tenta validar quais hosts estão realmente ativos na rede.
A resposta é simples: cobertura e profundidade. Enquanto ferramentas mais simples podem encontrar 50 subdomínios, o Amass frequentemente descobre centenas ou até milhares. Além disso, o Amass oferece flexibilidade para adaptar sua estratégia de reconhecimento conforme suas necessidades mudam durante um teste.
A instalação do Amass no Kali Linux é surpreendentemente simples, pois a ferramenta já está disponível nos repositórios oficiais.
sudo apt-get update
sudo apt-get install -y amassVerifique se a instalação foi bem-sucedida:
amass --versionSe você ver a versão do Amass exibida, parabéns! A ferramenta está pronta para uso.
Se você preferir a versão mais recente ou tiver problemas com a versão do repositório, pode compilar a partir do código-fonte. Isso requer que você tenha o Go instalado:
# Instalar Go (se não estiver instalado)
sudo apt-get install -y golang-go
# Instalar Amass a partir do código-fonte
go install -v github.com/owasp-amass/amass/v4/...@latest
# Adicionar ao PATH (se necessário)
export PATH=$PATH:$(go env GOPATH)/binUm dos problemas mais comuns ao usar o Amass é o seguinte erro:
ERR Error loading address parser module, dir=(null)
at libpostal_setup_parser_datadir (libpostal.c:447) errno: No such file or directoryEste erro ocorre porque o Amass depende da biblioteca libpostal para análise de endereços, e os dados necessários não estão instalados ou configurados corretamente.
No Kali Linux, a solução mais direta é instalar o libpostal através do apt:
sudo apt-get update
sudo apt-get install -y libpostal libpostal-devSe o pacote não estiver disponível nos repositórios padrão, você pode compilar a partir do código-fonte:
# Instalar dependências
sudo apt-get install -y curl build-essential autoconf automake libtool pkg-config git
# Clonar e compilar libpostal
git clone https://github.com/openvenues/libpostal.git
cd libpostal
# Limpar compilações anteriores (se houver)
make distclean
# Executar bootstrap
./bootstrap.sh
# Configurar com diretório de dados (escolha um local com 3-4 GB livres)
./configure --datadir=/usr/local/share
# Compilar e instalar
make -j4
sudo make install
# Atualizar cache de bibliotecas
sudo ldconfigApós instalar libpostal, teste o Amass novamente:
amass enum -passive -d example.com -o teste.txtSe você ver subdomínios listados sem erros, o problema foi resolvido!
Se os problemas persistirem, uma alternativa excelente é usar o Amass via Docker, que já vem com todas as dependências configuradas:
# Puxar a imagem do Amass
docker pull caffix/amass:latest
# Executar Amass em um container
docker run --rm -v $(pwd):/output caffix/amass:latest enum \
-passive -d example.com -o /output/resultado.txtAgora que o Amass está instalado e funcionando, vamos explorar suas opções mais poderosas.
A enumeração passiva é a abordagem mais discreta, pois não envia tráfego direto para o alvo. O Amass consulta apenas fontes de dados públicas:
amass enum -passive -d site.com.br -o resultado_passivo.txtQuando usar: Durante a fase inicial de reconhecimento quando você quer ser o mais discreto possível.
Para descobrir mais subdomínios, você pode habilitar o brute-force de DNS usando uma wordlist:
# Baixar uma wordlist de qualidade
wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/DNS/subdomains-top1million-5000.txt
# Executar Amass com brute-force
amass enum -active -d site.com.br \
-brute \
-w subdomains-top1million-5000.txt \
-ip \
-src \
-o resultado_ativo.txtQuando usar: Quando você tem permissão explícita para tráfego mais agressivo e quer descobrir o máximo de subdomínios possível.
Descubra os blocos de rede e números de ASN associados a uma organização:
amass intel -org "Empresa" -whois -asnEste comando fornece informações valiosas sobre a infraestrutura de rede da organização, que podem ser usadas em fases posteriores do teste.
Se você está dentro de uma rede corporativa (via VPN) e quer usar os resolvedores DNS internos:
amass enum -d site.com.br \
-r 192.168.1.1,192.168.1.2 \
-ip \
-src \
-o resultado_interno.txtSubstitua os IPs pelos servidores DNS internos do seu ambiente.
Para integração com outras ferramentas e scripts, use o formato JSON:
amass enum -d site.com.br \
-json output.jsonIsso permite que você processe os resultados programaticamente com Python, Bash ou qualquer outra linguagem.
O Amass pode descobrir subdomínios de subdomínios (enumeração recursiva):
amass enum -d site.com.br \
-brute \
-w subdomains-top1million-5000.txt \
-min-for-recursive 2 \
-ip \
-src \
-o resultado_recursivo.txtO parâmetro -min-for-recursive 2 significa que o Amass só fará enumeração recursiva em subdomínios confirmados por pelo menos 2 fontes diferentes.
Os resultados do Amass podem ser facilmente integrados a outras ferramentas de segurança:
# Verificar quais subdomínios possuem servidores web ativos
cat resultado.txt | httpx -title -status-code -tech-detect -o web_ativos.txt
# Escanear portas nos IPs descobertos
amass enum -d site.com.br -ip -o ips.txt
nmap -iL ips.txt -p- --open -oN nmap_resultado.txt
# Usar com Burp Suite para descoberta de endpoints
cat resultado.txt | httpx -o urls.txt
# Depois importe urls.txt no Burp SuiteEmbora o Amass seja excelente, existem outras ferramentas que você deve conhecer. Cada uma tem seus pontos fortes e fracos.
Instalação:
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latestCaracterísticas:
Exemplo:
subfinder -d site.com.br -o resultado.txtQuando usar: Quando você precisa de velocidade e simplicidade, e não precisa de mapeamento de infraestrutura completo.
Instalação:
go install -v github.com/tomnomnom/assetfinder@latestCaracterísticas:
Exemplo:
assetfinder --subs-only site.com.brQuando usar: Para reconhecimento rápido e inicial, especialmente em bug bounty programs.
Instalação:
sudo apt-get install -y sublist3r
# ou
git clone https://github.com/aboul3la/Sublist3r.git
cd Sublist3r
pip3 install -r requirements.txtCaracterísticas:
Exemplo:
python3 sublist3r.py -d site.com.br -o resultado.txt
# Com brute-force
python3 sublist3r.py -d site.com.br -b -o resultado.txtQuando usar: Como ferramenta complementar ao Amass, especialmente para aproveitar a integração com motores de busca. Excelente para iniciantes por sua simplicidade.
Acesso: https://crt.sh
Características:
Exemplo (via curl):
curl -s "https://crt.sh/?q=%25.site.com.br&output=json" | jq -r '.[].name_value' | sort -uQuando usar: Como complemento a outras ferramentas, especialmente para descobrir subdomínios históricos.
Instalação:
pip3 install shodanCaracterísticas:
Exemplo:
shodan search "site.com.br"Quando usar: Para descobrir dispositivos e serviços expostos, complementando enumeração de DNS.
| Ferramenta | Velocidade | Cobertura | Dependências | Melhor Para |
|---|---|---|---|---|
| Amass | Média | Excelente | libpostal | Mapeamento completo de infraestrutura |
| Subfinder | Muito Rápida | Boa | Nenhuma | Enumeração passiva rápida |
| Assetfinder | Muito Rápida | Boa | Nenhuma | Reconhecimento inicial rápido |
| Sublist3r | Rápida | Boa | Python | Integração com motores de busca |
| crt.sh | Rápida | Boa | Nenhuma | Descoberta de certificados |
| Shodan CLI | Média | Excelente | Python | Descoberta de ativos expostos |
Sempre comece com o modo passivo para estabelecer uma linha de base:
amass enum -passive -d seu-alvo.com -o fase1_passiva.txtDiferentes wordlists podem descobrir diferentes subdomínios:
amass enum -active -d seu-alvo.com \
-brute \
-w wordlist1.txt \
-o resultado1.txt
amass enum -active -d seu-alvo.com \
-brute \
-w wordlist2.txt \
-o resultado2.txt
# Combine e remova duplicatas
cat resultado1.txt resultado2.txt | sort -u > resultado_final.txtPara maximizar a eficácia, configure chaves de API para serviços como VirusTotal, Shodan e outros. Crie um arquivo ~/.config/amass/config.ini:
[data_sources]
[data_sources.virustotal]
api_key = "sua_chave_aqui"
[data_sources.shodan]
api_key = "sua_chave_aqui"O Amass pode armazenar resultados em um banco de dados local para análise posterior:
amass enum -d seu-alvo.com -dir ./amass_dbDepois consulte o banco de dados:
amass db -show seu-alvo.comO OWASP Amass é uma ferramenta poderosa e versátil que deve estar no arsenal de todo profissional de segurança. Sua capacidade de descobrir e mapear a superfície de ataque de uma organização a torna inestimável durante a fase de reconhecimento de um teste de penetração.
Embora o erro de libpostal possa ser frustrante inicialmente, as soluções apresentadas neste artigo devem resolver o problema na maioria dos casos. E se o Amass não atender perfeitamente às suas necessidades, as alternativas mencionadas (Subfinder, Assetfinder, Sublist3r, crt.sh e Shodan) oferecem diferentes abordagens que podem ser combinadas para criar um pipeline de reconhecimento robusto e eficiente.
Lembre-se: o reconhecimento é a base de um teste de penetração bem-sucedido. Quanto melhor você mapear a superfície de ataque, mais vulnerabilidades poderá descobrir.