
cowrie v3.0.12
Cowrie 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
什么是 Cowrie
Cowrie 是一个中到高交互的 SSH 和 Telnet 蜜罐,旨在记录暴力破解攻击以及攻击者执行的 shell 交互。在中交互模式(shell)下,它用 Python 模拟一个 UNIX 系统;在高交互模式(代理)下,它充当 SSH 和 Telnet 代理,以观察攻击者在另一个系统上的行为。在 LLM 模式下,它使用大型语言模型为攻击者的命令生成动态响应。
Cowrie <http://github.com/cowrie/cowrie/>_ 由 Michel Oosterhof 维护。
文档
文档可以在这里 <https://docs.cowrie.org/en/latest/index.html>_找到。
Slack
您可以通过以下 Slack 工作区 <https://www.cowrie.org/slack/>_ 加入 Cowrie 社区。
功能特性
-
选择作为模拟 shell 运行(默认):
- 具有添加/删除文件能力的虚拟文件系统。包含一个完整模拟 Debian 5.0 安装的虚拟文件系统
- 可以添加虚拟文件内容,使攻击者能够
cat诸如/etc/passwd之类的文件。仅包含最少的文件内容 - Cowrie 保存通过 wget/curl 下载或通过 SFTP 和 scp 上传的文件,以供后续检查
-
或将 SSH 和 Telnet 代理到另一个系统
- 作为带监控的纯 Telnet 和 SSH 代理运行
- 或让 Cowrie 管理一组 QEMU 模拟服务器,以提供可供登录的系统
-
或使用 LLM 后端(实验性):
- 使用大型语言模型(例如 OpenAI GPT)动态生成逼真的 shell 响应
- 无需预定义响应即可处理任何命令
- 维护对话上下文以保持会话一致性
两种设置均支持:
- 会话日志以
User Mode Linux <http://user-mode-linux.sourceforge.net/>_ 兼容格式存储,便于使用playlog工具重放。 - 支持 SFTP 和 SCP 文件上传
- 支持 SSH exec 命令
- 记录 direct-tcp 连接尝试(SSH 代理)
- 将 SMTP 连接转发到 SMTP 蜜罐(例如
mailoney <https://github.com/awhitehatter/mailoney>_) - JSON 日志记录,便于在日志管理解决方案中处理
安装
安装 Cowrie 有三种方式:pip、Docker 和 git 检出。
对于您的第一个蜜罐,pip 和 Docker 是最简单的途径。
对于开发或需要修改 Cowrie 本身的高级场景,请使用 git 检出。
三种方式的完整说明请参阅
安装指南 <https://docs.cowrie.org/en/latest/INSTALL.html>_。
Docker
Docker 镜像 <https://hub.docker.com/repository/docker/cowrie/cowrie>_ 可在 Docker Hub 上获取。
-
要快速上手并试用 Cowrie,请运行::
$ docker run -p 2222:2222 cowrie/cowrie:latest $ ssh -p 2222 root@localhost
-
要仅在本地构建,请运行::
$ make docker-build
PyPI
Cowrie 可在 PyPI 上获取 <https://pypi.org/project/cowrie>_。要将其安装到虚拟环境中并启动::
$ 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 会在当前目录中写入配置文件 etc/cowrie.cfg;日志和下载文件存放在 var/ 下。
系统要求
本地运行所需的软件:
- Python 3.10+
- python-virtualenv
相关文件:
etc/cowrie.cfg- Cowrie 的配置文件(由操作者拥有)。由cowrie init创建。src/cowrie/data/etc/cowrie.cfg.dist <https://github.com/cowrie/cowrie/blob/main/src/cowrie/data/etc/cowrie.cfg.dist>_ - 附带的默认配置,请编辑您自己的etc/cowrie.cfgetc/userdb.txt- 访问蜜罐的凭据src/cowrie/data/fs.pickle- 虚拟文件系统;包含元数据(路径、uid、gid、大小、模式)以及攻击者常cat的小文件的内嵌内容(A_CONTENTS字节)。通过fsctl编辑;通过make build-fs-pickle重建。src/cowrie/data/txtcmds/- 简单虚拟命令的输出var/log/cowrie/cowrie.json- JSON 格式的审计输出var/log/cowrie/cowrie.log- 日志/调试输出var/lib/cowrie/tty/- 会话日志,可使用playlog工具重放。var/lib/cowrie/downloads/- 从攻击者传输到蜜罐的文件存储于此
命令
cowrie- 启动、停止和重启 Cowriefsctl- 修改虚拟文件系统createfs- 创建您自己的虚拟文件系统playlog- 重放会话日志的工具asciinema- 将 Cowrie 日志转换为 asciinema 文件
贡献者
多年来许多人曾为 Cowrie 做出贡献。特别感谢:
- Upi Tamminen (desaster) 为开发 Kippo(Cowrie 的前身)所做的全部工作
- Dave Germiquet (davegermiquet) 提供 TFTP 支持、单元测试、新的进程处理
- Olivier Bilodeau (obilodeau) 提供 Telnet 支持
- Ivan Korolev (fe7ch) 多年来提供的众多改进。
- Florian Pelgrim (craneworks) 在代码清理和 Docker 方面的工作。
- Guilherme Borges (sgtpepperpt) 提供 SSH 和 Telnet 代理(GSoC 2019)
- 以及许多许多其他人。