Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
flare-fakenet-ng — FakeNet-NG - Herramienta de Análisis Dinámico de Redes de Nueva Generación | Kitploit
Herramientas/GitHubGitHub/mandiant/flare-fakenet-ng
Sniffing y Análisis de PaquetesAnálisis Dinámico (Sandboxing)Seguridad de RedesAnálisis de MalwarePruebas de Penetración
GitHubmandiant/flare-fakenet-ng

flare-fakenet-ng

FakeNet-NG - Herramienta de Análisis Dinámico de Redes de Nueva Generación

Ver Repositorio
2.2k3766hace 3 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

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

FakeNet-NG 3.5 es una herramienta de análisis de red dinámico de próxima generación para analistas de malware y testers de penetración. Es de código abierto y está diseñado para las últimas versiones de Windows (y Linux, para ciertos modos de operación). FakeNet-NG se basa en la excelente herramienta Fakenet desarrollada por Andrew Honig y Michael Sikorski.

La herramienta permite interceptar y redirigir todo o parte del tráfico de red mientras simula servicios de red legítimos. Usando FakeNet-NG, los analistas de malware pueden identificar rápidamente la funcionalidad del malware y capturar firmas de red. Los testers de penetración y cazadores de bugs encontrarán el motor de intercepción configurable y el marco modular de FakeNet-NG muy útil al probar la funcionalidad específica de una aplicación y prototipar PoCs.

Instalación

Puede instalar FakeNet-NG de varias maneras. Tenga en cuenta que los siguientes procesos de instalación recuperarán bibliotecas de código abierto de terceros utilizadas por FakeNet-NG en su sistema. Estas bibliotecas se cargarán dinámicamente en tiempo de ejecución, y algunas de estas bibliotecas pueden tener licencia LGPL.

Ejecutable independiente

Es más fácil simplemente descargar la versión compilada que se puede obtener desde la página de lanzamientos:

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

Ejecute FakeNet-NG ejecutando 'fakenet.exe'.

Este es el método preferido para usar FakeNet-NG en Windows, ya que no requiere que instale módulos adicionales, lo cual es ideal para una máquina de análisis de malware.

NOTA: FakeNet-NG puede ser marcado como malicioso por soluciones Antivirus (AV) y de Detección y Respuesta de Endpoints (EDR) (por ejemplo, Windows Defender, Navegación Segura de Chrome). Esto probablemente se deba a su capacidad para modificar el tráfico de red y simular servicios de red, además del uso de PyInstaller para construir los ejecutables de lanzamiento. Los binarios oficiales de lanzamiento son seguros, y estas detecciones deben considerarse falsos positivos. Como recordatorio, FakeNet-NG está diseñado y altamente recomendado para su uso en un entorno controlado y aislado, como una Máquina Virtual (VM), donde puede alterar de forma segura la configuración de red del sistema.

Instalación del módulo

  1. Instale Python 3.10.11 y la última versión de pip para sistema operativo Windows/Linux.

  2. En Windows, descargue e instale Visual C++ build tools.

    La instalación en Linux requiere las siguientes dependencias:

    • Gestor de paquetes pip de Python (por ejemplo, python-pip para Ubuntu).
    • Archivos de desarrollo de Python (por ejemplo, python-dev para Ubuntu).
    • Archivos de desarrollo de OpenSSL (por ejemplo, libssl-dev para Ubuntu).
    • Archivos de desarrollo de libffi (por ejemplo, libffi-dev para Ubuntu).
    • Archivos de desarrollo de libnetfilterqueue (por ejemplo, libnetfilter-queue-dev para Ubuntu).

    Instale estas dependencias usando el siguiente comando:

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

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

    O obteniendo el último código fuente e instalándolo manualmente:

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng/
    
  4. Instale las dependencias de Python ejecutando los siguientes comandos con privilegios de administrador:

    En Linux (probado en Ubuntu 24.04.2 LTS), ejecute los siguientes comandos antes de ejecutar setup.py:

    root@kitploit:~
     python -m pip install --upgrade setuptools
     
     # build wheel para python 3.10
     python -m pip install --force-reinstall netifaces
     
     # Se observó el error "ModuleNotFoundError: No module named '_cffi_backend'" durante las pruebas
     # Esto obtiene la versión requerida de los paquetes cffi para cryptography
     python -m pip install --upgrade cryptography
    

    Si instala manualmente, cambie al directorio flare-fakenet-ng descargado y ejecute lo siguiente con privilegios de administrador:

    root@kitploit:~
     python setup.py install
    
  5. En Linux, libere el puerto 53 para el listener DNS:

    root@kitploit:~
     sudo systemctl stop systemd-resolved
    

    Ejecute FakeNet-NG ejecutando 'fakenet' desde cualquier directorio en un shell con privilegios.

