
Ferramenta de rede, reconhecimento e segurança ofensiva para Linux.
Hawk é uma ferramenta de rede e pentest que desenvolvi para executar diferentes tipos de tarefas usando a mesma suíte, em vez de ficar saltando de uma ferramenta para outra.
Atualmente, este script pode executar uma variedade de tarefas como ifconfig, ping, traceroute, varreduras de portas (incluindo SYN, TCP, UDP, ACK, varredura abrangente, descoberta de hosts (procura por dispositivos ativos em uma rede local), detecção de endereço MAC (obter o endereço MAC de um IP de host em uma rede local), captura de banner, verificações de DNS (com informações de geolocalização), WHOIS, enumeração de subdomínios, reconhecimento de vulnerabilidades, sniffing de pacotes, spoofing de MAC, spoofing de IP, flood SYN, ataque deauth e ataque de força bruta (beta).
Outros recursos ainda estão sendo implementados. Implementações futuras podem incluir detecção de WAF, enumeração de DNS, análise de tráfego, scanner de vulnerabilidades XSS, envenenamento de cache ARP, envenenamento de cache DNS, MAC flooding, ping da morte, ataque de dissociação de rede (não ataque deauth), OSINT, spoofing de e-mail, exploits, algumas tarefas automatizadas e outros.

Note que atualmente, este script só funciona bem no Linux. Se você tentar usá-lo no Windows ou macOS, pode até rodar, mas vários erros aparecerão.
Este script foi testado em:
Para instalar os pacotes necessários para que o script possa rodar sem problemas, basta executar o script setup.sh com privilégios de root. Atualmente, este script de instalação só é suportado em distribuições baseadas em Debian, Red Hat e Arch que tenham os gerenciadores de pacotes apt, dnf e pacman, respectivamente (Ubuntu, Kali Linux, Parrot OS, Debian, Pop!_OS, Linux Mint, Deepin, Zorin OS, MX Linux, Elementary OS, Fedora, CentOS, Red Hat Enterprise Linux, Rocky Linux, AlmaLinux, Oracle Linux, ClearOS, Arch, Black Arch, Manjaro, etc). Na maioria dos sistemas, para instalar o Hawk basta executar os seguintes comandos:
git clone https://github.com/medpaf/hawk.git
cd hawk
sudo sh setup.sh
Então, basta seguir as instruções. Por favor, ignore as mensagens de erro que aparecem durante a instalação.
No entanto, se você estiver usando qualquer outra distribuição Linux com um gerenciador de pacotes diferente, instale os pacotes manualmente usando o gerenciador de pacotes da sua distribuição. Dependendo da distribuição específica usada, alguns dos pacotes necessários para executar este script podem já estar instalados na sua máquina.
Se quiser saber os pacotes necessários, consulte o arquivo setup.sh.
Após a instalação, para executar o programa, basta navegar até o diretório do projeto e executar o arquivo hawk.py usando python. Executar o script como root é recomendado para melhor desempenho e para evitar erros de permissão. O comando usado é o seguinte:
sudo python3 hawk.py
Para fazer configurações, basta ir até o arquivo de configuração em files/conf.py e editá-lo.
Se quiser exibir a configuração atual de rede TCP/IP do seu sistema, digite o seguinte comando:
-ifconfig

Para enviar pacotes ICMP para um ou mais hosts e verificar a conectividade, basta digitar:
-ping <HOST(s) IP/FQDN>

Para diagnosticar caminhos de rota e medir atrasos de trânsito, use o comando -traceroute:
-traceroute <HOST IP/FQDN>

A varredura de portas ajuda a detectar possíveis brechas de segurança, identificando os hosts conectados à sua rede e os serviços em execução.
Vários tipos de varredura são suportados, incluindo TCP SYN (-scansyn) [também conhecida como varredura stealth], TCP Connect (-scantcp), UDP (-scanudp), TCP ACK (-scanack) e varredura abrangente (-scan).
-scan -host <HOST(s) IP/FQDN>
-scan -host <HOST(s) IP/FQDN> -p <PORT(s)>
Se você quiser varrer um intervalo de IPs e/ou intervalo de portas, use um dos seguintes comandos:
-scan -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-scan -iprange <START IP> <END IP> -p <PORT(s)>
-scan -iprange <START IP> <END IP> -prange <START PORT> <END PORT>

Após esta varredura, é possível ver que as portas 22 (SSH) e 80 (HTTP) estão abertas.
Para procurar dispositivos ativos em uma rede específica, digite o seguinte comando:
-scanlan
Em seguida, digite a rede que deseja varrer.

Para obter o endereço MAC de um ou mais hosts ativos na LAN, use o comando:
-getmac -host <HOST(s) IP>

A detecção de versão, ou captura de banner, é uma técnica de reconhecimento que recupera informações do banner de um software. Esse banner geralmente contém informações importantes sobre um serviço de rede, incluindo, mas não se limitando ao nome e à versão do software. Servidores FTP, Web, SSH e SMTP frequentemente expõem informações vitais sobre o software que estão executando em seus banners.
Um ataque de banner geralmente começa com uma varredura de enumeração para encontrar portas abertas. Depois de identificar um serviço que deseja atacar, você pode enviar pacotes específicos e inspecionar o tráfego em busca das informações desejadas.
Para realizar a captura de banner, dependendo das suas necessidades específicas, digite um dos seguintes comandos:
-grab -host <HOST(s) IP/FQDN> -p <PORT(s)>
-grab -iprange <START IP> <END IP> -prange <START PORT> <END PORT>
-grab -host <HOST(s) IP/FQDN> -prange <START PORT> <END PORT>
-grab -iprange <START IP> <END IP> -p <PORT(s)>

Este recurso é semelhante ao conhecido comando nslookup usado em sistemas UNIX. Se você quiser fazer uma verificação de DNS, digite o seguinte:
-ns <HOST(s) IP/FQDN>

Aviso: Observe que este recurso usa a API IPinfo. É recomendado alterar a chave da API para a sua, pois a chave fornecida pode estar sendo usada por outras pessoas. Para alterar as chaves da API, vá até o arquivo de configuração em files/conf.py.
WHOIS é um protocolo TCP que tem como objetivo consultar contato e DNS. Para solicitar o WHOIS de uma ou mais páginas, basta digitar:
-whois <HOST(s) IP/PQDN>

Enumeração de subdomínios é o processo de encontrar subdomínios válidos para um ou mais domínios.
A enumeração de subdomínios pode revelar muitos domínios/subdomínios que estão no escopo de uma avaliação de segurança, o que, por sua vez, aumenta as chances de encontrar vulnerabilidades.
Se você quiser procurar subdomínios comuns de um domínio, basta digitar:
-sdenum <PQDN>
Este comando usa uma wordlist padrão para procurar subdomínios. No entanto, se você quiser usar sua própria wordlist, digite:
-sdenum <PQDN> -wordlist <WORDLIST PATH>

Descoberta de diretórios é o processo de encontrar diretórios dentro de um servidor web.
Para realizar essa tarefa, digite:
-dirbust <HOST IP/FQDN>
Este comando usa uma wordlist padrão para procurar diretórios. No entanto, se você quiser usar sua própria wordlist, digite:
-dirbust <HOST IP/FQDN> -wordlist <WORDLIST PATH>

Para varrer um ou mais hosts em busca de vulnerabilidades, use o seguinte comando:
-vulnscan -host <HOST(s) IP/FQDN>

Aviso: Observe que este recurso usa a API Shodan. É recomendado alterar a chave da API para a sua, pois a chave fornecida pode estar sendo usada por outras pessoas. Para alterar as chaves da API, vá até o arquivo de configuração em files/conf.py.
Para realizar o sniffing de pacotes, digite:
-sniff

Aviso: Se você quiser capturar todos os dados que estão passando por uma rede, primeiro coloque sua placa ou adaptador wireless no modo monitor.
MAC spoofing é a geração de quadros com um endereço MAC diferente do endereço da placa de rede emissora. Para alterar o endereço MAC de uma interface, use o comando:
-macspoof -source <SOURCE MAC> -iface <INTERFACE>

Como você pode ver na captura de tela abaixo, o endereço MAC da interface foi alterado com sucesso.

O objetivo do IP spoofing é modificar o endereço IP de origem correto, para que o sistema para o qual um pacote é direcionado não consiga identificar corretamente o remetente.
Observe que este comando só funciona em máquinas com vulnerabilidades não corrigidas. Para realizar IP spoofing em uma porta específica de um host, use o seguinte comando:
-ipspoof -source <SOURCE IP> <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Se você quiser usar um IP de origem aleatório, digite o seguinte comando:
-ipspoof -source r <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Você também pode usar uma porta de origem aleatória:
-ipspoof -source <SOURCE IP> r -target <TARGET IP/FQDN> <TARGET PORT>

Aviso: Use isso apenas para fins de teste e ataque as suas próprias máquinas.
O SYN Flood é um método de ataque DDoS que causa sobrecarga direta na camada de transporte (camada 4) e sobrecarga indireta na camada de aplicação (camada 7).
Para tentar um flood SYN, digite:
-synflood -source <SOURCE PORT> -target <TARGET IP/FQDN> <TARGET PORT>
Se você quiser usar uma porta de origem aleatória, digite o seguinte comando:
-synflood -source r -target <TARGET IP/FQDN> <TARGET PORT>

Aviso: Use isso apenas para fins de teste e ataque as suas próprias máquinas.
Um ataque deauth é um tipo de ataque sem fio que tem como alvo a comunicação entre um roteador e um ou mais dispositivos conectados a esse roteador, forçando efetivamente a máquina alvo a se desconectar do ponto de acesso.
Para realizar esse ataque, use o seguinte comando:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface <INTERFACE>
Se você planeja atacar todos os clientes em um gateway, digite:
-deauth -target a -gateway <GATEWAY MAC> -iface <INTERFACE>
Você também pode escolher sua interface sem fio padrão (configurada em files/conf.py) para realizar o ataque:
-deauth -target <TARGET MAC> -gateway <GATEWAY MAC> -iface d

Após o comando executado na captura de tela acima, todos os dispositivos conectados àquele ponto de acesso foram desconectados e não conseguiram se reconectar enquanto este script estava em execução.
Aviso: Para realizar esse ataque, certifique-se de ter uma placa ou adaptador sem fio que suporte o modo monitor e ative-o antes de tentar um ataque deauth. Use isso apenas para fins de teste e ataque as suas próprias máquinas.
Um ataque de força bruta é uma tentativa de descobrir uma senha ou nome de usuário.
Para realizar um ataque de força bruta e encontrar credenciais comuns/frágeis, digite:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME>
Se você quiser usar uma wordlist personalizada, use o comando:
-bruteforce <SERVICE> -target <TARGET IP/FQDN> -user <USERNAME> -wordlist <WORDLIST PATH>
Por enquanto, apenas o serviço SSH é suportado.
Aviso: Observe que o servidor alvo pode ter mecanismos de defesa contra esse tipo de ataque e bloquear as tentativas do atacante de adivinhar a senha. Use isso apenas para fins de teste e ataque as suas próprias máquinas.
Este comando automatizará algumas das técnicas de reconhecimento disponíveis neste script. Para fazer isso, digite:
-autoscan <HOST(s) IP/FQDN>
A maioria dos usuários de redes sem fio usa apenas suas placas wireless como uma estação para um AP. No modo gerenciado, a placa wireless e o software do driver dependem de um AP local em modo gerenciado para fornecer conectividade à rede sem fio.
Algumas placas wireless também suportam o modo monitor. Quando configurada no modo monitor, a placa wireless para de transmitir dados e captura o canal atualmente configurado, relatando o conteúdo de todos os pacotes observados ao sistema operacional host.
Para colocar uma interface no modo monitor, use o seguinte comando:
-mode monitor -iface <INTERFACE>
Você também pode definir sua interface para a interface sem fio padrão (configurada em files/conf.py):
-mode monitor -iface d

Como você pode ver na captura de tela abaixo, o modo da interface foi alterado com sucesso.

No entanto, se você quiser voltar sua interface para o modo gerenciado, digite:
-mode managed -iface <INTERFACE>
Você também pode definir sua interface para a interface sem fio padrão (configurada em files/conf.py):
-mode managed -iface d

Como você pode ver na captura de tela abaixo, o modo da interface foi alterado com sucesso.

Crie uma issue ou pull request, ou envie-me um e-mail para [email protected].
Este repositório está sob a Licença MIT.