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
flare-fakenet-ng — FakeNet-NG - Ferramenta de Análise Dinâmica de Rede de Próxima Geração | Kitploit
Ferramentas/GitHubGitHub/mandiant/flare-fakenet-ng
Sniffing e Análise de PacotesAnálise Dinâmica (Sandboxing)Segurança de RedeAnálise de MalwareTestes de Penetração
GitHubmandiant/flare-fakenet-ng

flare-fakenet-ng

FakeNet-NG - Ferramenta de Análise Dinâmica de Rede de Próxima Geração

Ver Repositório
2.2k376há 2 mesesRevisado 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

root@kitploit:~
|  ____/\   | |/ /  ____| \ | |  ____|__   __|   | \ | |/ ____|
| |__ /  \  | ' /| |__  |  \| | |__     | |______|  \| | |  __
|  __/ /\ \ |  < |  __| | . ` |  __|    | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\  | |____   | |      | |\  | |__| |
|_|/_/    \_\_|\_\______|_| \_|______|  |_|      |_| \_|\_____|

       D   O   C   U   M   E   N   T   A   T   I   O   N

O FakeNet-NG 3.5 é uma ferramenta de análise de rede dinâmica de próxima geração para analistas de malware e testadores de penetração. É de código aberto e projetado para as versões mais recentes do Windows (e Linux, para certos modos de operação). O FakeNet-NG é baseado na excelente ferramenta Fakenet desenvolvida por Andrew Honig e Michael Sikorski.

A ferramenta permite interceptar e redirecionar todo ou parte do tráfego de rede, simulando serviços legítimos de rede. Usando o FakeNet-NG, analistas de malware podem identificar rapidamente a funcionalidade do malware e capturar assinaturas de rede. Testadores de penetração e caçadores de bugs acharão o mecanismo de interceptação configurável e o módulo framework do FakeNet-NG extremamente úteis ao testar funcionalidades específicas de aplicações e prototipar PoCs.

Instalação

Você pode instalar o FakeNet-NG de algumas maneiras diferentes. Observe que os seguintes processos de instalação recuperarão bibliotecas de código aberto de terceiros usadas pelo FakeNet-NG para o seu sistema. Essas bibliotecas serão carregadas dinamicamente em tempo de execução, e algumas dessas bibliotecas podem ser licenciadas sob LGPL.

Executável autônomo

O mais fácil é simplesmente baixar a versão compilada, que pode ser obtida na página de lançamentos:

root@kitploit:~
https://github.com/mandiant/flare-fakenet-ng/releases

Execute o FakeNet-NG executando 'fakenet.exe'.

Este é o método preferido para usar o FakeNet-NG no Windows, pois não requer a instalação de módulos adicionais, o que é ideal para uma máquina de análise de malware.

NOTA: O FakeNet-NG pode ser sinalizado como malicioso por soluções de Antivírus (AV) e Detecção e Resposta de Endpoint (EDR) (por exemplo, Windows Defender, Safe Browsing do Chrome). Isso provavelmente se deve à sua capacidade de modificar o tráfego de rede e simular serviços de rede, além do uso do PyInstaller para construir os executáveis de lançamento. Os binários oficiais de lançamento são seguros, e essas detecções devem ser consideradas falsos positivos. Como lembrete, o FakeNet-NG é projetado e altamente recomendado para uso em um ambiente controlado e isolado, como uma Máquina Virtual (VM), onde pode alterar com segurança as configurações de rede do sistema.

Instalação como módulo

  1. Instale Python 3.10.11 e a versão mais recente do pip para Windows/Linux.

  2. No Windows, baixe e instale as Ferramentas de compilação Visual C++.

    A instalação no Linux requer as seguintes dependências:

    • Gerenciador de pacotes pip do Python (ex: python-pip no Ubuntu).
    • Arquivos de desenvolvimento do Python (ex: python-dev no Ubuntu).
    • Arquivos de desenvolvimento do OpenSSL (ex: libssl-dev no Ubuntu).
    • Arquivos de desenvolvimento do libffi (ex: libffi-dev no Ubuntu).
    • Arquivos de desenvolvimento do libnetfilterqueue (ex: libnetfilter-queue-dev no Ubuntu).

    Instale essas dependências usando o seguinte comando:

    root@kitploit:~
     sudo apt-get install build-essential python3.10-dev libnetfilter-queue-dev
    
  3. Instale o FakeNet-NG como módulo Python usando o pip:

    root@kitploit:~
     python -m pip install https://github.com/mandiant/flare-fakenet-ng/zipball/master
    

    Ou obtendo o código fonte mais recente e instalando manualmente:

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng/
    
  4. Instale as dependências Python executando os seguintes comandos com privilégios de administrador:

    No Linux (testado no Ubuntu 24.04.2 LTS), execute os seguintes comandos antes de executar setup.py:

    root@kitploit:~
     python -m pip install --upgrade setuptools
     
     # build wheel for python 3.10
     python -m pip install --force-reinstall netifaces
     
     # Observed "ModuleNotFoundError: No module named '_cffi_backend'" error while testing
     # This will get the required version of cffi packages for cryptography
     python -m pip install --upgrade cryptography
    

Sem instalação

Finalmente, se você quiser evitar instalar o FakeNet-NG e apenas executá-lo como está (por exemplo, para desenvolvimento), então você precisará obter o código fonte e instalar as dependências da seguinte forma:

  1. Instale o Python 3.10.11 de 64 bits ou 32 bits Python para as versões de 64 bits ou 32 bits do Windows/Linux, respectivamente.

  2. No Windows, instale as dependências Python executando os seguintes comandos com privilégios de administrador:

    root@kitploit:~
     python -m pip install pydivert dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
    

    NOTA: pydivert também baixará e instalará a biblioteca e driver WinDivert no diretório %PYTHONHOME%\DLLs. O FakeNet-NG inclui esses arquivos, portanto não são necessários para uso normal.

    No Linux, instale as dependências Python executando os seguintes comandos com privilégios de administrador:

    root@kitploit:~
     python -m pip install --upgrade setuptools
     
     # build wheel for python 3.10
     python -m pip install --force-reinstall netifaces
     
     # Observed "ModuleNotFoundError: No module named '_cffi_backend'" error while testing
     # This will get the required version of cffi packages for cryptography
     python -m pip install --upgrade cryptography
    
     python -m pip install netfilterqueue dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
    

    Opcionalmente, você pode instalar o seguinte módulo usado para teste:

    root@kitploit:~
     python -m pip install requests
    
  3. Baixe o código fonte do FakeNet-NG:

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng
    
  4. No Linux, libere a porta 53 para o listener DNS:

    root@kitploit:~

Uso

A maneira mais fácil de executar o FakeNet-NG é simplesmente executar o executável fornecido como Administrador. Você pode fornecer o parâmetro de linha de comando --help para obter ajuda simples:

root@kitploit:~
C:\tools\fakenet-ng>fakenet.exe --help
______      _  ________ _   _ ______ _______     _   _  _____
|  ____/\   | |/ /  ____| \ | |  ____|__   __|   | \ | |/ ____|
| |__ /  \  | ' /| |__  |  \| | |__     | |______|  \| | |  __
|  __/ /\ \ |  < |  __| | . ` |  __|    | |______| . ` | | |_ |
| | / ____ \| . \| |____| |\  | |____   | |      | |\  | |__| |
|_|/_/    \_\_|\_\______|_| \_|______|  |_|      |_| \_|\_____|

                        Version 3.5
_____________________________________________________________
                Developed by FLARE Team
    Copyright (C) 2016-2026 Mandiant, Inc. All rights reserved.
_____________________________________________________________

Usage: python -m fakenet.fakenet [options]:

Options:
-h, --help            show this help message and exit
-c FILE, --config-file=FILE
                    configuration filename
-v, --verbose       print more verbose messages (default: False)
-l LOG_FILE, --log-file=LOG_FILE
-s, --log-syslog    Log to syslog via /dev/log  (default: False)
-f STOP_FLAG, --stop-flag=STOP_FLAG
                    terminate if stop flag file is created
-p, --no-pause      disable pause for confirmation before closing the console 
                    (default: pause)
-n, --no-console-output
                    Suppress console output (for testing on Linux)

Como você pode ver na ajuda simples acima, é possível configurar o arquivo de configuração usado para iniciar o FakeNet-NG. Por padrão, a ferramenta usa configs\default.ini; no entanto, pode ser alterado com o parâmetro -c. Existem vários arquivos de configuração de exemplo no diretório configs. Devido ao grande número de configurações diferentes, o FakeNet-NG depende dos arquivos de configuração para controlar sua funcionalidade.

NOTA: O FakeNet-NG tentará localizar o arquivo de configuração especificado, primeiro usando o caminho absoluto ou relativo fornecido, caso você queira armazenar todas as suas configurações. Se o arquivo de configuração especificado não for encontrado, então ele tentará procurar em seu diretório configs.

As outras opções de linha de comando permitem controlar a quantidade de saída de logs exibida, bem como redirecioná-la para um arquivo em vez de exibi-la na tela.

Execução simples

Antes de nos aprofundarmos e executarmos o FakeNet-NG, vamos revisar alguns conceitos básicos. A ferramenta consiste em vários módulos trabalhando juntos. Um módulo importante é o Diverter, responsável por redirecionar o tráfego para uma coleção de listeners. O Diverter força as aplicações a interagirem com o FakeNet-NG em vez de servidores reais. Os Listeners são serviços individuais que lidam com conexões de entrada e nos permitem examinar o tráfego da aplicação (por exemplo, assinaturas de malware).

Vamos iniciar o FakeNet-NG usando as configurações padrão executando o seguinte comando:

root@kitploit:~
C:\tools\fakenet-ng>fakenet.exe

Abaixo está o log de saída anotado ilustrando uma solicitação DNS interceptada e uma conexão HTTP:

root@kitploit:~
  ______      _  ________ _   _ ______ _______     _   _  _____
 |  ____/\   | |/ /  ____| \ | |  ____|__   __|   | \ | |/ ____|
 | |__ /  \  | ' /| |__  |  \| | |__     | |______|  \| | |  __
 |  __/ /\ \ |  < |  __| | . ` |  __|    | |______| . ` | | |_ |
 | | / ____ \| . \| |____| |\  | |____   | |      | |\  | |__| |
 |_|/_/    \_\_|\_\______|_| \_|______|  |_|      |_| \_|\_____|

                         Version  3.5
  _____________________________________________________________
                   Developed by FLARE Team
    Copyright (C) 2016-2026 Mandiant, Inc. All rights reserved.
  _____________________________________________________________

07/06/16 10:20:52 PM [           FakeNet] Loaded configuration file: configs/default.ini
                                                                        /
                                            default configuration file /

07/06/16 10:20:52 PM [          Diverter] Capturing traffic to packets_20160706_222052.pcap
                                                                        /
                                                      PCAP output file /

07/06/16 10:20:52 PM [           FakeNet] Anonymous Forwarder listener on TCP port 8080...
                                    \
                                     \ Anonymous Listener rule

07/06/16 10:20:52 PM [    RawTCPListener] Starting...
07/06/16 10:20:52 PM [    RawUDPListener] Starting...
07/06/16 10:20:52 PM [  FilteredListener] Starting...
07/06/16 10:20:52 PM [        DNS Server] Starting...
07/06/16 10:20:52 PM [    HTTPListener80] Starting...
07/06/16 10:20:52 PM [   HTTPListener443] Starting...
07/06/16 10:20:52 PM [      SMTPListener] Starting...
07/06/16 10:20:52 PM [          Diverter] Starting...
                                       \
                                        \ Listeners starting up

07/06/16 10:20:52 PM [          Diverter] Diverting ports:
07/06/16 10:20:52 PM [          Diverter] TCP: 1337, 80, 443, 25
07/06/16 10:20:52 PM [          Diverter] UDP: 1337, 53
                                          /
               Summary of diverted ports /

07/06/16 10:21:03 PM [          Diverter] Modifying outbound external UDP request packet:
07/06/16 10:21:03 PM [          Diverter]   from: 192.168.250.140:49383 -> 4.2.2.1:53
07/06/16 10:21:03 PM [          Diverter]   to:   192.168.250.140:49383 -> 192.168.250.140:53
07/06/16 10:21:03 PM [          Diverter]   pid:  456 name: malware.exe
                                                            /
    Intercepted traffic to the DNS server from malware.exe /

07/06/16 10:21:03 PM [        DNS Server] Received A request for domain 'evil.com'.
                                       \
                                        \ Fake DNS Listener handling the above request

07/06/16 10:21:04 PM [          Diverter] Modifying outbound external TCP request packet:
07/06/16 10:21:04 PM [          Diverter]   from: 192.168.250.140:2179 -> 192.0.2.123:80
07/06/16 10:21:04 PM [          Diverter]   to:   192.168.250.140:2179 -> 192.168.250.140:80
07/06/16 10:21:04 PM [          Diverter]   pid:  456 name: malware.exe
                                                            /
    Intercepted traffic to the web server from malware.exe /

07/06/16 10:21:08 PM [    HTTPListener80] Received a GET request.
07/06/16 10:21:08 PM [    HTTPListener80] --------------------------------------------------------------------------------
07/06/16 10:21:08 PM [    HTTPListener80] GET / HTTP/1.0
07/06/16 10:21:08 PM [    HTTPListener80]
07/06/16 10:21:08 PM [    HTTPListener80] --------------------------------------------------------------------------------
                                       \
                                        \ Fake HTTP Listener handling the above request

Observe que cada linha de log tem o nome do módulo atualmente em execução do FakeNet-NG. Por exemplo, quando está desviando tráfego, os logs serão prefixados com o rótulo Diverter:

root@kitploit:~
07/06/16 10:21:03 PM [          Diverter] Modifying outbound external UDP request packet:
07/06/16 10:21:03 PM [          Diverter]   from: 192.168.250.140:49383 -> 4.2.2.1:53
07/06/16 10:21:03 PM [          Diverter]   to:   192.168.250.140:49383 -> 192.168.250.140:53
07/06/16 10:21:03 PM [          Diverter]   pid:  456 name: malware.exe

Ao mesmo tempo, sempre que listeners individuais estão lidando com tráfego desviado, os logs serão rotulados com o nome definido no arquivo de configuração:

root@kitploit:~
07/06/16 10:21:03 PM [        DNS Server] Received A request for domain 'evil.com'.

Para parar o FakeNet-NG e salvar o arquivo PCAP gerado e o relatório HTML no disco, basta pressionar CTRL-C:

root@kitploit:~
07/06/16 10:21:41 PM [           FakeNet] Stopping...
07/06/16 10:21:42 PM [    HTTPListener80] Stopping...
07/06/16 10:21:42 PM [   HTTPListener443] Stopping...
07/06/16 10:21:42 PM [      SMTPListener] Stopping...
07/06/16 10:21:43 PM [          Diverter] Stopping...
07/06/16 10:21:43 PM [          Diverter] Generated new HTML report: report_20160607_102143.html
[Press Enter to exit]

Aguarde a geração do PCAP e do relatório, depois pressione Enter para sair. A janela do console permanecerá aberta até que você faça isso; isso pode ser desabilitado (por exemplo, em scripts) com a flag --no-pause.

Interface do Usuário

Com cada sessão do FakeNet-NG, um relatório HTML contendo os Indicadores Baseados em Rede (NBIs) capturados durante a sessão é gerado. Ao encerrar o FakeNet pressionando CTRL-C, este arquivo HTML será salvo no diretório raiz do FakeNet. Um usuário pode revisar os NBIs visualizando este arquivo HTML em um navegador como Chrome ou Firefox.

O relatório HTML serve como uma Interface Gráfica do Usuário (GUI) interativa que apresenta o resumo dos NBIs de maneira amigável. Inclui vários recursos para selecionar, filtrar e copiar NBIs, facilitando a análise de rede. A IU organiza todos os NBIs com base em suas informações de processo e, em seguida, os categoriza ainda mais pelo protocolo da camada de aplicação ou transporte que utilizam.

Tabela de Resumo dos NBIs

As informações na tabela de resumo dos NBIs são apresentadas em formato tabular e incluem os seguintes detalhes:

  • Select: Clicar na caixa de seleção seleciona o NBI correspondente. Você pode selecionar múltiplos NBIs em diferentes protocolos ou no mesmo protocolo. A linha inteira também pode ser selecionada clicando em qualquer lugar dentro da linha. Os NBIs selecionados podem ser copiados usando o botão "Copy Selected NBIs".

  • NBI: Esta célula representa o NBI realmente capturado. Inclui comandos, parâmetros, URIs e outras atividades significativas geradas pelo cliente contra o listener. Esta célula resume o comportamento do malware para melhor compreensão.

  • Additional Information: Esta célula fornece informações extras sobre cada solicitação NBI, como o protocolo da camada de transporte usado, IP de destino, porta e criptografia SSL.

  • Actions: Esta célula permite realizar ações em NBIs individuais. Atualmente, apenas a cópia é suportada. Clicar no botão de cópia copia os dados da célula NBI específica em formato markdown adequado para criar relatórios.

Recursos Interativos

A IU também inclui vários recursos interativos:

  • Checkbox Selection: As caixas de seleção estão disponíveis antes de cada bloco de processo e protocolo. Marcar uma caixa de seleção seleciona todos os NBIs sob aquele processo ou protocolo. Isso é útil quando você deseja selecionar todos os NBIs de um determinado processo ou protocolo. Você pode então usar o botão Copy Selected NBIs para copiar os dados selecionados.

  • Search Bar: A barra de pesquisa permite digitar palavras-chave, e apenas as linhas que contêm essas palavras-chave no nome do processo, NBI ou informações adicionais serão exibidas na página HTML. Você pode então usar o botão "Copy Filtered Data" para copiar os dados exibidos em formato markdown. Limpar a consulta de pesquisa restaura a visualização original da tabela.

  • Copy Buttons:

    • Copy Selected Data: Copia todos os NBIs selecionados em formato markdown. Você pode selecionar NBIs individuais ou todos os NBIs sob um processo marcando as caixas de seleção.
    • Copy Filtered Data: Copia os dados dos NBIs filtrados em formato markdown. Se nenhuma consulta de pesquisa for usada, este botão copia todos os dados.
    • Copy All NBIs: Copia todos os NBIs em formato markdown presentes na página HTML. Mesmo se um filtro for aplicado, clicar neste botão copia todos os NBIs.
  • Disclaimer Button: Exibe o aviso legal, que descreve fatos importantes para o usuário considerar antes de fazer suposições sobre o resumo dos NBIs exibido.

  • Go To Top Button: Aparece quando o conteúdo da página excede a área visível. Clicar neste botão leva você ao topo da página, onde pode acessar botões importantes como Copy Selected NBIs, Copy All NBIs, Copy Filtered NBIs e a barra de pesquisa.

Configuração

Para aproveitar ao máximo os recursos do FakeNet-NG, devemos entender sua estrutura de arquivo de configuração e configurações. Abaixo está um exemplo de arquivo de configuração:

root@kitploit:~
###############################################################################
# Fakenet Configuration

[FakeNet]

DivertTraffic: Yes

###############################################################################
# Diverter Configuration

[Diverter]

NetworkMode:            Auto

LinuxRedirectNonlocal:  *
LinuxFlushIptables:     Yes
LinuxFlushDNSCommand:   service dns-clean restart

DumpPackets:            Yes
DumpPacketsFilePrefix:  packets

ModifyLocalDNS:         No
StopDNSService:         Yes

RedirectAllTraffic:     Yes
DefaultTCPListener:     RawTCPListener
DefaultUDPListener:     RawUDPListener

###############################################################################
# Listener Configuration

[DNS Server]
Enabled:     True
Port:        53
Protocol:    UDP
Listener:    DNSListener
DNSResponse: 192.0.2.123
NXDomains:   0
Hidden:      False

[RawTCPListener]
Enabled:     True
Port:        1337
Protocol:    TCP
Listener:    RawListener
UseSSL:      No
Timeout:     10
Hidden:      False

O arquivo de configuração é dividido em várias seções.* [FakeNet] - Controla o comportamento da própria aplicação. A única opção válida neste momento é DivertTraffic. Quando ativado, instrui a ferramenta a iniciar o plugin Diverter apropriado e interceptar o tráfego. Se esta opção estiver desativada, o FakeNet-NG ainda iniciará os listeners, mas dependerá de outro método para direcionar o tráfego até eles (por exemplo, alterar manualmente o servidor DNS).

  • [Diverter] - Configurações para redirecionamento de tráfego. Abordado em detalhes abaixo.

  • [Nome do Listener] - Uma coleção de configurações de listener. Cada listener tem um conjunto de configurações padrão (ex.: porta, protocolo), bem como configurações específicas do listener (ex.: DumpHTTPPosts para o HTTPListener).

Configuração do Diverter

Supondo que tenha ativado a opção DivertTraffic no bloco de configuração [FakeNet], a ferramenta ativará seu motor de redirecionamento de tráfego, o qual chamaremos de Diverter a partir de agora, como referência à excelente biblioteca WinDivert utilizada para realizar a mágica nos bastidores em plataformas Windows (a implementação Linux do Diverter usa python-netfilterqueue).

O Diverter examinará todos os pacotes de saída e os comparará com uma lista de protocolos e portas dos listeners ativados. Se houver um listener escutando na porta e protocolo do pacote, o endereço de destino será alterado para o endereço IP da máquina local, onde o listener tratará a solicitação. Ao mesmo tempo, as respostas provenientes do listener serão alteradas para que o endereço IP de origem pareça que o pacote está vindo do host originalmente solicitado.

Opcionalmente, pode ativar a opção DumpPackets para armazenar todo o tráfego observado pelo FakeNet-NG (redirecionado ou encaminhado) em um arquivo PCAP. É possível descriptografar o tráfego SSL entre uma aplicação interceptada e um dos listeners com suporte a SSL. Utilize as instruções na página seguinte:

root@kitploit:~
https://wiki.wireshark.org/TLS

As chaves privkey.pem e server.pem usadas pelos servidores do FakeNet-NG estão no diretório raiz da aplicação.

  • NetworkMode - Especifica o modo de rede no qual executar o FakeNet-NG.
    • Configurações válidas:
      • SingleHost: manipula tráfego de processos locais.
      • MultiHost: manipula tráfego de outros sistemas.
      • Auto: usa o NetworkMode que for mais funcional na plataforma atual.
    • Nem todas as plataformas suportam atualmente todas as configurações de NetworkMode. Segue o estado atual do suporte:
      • Windows suporta apenas SingleHost
      • Linux suporta MultiHost e, experimentalmente, o modo SingleHost (funciona, com exceção da lista negra e lista branca de processos, portas e hosts).
    • Por enquanto, deixe isto definido como Auto para obter o modo SingleHost no Windows e o modo MultiHost no Linux.

O Diverter geralmente suporta a seguinte configuração relacionada a DNS:

  • ModifyLocalDNS - aponta o serviço DNS da máquina local para o listener DNS do FakeNet-NG.

A implementação Windows do Diverter suporta a seguinte configuração relacionada a DNS:

  • StopDNSService - interrompe o serviço de cliente DNS do Windows (Dnscache). Isto permite que o FakeNet-NG veja os processos reais resolvendo domínios, em vez do processo genérico 'svchost.exe'.

A implementação Linux do Diverter suporta as seguintes configurações:

  • LinuxRedirectNonlocal - Ao usar o FakeNet-NG para simular conectividade com a Internet para um host diferente, especifica quais interfaces de rede voltadas para o exterior devem ser redirecionadas para o FakeNet-NG.

  • LinuxFlushIptables - Limpa todas as regras iptables antes de adicionar regras para o FakeNet-NG. O Diverter Linux restaurará as regras antigas desde que a sua sequência de terminação não seja interrompida.

  • LinuxFlushDnsCommand - Especifica o comando correto para a sua distribuição Linux limpar o cache do resolvedor DNS, se aplicável.

  • DebugLevel - Especifica eventos de depuração detalhados a serem exibidos. Consulte fakenet/diverters/linutil.py para obter os rótulos válidos.

Redirecionando Todo o Tráfego

Por padrão, o Diverter interceptará apenas tráfego que tenha um listener dedicado criado para ele. No entanto, ao ativar a opção RedirectAllTraffic e configurar os tratadores TCP e UDP padrão com as opções DefaultTCPListener e DefaultUDPListener, é possível lidar dinamicamente com o tráfego destinado a portas não definidas explicitamente em nenhum dos listeners. Por exemplo, vejamos uma configuração de exemplo que redireciona todo o tráfego para listeners TCP e UDP locais nas portas 1234:

root@kitploit:~
RedirectAllTraffic: Yes
DefaultTCPListener: TCPListener1234
DefaultUDPListener: UDPListener1234

NOTA: Estamos avançando um pouco com as definições de listener, mas considere que TCPListener1234 e UDPListener1234 serão definidos na seção abaixo.

Com a opção RedirectAllTraffic, o FakeNet-NG modificará não apenas o endereço de destino, mas também a porta de destino, para que possa ser tratado por um dos listeners padrão. Abaixo está um exemplo de log de tráfego destinado a um host externo com endereço IP 1.1.1.1 na porta 4444, que foi redirecionado para o listener padrão na porta 1234:

root@kitploit:~
07/06/16 01:13:47 AM [          Diverter] Modifying outbound external TCP request packet:
07/06/16 01:13:47 AM [          Diverter]   from: 192.168.66.129:1650 -> 1.1.1.1:4444
07/06/16 01:13:47 AM [          Diverter]   to:   192.168.66.129:1650 -> 192.168.66.129:1234
07/06/16 01:13:47 AM [          Diverter]   pid:  3716 name: malware.exe

É importante observar que o tráfego destinado à porta de um dos listeners explicitamente definidos ainda será tratado por esse listener e não pelo listener padrão. Por exemplo, o listener UDP padrão não tratará tráfego DNS se um listener DNS separado na porta UDP 53 estiver definido.

Um problema ao ativar a opção RedirectAllTraffic é que você pode ainda querer deixar algum tráfego passar para garantir o funcionamento normal da máquina. Considere um cenário onde está tentando analisar uma aplicação que ainda precisa se conectar a um servidor DNS externo. Pode utilizar as opções BlackListPortsTCP e BlackListPortsUDP para definir uma lista de portas para as quais o tráfego será ignorado e encaminhado inalterado, ou BlackListIDsICMP (apenas Windows) para definir uma lista de IDs ICMP a serem filtrados e ignorados:

root@kitploit:~
BlackListPortsUDP: 53

Outras configurações do Diverter que pode considerar são ProcessBlackList e HostBlackList, que permitem ao Diverter ignorar e encaminhar tráfego proveniente de um nome de processo específico ou destinado a um host específico, respectivamente.

Configurações dos Listeners

As configurações dos listeners definem o comportamento de listeners individuais. Vejamos uma configuração de listener de exemplo:

root@kitploit:~
[TCPListener1234]
Enabled:     True
Port:        1234
Protocol:    TCP
Listener:    RawListener
UseSSL:      Yes
Timeout:     10
Hidden:      False

A configuração acima consiste no nome do listener TCPListener1234. Será utilizado para fins de registro, para que possa distinguir entre diferentes listeners que tratam conexões, mesmo que estejam a lidar com o mesmo protocolo.

As seguintes configurações são genéricas para todos os listeners:

  • Enabled - especifica se o listener está ativado ou não.
  • Port - porta TCP ou UDP para escutar.
  • Protocol - TCP ou UDP
  • Listener - Nome do listener para tratar o tráfego.
  • ProcessWhiteList - Apenas o tráfego destes processos será modificado e o restante será simplesmente encaminhado.
  • ProcessBlackList - O tráfego de todos exceto estes processos será simplesmente encaminhado e o restante será modificado conforme necessário.
  • HostWhiteList - Apenas o tráfego para estes hosts será modificado e o restante será simplesmente encaminhado.
  • HostBlackList - O tráfego para estes hosts será simplesmente encaminhado e o restante será modificado conforme necessário.
  • ExecuteCmd - Executa comando no primeiro pacote de conexão. Esta funcionalidade é útil para estender a funcionalidade do FakeNet-NG (ex.: iniciar um depurador no pid da conexão para ajudar na descompressão e decodificação).
  • Hidden - Não permite que o tráfego seja direcionado para este listener sem passar pelo proxy, que determinará o protocolo com base no conteúdo do pacote.

As opções Port e Protocol são necessárias para que os listeners saibam em que portas se ligar e, se suportarem múltiplos protocolos (ex.: RawListener), decidir qual protocolo usar. Também são usadas pelo Diverter para descobrir quais portas e protocolos redirecionar.

A opção Listener define um dos plugins de listener disponíveis para tratar o tráfego redirecionado. A versão atual do FakeNet-NG vem com os seguintes listeners:

  • DNSListener - suporta o protocolo DNS e responde a registos A com o endereço IP da máquina local ou um endereço configurável na opção DNSResponse. Pode também definir o atributo NXDomains para o número de pedidos que o listener deve ignorar. Desta forma, pode conseguir que o malware solicite todos os nomes dos seus servidores C2 de backup. O listener suporta os protocolos TCP e UDP.
  • RawListener - suporta protocolos binários básicos TCP e UDP. O comportamento padrão é simplesmente ecoar os pacotes recebidos de volta ao cliente. Suporta ligações SSL.
  • HTTPListener - suporta os protocolos HTTP e HTTPS. Responde com diferentes ficheiros no diretório configurável Webroot com base na extensão do ficheiro solicitado. Opcionalmente, descarrega pedidos POST para um ficheiro configurável que pode ser especificado através das opções DumpHTTPPosts e DumpHTTPPostsFilePrefix.
  • SMTPListener - suporta o protocolo SMTP.
  • ProxyListener - Detecta o protocolo com base no conteúdo do pacote e redireciona os pacotes em conformidade.

NOTA: O FakeNet-NG tentará localizar o diretório webroot, primeiro usando os caminhos absolutos ou relativos fornecidos. Se o caminho webroot especificado não for encontrado, então tentará procurar no seu diretório defaultFiles.

Como caso especial, a implementação Windows do Diverter responde automaticamente a todos os pedidos ICMP enquanto estiver em execução. Assim, se um malware tentar fazer ping a um host para testar a conectividade, receberá uma resposta válida. O Diverter Linux regista e encaminha todos os pacotes ICMP para o localhost.

NOTA: Alguns listeners podem lidar com uploads de ficheiros (ex.: TFTPListener e BITSListener). Todos os ficheiros carregados serão armazenados no diretório de trabalho atual com um prefixo configurável (ex.: "tftp_" para uploads TFTP).

Filtragem de Listeners

O FakeNet-NG suporta várias regras de filtragem que consistem em listas negras e listas brancas de processos e hosts. As listas brancas são tratadas como regras que permitem ligações aos listeners, enquanto as listas negras são usadas para ignorar as ligações recebidas e deixá-las ser simplesmente encaminhadas.

Por exemplo, considere a configuração abaixo com filtros de processo e host:

root@kitploit:~
[FilteredListener]
Enabled:     True
Port:        31337
Protocol:    TCP
Listener:    RawListener
UseSSL:      No
Timeout:     10
ProcessWhiteList: malware.exe, ncat.exe
HostBlackList: 5.5.5.5

O FilteredListener acima lidará apenas com ligações provenientes dos processos malware.exe e ncat.exe, mas ignorará quaisquer ligações destinadas ao host 5.5.5.5. Isto significa que se um processo chamado test.exe tentar conectar na porta 31337, não será redirecionado para o listener e será encaminhado para onde quer que fosse originalmente destinado, se a rota estiver disponível.

Ao mesmo tempo, se o processo malware.exe tentar conectar na porta 31337 em qualquer host que não seja 5.5.5.5, será desviado para o FilteredListener. Quaisquer ligações do processo malware.exe destinadas a 5.5.5.5 seriam permitidas.

Execução de Comandos no Listener

Outra opção de configuração poderosa é ExecuteCmd. Essencialmente, permite executar um comando arbitrário no primeiro pacote detetado da ligação. O valor de ExecuteCmd pode usar várias variáveis de formato de string:

  • {pid} - id do processo
  • {procname} - nome do executável do processo
  • {src_addr} - endereço de origem
  • {src_port} - porta de origem
  • {dst_addr} - endereço de destino
  • {dst_port} - porta de destino

Considere um cenário de uma amostra de malware empacotada que se conecta a um servidor C2 configurado na porta 8443 (Use RedirectAllTraffic se a porta não for conhecida). Em muitos casos, o malware desempacotar-se-á no momento em que faz a conexão, tornando esse ponto na execução ideal para anexar o processo com um depurador e despejar uma versão desempacotada para análise posterior.

Vejamos como isto pode ser usado para lançar automaticamente um depurador na primeira conexão:

root@kitploit:~
[C2Listener]
Enabled:     True
Port:        8443
Protocol:    TCP
Listener:    RawListener
UseSSL:      Yes
Timeout:     300
ProcessWhiteList: malware.exe
ExecuteCmd:  C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\windbg.exe -p {pid}

Assim que o FakeNet-NG deteta uma nova conexão proveniente do processo na lista branca malware.exe (esta opção é opcional), lançará automaticamente o windbg e anexá-lo-á ao processo conector.

NOTA: Poderá querer estender a opção normal Timeout se o malware precisar de interagir mais com o listener.

Listener Anónimo

Existe um caso de uso especial onde pode criar uma nova configuração de listener sem definir o listener real para o tratar:

root@kitploit:~
[Forwarder]
Enabled:     True
Port:        8080
Protocol:    TCP
ProcessWhiteList: chrome.exe

Sem um listener definido, o FakeNet-NG ainda desviará o tráfego para a máquina local, mas um listener separado deve ser lançado pelo utilizador. Por exemplo, poderia ter um proxy HTTP a escutar ligações na porta 8080 e deixar o FakeNet-NG interceptar todo o tráfego de aplicações que não usam as configurações de proxy do sistema ou usam endereços IP fixos. Usando listeners anónimos, pode trazer as capacidades avançadas de filtragem de tráfego e processos do FakeNet-NG para ferramentas de terceiros.

Poderá também querer ativar a opção ProcessBlackList do Diverter para permitir que a ferramenta externa comunique com a Internet. Por exemplo, para permitir que um proxy HTTP encaminhe tráfego proxied, adicione o nome do seu processo à lista negra de processos. Por exemplo, adicione o seguinte processo para permitir que o Burp Proxy comunique com a Internet:

root@kitploit:~
ProcessBlackList: java.exe

No cenário onde a aplicação comunica numa porta desconhecida, mas ainda quer redirecioná-la para o listener anónimo na porta 8080, pode definir o listener padrão da seguinte forma:

root@kitploit:~
RedirectAllTraffic: Yes
DefaultTCPListener: ForwarderTCP
DefaultUDPListener: RawUDPListener

Finalmente, para permitir que o tráfego DNS ainda vá para o servidor DNS padrão na Internet, enquanto redireciona todo o outro tráfego, adicione a porta 53 à lista negra de portas UDP do Diverter da seguinte forma:

root@kitploit:~
BlackListPortsUDP:

Proxy Listener

A versão mais recente do FakeNet-NG implementa um novo proxy listener que é capaz de detetar dinamicamente o protocolo de comunicação (incluindo tráfego SSL) e redirecionar a conexão para um listener apropriado.

Pode configurar o proxy listener para funcionar numa porta específica, conforme ilustrado na configuração abaixo:

root@kitploit:~
[ProxyTCPListener]
Enabled:    True
Protocol:   TCP
Listener:   ProxyListener
Port:       38926
Listeners:  HTTPListener, RawListener, FTPListener, DNSListener, POPListener, SMTPListener, TFTPListener, IRCListener, BITSListener
Hidden:     False

Note o novo parâmetro Listeners que define uma lista de potenciais tratadores de protocolo a experimentar para todas as conexões recebidas.

Também é recomendado definir um proxy listener como seu tratador padrão atualizando as seguintes configurações do diverter:

root@kitploit:~
RedirectAllTraffic:    Yes
DefaultTCPListener:    ProxyTCPListener
DefaultUDPListener:    ProxyUDPListener

Com o listener padrão apontando para o proxy listener, todas as conexões desconhecidas serão tratadas adequadamente. Pode ainda atribuir listeners específicos a portas para impor um protocolo específico (ex.: usar sempre o listener HTTP para a porta 80).

O Proxy determina o protocolo dos pacotes consultando todos os listeners disponíveis com a função taste(). Cada Listener que implementa taste() responderá com uma pontuação indicando a probabilidade de que o protocolo tratado por esse listener corresponda ao conteúdo do pacote. O Proxy encaminhará o pacote para o Listener que devolveu a pontuação mais alta. O RawListener devolverá sempre uma pontuação de 1, por isso será escolhido no caso de todos os outros Listeners devolverem 0, servindo assim como padrão.

Os utilizadores podem alterar o parâmetro de configuração 'Hidden' na configuração de cada Listener. Se Hidden for 'False', o Listener será vinculado a uma porta específica e receberá automaticamente todo o tráfego nessa porta. Com Hidden definido como 'True', o Listener só pode receber tráfego que seja redirecionado através do Proxy.

Desenvolvimento

O FakeNet-NG é desenvolvido em Python, o que permite desenvolver rapidamente novos plugins e estender a funcionalidade existente. Para mais detalhes, consulte Developing for FakeNet-NG.

Problemas Conhecidos

[WinError 87] O parâmetro está incorreto

No momento desta redação, o tamanho padrão do buffer no pydivert é 1500. Se o FakeNet-NG encontrar um pacote maior que o tamanho padrão do buffer, poderá observar este erro. Uma solução alternativa é especificar o tamanho do buffer desejado em self.handle.recv(bufsize=<your_bufsize>) em fakenet/diverters/windows. Veja aqui

Não funciona no VMWare com modo host-only ativado

Veja "Não está a interceptar tráfego" abaixo.

Não está a Interceptar Tráfego

Para que o FakeNet-NG intercepte e modifique o pacote, deve existir uma rota de rede válida para o pacote chegar ao seu destino.

Existe uma forma fácil de verificar se tem as rotas configuradas corretamente. Sem a ferramenta em execução, tente fazer ping ao host de destino. Deverá observar uma resposta válida ou uma mensagem de timeout. Se receber um erro de destino inalcançável, então não tem uma rota válida.

Isto é geralmente causado pela sua gateway não estar definida ou não ser alcançável. Por exemplo, numa máquina VMWare com modo host-only, a sua máquina não terá a gateway configurada, impedindo assim o FakeNet-NG de ver qualquer tráfego.

Para corrigir este problema, configure manualmente a sua interface principal para a gateway na mesma sub-rede. Primeiro verifique o nome da interface:

root@kitploit:~
C:\>netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Connected      Dedicated        Local Area Connection

Neste caso, o nome da interface é "Local Area Connection", por isso iremos usá-la para o resto dos comandos.Configure manualmente o endereço IP da interface e o gateway da seguinte forma:

root@kitploit:~
C:\>netsh interface ip set address name="Local Area Connection" static 192.168.249.123 255.255.255.0 192.168.249.254

Defina manualmente o endereço IP do servidor DNS

root@kitploit:~
C:\>netsh interface ip set dns name="Local Area Connection" static 4.2.2.2

Se você ainda estiver com problemas, certifique-se de que o endereço IP do gateway em si seja roteável.

DNS Not Resolving Names

Certifique-se de que o DNS Listener tenha se vinculado com sucesso à sua porta. Erros como os seguintes indicam que o DNS Listener não se vinculou com sucesso:``` 05/01/17 11:11:16 AM [ FakeNet] Error starting DNSListener listener: 05/01/17 11:11:16 AM [ FakeNet] [Errno 98] Address already in use

