Automatiza a consulta de registros de domínio e contatos técnicos.

Contexto

O protocolo WHOIS é uma consulta a bancos de dados que armazenam os detentores de domínios de internet. Em um Pentest, essa ferramenta é vital para:

  • Identificar o Alvo: Confirmar se o domínio pertence realmente à empresa contratante.
  • Engenharia Social: Descobrir e-mails e nomes de administradores ou técnicos responsáveis.
  • Mapeamento de Infraestrutura: Verificar servidores de nome (DNS) e datas de criação/expiração (domínios antigos tendem a ter menos manutenção).

Possibilidades de implementação

  • Bibliotecas Prontas: Usar a biblioteca python-whois, que já faz o "parsing" (organização) dos dados brutos.
  • Sockets Puros: Conectar diretamente na porta 43 dos servidores WHOIS (mais complexo, pois cada TLD como .com ou .org tem um formato diferente).
  • Automação em Lote: Criar um script que recebe uma lista de domínios e exporta os e-mails dos responsáveis para uma campanha de phishing simulada.

Código

Para esta lição, utilizaremos a biblioteca python-whois. Ela é a ferramenta padrão para transformar o texto bruto do servidor WHOIS em um objeto Python fácil de manipular.

Requisito: pip install python-whois

import whois

def perform_whois(domain):
    print(f"[*] --- 30 Lessons in Python for Pentest: Lição 02 ---")
    print(f"[*] Consultando informações de registro para: {domain}\n")

    try:
        # Realiza a consulta ao servidor WHOIS correspondente
        w = whois.whois(domain)

        # Exibindo informações cruciais para o Pentester
        print(f"[+] Domínio: {w.domain_name}")
        print(f"[+] Registrador: {w.registrar}")
        print(f"[+] Organização: {w.org}")
        print(f"[+] Data de Criação: {w.creation_date}")
        print(f"[+] E-mails de Contato: {w.emails}")
        print(f"[+] Servidores DNS: {w.name_servers}")
        print(f"[+] Localização: {w.city}, {w.state}, {w.country}")

    except Exception as e:
        print(f"[!] Erro ao realizar consulta: {e}")

if __name__ == "__main__":
    # Alvo da lição
    alvo = "google.com"
    perform_whois(alvo)