
cowrie v3.0.12
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 medio-alta progettato per registrare gli attacchi di forza bruta e l'interazione con la shell eseguita 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 può essere trovata qui <https://docs.cowrie.org/en/latest/index.html>_.
Slack
Puoi unirti alla community di Cowrie nel seguente workspace Slack <https://www.cowrie.org/slack/>_.
Funzionalità
-
Scegli di eseguirlo come shell emulata (predefinita):
- Filesystem fittizio con la possibilità di aggiungere/rimuovere file. È incluso un filesystem fittizio completo che replica un'installazione Debian 5.0
- Possibilità di aggiungere contenuti fittizi ai file così che l'attaccante possa 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 fai da proxy SSH e Telnet verso un altro sistema
- Esegui come puro proxy Telnet e SSH con monitoraggio
- Oppure lascia che Cowrie gestisca un pool di server emulati con QEMU per fornire i sistemi a cui accedere
-
Oppure usa un backend LLM (sperimentale):
- Usa modelli linguistici di grandi dimensioni (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 salvati 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 di file
- Supporto per i comandi SSH exec
- Registrazione dei tentativi di connessione direct-tcp (proxy SSH)
- Inoltro delle connessioni SMTP verso un honeypot SMTP (es.
mailoney <https://github.com/awhitehatter/mailoney>_) - Registrazione in 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 i percorsi più semplici.
Usa un checkout git per lo sviluppo o per scenari avanzati in cui vuoi
modificare Cowrie stesso. Le istruzioni complete per tutti e tre i metodi sono in
la guida all'installazione <https://docs.cowrie.org/en/latest/INSTALL.html>_.
Docker
Le immagini Docker <https://hub.docker.com/repository/docker/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; log e download finiscono in var/.
Requisiti
Software necessario per l'esecuzione locale:
- Python 3.10+
- python-virtualenv
File di interesse:
etc/cowrie.cfg- il 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>_ - impostazioni predefinite incluse, modifica invece il tuoetc/cowrie.cfgetc/userdb.txt- credenziali per accedere all'honeypotsrc/cowrie/data/fs.pickle- filesystem fittizio; contiene sia i metadati (percorso, uid, gid, dimensione, modalità) sia i contenuti incorporati (byteA_CONTENTS) per i piccoli file che gli attaccanti spesso leggono concat. Modificabile tramitefsctl; ricostruibile tramitemake build-fs-pickle.src/cowrie/data/txtcmds/- output per i 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 vengono salvati qui
Comandi
cowrie- avvia, ferma e riavvia Cowriefsctl- modifica il filesystem fittiziocreatefs- crea il tuo filesystem fittizioplaylog- utility per riprodurre i log delle sessioniasciinema- converte 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 Cowrie si basa
- Dave Germiquet (davegermiquet) per il supporto TFTP, i test unitari e la nuova gestione dei processi
- Olivier Bilodeau (obilodeau) per il supporto Telnet
- Ivan Korolev (fe7ch) per i numerosi 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.