Sin instalación

Finalmente, si desea evitar instalar FakeNet-NG y solo quiere ejecutarlo tal cual (por ejemplo, para desarrollo), entonces necesitaría obtener el código fuente e instalar las dependencias de la siguiente manera:

  1. Instale Python 3.10.11 de 64 bits o 32 bits para las versiones de 64 bits o 32 bits de Windows/Linux respectivamente.

  2. En Windows, instale las dependencias de Python ejecutando los siguientes comandos con privilegios de administrador:

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

    NOTA: pydivert también descargará e instalará la biblioteca y el controlador WinDivert en el directorio %PYTHONHOME%\DLLs. FakeNet-NG incluye esos archivos, por lo que no son necesarios para el uso normal.

    En Linux, instale las dependencias de Python ejecutando los siguientes comandos con privilegios de administrador:

    root@kitploit:~
     python -m pip install --upgrade setuptools
     
     # build wheel para python 3.10
     python -m pip install --force-reinstall netifaces
     
     # Se observó el error "ModuleNotFoundError: No module named '_cffi_backend'" durante las pruebas
     # Esto obtiene la versión requerida de los paquetes cffi para cryptography
     python -m pip install --upgrade cryptography
    
     python -m pip install netfilterqueue dnslib dpkt pyopenssl pyftpdlib netifaces jinja2
    

    Opcionalmente, puede instalar el siguiente módulo utilizado para pruebas:

    root@kitploit:~
     python -m pip install requests
    
  3. Descargue el código fuente de FakeNet-NG:

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng
    
  4. En Linux, libere el puerto 53 para el listener DNS:

    root@kitploit:~
     sudo systemctl stop systemd-resolved
    

    Ejecute FakeNet-NG ejecutándolo con un intérprete de Python en un shell con privilegios:

    root@kitploit:~
     python -m fakenet.fakenet
    

Uso

La forma más fácil de ejecutar FakeNet-NG es simplemente ejecutar el ejecutable proporcionado como Administrador. Puede proporcionar el parámetro de línea de comandos --help para obtener ayuda simple:

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 se puede ver en la ayuda simple anterior, es posible configurar el archivo de configuración utilizado para iniciar FakeNet-NG. De forma predeterminada, la herramienta usa configs\default.ini; sin embargo, se puede cambiar con el parámetro -c. Hay varios archivos de configuración de ejemplo en el directorio configs. Debido a la gran cantidad de configuraciones diferentes, FakeNet-NG se basa en los archivos de configuración para controlar su funcionalidad.

NOTA: FakeNet-NG intentará localizar el archivo de configuración especificado, primero usando la ruta absoluta o relativa proporcionada en caso de que desee almacenar todas sus configuraciones. Si el archivo de configuración especificado no se encuentra, entonces intentará buscarlo en su directorio configs.

El resto de las opciones de línea de comandos le permiten controlar la cantidad de salida de registro mostrada, así como redirigirla a un archivo en lugar de mostrarla en pantalla.

Ejecución simple

Antes de sumergirnos y ejecutar FakeNet-NG, revisemos algunos conceptos básicos. La herramienta consta de varios módulos trabajando juntos. Un módulo importante es el Diverter, que es responsable de redirigir el tráfico a una colección de listeners. El Diverter obliga a las aplicaciones a interactuar con FakeNet-NG en lugar de con servidores reales. Los listeners son servicios individuales que manejan las conexiones entrantes y nos permiten examinar el tráfico de la aplicación (por ejemplo, firmas de malware).

Lancemos FakeNet-NG usando la configuración predeterminada ejecutando el siguiente comando:

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

A continuación se muestra el registro de salida anotado que ilustra una solicitud DNS interceptada de muestra y una conexión 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 línea de registro tiene un nombre del módulo de FakeNet-NG que se está ejecutando actualmente. Por ejemplo, cuando se está desviando tráfico, los registros tendrán el prefijo de la etiqueta 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

Al mismo tiempo, cada vez que los listeners individuales manejan tráfico desviado, los registros se etiquetarán con el nombre establecido en el archivo de configuración:

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

