仿ssh服务的木马攻击处理案例

1、概述

攻击者常常利用密码泄漏、弱口令攻击、漏洞利用等方式木马程序,将机器变成受控的“肉鸡”,然后跟本机器植入更多的木马和恶意软件,操作受控的机器窃取敏感数据、发起网络攻击、控制其它机器、计算加密货币等非法操作。

这次中毒的VPS就是典型的木马植入案例。初步分析,有下列的特征:

  • 木马程序伪装成systemd服务和sshd服务,一直与外界保持联络;
  • tmp目录下有个名称为up.txt的文本文件,里面是当前登录密码,说明木马监听劫持了当前密码相关的机制,如果直接修改密码,恶意程序会将最新密码上传到远端;
  • 机器原本开放的22端口被木马程序用来作为上报报文的源端口,每次系统启动就会使用这个端口同外部的ip建立tcp连接,后续就会有两个raw套接字往几个外部的IP大量的网络数据传输;
  • 机器中毒之后,会有大量到其它机器22端口的连接,感觉像是用来串联控制“肉鸡”所用;
  • 木马软件的可执行文件和启动项会被隐藏,一般的ls等常规命令看不到。

从上述情况来看,由于系统一旦被入侵者攻破,就会植入多种木马和多种恶意程序,篡改系统可行性文件和配置的地方会比较多,因此常规有效的解决方案就是分为四个步骤来解决:

  • 设置通信白名单
  • 可以手动杀掉一些占用资源过高的进程
  • 备份有效数据
  • 重装系统

2、详细处理演示

2.1 设置白名单

通过vps的资源监控页面或者nload等命令可以看到,木马和恶意程序建立了大量的连接,占用的CPU比较多,疯狂往外进行网络数据传输。设置通信白名单的目的很简单,就是及时切断对外网络连接,终止数据传输,尽可能的保证自身数据安全。

设置白名单的方式也很简单,删除默认安全组建立新的安全组,安全组的入站规则和出站规则只保留自己受信任IP,强烈推荐仅仅加入一个公网IP,用来远程登录及备份数据使用!

白名单配置之后,最后就能够看到对外流量传输逐渐降低。

通过nload查看当前网络流量情况

通过ss命令可以看到,设置白名单后,大量的恶意连接无法握手成功

2.2 手动杀掉一些占用资源较多的进程

由于恶意程序往往需要进行大量的IO处理或者进行恶意操作,通常CPU占用率较高,这样影响我们后续导出数据等正常操作,因此优先找出来关掉。通过top命令可以看到,首先发现了一个名叫linux的进程,这不是一个常见进程名称,使用kill或者pkill杀掉进程。

杀掉这个进程之后,观察/tmp目录下的文件,发现有上传登录密码及伪造的sshd进程信息,杀掉进程,并将对应的二进制转移位置或删除掉。

删除掉这两个进程之后,发现还有个名叫systemd-worker的进程,从也是长期占用较多的CPU,使用类似上述的方法杀掉进程并删除可执行文件。

检查常规的启动项目,在rc.local文件中发现一个名叫netstat.cfg的启动项,清除配置和可执行文件。这里清除的过程中发现此进程是被恶意程序保护起来的,ls看不出来了。这个时候有个可以尝试的技巧就是使用dd命令将文件清空。

经过这几次处理之后,重启系统,发现还是会有一个从ssh端口发起的tcp通信尝试连接到外部服务器,说明机器内还有恶意程序在运行。

2.3 备份数据

经过上述的操作,虽说尚未完全清除恶意程序,但是这个时候资源占用已经正常,加上安全组的白名单设置,这个时候可以安全的拷贝数据了。

达到具备备份数据的状态时,及时将有用数据拷贝备份出来!推荐使用scp进行加密传输。

2.4 重装系统

由于系统中毒之后,植入了大量的病毒和木马程序,修改的配置也非常多,很难将病毒完全彻底删除。因此推荐的方式就是备份重要数据之后直接重装系统。

总结

这其实是一件入侵成本很低的安全事件:

  • 对外暴露的SSH服务,未做白名单限制
  • 对外暴露的服务器的密码简单

正常情况下,对外暴露的除了提供服务能力的端口都应该限制白名单,并且服务器本身的密码不应该简单随意。

  • 对于管理端口,应该修改默认端口,设置访问白名单,避免被扫描和爆破。
  • 除非业务端口(例如80、443),其他无关端口无特殊情况不放行。
  • 服务器和应用程序的密码尽量复杂,不同服务器和应用程序密码不应相同。
  • 每台新的服务器购买或者创建之后,应该做一些基础的安全加固(按照等保检查的要求加固)。