0%

挖矿病毒的体系化检测流程

一、背景

hw前面试的时候被问到这个问题,自我感觉回答的挺凌乱的,明明这块的经验也很多,但感觉自己做的还是不够好,缺少体系化的整理和思考,这边简单做下记录,顺带着理一下思路。

二、入侵检测

挖矿的直接特征相对僵木蠕来说比较单一和容易排查,即较高的CPU占用;当然也存在一些特意控制CPU不超过指定阈值的挖矿病毒,其经常出现在攻击者已经拿下域控之后的利用场景,这种你好我也好的挖矿方式相对比较隐蔽,特别是在拥有较大规模主机集群的内网中,这种挖矿很难引起管理员注意,也就不容易去排查,但需要注明的是其使用的入侵、挖矿等手段和前一种几乎是一样的,只是稍温和一点,一旦发现了异常,后续的检测也是一样的。
首先定位到异常主机,观察命令操作是否卡顿,查看CPU状态是否远超正常主机,若cpu资源占用高居不下,则有可能是中挖矿了;此时看下crontab里是否有被写连接未知服务器下载文件并执行的操作,若是,则90%以上是中挖矿了,之后进行溯源,主要对其入侵方式、恶意行为等进行整理,说白了就是检测怎么进来的,进来后干了什么,主要是这两个过程。

三、溯源

首先是入侵手段。我研究过的挖矿病毒的入侵手法基本就三种:1、捆绑挖矿 2、ssh口令爆破 3、cve
捆绑挖矿一般将挖矿软件和正常的软件捆绑在一起,诱导受害者下载到主机上运行,触发恶意挖矿;ssh口令爆破比较常见,一般的攻击者会把攻击者脚本放公网上针对公网主机做一些ssh弱口令的爆破,这种比较简单,厉害的都是直接将肉鸡做成集群/ip池对特定网段的云主机做ssh口令爆破,亲身经历过vps被ssh爆破种挖矿,加强密码到20位数字+大小写+特殊字符依然被攻破的情况,其算力可见一斑;最后一种是走cve,一般都是用一些rce漏洞放公网去扫的。
之后是恶意行为,在野的挖矿病毒常见的基本都会做一些权限维持,当然也有一些会去做蠕虫扩散。
权限维持的话,比较常见的:

  • 1、crontab。基本挖矿都会写crontab,一般用于恶意服务器的恶意文件定时下载执行,防止挖矿进程断掉/可执行文件被删后无法重启。检测crontab几个关键目录,如/var/spool/cron 、/var/spool/cron/crontabs/、/etc/cron.d/、/etc/crontab这些,注意不同linux版本crontab目录有一些细微差别,需要做兼容。
  • 2、开机自启动。同前者。检测/etc/init.d/、/etc/rc.local、/etc/systemd/system/等目录,不同系统版本间有一定差异。
  • 3、ssh公钥登陆。方便攻击者批量化主动执行操作。检测/root/.ssh/authorized_keys。
    4、命令替换。同1。直接检测不太容易,一般如果检测到环境已经清理但之后挖矿进程还是起来了可以看这条去系统可执行文件下做检测,一般被替换的命令大小、hash一致,且一般较大,与正常可执行文件目录下的其它文件大小差异较大,可以特别检查常用的几个命令,如netstat、ps、ls这些。
  • 5、C&C通信。同3。查看可疑established连接对应的进程进行关联排查,同时也可以通过wireshark或tcpdump抓包进行分析,特别是隐蔽通信时。
  • 6、ld_preload。很常见,比改libc简单且动静小,一般用于在readdir中过滤掉挖矿进程达到进程隐藏效果,或在执行libc api中重启挖矿进程(同1)。可通过查看/etc/ld.so.preload及系统so库是否被改动进行判断;libc内容较多可以通过ltrace的结果进行排查;单纯检测进程隐藏可以用静态链接的类ps程序去做检测。
  • 7、rootkit。较少,但是效果很好,同6,通常用于写lkm在内核层做进程、文件、网络的隐藏及挖矿进程的维持。rootkit要做检测比较麻烦,因为攻击者是和安全人员在同一层级了,要检测也至少需要与其在同一层,即在内核层与其做对抗,这块没有hids的话较难察觉,后面会写一篇抓门来分析rootkit,包括原理、常见类型和攻击手法、对抗思路等。
    蠕虫和挖矿的组合相对前者这种后门+挖矿来说较少出现,但危害却很大,一般是通过ssh或cve来实现传播,比较简单就不再赘述。

    四、清理

    对挖矿病毒涉及的修改文件该删的删,该还原的还原,进程该kill的kill;若挖矿病毒涉及面较广且主机上非核心业务可以考虑重装系统,因为清除不彻底是很常见的一个问题;确认清理完毕后可以关注下挖矿进程的启动情况,若不再启动,则说明大概率恶意软件已清除。

    五、建议

    1、拒绝弱口令
    2、未知来源的软件不要运行
    3、敏感服务不要直接暴露公网,只对特定用户做开放
    4、边界网络/主机出入流量管控及用户鉴权

    六、其它

    在野的恶意软件很多危害都很大,而厂商/客户环境又多,人力有限,不可避免存在监控不到被入侵和执行恶意操作的场景,针对这种在主机层面的入侵发现难、检测难、溯源难的问题,我还是觉得HIDS/HIPS是有必要存在和去发展提升的。