root@kitploit:~
Use `netstat`, `tcpview` ou outras ferramentas para descobrir qual aplicação está vinculada à porta e consulte a documentação do sistema operacional ou da aplicação correspondente para desabilitar o serviço.

Pode fazer sentido capturar um snapshot da VM antes de realizar a reconfiguração.

Por exemplo, o Ubuntu frequentemente habilita o serviço `dnsmasq` no arquivo `/etc/NetworkManager/NetworkManager.conf` com a linha `dns=dnsmasq`. Desabilitar isso (por exemplo, comentando a linha) e reiniciar o serviço `network-manager` (ex.: `service network-manager restart`) é suficiente para liberar a porta antes de reiniciar o FakeNet-NG.

Em versões mais recentes do Ubuntu ou em outras distribuições, usar `lsof -i` pode revelar que o `systemd-resolved` está sendo usado em seu lugar. Nesses casos, você pode tentar estas etapas adaptadas de
<https://askubuntu.com/questions/907246/how-to-disable-systemd-resolved-in-ubuntu>:```
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Em seguida, em /etc/NetworkManager/NetworkManager.conf na seção [main], adicione uma linha especificando:``` dns=default

root@kitploit:~
Apague o link simbólico `/etc/resolv.conf`, ou seja, `rm /etc/resolv.conf`.

Finalmente, reinicie o `NetworkManager`:```
sudo systemctl restart NetworkManager