Para detener FakeNet-NG y guardar el archivo PCAP generado y el informe HTML en el disco, simplemente presione 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]

Espere a que se generen el PCAP y el informe, luego presione Enter para salir. La ventana de la consola permanecerá abierta hasta que lo haga; esto se puede deshabilitar (por ejemplo, en scripts) con la bandera --no-pause.

Interfaz de usuario

Con cada sesión de FakeNet-NG, se genera un informe HTML que contiene los Indicadores Basados en Red (NBI) capturados durante la sesión. Al finalizar FakeNet presionando CTRL-C, este archivo HTML se guardará en el directorio raíz de FakeNet. Un usuario puede revisar los NBI viendo este archivo HTML en un navegador como Chrome o Firefox.

El informe HTML sirve como una Interfaz Gráfica de Usuario (GUI) interactiva que presenta el resumen de NBI de manera amigable. Incluye varias funciones para seleccionar, filtrar y copiar NBI, facilitando el análisis de red. La interfaz organiza todos los NBI según su información de proceso y luego los categoriza adicionalmente por el protocolo de capa de aplicación o capa de transporte que utilizan.

Tabla de Resumen de NBI

La información en la tabla de resumen de NBI se presenta en formato tabular e incluye los siguientes detalles:

  • Seleccionar: Al hacer clic en la casilla de verificación se selecciona el NBI correspondiente. Puede seleccionar múltiples NBI en diferentes protocolos o en el mismo. También se puede seleccionar toda la fila haciendo clic en cualquier lugar dentro de la fila. Los NBI seleccionados se pueden copiar usando el botón "Copiar NBI seleccionados".

  • NBI: Esta celda representa el NBI real capturado. Incluye comandos, parámetros, URI y otra actividad significativa generada por el cliente contra el listener. Esta celda resume el comportamiento del malware para una mejor comprensión.

  • Información Adicional: Esta celda proporciona información adicional sobre cada solicitud NBI, como el protocolo de capa de transporte utilizado, IP de destino, puerto y cifrado SSL.

  • Acciones: Esta celda le permite realizar acciones en NBI individuales. Actualmente, solo se admite copiar. Al hacer clic en el botón de copiar se copian los datos de la celda NBI específica en un formato markdown adecuado para crear informes.

Funciones Interactivas

La interfaz también incluye varias funciones interactivas:

  • Selección por Casilla de Verificación: Hay casillas de verificación disponibles antes de cada bloque de proceso y protocolo. Marcar una casilla selecciona todos los NBI bajo ese proceso o protocolo. Esto es útil cuando desea seleccionar todos los NBI de un proceso o protocolo en particular. Luego puede usar el botón Copiar NBI seleccionados para copiar los datos seleccionados.

  • Barra de Búsqueda: La barra de búsqueda le permite escribir palabras clave, y solo se mostrarán en la página HTML las filas que contengan estas palabras clave en el nombre del proceso, NBI o información adicional. Luego puede usar el botón "Copiar datos filtrados" para copiar los datos mostrados en formato markdown. Al borrar la consulta de búsqueda se restaura la vista de tabla original.

  • Botones de Copia:

    • Copiar datos seleccionados: Copia todos los NBI seleccionados en formato markdown. Puede seleccionar NBI individuales o todos los NBI bajo un proceso marcando casillas de verificación.
    • Copiar datos filtrados: Copia los datos de los NBI filtrados en formato markdown. Si no se usa ninguna consulta de búsqueda, este botón copia todos los datos.
    • Copiar todos los NBI: Copia todos los NBI presentes en la página HTML en formato markdown. Incluso si se aplica un filtro, al hacer clic en este botón se copian todos los NBI.
  • Botón de Aviso Legal: Muestra el aviso legal, que describe hechos importantes para que el usuario considere antes de hacer suposiciones sobre el resumen de NBI mostrado.

  • Botón Ir Arriba: Aparece cuando el contenido de la página excede el área visible. Al hacer clic en este botón, se desplaza a la parte superior de la página, donde puede acceder a botones importantes como Copiar NBI seleccionados, Copiar todos los NBI, Copiar NBI filtrados y la barra de búsqueda.

Configuración

Para aprovechar al máximo las capacidades de FakeNet-NG, debemos entender su estructura de archivo de configuración y sus ajustes. A continuación se muestra un archivo de configuración de ejemplo:

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

