Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
flare-fakenet-ng — FakeNet-NG - Strumento di Analisi della Rete Dinamica di Nuova Generazione | Kitploit
Strumenti/GitHubGitHub/mandiant/flare-fakenet-ng
Sniffing e Analisi dei PacchettiAnalisi Dinamica (Sandboxing)Sicurezza di ReteAnalisi MalwarePenetration Testing
GitHubmandiant/flare-fakenet-ng

flare-fakenet-ng

FakeNet-NG - Strumento di Analisi della Rete Dinamica di Nuova Generazione

Vedi Repository
2.2k3762 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

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

FakeNet-NG 3.5 è uno strumento di analisi di rete dinamico di nuova generazione per analisti di malware e penetration tester. È open source e progettato per le ultime versioni di Windows (e Linux, per determinate modalità operative). FakeNet-NG si basa sull'eccellente strumento Fakenet sviluppato da Andrew Honig e Michael Sikorski.

Lo strumento consente di intercettare e reindirizzare tutto il traffico di rete o parti specifiche, simulando al contempo servizi di rete legittimi. Utilizzando FakeNet-NG, gli analisti di malware possono identificare rapidamente le funzionalità del malware e catturare le firme di rete. I penetration tester e i bug hunter troveranno il motore di intercettazione configurabile e il framework modulare di FakeNet-NG estremamente utili quando testano funzionalità specifiche di applicazioni e prototipano PoC.

Installazione

Puoi installare FakeNet-NG in diversi modi. Nota che i seguenti processi di installazione recupereranno sul tuo sistema librerie open-source di terze parti utilizzate da FakeNet-NG. Queste librerie verranno caricate dinamicamente in fase di esecuzione e alcune di esse potrebbero essere concesse in licenza LGPL.

Eseguibile standalone

Il modo più semplice è scaricare la versione compilata, ottenibile dalla pagina delle release:

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

Esegui FakeNet-NG lanciando 'fakenet.exe'.

Questo è il metodo preferito per utilizzare FakeNet-NG su Windows, in quanto non richiede l'installazione di moduli aggiuntivi, ideale per una macchina di analisi malware.

NOTA: FakeNet-NG potrebbe essere segnalato come dannoso da soluzioni Antivirus (AV) e Endpoint Detection and Response (EDR) (ad esempio, Windows Defender, la navigazione sicura di Chrome). Ciò è probabilmente dovuto alla sua capacità di modificare il traffico di rete e simulare servizi di rete, oltre all'uso di PyInstaller per creare gli eseguibili delle release. I binari ufficiali delle release sono sicuri e queste rilevazioni dovrebbero essere considerate falsi positivi. Come promemoria, FakeNet-NG è progettato e fortemente consigliato per l'uso in un ambiente controllato e isolato, come una macchina virtuale (VM), dove può modificare in sicurezza le impostazioni di rete del sistema.

Installazione del modulo

  1. Installa Python 3.10.11 e l'ultima versione di pip per sistemi operativi Windows/Linux.

  2. Su Windows, scarica e installa Visual C++ build tools.

    L'installazione su Linux richiede le seguenti dipendenze:

    • Gestore pacchetti Python pip (es. python-pip per Ubuntu).
    • File di sviluppo Python (es. python-dev per Ubuntu).
    • File di sviluppo OpenSSL (es. libssl-dev per Ubuntu).
    • File di sviluppo libffi (es. libffi-dev per Ubuntu).
    • File di sviluppo libnetfilter-queue (es. libnetfilter-queue-dev per Ubuntu).

    Installa queste dipendenze usando il seguente comando:

    root@kitploit:~
     sudo apt-get install build-essential python3.10-dev libnetfilter-queue-dev
    
  3. Installa FakeNet-NG come modulo Python usando pip:

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

    Oppure ottenendo il codice sorgente più recente e installandolo manualmente:

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng/
    
  4. Installa le dipendenze Python eseguendo i seguenti comandi con privilegi di amministratore:

    In Linux (testato su Ubuntu 24.04.2 LTS), esegui i seguenti comandi prima di eseguire 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
    

    Se installi manualmente, spostati nella directory flare-fakenet-ng scaricata ed esegui quanto segue con privilegi di amministratore:

Nessuna installazione

