Loading
0

Linux平台“盖茨木马”分析

从图中可以看到,样本对于常用的系统工具都可以进行替换并伪装,其中包括了进程查询工具ps和网络查询工具 netstat.
4.2.MainBeikong()分析
对于样本处于非特定位置的默认情况,CheckGatesType()会返回1,然后样本会调用MainBeikong()。
首先,MainBeikong()会调用daemon()去创建一个后台进程。父进程会调用exit(0)退出,子进程会调用setsid(),脱离session,然后关闭stdin,stdout,stderr文件fd。此时子进程的父进程会变成1号进程。
daemon()调用成功后,样本会调用CSysTool::SelfInit()进行自检,这个过程还包含解密过程CRSA::Decrypt().密文是自检时传入的字符串。解密后的原文是一个域名:
("bei[.]game918[.]me:21351:1:1::1:698412:697896:697380")
后续将解密内容分别赋值给一些控制变量。

控制变量列表:
g_strConnTgts
bei[.]game918[.]me
g_iGatsPort
21351
g_iGatsIsFx
1
g_iIsService
1
g_strForceNote
“”
g_bDoBackdoor
True
g_strCryptStart
698412
g_strDStart
697896
g_strNStart
697380
在函数MainBeikong()中,会调用两次CSysTool::KillPid,该函数会判断pid文件中存放的pid和当前运行的pid是否一致,如果不一致就kill掉当前的进程。文件名分别为:idus.log,apsh.conf.
接着会调用CFileOp::RemoveFile(“apsh.conf”)将文件删除掉。
随后会调用CSysTool::KillGatesIfExist(),同样是进行进程检测,文件名是vga.conf,不同点是这次会将当前pid写入文件。
从控制变量命名规则和函数的命名中,可以看出大量使用Gates这个单词,这也正是盖茨木马得名的原因所在。
4.3.自启动设置
CUtility::SetAutoStart()会进行自启动设置。操作/etc/init.d/VsystemsshMdt文件。文件内容:
root@remnux:/etc/init.d#catVsystemsshMdt#!/bin/bash/root/websevrer
然后运行system(),继续进行自启动设置。
ln-s/etc/init.d/VsystemsshMdt/etc/rc1.d/S97VsystemsshMdt
ln-s/etc/init.d/VsystemsshMdt/etc/rc2.d/S97VsystemsshMdt
ln-s/etc/init.d/VsystemsshMdt/etc/rc3.d/S97VsystemsshMdt
ln-s/etc/init.d/VsystemsshMdt/etc/rc4.d/S97VsystemsshMdt
ln-s/etc/init.d/VsystemsshMdt/etc/rc5.d/S97VsystemsshMdt
然后执行释放文件函数CSysTool::ReleaseGates()。内部使用system()进行实现。
mkdir-p/usr/bin/bsd-port
cp-f/root/workspace/websevrer/usr/bin/bsd-port/knerl
/usr/bin/bsd-port/knerl
cp-f/root/workspace/websevrer/usr/bin/pythno
/usr/bin/pythno
进程的这些行为都会被Linux平台中系统监控程序sysdig[4]所捕获。

Tips:sysdig是由sysdigcloud开发的一个开源工具,集合了strace、tcpdumphtop、iftop、lsof等大量有用的功能为一体。
4.4.MainProcess()分析
首先会读取/etc/resolv.conf,结合Google的公开DNS服务器,8.8.8.8更新dns服务器信息。然后通过CStatBase::Initialize()读取/proc文件系统,了解本机的信息。

相应的在sysdig中会监测到文件打开和读取等事件。

然后,样本会使用insmod加载一个内核模块/usr/lib/xpacket.ko,但是因为分析机内没有该模块,会报错。
[
436,
"insmod/usr/lib/xpacket.ko(PID=2170,TID=2170)",
"write:path=/dev/null,size=84",
"insmod:ERROR:couldnotloadmodule/usr/lib/xpacket.ko:Nosuchfileordirect"
],
接着会读取文件/usr/lib/libamplify.so,同样的原因没有能够找到该文件。
4.5.网络行为分析
首先样本向DNS服务器,发送了查询bei[.]game918[.]me(112.224.48.28)的请求。获得IP地址后,尝试对端口21351进行TCP连接。
通过tcpdump[5]和wireshark工具,发现了第二个控制域名360[.]baidu[.]com[.]9kpk[.]com(8.5.1.43)。样本会连接45000端口。
可惜的是,目前这两个IP地址已经失效,所以无法进行后续协议的分析。

Tips:tcpdump命令可以拦截和展示系统中收发的网络数据包。
总结
Linux.BackDoor.Gates.6样本使用了加密C&Cserver信息,运行时解密的策略,防止控制域名暴露,同时具备自启动,替换系统常用工具,进行DDoS攻击等恶意行为。
本文针对盖茨木马样本进行了细致的分析,同时介绍了多种在Linux环境下的安全工具。

分页阅读: 1 2
【声明】:8090安全小组门户(https://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。