El archivo de configuración se divide en varias secciones.* [FakeNet] - Controla el comportamiento de la propia aplicación. La única opción válida en este momento es DivertTraffic. Cuando está habilitada, instruye a la herramienta para lanzar el plugin Diverter apropiado e interceptar el tráfico. Si esta opción está deshabilitada, FakeNet-NG aún lanzará los oyentes, pero dependerá de otro método para dirigir el tráfico hacia ellos (por ejemplo, cambiar manualmente el servidor DNS).

  • [Diverter] - Configuraciones para redirigir el tráfico. Se detallan más adelante.

  • [Nombre del Oyente] - Una colección de configuraciones de oyentes. Cada oyente tiene un conjunto de configuraciones predeterminadas (p. ej., puerto, protocolo) así como configuraciones específicas del oyente (p. ej., DumpHTTPPosts para HTTPListener).

Configuración del Diverter

Suponiendo que haya habilitado la configuración DivertTraffic en el bloque de configuración [FakeNet], la herramienta habilitará su motor de redirección de tráfico, al que llamaremos Diverter de ahora en adelante como referencia a la excelente biblioteca WinDivert utilizada para realizar la magia detrás de escena en plataformas Windows (la implementación en Linux del Diverter usa python-netfilterqueue).

El Diverter examinará todos los paquetes salientes y los comparará con una lista de protocolos y puertos de los oyentes habilitados. Si hay un oyente escuchando en el puerto y protocolo del paquete, entonces la dirección de destino se cambiará a la dirección IP de la máquina local, donde el oyente manejará la solicitud. Al mismo tiempo, las respuestas provenientes del oyente se modificarán para que la dirección IP de origen parezca que el paquete proviene del host originalmente solicitado.

Opcionalmente, puede habilitar la configuración DumpPackets para almacenar todo el tráfico observado por FakeNet-NG (redirigido o reenviado) en un archivo PCAP. Es posible descifrar el tráfico SSL entre una aplicación interceptada y uno de los oyentes con soporte SSL. Use las instrucciones en la siguiente página:

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

Las claves privkey.pem y server.pem utilizadas por los servidores de FakeNet-NG están en el directorio raíz de la aplicación.

  • NetworkMode - Especifica el modo de red en el que ejecutar FakeNet-NG.
    • Valores válidos:
      • SingleHost: manipula el tráfico de procesos locales.
      • MultiHost: manipula el tráfico de otros sistemas.
      • Auto: usa el NetworkMode que sea más funcional en la plataforma actual.
    • No todas las plataformas soportan actualmente todos los modos NetworkMode. Aquí está el estado actual de soporte:
      • Windows solo soporta SingleHost
      • Linux soporta MultiHost y experimentalmente soporta el modo SingleHost (funciona excepto por las listas negras y blancas de procesos, puertos y hosts).
    • Por ahora, deje esto en Auto para obtener el modo SingleHost en Windows y el modo MultiHost en Linux.

El Diverter generalmente soporta la siguiente configuración relacionada con DNS:

  • ModifyLocalDNS - apunta el servicio DNS de la máquina local al oyente DNS de FakeNet-NG.

La implementación en Windows del Diverter soporta la siguiente configuración relacionada con DNS:

  • StopDNSService - detiene el servicio de cliente DNS de Windows (Dnscache). Esto permite que FakeNet-NG vea los procesos reales que resuelven dominios en lugar del proceso genérico 'svchost.exe'.

La implementación en Linux del Diverter soporta las siguientes configuraciones:

  • LinuxRedirectNonlocal - Cuando se usa FakeNet-NG para simular conectividad a Internet para un host diferente, esto especifica qué interfaces de red orientadas al exterior deben ser redirigidas a FakeNet-NG.

  • LinuxFlushIptables - Limpia todas las reglas de iptables antes de agregar reglas para FakeNet-NG. El Diverter de Linux restaurará las reglas antiguas siempre que su secuencia de terminación no sea interrumpida.

  • LinuxFlushDnsCommand - Especifica el comando correcto para su distribución de Linux para limpiar la caché del resolver de DNS si corresponde.

  • DebugLevel - Especifica eventos de depuración detallados para mostrar. Consulte fakenet/diverters/linutil.py para obtener las etiquetas válidas.

Redirigiendo todo el tráfico