Infine, se vuoi evitare di installare FakeNet-NG e semplicemente eseguirlo così com'è (ad esempio per sviluppo), allora devi ottenere il codice sorgente e installare le dipendenze come segue:

  1. Installa Python 3.10.11 a 64 o 32 bit per le versioni a 64 o 32 bit di Windows/Linux rispettivamente.

  2. In Windows, installa le dipendenze Python eseguendo i seguenti comandi con privilegi di amministratore:

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

    NOTA: pydivert scaricherà e installerà anche la libreria e il driver WinDivert nella directory %PYTHONHOME%\DLLs. FakeNet-NG include già questi file, quindi non sono necessari per l'uso normale.

    In Linux, installa le dipendenze Python eseguendo i seguenti comandi con privilegi di amministratore:

    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
    

    Opzionalmente, puoi installare il seguente modulo utilizzato per i test:

    root@kitploit:~
     python -m pip install requests
    
  3. Scarica il codice sorgente di FakeNet-NG:

    root@kitploit:~
     git clone https://github.com/mandiant/flare-fakenet-ng
    
  4. In Linux, libera la porta 53 per il listener DNS:

    root@kitploit:~
     sudo systemctl stop systemd-resolved
    

Utilizzo

Il modo più semplice per eseguire FakeNet-NG è eseguire semplicemente l'eseguibile fornito come Amministratore. Puoi fornire il parametro da riga di comando --help per ottenere un aiuto semplice:

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)

Come puoi vedere dall'aiuto semplice sopra, è possibile configurare il file di configurazione utilizzato per avviare FakeNet-NG. Per impostazione predefinita, lo strumento utilizza configs\default.ini; tuttavia, può essere modificato con il parametro -c. Ci sono diversi file di configurazione di esempio nella directory configs. A causa del gran numero di impostazioni diverse, FakeNet-NG si basa sui file di configurazione per controllare la sua funzionalità.

NOTA: FakeNet-NG tenterà di individuare il file di configurazione specificato, prima utilizzando il percorso assoluto o relativo fornito nel caso in cui tu voglia conservare tutte le tue configurazioni. Se il file di configurazione specificato non viene trovato, allora proverà a cercarlo nella sua directory configs.

Le restanti opzioni della riga di comando ti consentono di controllare la quantità di output di logging visualizzato, nonché di reindirizzarlo a un file invece di stamparlo a schermo.

Esecuzione semplice

Prima di addentrarci ed eseguire FakeNet-NG, esaminiamo alcuni concetti di base. Lo strumento è composto da diversi moduli che lavorano insieme. Un modulo importante è il Diverter, responsabile del reindirizzamento del traffico verso una raccolta di listener. Il Diverter forza le applicazioni a interagire con FakeNet-NG anziché con server reali. I Listener sono singoli servizi che gestiscono le connessioni in arrivo e ci permettono di esaminare il traffico dell'applicazione (ad esempio, le firme del malware).

Lanciamo FakeNet-NG utilizzando le impostazioni predefinite eseguendo il seguente comando:

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

Di seguito è riportato il log di output annotato che illustra una richiesta DNS intercettata di esempio e una connessione 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

Nota che ogni riga di log ha un nome del modulo attualmente in esecuzione di FakeNet-NG. Ad esempio, quando sta deviando il traffico, i log saranno prefissati con l'etichetta 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

Allo stesso tempo, quando i singoli listener gestiscono il traffico deviato, i log saranno etichettati con il nome impostato nel file di configurazione:

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

Per fermare FakeNet-NG e salvare su disco il file PCAP generato e il report HTML, premi semplicemente 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]

Attendi la generazione del PCAP e del report, quindi premi Enter per uscire. La finestra della console rimarrà aperta fino a quando non lo farai; questo può essere disabilitato (ad esempio, negli script) con il flag --no-pause.

Interfaccia utente

Con ogni sessione di FakeNet-NG, viene generato un report HTML contenente gli Indicatori Basati sulla Rete (NBI) catturati durante la sessione. Al termine di FakeNet premendo CTRL-C, questo file HTML verrà salvato nella directory principale di FakeNet. Un utente può rivedere gli NBI visualizzando questo file HTML in un browser come Chrome o Firefox.

Il report HTML funge da Interfaccia Grafica Utente (GUI) interattiva che presenta il riepilogo degli NBI in modo user-friendly. Include varie funzionalità per selezionare, filtrare e copiare gli NBI, semplificando l'analisi di rete. L'interfaccia organizza tutti gli NBI in base alle informazioni sul processo e poi li categorizza ulteriormente in base al protocollo del livello applicativo o di trasporto utilizzato.

Tabella di riepilogo NBI