Error: Could not locate WinDivert DLL or one of its components

Por favor, certifique-se de que o FakeNet-NG foi extraído na unidade C: local para garantir que o driver WinDivert seja carregado corretamente.

Error: The application has failed to start because its side-by-side configuration is incorrect.

Este erro pode ocorrer ao executar uma versão executável autônoma do Fakenet. Faça o download e instale o executável de tempo de execução do Visual C++ 2008.

Limitações

  • Apenas Windows Vista+ é suportado para o modo SingleHost. Por favor, use o Fakenet original para sistemas operacionais Windows XP/2003.

  • Apenas Linux é suportado para o modo MultiHost.

  • Versões antigas do python-netfilterqueue podem causar uma falha de segmentação no python. Se você encontrar esse problema, verifique se está usando a versão mais recente do python-netfilterqueue.

  • Devido ao tamanho fixo do buffer usado pelo python-netfilterqueue, o Diverter Linux não processa corretamente pacotes maiores que 4.016 bytes. Na prática, isso não afeta o modo Linux MultiHost para interfaces configuradas com a unidade máxima de transmissão (MTU) convencional de 1.500 bytes. Se a interface Linux que você está usando com o FakeNet-NG suportar um MTU maior que 4016, você precisará recompilar o python-netfilterqueue para suportar um tamanho de buffer de <seu_mtu> + 80 (o python-netfilterqueue dedica 80 bytes do buffer à sobrecarga).

  • O tráfego apenas da máquina local não é interceptado no Windows (por exemplo, se você tentar conectar diretamente a um dos listeners).

  • Apenas o tráfego que utiliza os protocolos TCP, UDP e ICMP é interceptado.