Por defecto, el Diverter solo interceptará el tráfico que tenga un oyente dedicado creado para él. Sin embargo, al habilitar la configuración RedirectAllTraffic y configurar los manejadores TCP y UDP predeterminados con las configuraciones DefaultTCPListener y DefaultUDPListener, es posible manejar dinámicamente el tráfico que va a puertos no definidos explícitamente en uno de los oyentes. Por ejemplo, veamos una configuración de muestra que redirige todo el tráfico a oyentes TCP y UDP locales en los puertos 1234:

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

NOTA: Nos estamos adelantando un poco con las definiciones de oyentes, pero solo considere que TCPListener1234 y UDPListener1234 se definirán en la sección siguiente.

Con la configuración RedirectAllTraffic, FakeNet-NG modificará no solo la dirección de destino, sino también el puerto de destino para que pueda ser manejado por uno de los oyentes predeterminados. A continuación se muestra un registro de muestra de tráfico destinado a una dirección IP de host externa 1.1.1.1 en el puerto 4444 que fue redirigido al oyente predeterminado en el puerto 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

Es importante tener en cuenta que el tráfico destinado al puerto de uno de los oyentes definidos explícitamente aún será manejado por ese oyente y no por el oyente predeterminado. Por ejemplo, el oyente UDP predeterminado no manejará el tráfico DNS si se define un oyente DNS separado en el puerto UDP 53.

Un problema al habilitar la opción RedirectAllTraffic es que es posible que aún desee dejar pasar algo de tráfico para garantizar el funcionamiento normal de la máquina. Considere un escenario en el que está tratando de analizar una aplicación que aún necesita conectarse a un servidor DNS externo. Puede utilizar las configuraciones BlackListPortsTCP y BlackListPortsUDP para definir una lista de puertos cuyo tráfico se ignorará y se reenviará sin modificar, o BlackListIDsICMP (solo Windows) para definir una lista de IDs ICMP que se filtrarán e ignorarán:

root@kitploit:~
BlackListPortsUDP: 53

Otras configuraciones del Diverter que puede considerar son ProcessBlackList y HostBlackList, que permiten al Diverter ignorar y reenviar el tráfico proveniente de un nombre de proceso específico o destinado a un host específico, respectivamente.

Configuraciones de los Oyentes

Las configuraciones de los oyentes definen el comportamiento de cada oyente individual. Veamos una configuración de oyente de muestra:

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

La configuración anterior consiste en el nombre del oyente TCPListener1234. Se utilizará con fines de registro para que pueda distinguir entre diferentes oyentes que manejan conexiones, incluso si manejan el mismo protocolo.

Las siguientes configuraciones son genéricas para todos los oyentes:

  • Enabled - especifica si el oyente está habilitado o no.
  • Port - puerto TCP o UDP en el que escuchar.
  • Protocol - TCP o UDP
  • Listener - nombre del oyente para manejar el tráfico.
  • ProcessWhiteList - Solo se modificará el tráfico de estos procesos; el resto simplemente se reenviará.
  • ProcessBlackList - El tráfico de todos excepto estos procesos se reenviará simplemente y el resto se modificará según sea necesario.
  • HostWhiteList - Solo se modificará el tráfico hacia estos hosts; el resto simplemente se reenviará.
  • HostBlackList - El tráfico hacia estos hosts se reenviará simplemente y el resto se modificará según sea necesario.
  • ExecuteCmd - Ejecuta un comando en el primer paquete de conexión. Esta característica es útil para extender la funcionalidad de FakeNet-NG (p. ej., lanzar un depurador en el pid que se conecta para ayudar con el desempaquetado y la decodificación).
  • Hidden - No permite que el tráfico se dirija a este oyente sin pasar por el proxy, que determinará el protocolo basándose en el contenido del paquete.

Las configuraciones Port y Protocol son necesarias para que los oyentes sepan a qué puertos enlazarse y, si soportan múltiples protocolos (por ejemplo, RawListener), decidir qué protocolo usar. También son utilizados por el Diverter para determinar qué puertos y protocolos redirigir.