Le informazioni nella tabella di riepilogo NBI sono presentate in formato tabellare e includono i seguenti dettagli:

  • Seleziona: Cliccando sulla checkbox si seleziona il corrispondente NBI. Puoi selezionare più NBI in protocolli diversi o nello stesso protocollo. L'intera riga può anche essere selezionata cliccando in un punto qualsiasi della riga. Gli NBI selezionati possono essere copiati usando il pulsante "Copia NBI selezionati".

  • NBI: Questa cella rappresenta l'effettivo NBI catturato. Include comandi, parametri, URI e altre attività significative generate dal client verso il listener. Questa cella riassume il comportamento del malware per una migliore comprensione.

  • Informazioni aggiuntive: Questa cella fornisce informazioni extra su ogni richiesta NBI, come il protocollo del livello di trasporto utilizzato, l'IP di destinazione, la porta e la crittografia SSL.

  • Azioni: Questa cella ti permette di eseguire azioni su singoli NBI. Attualmente è supportata solo la copia. Cliccando sul pulsante di copia si copiano i dati della cella NBI specifica in un formato markdown adatto per la creazione di report.

Funzionalità interattive

L'interfaccia include anche varie funzionalità interattive:

  • Selezione tramite checkbox: Le checkbox sono disponibili prima di ogni blocco di processo e protocollo. Selezionando una checkbox si selezionano tutti gli NBI sotto quel processo o protocollo. Ciò è utile quando si desidera selezionare tutti gli NBI da un particolare processo o protocollo. Puoi quindi utilizzare il pulsante Copia NBI selezionati per copiare i dati selezionati.

  • Barra di ricerca: La barra di ricerca ti permette di digitare parole chiave e nella pagina HTML verranno visualizzate solo le righe che contengono queste parole chiave nel nome del processo, nell'NBI o nelle informazioni aggiuntive. Puoi quindi utilizzare il pulsante "Copia dati filtrati" per copiare i dati visualizzati in formato markdown. Cancellando la query di ricerca si ripristina la visualizzazione della tabella originale.

  • Pulsanti di copia:

    • Copia dati selezionati: Copia tutti gli NBI selezionati in formato markdown. Puoi selezionare singoli NBI o tutti gli NBI sotto un processo selezionando le checkbox.
    • Copia dati filtrati: Copia i dati degli NBI filtrati in formato markdown. Se non viene utilizzata alcuna query di ricerca, questo pulsante copia l'intero set di dati.
    • Copia tutti gli NBI: Copia tutti gli NBI presenti nella pagina HTML in formato markdown. Anche se viene applicato un filtro, cliccando su questo pulsante vengono copiati tutti gli NBI.
  • Pulsante di disclaimer: Visualizza il disclaimer, che delinea fatti importanti che l'utente deve considerare prima di formulare ipotesi sul riepilogo NBI visualizzato.

  • Pulsante Vai all'inizio: Appare quando il contenuto della pagina supera l'area visualizzabile. Cliccando su questo pulsante si torna all'inizio della pagina, dove è possibile accedere a pulsanti importanti come Copia NBI selezionati, Copia tutti gli NBI, e la barra di ricerca.

Configurazione

Per sfruttare appieno le capacità di FakeNet-NG, dobbiamo comprendere la struttura del suo file di configurazione e le sue impostazioni. Di seguito è riportato un file di configurazione di esempio:

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

Il file di configurazione è suddiviso in diverse sezioni.* [FakeNet] - Controlla il comportamento dell'applicazione stessa. L'unica opzione valida a questo punto è DivertTraffic. Se abilitata, istruisce lo strumento a lanciare il plugin Diverter appropriato e intercettare il traffico. Se questa opzione è disabilitata, FakeNet-NG avvierà comunque i listener, ma si affiderà a un altro metodo per indirizzare il traffico verso di essi (ad es. cambiare manualmente il server DNS).

  • [Diverter] - Impostazioni per il reindirizzamento del traffico. Trattate in dettaglio più avanti.

  • [Nome Listener] - Una raccolta di configurazioni dei listener. Ogni listener ha un insieme di impostazioni predefinite (ad es. porta, protocollo) oltre a configurazioni specifiche del listener (ad es. DumpHTTPPosts per HTTPListener).

Configurazione del Diverter

Supponendo che tu abbia abilitato l'impostazione DivertTraffic nel blocco di configurazione [FakeNet], lo strumento abiliterà il suo motore di reindirizzamento del traffico, che d'ora in poi chiameremo Diverter, in riferimento all'eccellente libreria WinDivert utilizzata per eseguire la magia dietro le quinte sulle piattaforme Windows (l'implementazione Linux del Diverter utilizza python-netfilterqueue).

