Cowrie 蜜罐版本演进全解读:从 CHANGELOG 掌握 1.x 到 3.1 的破坏性变更与升级路径
网络安全【免费下载链接】cowrieCowrie SSH/Telnet Honeypot https://docs.cowrie.org/项目地址https://gitcode.com/gh_mirrors/co/cowrie点击查看免费下载本篇技术指南以 Cowrie SSH/Telnet 蜜罐的官方变更记录仓库根目录 CHANGELOG.rst由 docs/CHANGELOG.rst 通过.. include:: ../CHANGELOG.rst引入 Sphinx 文档为主体系统梳理从 1.x 到 3.1.0 的版本脉络。读者将掌握三个层面的能力识别每次大版本升级前必须处理的破坏性变更如事件字段重命名、配置节迁移、目录布局重构理解新增功能的底层实现事件管道、虚拟开机时间、Lark 解析器等并获得逐版本对照的升级检查清单与仓库内可验证的源码依据。一、CHANGELOG 文档定位变更记录是升级的第一手依据唯一权威源docs/CHANGELOG.rst本身不承载内容它通过.. include:: ../CHANGELOG.rst将仓库根目录的 CHANGELOG.rst 嵌入文档站。因此阅读和引用变更记录时根目录文件才是完整原文。信号体系每条目按BREAKING CHANGES - ACTION REQUIRED升级必须动手、NEW FEATURES、BUG FIXES、SECURITY AND HARDENING、INTERNAL分组其中“必须处理”组直接决定升级成本。升级策略提示3.1.0 与 3.0.x 系列距离当前最近且破坏性最强2.x 与 3.0.0 之间存在目录布局的范式切换历史条目1.x/2.x则多为功能增量可对照自身定制项如数据库 schema、自定义 honeyfs、输出插件配置逐条排查。二、Release 3.1.0Python 3.11 下限与虚拟开机时间3.1.0 是当前最新版本核心信号如下。必须处理的破坏性变更Python 3.10 不再受支持最低 Python 版本提升为 3.11。部署环境低于 3.11 的节点需先升级运行时再升级 Cowrie。新增特性新 shell 命令sed与tr对应源码 src/cowrie/commands/sed.py、src/cowrie/commands/tr.py并有独立测试 test_sed.py、test_tr.py。虚拟开机时间boot_offset模拟机器在 Cowrie 启动之前就已“开机”uptime、/proc/uptime、last都从该时刻起算蜜罐重启后不再显示“只运行了几秒”的穿帮 uptime。新增[honeypot] boot_offset选项设置开机与 Cowrie 启动之间的秒数差未设置时 Cowrie 每个进程启动时在 190 天之间随机取值一次。源码级印证src/cowrie/shell/protocol.py中的boot_offset()使用functools.cache缓存结果读取CowrieConfig.getint(honeypot, boot_offset, fallback-1)未配置时返回random.randint(86400, 90 * 86400)实现。对应测试见 test_proc_files.py。配置模板位于 src/cowrie/data/etc/cowrie.cfg.dist# How many seconds before Cowrie started the emulated machine booted. # (default: a random value between one and ninety days, chosen at startup) #boot_offset 1209600缺陷修复更贴近真实 bashShell 报错更接近 bash语法错误与 “command not found” 输出到 stderr并携带交互式/脚本 shell 各自的正确前缀脚本内错误会标注行号。无法执行的脚本退出码为 126解释器缺失的脚本退出码为 127。printf实现了格式转换。awk -F接受带空格的模式并输出真实结果。head/tail接受 GNU 选项形式并可读取管道输入。lscpu描述的 CPU 与/proc/cpuinfo一致。esac仅在命令位置作为关键字生效。双引号内的\\按一个反斜杠解析。socketlog输出插件改为在 reactor 上发送事件不再在write()中阻塞。空闲 LLM 会话默认 300 秒超时与 shell 超时一致。三、Releases 3.0.1 – 3.0.15事件字段、配置迁移与 Shell 脚本引擎这是覆盖面最广的一次版本系列升级影响最大逐项拆解。3.1 破坏性变更升级前必须完成事件字段重命名cowrie.session.closed与cowrie.log.closed现在上报duration_ms毫秒整数旧的duration字段被移除此前部分传输协议为字符串、部分为浮点数。读取duration的仪表盘与索引映射必须更新。限流选项迁移wget、curl、nc的限流选项从[honeypot]移到[shell]。配置了*_rate_limit_*的部署需整体迁移。模板中可见每个抓取命令一套参数src/cowrie/data/etc/cowrie.cfg.dist# *_rate_limit_enabled: 每主机限流开关默认 true # *_rate_limit_requests: 每个窗口每主机最大连接数默认 5 # *_rate_limit_window: 窗口长度秒数默认 60 # *_rate_limit_max_hosts: 同时跟踪的最大主机数默认 1000 #wget_rate_limit_enabled true #curl_rate_limit_enabled true #nc_rate_limit_enabled true #ftpget_rate_limit_enabled true #tftp_rate_limit_enabled trueVirusTotal 集合配置[output_virustotal] collection被collection_id取代需从 VirusTotal Web 界面集合的 URL 中复制 ID模板示例。crashreporter 插件移除连同[output_crashreporter]配置节一并删除。该插件曾向 api.cowrie.org 上报 Python 异常且默认禁用移除对大多数部署无影响。3.2 Shell 脚本能力从命令模拟到脚本引擎Shell 脚本语法if、while、until、for、casetest/[内建命令真实退出状态$?/||exit Nexec内建。上传的脚本与交互输入走同一解析器退出状态会回传给 SSH 客户端。Shell 解析器统一为 Lark支持、重定向、真正的管道以及会等待慢速命令如wget完成的命令替换。新命令su、chpasswd对应测试 test_su.py 等。grep无文件参数时读取 stdin并支持-m。3.3 新增输出插件与格式Kafka基于aiokafka需要 asyncio reactorsrc/cowrie/output/kafka.py测试 test_kafka.py。Signal Messenger与URLhaus输出插件。textlog输出支持format ocsf写入 OCSF 记录。3.4 网络、日志与打包HAProxy PROXY 协议监听端点支持haproxy:前缀负载均衡器背后的攻击者真实地址可被正确记录。[honeypot] log_level诊断日志级别控制cowrie.log的详细程度前台/Docker 模式同时作用于 stdout默认info支持按子系统覆盖log_level_namespace如log_level_cowrie.ssh debug也支持同名环境变量COWRIE_HONEYPOT_LOG_LEVEL_*。渲染后的攻击者事件行cowrie.events默认保持info下限除非显式覆盖结构化事件输出cowrie.json、数据库不受日志级别影响。相关模板与说明见 src/cowrie/data/etc/cowrie.cfg.dist。新增Nix flake仓库根 flake.nix用于构建与开发。3.5 安全与加固SECURITY AND HARDENING出站抓取防 SSRFwget、curl、nc、ftpget、tftp校验每一个重定向跳转只连接已校验过的地址并阻断所有非全局路由地址含 IPv4-mapped 与 IPv4-compatible 的 IPv6 形式。出站绑定地址出站抓取绑定[honeypot] out_addr不泄漏服务器自身地址模板。命令级限流每个抓取命令拥有独立限流download_limit_size对所有命令生效新增的[shell]选项按命令设置限额。Shell 输入防护[shell] max_input_size默认 16384 字节、parse_timeout_seconds默认 10 秒与gc_collect_threshold默认 512防止超大或歧义输入拖垮 reactor——模板注释明确指出解析成本随输入规模超线性增长被下载的大型文件如死链 URL 返回的 HTML 错误页若直接当脚本运行会挂死进程配置说明。[shell] scp_max_files_per_session默认 20每个会话 scp 上传文件数上限防止大量小文件造成不成比例的宿主机磁盘 I/O配置说明。健壮性畸形 SSH 报文、telnet 协商、非 UTF-8 攻击者字节、LLM 提示输入都不再导致会话崩溃。日志注入防护不可信字节在日志、CEF 输出与 Telegram 消息中统一转义。3.6 内部重构事件管道与诊断日志体系事件管道事件统一经会话级EventLog与中央EventDispatcher分发输出插件通过Output.dispatch()发出富集事件。设计文档见 docs/EVENT_PIPELINE.rst实现见 src/cowrie/core/events.py。EventLog在connectionMade时绑定会话身份session、src_ip、protocol为权威字段攻击者传入的同名字段无法覆盖下载等 deferred 回调即使晚于连接关闭仍能产出带完整归属的事件标记late: true。EventDispatcher只富集一次sensor、uuid、时间戳、message 插值逐 sink 分发并隔离异常单个数据库不可达不会阻断其他 sink 或产生日志洪泛。ConsoleRenderer把每条事件渲染成cowrie.log中的一行前缀为protocol,session,src_ip。诊断日志现代化从旧twisted.python.log迁移到每类一个twisted.logger.Logger实例命名空间 级别消息为 PEP-3101 惰性格式化字符串、运行时值作为数据传入后端池backend pool的无会话发射器去掉历史遗留的eventid标记纯作为基础设施诊断不再到达输出插件。内存优化会话共享一棵 copy-on-write 的 honeyfs 树替代每次深拷贝。依赖treq升级到 26.7.0移除requests与urllib3。Docker镜像固定 uid、可复现的构建元数据并从运行时 venv 移除 pip、setuptools、wheel。四、Release 3.0.0cwd 驱动的状态目录与初始化模型3.0.0 对部署目录模型做了范式切换是 2.x 用户升级时绕不开的一步。破坏性变更清单状态目录改为 cwd 驱动cowrie start不再chdir到脚本推导的 “root” 路径。当前工作目录即 Cowrie 状态目录./etc/cowrie.cfg是配置./var/log/cowrie/存日志./var/run/存 PID 文件。所有 cowrie 命令start、stop、restart、status必须在同一目录下运行。新增cowrie init命令pip 安装的运维者需在选定的状态目录执行一次cowrie init从打包模板物化./etc/cowrie.cfg并创建var/{log/cowrie,lib/cowrie,run}骨架。源码 checkout 用户不受影响——仓库根目录通过src/cowrie/data/etc/cowrie.cfg.dist视为已初始化。cowrie start无初始化标记拒绝启动依次查找./etc/cowrie.cfg、./etc/cowrie.cfg.dist、./src/cowrie/data/etc/cowrie.cfg.dist防止在错误目录里意外写入状态文件。实现在 src/cowrie/scripts/cowrie.py 的check_initialized()。顶层honeyfs/目录移除内容改为内嵌进src/cowrie/data/fs.pickle的A_CONTENTS字节。有本地定制的运维者请把 honeyfs 文件放到自选目录并在cowrie.cfg的[honeypot] contents_path指向它逐文件覆盖仍级联在打包默认值之上。cowrie.cfg.dist移入包内模板位于src/cowrie/data/etc/cowrie.cfg.dist作为默认层自动加载运维配置etc/cowrie.cfg只需包含要覆盖的键。[honeypot] data_path移除原来用${honeypot:data_path}/...推导的filesystem、processes、config_files_path在未设置时直接从包内读取默认值设置过data_path的运维需改为逐个设置派生路径。[honeypot] contents_path默认不再设置未设置时所有文件内容来自 pickle只有需要逐文件覆盖时才显式设置。内部实现细节新模块cowrie/shell/honeyfs.py管理进程级 pickle 缓存HoneyPotFilesystem共享一次pickle.load通过honeyfs.get_tree()每次会话深拷贝不再每个连接重读磁盘。新模块cowrie/core/resources.py提供read_data_bytes、open_data_binary经importlib.resources访问打包的cowrie.data资源。createfs.py增加EMBED_PATHS常量递归遍历时把指定路径字节烘焙进A_CONTENTSfsctl新增embed local-dir命令批量加载文件内容进已构建的 pickle。Passwd/Group类从类体加载改为实例__init__加载。backend_pool的 XML 配置模板改用与 honeyfs 相同的打包数据级联[backend_pool] config_files_path变为可选未设置时经importlib.resources回退到打包默认值。CI 对 PyPI 包的冒烟测试取代原先无操作的twistd cowrie改为校验入口点、打包资源、cowrie init输出以及cowrie start的初始化标记守卫。五、Releases 2.9.1 – 2.9.20LLM 生态与 IPv6 支持新命令cutsrc/cowrie/commands/cut.py。IPv6ifconfig、netstat展示 Global Unicast Addressget_endpoints_from_section可检测 IPv6 监听地址。LLM 代理支持LLM 后端出站请求读取HTTP_PROXY/HTTPS_PROXY环境变量。LLM Anthropic provider除 OpenAI 外Claude 可作为 LLM 后端发送给模型的上下文提示可配置。Shell 脚本执行通过输出重定向创建的脚本如cat script.sh现在可被执行。CVE-2026-24061 检测telnet NEW-ENVIRON 利用尝试被检测并记录蜜罐模拟易受攻击的响应。OS 指纹更新默认模拟系统提升为 Debian 12 / kernel 6.1。SPDX / REUSE 合规所有源文件携带 SPDX 头CI 通过reuse lint可对照仓库根 REUSE.toml 与 LICENSES/ 目录。缺陷修复修复ftpget、tftp、nc的 SSRF 防护绕过保留 IP 范围检查可被绕过的漏洞chmod --help/--version损坏chattr被空操作桩遮蔽wget把下载文件保存到/而非会话 cwdplaylog对 exec 会话显示输出文件描述符重定向解析处理更多边界tab 补全不再对不存在的目录报错backend_pool在远程模式下客户端协议未初始化或已关闭时的 NAT 错误telnet 在onResult回调为None时无限递归nc输出更真实并加滥用保护限制。基础设施Docker 基础镜像升级到 Debian 13trixie/ Python 3.13Twisted 提升到 26.4.0 并采用更严格类型Malshare 与 Cuckoo 输出插件从requests移植到treq新增每周自动化发布工作流打包的fs.pickle现在内嵌文件内容A_CONTENTS字节。六、Release 2.9.0LLM 后端诞生LLM 后端新的实验性后端使用大语言模型如 OpenAI GPT生成逼真的 shell 响应。相比静态命令模拟LLM 对任何命令动态生成输出让蜜罐更具迷惑性、能处理意外输入。完整接入说明见仓库内 docs/LLM.rst。配置变更新增[llm]配置节含 API key、模型选择与响应参数。七、Release 2.7.0Python 3.10 起点与运维变革破坏性变更安装改为在虚拟环境执行pip install -e .。bin/目录移除asciinema、createfs、fsctl、playlog不再从bin/调用。Python 3.9 不再支持最低版本提升为 3.10。SQL schema 更新使用 MySQL/SQLite 的部署需执行迁移脚本 docs/sql/update16.sqlIPv6 支持IP 字段 VARCHAR 加长到 61。SSH-DSS 移除弃用的 ssh-dss 算法不再支持请移除相关配置。新特性与改进新输出插件PostgreSQL自动重连、Prometheus 指标监控与告警源码见 src/cowrie/output/postgresql.py、src/cowrie/output/prometheus.py。新 shell 命令find基础文件搜索、digDNS 查询、git版本控制模拟curl支持-IHEAD 请求。安全增强wget/curl/nc 出站连接阻断保留 IP 段空字节密码防护以防认证绕过SSH 算法与密钥管理更新。代理模式SFTP 文件传输在代理模式下记录并捕获SSH factory 处理更稳定。基础设施Docker 改进本地构建、Cosign 容器签名构建系统迁移到 setuptools-scm 自动版本管理Twisted 25.5.0、Elasticsearch 客户端 9.xMISP 插件带 overcuriosity 防护Slack 输出格式简化ECS 兼容的 Logstash 配置模板新增 Python 3.14 与 PyPy 3.11 支持。八、历史版本脉络2.6.0 → 1.x能力累积与方向演变早期版本条目可按主题归纳用于理解当前能力的来龙去脉。2.6.0 与 2.5.0路径调整与插件扩张默认静态文件位置从share/cowrie迁至src/cowrie/data配置键share_path更名data_path注意此键在 3.0.0 又已移除。Python 3.12/3.13、PyPy 3.10 支持Python 3.8 停止支持Twisted 24.10Docker 构建使用 Debian 12 Bookworm。新输出插件Oracle、Remote Syslog、Axiom新命令finger、groups、locate、lspci。pip install -e安装方式引入。2.5.0Datadog 输出模块shell 展开处理整体改进Python 3.11、PyPy 3.9 支持Telegram 输出增加会话类型。2.4.0 – 2.1.0输出生态与命令体系成形2.4.0ThreatJammer、Telegram、Discord 输出插件mongodb 插件更新Docker 仓库与本仓库合并wget/curl用treq重写测试框架从 trial 迁移到 unittest。2.3.0MISP 插件扩展新增 ECDSAKeys、ed25519 公钥MySQL connector依赖 mysql-connector-pythonCSIRTG 插件改用新库版本Slack 兼容 slackclient 2.xGreyNoise 改用 Community APIuname实现 getopt 风格解析wget 支持 301 重定向与 SSLv3Malshare API 更新hpfeeds.py由hpfeeds3.py取代源码见 src/cowrie/output/hpfeeds3.py。2.2.0反引号命令替换chmod命令行解析改进新增uniq修复 nc 挂起内建用户richard更名phil作为检测机制cat/grep等支持二进制Azure Sentinel 输出插件。2.1.0禁用 crashreporterELK 文档与插件更新新增tee更新cat/dd/wc修复 AsyncSSH 客户端 SSH 压缩问题AbuseIP 输出插件。2.0.x 与 1.6.0代理模式与 Telnet 并入2.0.1exec 命令在 tty 日志禁用时的修复curl/wget 输出到 stdoutSQL 存储完整主机名需更新数据库 schema子 shell((echo test))求值修复。2.0.0crash reporter 默认启用并向 api.cowrie.org 上传崩溃数据可通过[output_crashreporter] enabledfalse关闭注意该插件在 3.0.15 已被整体移除代理功能正式启用GSoC2019auth_none与auth_keyboard_interactive_enabled移入[ssh]配置节。1.6.0新文档主题Greynoise、Reverse DNS 输出插件direct-tcp 转发写入数据库shell 模拟管道升级与环境变量改进SSH 加密参数可在配置文件设置keyboard-interactive 认证默认关闭可开启新增wc、crontab、chpasswd命令ssh -V输出可配置多时区支持默认 UTC多密码提示与 keyboard-interactive 开关。1.5.x 与更早防检测与结构化日志基础1.5.3移除 Telnet NAWS 协商以防 NMAP 识别 CowriePython2/3 兼容修复文档转为 ReStructuredText。1.5.2修复 tftp 异常移除dblog机制与 legacysplunk输出插件Splunk 插件增加 Python3 支持free、uname命令改进VT 结果存入 JSON 日志。1.5.1VT 上传修复、Python3 tab 补全、Hassh 支持userdb.txt迁至etc/userdb.txt下载与 TTY 日志迁至var/SSH 密钥存于var/lib/cowrie源码迁至src/目录txtcmds迁至share/cowrie/txtcmdsfilesystem 配置条目变更fingerprint 日志携带 KEX 属性与唯一指纹输出插件强制enabled配置项cowrie.log 改为每日轮转日志默认 umask 0007支持 S3 存储上传/下载产物。早期奠基条目2015-2017 未标注版本exec 命令代理雏形、Cuckoo v2 集成、配置文件合并cowrie.cfg.dist 与 cowrie.cfg 按序合并、bin/cowrie start|stop取代 start.sh/stop.sh、listen_endpoints语法、SSH 相关配置归入[ssh]、Telnet 支持合并、configparser依赖、启动时一次加载 pickle、OpenSSH 风格延迟压缩、ls的s/t位、SFTP ls 完整用户名/组、VirusTotal 基础支持、interact 端口默认 5123仅监听回环、重定向与 dl/ 日志、UID 取自 honeyfs/etc/passwd、free/env/sudo/busybox命令、SFTP 上传大小限制、命令执行期间排队输入、DShield 与 ElasticSearch 输出、stdin 以 SHA256 校验和保存去重、keyboard-interactive 回归、本地 syslog 模块、-c启动开关指定配置文件、exec 始终启用、twisted 插件与-p选项、JSON 输出默认化并每日轮转、AuthRandom 登录类、dblog 内部重构为事件 ID、配置指令ssh_addr→listen_addr/ssh_port→listen_port、默认禁用 exit jail、sftp/exec 支持、exec 时 stdin 保存到 dl/、wget 非 80 端口下载、公钥认证接受/记录/拒绝、uname -r -m、sleep、diffie-hellman-group-exchange-sha1、bash -c、多命令、会话 UUID、direct-tcpip 记录与拒绝、chattr、emacs 键绑定、sync、logstash/kibana 配置、预认证差异防检测修复、KEX 参数记录、ls字母排序、banner_file弃用、dir/help/users/killall/poweroff/halt/reboot别名、命令环境变量传递、which/netstat/gcc来自 kippo-extra、支持关键字的日志框架。九、升级落地从 CHANGELOG 到可执行清单结合上文各版本条目整理出面向升级的四步检查法运行时与数据库先确认 Python 版本 ≥ 3.113.1.0使用 MySQL/SQLite 的部署按序执行 docs/sql 下的迁移脚本2.7.0 的 update16.sql 起至后续 update 脚本并确认事件字段duration_ms相关的 schema/映射已同步更新。目录与初始化3.0.0 起以 cwd 作为状态目录pip 安装需先cowrie init所有命令在同一目录执行确认cowrie start能找到初始化标记。配置迁移搜索data_path已移除、[honeypot]下的*_rate_limit_*迁往[shell]、[output_virustotal] collection改为collection_id、contents_path默认不再设置等键对照模板 src/cowrie/data/etc/cowrie.cfg.dist 逐项修正。自定义资产自定义 honeyfs 文件需通过contents_path指向检查是否有依赖 ssh-dss已移除或 crashreporter已移除的配置如使用结构化输出确认事件管道EventLog/EventDispatcher行为符合 docs/EVENT_PIPELINE.rst 描述。该 CHANGELOG 与源码、配置模板、测试如 src/cowrie/test 下的 test_sed、test_tr、test_su、test_kafka、test_llm、test_proc_files 等相互印证是排查升级问题与理解 Cowrie 内部演进的第一手资料。赞分享网络安全【免费下载链接】cowrieCowrie SSH/Telnet Honeypot https://docs.cowrie.org/项目地址https://gitcode.com/gh_mirrors/co/cowrie点击查看免费下载相关推荐JupyterHub Changelog 深度解读从 0.1 到 6.0 的版本演进、破坏性变更与升级路径JupyterHub Changelog 深度解读从 0.1 到 6.0 的版本演进、破坏性变更与升级路径 本篇技术指南以 JupyterHub 官方 cha后端微服务Argilla 版本演进全解析从 CHANGELOG 看 2.x 与 1.x 的关键能力、破坏性变更与迁移路径Argilla 版本演进全解析从 CHANGELOG 看 2.x 与 1.x 的关键能力、破坏性变更与迁移路径 本指南以 Argilla 仓库中 argill数据标注人工智能NLPMLOpsRAGreact-admin 版本演进全解读从 CHANGELOG 看 3.x 到 5.x 的核心变化、破坏性变更与升级实践react admin 版本演进全解读从 CHANGELOG 看 3.x 到 5.x 的核心变化、破坏性变更与升级实践 本篇文章以仓库根目录的 CHANGEL前端UI组件上一篇openbuddy-mistral2-7b-v20.3-32k完全指南如何快速部署32K上下文多语言AI助手下一篇React-Redux官方绑定库深度解析现代React状态管理的核心利器 React-Redux作为Redux官方指定的React绑定库在现代React应用开发中扮演着至关重要的角色。它不仅仅是简单的连接器而是一个经过精心设计和优化的状态管理桥梁为React开发者提供了与Redux store无缝集成的完整解决方案。本文将从项目架构、核心功能、API设计理念以及在现代React生态中的定位等多个维度深入解析React-Redux的技术特性和优势。创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考