La configuración Listener define uno de los plugins de oyentes disponibles para manejar el tráfico redirigido. La versión actual de FakeNet-NG viene con los siguientes oyentes:

  • DNSListener - soporta el protocolo DNS y responde a los registros A con la dirección IP de la máquina local o una dirección configurable en la configuración DNSResponse. También puede establecer el atributo NXDomains en el número de solicitudes que el oyente debe ignorar. De esta manera, puede lograr que el malware solicite todos sus nombres de C2 de respaldo. El oyente soporta ambos protocolos TCP y UDP.
  • RawListener - soporta protocolos binarios básicos TCP y UDP. El comportamiento predeterminado es simplemente devolver los paquetes recibidos al cliente. Soporta conexiones SSL.
  • HTTPListener - soporta los protocolos HTTP y HTTPS. Responde con diferentes archivos en el directorio configurable Webroot según la extensión del archivo solicitado. Opcionalmente, vuelca las solicitudes POST a un archivo configurable que se puede especificar usando las configuraciones DumpHTTPPosts y DumpHTTPPostsFilePrefix.
  • SMTPListener - soporta el protocolo SMTP.
  • ProxyListener- Detecta el protocolo basándose en el contenido del paquete y redirige los paquetes en consecuencia.

NOTA: FakeNet-NG intentará localizar el directorio webroot, primero usando las rutas absolutas o relativas proporcionadas. Si la ruta webroot especificada no se encuentra, entonces intentará buscarla en su directorio defaultFiles.

Como caso especial, la implementación del Diverter en Windows responde automáticamente a todas las solicitudes ICMP mientras se ejecuta. Así que si un malware intenta hacer ping a un host para probar la conectividad, recibirá una respuesta válida. El Diverter de Linux registra y reenvía todos los paquetes ICMP a localhost.

NOTA: Algunos oyentes pueden manejar la carga de archivos (por ejemplo, TFTPListener y BITSListener). Todos los archivos cargados se almacenarán en el directorio de trabajo actual con un prefijo configurable (por ejemplo, "tftp_" para cargas TFTP).

Filtrado de Oyentes

FakeNet-NG soporta varias reglas de filtrado que consisten en listas blancas y negras de procesos y hosts. Las listas blancas se tratan como las reglas que permiten conexiones a los oyentes, mientras que las listas negras se utilizan para ignorar las conexiones entrantes y dejarlas simplemente reenviadas.

Por ejemplo, considere la configuración a continuación con filtros de proceso y 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

El FilteredListener anterior solo manejará las conexiones provenientes de los procesos malware.exe y ncat.exe, pero ignorará cualquier conexión destinada al host 5.5.5.5. Esto significa que si un proceso llamado test.exe intentara conectarse en el puerto 31337, no será redirigido al oyente y se reenviará a donde estaba originalmente destinado si la ruta está disponible.

Al mismo tiempo, si el proceso malware.exe intentara conectarse al puerto 31337 en cualquier host que no sea 5.5.5.5, será desviado al FilteredListener. Cualquier conexión del proceso malware.exe destinada a 5.5.5.5 se permitiría pasar.

Ejecución de Comandos en el Oyente

Otra poderosa configuración es ExecuteCmd. Esencialmente permite ejecutar un comando arbitrario en el primer paquete detectado de la conexión. El valor de ExecuteCmd puede usar varias variables de cadena de formato:

  • {pid} - id del proceso
  • {procname} - nombre del ejecutable del proceso
  • {src_addr} - dirección de origen
  • {src_port} - puerto de origen
  • {dst_addr} - dirección de destino
  • {dst_port} - puerto de destino

Considere un escenario de una muestra de malware empaquetada que se conecta a un servidor C2 configurado en el puerto 8443 (Use RedirectAllTraffic si el puerto no se conoce). En muchos casos, el malware se desempaquetará en el momento de la conexión, lo que hace que ese punto de la ejecución sea ideal para adjuntar un depurador al proceso y volcar una versión desempaquetada para su posterior análisis.

Veamos cómo se puede usar esto para lanzar automáticamente un depurador en la primera conexión:

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}

Una vez que FakeNet-NG detecte una nueva conexión proveniente del proceso en lista blanca malware.exe (esta configuración es opcional), lanzará automáticamente windbg y lo adjuntará al proceso que se conecta.

NOTA: Es posible que desee extender la configuración normal de Timeout en caso de que el malware necesite interactuar más con el oyente.

Oyente Anónimo

Hay un caso de uso especial donde puede crear una nueva configuración de oyente sin definir el oyente real para manejarlo:

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

Sin un oyente definido, FakeNet-NG aún desviará el tráfico a la máquina local, pero el usuario debe lanzar un oyente separado. Por ejemplo, podría tener un proxy HTTP escuchando conexiones en el puerto 8080 y permitir que FakeNet-NG intercepte todo el tráfico de aplicaciones que no usan la configuración del servidor proxy del sistema o que usan direcciones IP codificadas. Usando oyentes anónimos, puede llevar las capacidades avanzadas de filtrado de tráfico y procesos de FakeNet-NG a herramientas de terceros.