Il Diverter esaminerà tutti i pacchetti in uscita e li confronterà con un elenco di protocolli e porte dei listener abilitati. Se esiste un listener in ascolto sulla porta e sul protocollo del pacchetto, l'indirizzo di destinazione verrà modificato nell'indirizzo IP della macchina locale, dove il listener gestirà la richiesta. Contemporaneamente, le risposte provenienti dal listener verranno modificate in modo che l'indirizzo IP sorgente appaia come se il pacchetto provenisse dall'host originariamente richiesto.

Puoi opzionalmente abilitare l'impostazione DumpPackets per memorizzare tutto il traffico osservato da FakeNet-NG (reindirizzato o inoltrato) in un file PCAP. È possibile decifrare il traffico SSL tra un'applicazione intercettata e uno dei listener con supporto SSL. Segui le istruzioni nella seguente pagina:

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

Le chiavi privkey.pem e server.pem utilizzate dai server di FakeNet-NG si trovano nella directory principale dell'applicazione.

  • NetworkMode - Specifica la modalità di rete in cui eseguire FakeNet-NG.
    • Le impostazioni valide sono:
      • SingleHost: manipola il traffico dai processi locali.
      • MultiHost: manipola il traffico da altri sistemi.
      • Auto: utilizza qualunque NetworkMode sia più funzionale sulla piattaforma corrente.
    • Non tutte le piattaforme supportano attualmente tutte le impostazioni di NetworkMode. Ecco lo stato attuale del supporto:
      • Windows supporta solo SingleHost
      • Linux supporta MultiHost e sperimentalmente supporta la modalità SingleHost (funziona ad eccezione della blacklist e whitelist di processi, porte e host).
    • Per ora, lascia questa impostazione su Auto per ottenere la modalità SingleHost su Windows e la modalità MultiHost su Linux.

Il Diverter generalmente supporta la seguente impostazione relativa al DNS:

  • ModifyLocalDNS - punta il servizio DNS della macchina locale al listener DNS di FakeNet-NG.

L'implementazione Windows del Diverter supporta la seguente impostazione relativa al DNS:

  • StopDNSService - arresta il servizio client DNS di Windows (Dnscache). Ciò consente a FakeNet-NG di vedere i processi effettivi che risolvono i domini, invece del generico processo 'svchost.exe'.

L'implementazione Linux del Diverter supporta le seguenti impostazioni:

  • LinuxRedirectNonlocal - Quando si utilizza FakeNet-NG per simulare la connettività Internet per un host diverso, specifica quali interfacce di rete rivolte verso l'esterno devono essere reindirizzate a FakeNet-NG.

  • LinuxFlushIptables - Elimina tutte le regole iptables prima di aggiungere le regole per FakeNet-NG. Il Diverter Linux ripristinerà le vecchie regole purché la sua sequenza di terminazione non venga interrotta.

  • LinuxFlushDnsCommand - Specifica il comando corretto per la tua distribuzione Linux per svuotare la cache del resolver DNS, se applicabile.

  • DebugLevel - Specifica eventi di debug granulari da visualizzare. Fare riferimento a fakenet/diverters/linutil.py per le etichette valide.

Reindirizzamento di tutto il traffico

Per impostazione predefinita, il Diverter intercetterà solo il traffico per cui è stato creato un listener dedicato. Tuttavia, abilitando l'impostazione RedirectAllTraffic e configurando i gestori TCP e UDP predefiniti con le impostazioni DefaultTCPListener e DefaultUDPListener, è possibile gestire dinamicamente il traffico verso porte non definite esplicitamente in uno dei listener. Ad esempio, diamo un'occhiata a una configurazione di esempio che reindirizza tutto il traffico verso listener TCP e UDP locali sulle porte 1234:

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

NOTA: Stiamo anticipando un po' le definizioni dei listener, ma considera che TCPListener1234 e UDPListener1234 saranno definiti nella sezione sottostante.

Con l'impostazione RedirectAllTraffic, FakeNet-NG modificherà non solo l'indirizzo di destinazione, ma anche la porta di destinazione in modo che possa essere gestita da uno dei listener predefiniti. Di seguito è riportato un esempio di log del traffico destinato a un host esterno con indirizzo IP 1.1.1.1 sulla porta 4444, che è stato reindirizzato al listener predefinito sulla porta 1234:

