前言

说起来有点丢人。

上个月我的腾讯云服务器被干了,直到现在才有时间写一篇博客来复盘。不是什么高级货色,就是最老套的SSH弱密码爆破。当时服务器的归属变动有些需求,临时设置了弱密码,正好中了下怀。攻击者从爆破成功到植入后门只用了13秒,全程自动化,第二天看日志才发现。


背景

4月28日晚上23:34:02,爆破成功了。

其实下午14:03攻击者就开始尝试SSH爆破了,一直爆到晚上23:30才开始密集攻击,每两秒一次,大概四分钟后23:34:02,密码被破掉了。算下来整个爆破过程持续了差不多9.5小时。

爆破用的是腾讯云上海节点的IP,挺讽刺的,自己家的云跑攻击,对象还是自家的。


13秒发生了什么

23:34:02到23:34:15,这13秒里攻击者干了这些事:

23:34:05

  • sudo whoami 测试权限,发现是sudo用户。23:34:05
  • useradd创建了个傀儡账号admin。23:34:08
  • rm -rf /root/.bash_history 删掉历史记录,想抹痕迹。23:34:08
  • tee /usr/bin/adb0 写入后门二进制,5MB的ELF。
    23:34:15
  • chmod + nohup启动,后门开始跑。23:34:15
  • 攻击者退出。

13秒。一定是工具自动化执行的。攻击者对这套流程熟练得像在呼吸一样。


后门分析

这个 /usr/bin/adb0 是用Go写的DDoS肉鸡,功能就四样东西:发起DDoS、远程Shell、SOCKS5代理、给C2发心跳。

同一个文件被部署了四个地方:

  • /usr/bin/adb0 - 主程序
  • /usr/lib/libgdi.so.0.8.2 - 副本2,伪装成图形库
  • /etc/profile.d/bash.cfg - 副本3,当前正在跑的那个
  • /boot/system.pub - 副本4,开机自启动

四个地方同一个MD5:e49c610315ff35dca6729fda138553d5

C2在 45.150.226.78:65111,美国西雅图的Spartan Host。TLS 1.3通信,证书是自签名的,CN写的是127.0.0.1,属实是把自己当本地开发环境了。
前一天我正好在给astroBot的一个插件配置图形库环境,完全没有发现程序已经悄悄被换了,还在想为什么装完了也没用。


四层持久化

这是我觉得最离谱的地方。攻击者同时部署了四层持久化,让你怎么清理都清不干净。

Cron:每分钟跑一次后门,*/1 * * * * root /.mod,/.mod是个36字节的启动脚本。

bash_profile:每次登录bash自动加载后门程序,伪装成[rcu_gp]进程在跑。

开机自启:写了init脚本注册成系统服务,Linux一启动就跑。

SSH公钥后门:在authorized_keys里埋了自己的公钥,就算你改密码他还能登录。

从密码、进程、服务、SSH四个维度死死赖住。

攻击者:你以为删个文件就完事了?天真。


Rootkit

攻击者还写了个Rootkit脚本 /etc/profile.d/gateway.sh,专门劫持监控命令。

ps被劫持了,你查进程看不到后门。ss被劫持了,你查网络连接看不到C2。netstat被劫持了,你查端口看到的都是假的。

但有个漏洞:他没劫持 netstat -antp,用这个命令还是能看到C2连接的。说明这个攻击者也不是100%严谨,留了个缝。


怎么发现的

说实话不是我发现的。当时我在用Hermes Agent帮我分析别的东西,它顺便扫了一眼auth.log,说”这里有一堆SSH失败记录,来自一个不认识的IP,时间点是昨晚23:34:02”。

我一看还真是。再让Agent跑完整分析,才知道服务器已经被干了四个功能的后门在跑了。我当时还在用这台服务器跑别的服务,浑然不知。


怎么办

最紧急的几件事:

删攻击者公钥,最优先。kill掉后门进程。删四个后门副本。清cron定时任务。删开机自启服务。改密码,换成强密码。

长期来说,禁用密码登录,用SSH密钥认证。密码登录这种事,就是给攻击者留的口子。


感想

弱密码真的会出事。9.5小时爆破一个弱密码,成功率比我想象的高得多。

另外攻击也真的很快。13秒完成入侵和部署,自动化程度超出预期。

多层持久化是标配。不是删一个文件就完事了,攻击者会从各个维度确保后门还在。

Rootkit能隐藏东西。ps、ss、netstat这些命令被劫持了,不用非常规手段根本看不到。

事后把所有日志和证据都打包了,提交给了腾讯云的官方。服务器后来重装了系统,直接关闭了密码认证。

这事之后我算是明白了,云服务器的安全防护真不是开玩笑的。该上的防护手段一个都不能省,不然真被人干了你都不知道。