
cowrie v3.1.0
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 系统; 在高交互模式(proxy)下,它作为 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/r/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.11+
- 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 正是基于 Kippo
- Dave Germiquet (davegermiquet) 提供 TFTP 支持、单元测试、新的进程处理
- Olivier Bilodeau (obilodeau) 提供 Telnet 支持
- Ivan Korolev (fe7ch) 多年来提供的许多改进。
- Florian Pelgrim (craneworks) 在代码清理和 Docker 方面所做的工作。
- Guilherme Borges (sgtpepperpt) 提供 SSH 和 telnet 代理(GSoC 2019)
- 以及许多许多其他人。