root@kitploit:~
07/06/16 01:13:47 AM [          Diverter] Modifica del pacchetto di richiesta TCP esterna in uscita:
07/06/16 01:13:47 AM [          Diverter]   da: 192.168.66.129:1650 -> 1.1.1.1:4444
07/06/16 01:13:47 AM [          Diverter]   a:   192.168.66.129:1650 -> 192.168.66.129:1234
07/06/16 01:13:47 AM [          Diverter]   pid:  3716 nome: malware.exe

È importante notare che il traffico destinato alla porta di uno dei listener definiti esplicitamente sarà comunque gestito da quel listener e non dal listener predefinito. Ad esempio, il listener UDP predefinito non gestirà il traffico DNS se è definito un listener DNS separato sulla porta UDP 53.

Un problema quando si abilitano le opzioni RedirectAllTraffic è che potresti voler lasciar passare comunque del traffico per garantire il normale funzionamento della macchina. Considera uno scenario in cui stai cercando di analizzare un'applicazione che deve ancora connettersi a un server DNS esterno. Puoi utilizzare le impostazioni BlackListPortsTCP e BlackListPortsUDP per definire un elenco di porte per le quali il traffico verrà ignorato e inoltrato inalterato, oppure BlackListIDsICMP (solo Windows) per definire un elenco di ID ICMP da filtrare e ignorare:

root@kitploit:~
BlackListPortsUDP: 53

Altre impostazioni del Diverter che potresti considerare sono ProcessBlackList e HostBlackList, che consentono al Diverter di ignorare e inoltrare il traffico proveniente da uno specifico nome di processo o destinato a uno specifico host, rispettivamente.

Configurazioni dei Listener

Le configurazioni dei listener definiscono il comportamento dei singoli listener. Diamo un'occhiata a una configurazione di esempio di un listener:

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

La configurazione sopra è composta dal nome del listener TCPListener1234. Verrà utilizzato per scopi di logging in modo da poter distinguere tra diversi listener che gestiscono connessioni, anche se stanno gestendo lo stesso protocollo.

Le seguenti impostazioni sono generiche per tutti i listener:

  • Enabled - Specifica se il listener è abilitato o meno.
  • Port - Porta TCP o UDP su cui ascoltare.
  • Protocol - TCP o UDP
  • Listener - Nome del listener per gestire il traffico.
  • ProcessWhiteList - Solo il traffico da questi processi verrà modificato e il resto verrà semplicemente inoltrato.
  • ProcessBlackList - Il traffico da tutti tranne questi processi verrà semplicemente inoltrato e il resto verrà modificato come necessario.
  • HostWhiteList - Solo il traffico verso questi host verrà modificato e il resto verrà semplicemente inoltrato.
  • HostBlackList - Il traffico verso questi host verrà semplicemente inoltrato e il resto verrà modificato come necessario.
  • ExecuteCmd - Esegue un comando al primo pacchetto di connessione. Questa funzionalità è utile per estendere la funzionalità di FakeNet-NG (ad es. avviare un debugger sul pid di connessione per aiutare con unpacking e decodifica).
  • Hidden - Impedisce che il traffico venga diretto a questo listener senza passare attraverso il proxy che determinerà il protocollo in base al contenuto del pacchetto.

Le impostazioni Port e Protocol sono necessarie affinché i listener sappiano a quali porte associarsi e, se supportano più protocolli (ad es. RawListener), decidano quale protocollo utilizzare. Sono anche utilizzate dal Diverter per capire quali porte e protocolli reindirizzare.

L'impostazione Listener definisce uno dei plugin listener disponibili per gestire il traffico reindirizzato. La versione corrente di FakeNet-NG include i seguenti listener:

  • DNSListener - Supporta il protocollo DNS e risponde ai record A con l'indirizzo IP della macchina locale o un indirizzo configurabile nell'impostazione DNSResponse. Puoi anche impostare l'attributo NXDomains sul numero di richieste che il listener deve ignorare. In questo modo potresti essere in grado di far sì che il malware richieda tutti i nomi dei suoi C2 di backup. Il listener supporta sia i protocolli TCP che UDP.
  • RawListener - Supporta i protocolli binari TCP e UDP di base. Il comportamento predefinito è semplicemente rimandare al mittente i pacchetti ricevuti. Supporta connessioni SSL.
  • HTTPListener - Supporta i protocolli HTTP e HTTPS. Risponde con diversi file nella directory Webroot configurabile in base all'estensione del file richiesto. Facoltativamente, scarica le richieste POST in un file configurabile, che può essere specificato utilizzando le impostazioni DumpHTTPPosts e DumpHTTPPostsFilePrefix.
  • SMTPListener - Supporta il protocollo SMTP.
  • ProxyListener - Rileva il protocollo in base al contenuto del pacchetto e reindirizza i pacchetti di conseguenza.