Créditos

  • O FakeNet-NG foi projetado e desenvolvido por Peter Kacherginsky.
  • Agradecimentos especiais a Andrew Honig, Michael Sikorski e outros pelo FakeNet original, que foi a inspiração para desenvolver esta ferramenta.
  • O Diverter Linux foi projetado e desenvolvido por Michael Bailey.
  • Obrigado a Matthew Haigh por desenvolver o recurso de detecção automática de protocolo proxy.
  • Obrigado a Cody Pierce e Antony Saba por relatar e corrigir uma vulnerabilidade de travessia do sistema de arquivos.

Contato

Para bugs, travamentos ou outros comentários, entre em contato pelo e-mail [email protected].

Inscreva-se na lista de e-mails FLARE para anúncios da comunidade! Envie um e-mail com "subscribe" para [email protected].

Baixar ferramenta

Se instalar manualmente, mude para o diretório flare-fakenet-ng baixado e execute o seguinte comando com privilégios de administrador:

root@kitploit:~
 python setup.py install
  • No Linux, libere a porta 53 para o listener DNS:

    root@kitploit:~
     sudo systemctl stop systemd-resolved
    

    Execute o FakeNet-NG executando 'fakenet' de qualquer diretório em um shell com privilégios.

  • sudo systemctl stop systemd-resolved

    Execute o FakeNet-NG executando-o com um interpretador Python em um shell privilegiado:

    root@kitploit:~
     python -m fakenet.fakenet