
cowrie v3.1.0
Cowrie Honeypot SSH/Telnet https://docs.cowrie.org/
.. SPDX-FileCopyrightText: 2014 Upi Tamminen [email protected] .. SPDX-FileCopyrightText: 2014-2025 Michel Oosterhof [email protected] .. .. SPDX-License-Identifier: BSD-3-Clause
Cowrie
Cos'è Cowrie
Cowrie è un honeypot SSH e Telnet a interazione media e alta, progettato per registrare attacchi di forza bruta e l'interazione con la shell effettuata dall'attaccante. In modalità a interazione media (shell) emula un sistema UNIX in Python, in modalità a interazione alta (proxy) funziona come proxy SSH e telnet per osservare il comportamento dell'attaccante su un altro sistema. In modalità LLM, utilizza modelli linguistici di grandi dimensioni per generare risposte dinamiche ai comandi dell'attaccante.
Cowrie <http://github.com/cowrie/cowrie/>_ è mantenuto da Michel Oosterhof.
Documentazione
La documentazione è disponibile qui <https://docs.cowrie.org/en/latest/index.html>_.
Slack
Puoi unirti alla comunità di Cowrie sul seguente workspace Slack <https://www.cowrie.org/slack/>_.
Funzionalità
-
Scegli di eseguirlo come shell emulata (predefinito):
- Filesystem fittizio con la possibilità di aggiungere/rimuovere file. È incluso un filesystem fittizio completo che riproduce un'installazione Debian 5.0
- Possibilità di aggiungere contenuti fittizi ai file, così l'attaccante può fare
catdi file come/etc/passwd. Sono inclusi solo contenuti minimi dei file - Cowrie salva i file scaricati con wget/curl o caricati con SFTP e scp per un'ispezione successiva
-
Oppure proxy SSH e telnet verso un altro sistema
- Eseguilo come puro proxy telnet e ssh con monitoraggio
- Oppure lascia che Cowrie gestisca un pool di server emulati QEMU per fornire i sistemi su cui effettuare il login
-
Oppure usa un backend LLM (sperimentale):
- Usa modelli linguistici di grandi dimensioni (ad es. OpenAI GPT) per generare dinamicamente risposte realistiche della shell
- Gestisce qualsiasi comando senza risposte predefinite
- Mantiene il contesto della conversazione per sessioni coerenti
Per entrambe le configurazioni:
- I log delle sessioni sono memorizzati in un formato compatibile con
User Mode Linux <http://user-mode-linux.sourceforge.net/>_ per una facile riproduzione con l'utilityplaylog. - Supporto SFTP e SCP per il caricamento dei file
- Supporto per i comandi exec SSH
- Registrazione dei tentativi di connessione direct-tcp (ssh proxying)
- Inoltro delle connessioni SMTP a SMTP Honeypot (ad es.
mailoney <https://github.com/awhitehatter/mailoney>_) - Logging JSON per una facile elaborazione nelle soluzioni di gestione dei log
Installazione
Ci sono tre modi per installare Cowrie: pip, Docker e un checkout git.
Per il tuo primo honeypot, pip e Docker sono le strade più semplici.
Usa un checkout git per lo sviluppo o scenari avanzati in cui vuoi
modificare Cowrie stesso. Le istruzioni complete per tutti e tre sono nella
guida all'installazione <https://docs.cowrie.org/en/latest/INSTALL.html>_.
Docker
Le immagini Docker <https://hub.docker.com/r/cowrie/cowrie>_ sono disponibili su Docker Hub.
-
Per iniziare rapidamente e provare Cowrie, esegui::
$ docker run -p 2222:2222 cowrie/cowrie:latest $ ssh -p 2222 root@localhost
-
Per crearla solo localmente, esegui::
$ make docker-build
PyPI
Cowrie è disponibile su PyPI <https://pypi.org/project/cowrie>_. Per installarlo
in un ambiente virtuale e avviarlo::
$ mkdir my-honeypot && cd my-honeypot
$ python3 -m venv cowrie-env
$ source cowrie-env/bin/activate
(cowrie-env) $ pip install cowrie
(cowrie-env) $ cowrie init
(cowrie-env) $ cowrie start
cowrie init scrive il file di configurazione etc/cowrie.cfg nella directory
corrente; i log e i download finiscono sotto var/.
Requisiti
Software necessario per l'esecuzione locale:
- Python 3.11+
- python-virtualenv
File di interesse:
etc/cowrie.cfg- file di configurazione di Cowrie (di proprietà dell'operatore). Creato dacowrie init.src/cowrie/data/etc/cowrie.cfg.dist <https://github.com/cowrie/cowrie/blob/main/src/cowrie/data/etc/cowrie.cfg.dist>_ - valori predefiniti inclusi, modifica invece il tuoetc/cowrie.cfgetc/userdb.txt- credenziali per accedere all'honeypotsrc/cowrie/data/fs.pickle- filesystem fittizio; contiene sia i metadati (path, uid, gid, size, mode) sia i contenuti incorporati (A_CONTENTSbytes) per i piccoli file che gli attaccanti tipicamente visualizzano con cat. Modifica tramitefsctl; ricostruisci tramitemake build-fs-pickle.src/cowrie/data/txtcmds/- output per semplici comandi fittizivar/log/cowrie/cowrie.json- output di audit in formato JSONvar/log/cowrie/cowrie.log- output di log/debugvar/lib/cowrie/tty/- log delle sessioni, riproducibili con l'utilityplaylog.var/lib/cowrie/downloads/- i file trasferiti dall'attaccante all'honeypot sono memorizzati qui
Comandi
cowrie- avvia, ferma e riavvia Cowriefsctl- modifica il filesystem fittiziocreatefs- crea il tuo filesystem fittizioplaylog- utility per riprodurre i log delle sessioniasciinema- trasforma i log di Cowrie in file asciinema
Contributori
Molte persone hanno contribuito a Cowrie nel corso degli anni. Un ringraziamento speciale a:
- Upi Tamminen (desaster) per tutto il suo lavoro nello sviluppo di Kippo su cui si basa Cowrie
- Dave Germiquet (davegermiquet) per il supporto TFTP, gli unit test, la nuova gestione dei processi
- Olivier Bilodeau (obilodeau) per il supporto Telnet
- Ivan Korolev (fe7ch) per i molti miglioramenti nel corso degli anni.
- Florian Pelgrim (craneworks) per il suo lavoro sulla pulizia del codice e su Docker.
- Guilherme Borges (sgtpepperpt) per il proxy SSH e telnet (GSoC 2019)
- E molti molti altri.