NOTA: FakeNet-NG tenterà di individuare la directory webroot, prima utilizzando i percorsi assoluti o relativi forniti. Se il percorso webroot specificato non viene trovato, cercherà nella sua directory defaultFiles.

Come caso speciale, l'implementazione Windows del Diverter risponde automaticamente a tutte le richieste ICMP durante l'esecuzione. Quindi, se un malware tenta di eseguire il ping di un host per testare la connettività, riceverà una risposta valida. Il Diverter Linux registra e inoltra tutti i pacchetti ICMP a localhost.

NOTA: Alcuni listener possono gestire caricamenti di file (ad es. TFTPListener e BITSListener). Tutti i file caricati verranno memorizzati nella directory di lavoro corrente con un prefisso configurabile (ad es. "tftp_" per i caricamenti TFTP).

Filtraggio dei Listener

FakeNet-NG supporta diverse regole di filtraggio costituite da blacklist e whitelist di processi e host. Le whitelist sono trattate come regole che consentono connessioni ai listener, mentre le blacklist vengono utilizzate per ignorare le connessioni in arrivo e farle semplicemente inoltrare.

Ad esempio, considera la configurazione seguente con filtri per processi 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

Il FilteredListener sopra gestirà solo le connessioni provenienti dai processi malware.exe e ncat.exe, ma ignorerà qualsiasi connessione destinata all'host 5.5.5.5. Ciò significa che se un processo chiamato test.exe tentasse di connettersi sulla porta 31337, non verrà reindirizzato al listener e verrà inoltrato ovunque fosse originariamente inteso, se la rotta è disponibile.

Allo stesso tempo, se il processo malware.exe tentava di connettersi alla porta 31337 su qualsiasi host diverso da 5.5.5.5, verrà deviato al FilteredListener. Qualsiasi connessione dal processo malware.exe destinata a 5.5.5.5 sarebbe permessa.

Esecuzione di Comandi sui Listener

Un'altra potente impostazione di configurazione è ExecuteCmd. Essa ti consente essenzialmente di eseguire un comando arbitrario al primo pacchetto rilevato della connessione. Il valore di ExecuteCmd può utilizzare diverse variabili di formato stringa:

  • {pid} - id del processo
  • {procname} - nome eseguibile del processo
  • {src_addr} - indirizzo sorgente
  • {src_port} - porta sorgente
  • {dst_addr} - indirizzo di destinazione
  • {dst_port} - porta di destinazione

Considera uno scenario di un campione di malware impacchettato che si connette a un server C2 configurato sulla porta 8443 (usa RedirectAllTraffic se la porta non è nota). In molti casi, il malware si spacchetta al momento della connessione, rendendo quel punto dell'esecuzione ideale per collegarsi al processo con un debugger e scaricare una versione spacchettata per ulteriori analisi.

Vediamo come questo può essere utilizzato per avviare automaticamente un debugger alla prima connessione:

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 volta che FakeNet-NG rileva una nuova connessione proveniente dal processo whitelistato malware.exe (questa impostazione è opzionale), avvierà automaticamente windbg e lo collegherà al processo che si connette.

NOTA: Potresti voler estendere l'impostazione Timeout normale nel caso in cui il malware debba interagire ulteriormente con il listener.

Listener Anonimo

Esiste un caso d'uso speciale in cui puoi creare una nuova configurazione di listener senza definire il listener effettivo per gestirla:

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

Senza un listener definito, FakeNet-NG devierà comunque il traffico verso la macchina locale, ma un listener separato deve essere avviato dall'utente. Ad esempio, potresti avere un proxy HTTP in ascolto di connessioni sulla porta 8080 e lasciare che FakeNet-NG intercetti tutto il traffico proveniente da applicazioni che non utilizzano le impostazioni del server proxy di sistema o che utilizzano indirizzi IP hard-coded. Utilizzando listener anonimi, puoi portare le capacità avanzate di filtraggio del traffico e dei processi di FakeNet-NG a strumenti di terze parti.

