返回更新列表
新发布Aug 31, 2026

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.cfg
  • etc/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 - 启动、停止和重启 Cowrie
  • fsctl - 修改虚拟文件系统
  • 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)
  • 以及许多许多其他人。

分类