También es posible que desee habilitar la configuración ProcessBlackList del Diverter para permitir que la herramienta externa se comunique hacia Internet. Por ejemplo, para permitir que un proxy HTTP reenvíe tráfico proxy, agregue su nombre de proceso a la lista negra de procesos. Por ejemplo, agregue el siguiente proceso para permitir que Burp Proxy se comunique hacia Internet:

root@kitploit:~
ProcessBlackList: java.exe

En el escenario donde la aplicación se comunica en un puerto desconocido, pero aún desea redirigirlo al oyente anónimo en el puerto 8080, puede definir el oyente predeterminado de la siguiente manera:

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

Finalmente, para permitir que el tráfico DNS aún vaya al servidor DNS predeterminado en Internet, mientras redirige todo el demás tráfico, agregue el puerto 53 a la lista negra de puertos UDP del Diverter de la siguiente manera:

root@kitploit:~
BlackListPortsUDP:

Oyente Proxy

La última versión de FakeNet-NG implementa un nuevo oyente proxy que es capaz de detectar dinámicamente el protocolo de comunicación (incluyendo tráfico SSL) y redirigir la conexión al oyente apropiado.

Puede configurar el oyente proxy para que funcione en un puerto específico como se ilustra en la configuración a continuación:

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

Tenga en cuenta el nuevo parámetro Listeners que define una lista de manejadores de protocolo potenciales para probar en todas las conexiones entrantes.

También se recomienda definir un oyente proxy como su manejador predeterminado actualizando las siguientes configuraciones del diverter:

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

Con el oyente predeterminado apuntando al oyente proxy, todas las conexiones desconocidas se manejarán adecuadamente. Todavía puede asignar oyentes específicos a puertos para forzar un protocolo específico (p. ej., usar siempre el oyente HTTP para el puerto 80).

El Proxy determina el protocolo de los paquetes consultando a todos los oyentes disponibles con la función taste(). Cada Oyente que implemente taste() responderá con una puntuación que indica la probabilidad de que el protocolo manejado por ese oyente coincida con el contenido del paquete. El Proxy reenviará el paquete al Oyente que devolvió la puntuación más alta. RawListener siempre devolverá una puntuación de 1, por lo que será elegido en caso de que todos los demás Oyentes devuelvan 0, sirviendo así como predeterminado.

Los usuarios pueden alterar el parámetro de configuración 'Hidden' en la configuración de cada Oyente. Si Hidden es 'False', el Oyente se enlazará a un puerto específico y recibirá automáticamente todo el tráfico en ese puerto. Con Hidden establecido en 'True', el Oyente solo puede recibir tráfico que sea redirigido a través del Proxy.

Desarrollo

FakeNet-NG se desarrolla en Python, lo que le permite desarrollar rápidamente nuevos plugins y ampliar la funcionalidad existente. Para más detalles, consulte Developing for FakeNet-NG.

Problemas Conocidos

[WinError 87] El parámetro es incorrecto

Al momento de escribir esto, el tamaño de búfer predeterminado en pydivert es 1500. Si FakeNet-NG encuentra un paquete más grande que el tamaño de búfer predeterminado, puede observar este error. Una solución alternativa es especificar el tamaño de búfer deseado en self.handle.recv(bufsize=<su_tamaño_de_búfer>) en fakenet/diverters/windows. Consulte aquí

No funciona en VMWare con el modo host-only habilitado

Vea "No intercepta el tráfico" más abajo.

No intercepta el tráfico

Para que FakeNet-NG intercepte y modifique el paquete, debe existir una ruta de red válida para que el paquete llegue a su destino.

Hay una manera fácil de verificar si tiene las rutas configuradas correctamente. Sin la herramienta en ejecución, intente hacer ping al host de destino. Debería observar una respuesta válida o un mensaje de tiempo de espera agotado. Si en su lugar recibe un error de destino inalcanzable, entonces no tiene una ruta válida.

Esto suele ser causado porque su puerta de enlace no está configurada o no es alcanzable. Por ejemplo, en una máquina VMWare con modo host-only, su máquina no tendrá la puerta de enlace configurada, lo que impide que FakeNet-NG vea cualquier tráfico.

Para corregir este problema, configure manualmente su interfaz principal para que apunte a la puerta de enlace en la misma subred. Primero verifique el nombre de la interfaz:

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

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