Potresti anche voler abilitare l'impostazione ProcessBlackList del Diverter per consentire allo strumento esterno di comunicare con Internet. Ad esempio, per consentire a un proxy HTTP di inoltrare il traffico proxy, aggiungi il suo nome di processo alla blacklist dei processi. Ad esempio, aggiungi il seguente processo per consentire a Burp Proxy di comunicare con Internet:

root@kitploit:~
ProcessBlackList: java.exe

Nello scenario in cui l'applicazione comunica su una porta sconosciuta, ma desideri comunque reindirizzarla al listener anonimo sulla porta 8080, puoi definire il listener predefinito come segue:

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

Infine, per consentire al traffico DNS di continuare ad andare al server DNS predefinito su Internet, reindirizzando tutto il resto del traffico, aggiungi la porta 53 alla blacklist delle porte UDP del Diverter come segue:

root@kitploit:~
BlackListPortsUDP:

Proxy Listener

L'ultima release di FakeNet-NG implementa un nuovo proxy listener in grado di rilevare dinamicamente il protocollo di comunicazione (incluso il traffico SSL) e reindirizzare la connessione a un listener appropriato.

Puoi configurare il proxy listener per lavorare su una porta specifica, come illustrato nella configurazione seguente:

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

Nota il nuovo parametro Listeners che definisce un elenco di potenziali gestori di protocollo da provare per tutte le connessioni in arrivo.

Si consiglia inoltre di definire un proxy listener come gestore predefinito aggiornando le seguenti configurazioni del diverter:

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

Con il listener predefinito che punta al proxy listener, tutte le connessioni sconosciute verranno gestite appropriatamente. Puoi comunque assegnare listener specifici alle porte per imporre un protocollo specifico (ad es. utilizzare sempre il listener HTTP per la porta 80).

Il proxy determina il protocollo dei pacchetti interrogando tutti i listener disponibili con la funzione taste(). Ogni listener che implementa taste() risponderà con un punteggio che indica la probabilità che il protocollo gestito da quel listener corrisponda al contenuto del pacchetto. Il proxy inoltrerà il pacchetto al listener che ha restituito il punteggio più alto. Il RawListener restituirà sempre un punteggio di 1, quindi verrà scelto nel caso in cui tutti gli altri listener restituiscano 0, fungendo quindi da predefinito.

Gli utenti possono modificare il parametro di configurazione 'Hidden' in ciascuna configurazione del listener. Se 'Hidden' è 'False', il listener verrà associato a una porta specifica e riceverà automaticamente tutto il traffico su quella porta. Con 'Hidden' impostato su 'True', il listener può ricevere solo traffico che viene reindirizzato attraverso il proxy.

Sviluppo

FakeNet-NG è sviluppato in Python, il che ti consente di sviluppare rapidamente nuovi plugin ed estendere le funzionalità esistenti. Per i dettagli, consulta Developing for FakeNet-NG.

Problemi Noti

[WinError 87] Il parametro non è corretto

Al momento di questa scrittura, la dimensione predefinita del buffer in pydivert è 1500. Se FakeNet-NG incontra un pacchetto più grande della dimensione predefinita del buffer, potresti osservare questo errore. Una soluzione alternativa è specificare la dimensione del buffer desiderata in self.handle.recv(bufsize=<your_bufsize>) in fakenet/diverters/windows. Vedi qui

Non funziona su VMWare con modalità host-only abilitata

Vedi "Non intercetta il traffico" sotto.

Non intercetta il traffico

Affinché FakeNet-NG possa intercettare e modificare il pacchetto, deve esistere una rotta di rete valida affinché il pacchetto possa raggiungere la sua destinazione.

C'è un modo semplice per verificare se le rotte sono impostate correttamente. Senza lo strumento in esecuzione, prova a eseguire il ping dell'host di destinazione. Dovresti osservare una risposta valida o un messaggio di timeout. Se invece ricevi un errore "destinazione non raggiungibile", non hai una rotta valida.

Questo è solitamente causato dal fatto che il gateway non è impostato o non è raggiungibile. Ad esempio, su una macchina VMWare con modalità host-only, la macchina non avrà il gateway configurato, impedendo così a FakeNet-NG di vedere qualsiasi traffico.

Per risolvere questo problema, configura manualmente la tua interfaccia primaria sul gateway nella stessa sottorete. Prima controlla il nome dell'interfaccia:

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

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

In questo caso, il nome dell'interfaccia è "Local Area Connection", quindi lo useremo per il resto dei comandi.Configura manualmente l'indirizzo IP dell'interfaccia e il gateway come segue:

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

Imposta manualmente l'indirizzo IP del server DNS

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

Se hai ancora problemi, assicurati che l'indirizzo IP del gateway stesso sia raggiungibile.

DNS non risolve i nomi

Assicurati che il Listener DNS si sia legato correttamente alla sua porta. Errori come i seguenti indicano che il Listener DNS non si è legato correttamente:``` 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` o altri strumenti per scoprire quale applicazione è associata alla porta e consulta la documentazione del sistema operativo o dell'applicazione corrispondente per disabilitare il servizio.

Potrebbe essere utile acquisire un'istantanea della VM prima di procedere alla riconfigurazione.

Ad esempio, Ubuntu abilita comunemente il servizio `dnsmasq` in `/etc/NetworkManager/NetworkManager.conf` con la riga `dns=dnsmasq`.
Disabilitarlo (ad esempio commentandolo) e riavviare il servizio `network-manager` (es. `service network-manager restart`) è sufficiente per liberare la porta prima di rilanciare FakeNet-NG.

Nelle versioni più recenti di Ubuntu o in altre distribuzioni, usando `lsof -i` potrebbe rivelare che viene invece utilizzato `systemd-resolved`. In questi casi, puoi provare questi passaggi adattati da <https://askubuntu.com/questions/907246/how-to-disable-systemd-resolved-in-ubuntu>:```
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Quindi in /etc/NetworkManager/NetworkManager.conf sotto la sezione [main], aggiungere una riga che specifica:``` dns=default

root@kitploit:~
Elimina il symlink `/etc/resolv.conf`, cioè `rm /etc/resolv.conf`.

Infine, riavvia `NetworkManager`:```
sudo systemctl restart NetworkManager

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

Please ensure that FakeNet-NG is extracted to the local C: drive to make sure the WinDivert driver is loaded correctly.

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

This error may occur when running a stand-alone executable version of Fakenet. Please download and install Visual C++ 2008 runtime executable.

Limitazioni

  • Solo Windows Vista+ è supportato per la modalità SingleHost. Utilizza il Fakenet originale per i sistemi operativi Windows XP/2003.

  • Solo Linux è supportato per la modalità MultiHost.

  • Le vecchie versioni di python-netfilterqueue possono causare un segmentation fault in python. Se riscontri questo problema, verifica che stai utilizzando l'ultima versione di python-netfilterqueue.

  • A causa della dimensione del buffer hard-coded utilizzata da python-netfilterqueue, il Diverter Linux non gestisce correttamente i pacchetti di dimensioni superiori a 4.016 byte. In pratica, ciò non influisce sulla modalità Linux MultiHost per le interfacce configurate con la convenzionale unità massima di trasmissione (MTU) di 1.500 byte. Se l'interfaccia Linux che stai utilizzando con FakeNet-NG supporta un MTU maggiore di 4016, dovrai ricompilare python-netfilterqueue per supportare una dimensione del buffer di <your_mtu> + 80 (python-netfilterqueue dedica 80 byte del buffer al sovraccarico).

  • Il traffico solo in locale non viene intercettato su Windows (ad esempio, se provi a connetterti direttamente a uno dei listener).

  • Viene intercettato solo il traffico che utilizza i protocolli TCP, UDP e ICMP.

Riconoscimenti

  • FakeNet-NG è stato progettato e sviluppato da Peter Kacherginsky.
  • Un ringraziamento speciale ad Andrew Honig, Michael Sikorski e altri per il FakeNet originale che è stato l'ispirazione per sviluppare questo strumento.
  • Il Diverter Linux è stato progettato e sviluppato da Michael Bailey.
  • Grazie a Matthew Haigh per lo sviluppo della funzionalità di autodetection del protocollo proxy.
  • Grazie a Cody Pierce e Antony Saba per aver segnalato e risolto una vulnerabilità di traversal del file system.

Contatti

Per bug, crash o altri commenti contatta [email protected].

Iscriviti alla mailing list FLARE per annunci della comunità! Invia un'email con oggetto "subscribe" a [email protected].

Scarica lo strumento
root@kitploit:~
 python setup.py install
  • In Linux, libera la porta 53 per il listener DNS:

    root@kitploit:~
     sudo systemctl stop systemd-resolved
    

    Esegui FakeNet-NG lanciando 'fakenet' da qualsiasi directory in una shell privilegiata.

  • Esegui FakeNet-NG lanciandolo con un interprete Python in una shell privilegiata:

    root@kitploit:~
     python -m fakenet.fakenet
    
    Copia NBI filtrati