En este caso, el nombre de la interfaz es "Local Area Connection", así que lo usaremos para el resto de los comandos.Configure manualmente la dirección IP de la interfaz y la puerta de enlace de la siguiente manera:

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

Establezca manualmente la dirección IP del servidor DNS

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

Si aún tiene problemas, asegúrese de que la dirección IP de la puerta de enlace en sí sea enrutable.

DNS No Resuelve Nombres

Asegúrese de que el DNS Listener se haya vinculado exitosamente a su puerto. Errores como el siguiente indican que el DNS Listener no se vinculó exitosamente:``` 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:~
Usa `netstat`, `tcpview` u otras herramientas para descubrir qué aplicación está vinculada al puerto, y consulta la documentación correspondiente del sistema operativo o de la aplicación para deshabilitar el servicio.

Puede tener sentido capturar una instantánea de la VM antes de emprender la reconfiguración.

Por ejemplo, Ubuntu suele habilitar el servicio `dnsmasq` en `/etc/NetworkManager/NetworkManager.conf` con la línea `dns=dnsmasq`. Deshabilitarlo (por ejemplo, comentándolo) y reiniciar el servicio `network-manager` (p. ej. `service network-manager restart`) es suficiente para liberar el puerto antes de volver a lanzar FakeNet-NG.

En versiones más recientes de Ubuntu o en otras distribuciones, usar `lsof -i` puede revelar que se usa `systemd-resolved` en su lugar. En estos casos, puedes probar estos pasos adaptados de <https://askubuntu.com/questions/907246/how-to-disable-systemd-resolved-in-ubuntu>:```
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Luego en /etc/NetworkManager/NetworkManager.conf debajo de la sección [main], agrega una línea que especifique:``` dns=default

root@kitploit:~
Elimina el enlace simbólico `/etc/resolv.conf`, es decir `rm /etc/resolv.conf`.

Finalmente, reinicia `NetworkManager`:```
sudo systemctl restart NetworkManager

Error: No se pudo encontrar WinDivert DLL o uno de sus componentes

Asegúrese de que FakeNet-NG esté extraído en la unidad local C: para asegurarse de que el controlador WinDivert se cargue correctamente.

Error: La aplicación no pudo iniciarse porque su configuración en paralelo es incorrecta.

Este error puede ocurrir al ejecutar una versión ejecutable independiente de Fakenet. Descargue e instale el ejecutable de tiempo de ejecución de Visual C++ 2008.

Limitaciones

  • Solo se admite Windows Vista+ para el modo SingleHost. Utilice el Fakenet original para sistemas operativos Windows XP/2003.

  • Solo se admite Linux para el modo MultiHost.

  • Las versiones antiguas de python-netfilterqueue pueden causar una falla de segmentación en python. Si experimenta este problema, verifique que está usando la versión más reciente de python-netfilterqueue.

  • Debido al tamaño de búfer codificado utilizado por python-netfilterqueue, el Diverter de Linux no maneja correctamente paquetes de más de 4,016 bytes de tamaño. En la práctica, esto no afecta al modo MultiHost de Linux para interfaces configuradas con la unidad máxima de transmisión (MTU) convencional de 1,500 bytes. Si la interfaz de Linux que está utilizando con FakeNet-NG admite una MTU mayor a 4016, necesitará recompilar python-netfilterqueue para que admita un tamaño de búfer de <your_mtu> + 80 (python-netfilterqueue dedica 80 bytes del búfer a gastos generales).

  • El tráfico solo de la máquina local no se intercepta en Windows (por ejemplo, si intenta conectarse directamente a uno de los oyentes).

  • Solo se intercepta el tráfico que utiliza los protocolos TCP, UDP e ICMP.

Créditos

  • FakeNet-NG fue diseñado y desarrollado por Peter Kacherginsky.
  • Agradecimientos especiales a Andrew Honig, Michael Sikorski y otros por el FakeNet original que fue la inspiración para desarrollar esta herramienta.
  • El Diverter de Linux fue diseñado y desarrollado por Michael Bailey.
  • Gracias a Matthew Haigh por desarrollar la función de detección automática del protocolo proxy.
  • Gracias a Cody Pierce y Antony Saba por reportar y corregir una vulnerabilidad de recorrido del sistema de archivos.

Contacto

Para errores, fallos u otros comentarios, contacte a [email protected].

¡Suscríbase a la lista de correo de FLARE para anuncios de la comunidad! Envíe un correo con "subscribe" a [email protected].

Descargar herramienta