Loading
0

Linux平台“盖茨木马”分析

最近对Linux.BackDoor.Gates.6的一个病毒样本进行了分析,通过调查发现Linux盖茨木马是一类有着丰富历史,隐藏手法巧妙,网络攻击行为显著的DDoS木马。这篇文章主要介绍了Linux盖茨木马的分析过程,同时会讲解在Linux环境下恶意软件分析的常用技巧和安全工具的使用方法。
盖茨木马整体情况
此类Linux木马主要恶意特点是具备了后门程序,DDoS攻击的能力,并且会替换常用的系统文件进行伪装。木马得名于其在变量函数的命名中,大量使用Gates这个单词。从网上公开资料可以看出,盖茨木马主要针对中国地区的服务器进行DDoS攻击,有95%的攻击目标都在中国,排名第二的是美国。接下来会对盖茨病毒的一个分支样本,进行更为细致的静态分析和动态分析。
静态分析
3.1.ELF文件信息
在静态分析中,首先会对文件类型进行判断,在Linux环境下,file工具[1]能够对ELF类型进行初步的判断。例如下表中,通过文件信息,能够得出该样本是32位ELF可执行程序,运行于IntelCPU上,静态链接。更重要的一个信息是,该样本没有除去符号表,这就为后续的逆向分析提供了丰富的调试信息。
MD5
6dfc7ea279b50b1f962523d517cd76fb
入口点
8048120
文件信息
ELF32-bitLSBexecutable,Intel80386,version1(SYSV),staticallylinked,forGNU/Linux2.2.5,notstripped
Tips:file命令可以识别文件类型。
3.2.导出符号分析
使用strings工具[2]可以从ELF文件中搜索ASCII字符串,可以发现一些IP信息,加载内核命令,恶意攻击函数名。
Tips:strings命令可以从二进制文件中提取字符串。
IP信息如下:
"abaec 61.132.163.68",
"abafa 202.102.192.68",
"abb09 202.102.213.68",
"abb18 202.102.200.101",
"abb28 58.242.2.2",
"abb33 202.38.64.1",
"abb3f 211.91.88.129",
"abb4d 211.138.180.2",
"abb5b 218.104.78.2",
"abb68 202.102.199.68",
"abb77 202.175.3.3",
"abb83 202.175.3.8",
... ...
加载内核模块命令如下:
"aa3f2insmod/usr/lib/xpacket.ko"
函数名中含有恶意网络攻击的名称:
{
"str": "11CAttackBase",
"offset": "a98fc"
},
{
"str": "13CPacketAttack",
"offset": "a990a"
},
{
"str": "10CAttackUdp",
"offset": "a9928"
},
{
"str": "10CAttackSyn",
"offset": "a9944"
},
{
"str": "11CAttackIcmp",
"offset": "a9960"
},
{
"str": "10CAttackDns",
"offset": "a997c"
},
这些IP信息和函数中的攻击名称很大程度会帮助杀毒软件识别已知的病毒。
后续的静态分析包括静态反汇编,查找导入导出表等,因为逆向的过程是一个动静结合的过程,反汇编部分计划通过后续的动态分析来展现。
动态分析
因为样本没有去掉符号信息,为反汇编和反编译提供了很好的支持。该样本从main()开始,共有4个主要的执行分支:

样本根据CSysTool::CheckGatesType()返回的结果分别会调用这4个函数。本文会首先分析CheckGatesType()的逻辑,然后主要对默认情况进行分析。
4.1.CheckGatesType()分析
在调用该函数之前,样本会将变量g_strMonitorFile赋值为”/usr/bin/pythno” 。
首先,调用CUtility::GetModuleFullPath()获得样本的全路径名称。通过readlink(“/proc/{getpid()}/exe”) 得到。这个动作会被strace[3]捕获。
304520:10:41.345483readlink("/proc/3045/exe","/root/workspace/websevrer",1024)=25
Tips:strace命令可以捕获程序使用的系统调用(包括参数、返回值和执行时间等)以及接收到的signal。
其次,调用CSysTool::GetBackDoorFile()拼接出backdoor文件全路径”/usr/bin/bsd-port/knerl”。
最后,CheckGatesType()的逻辑用表格表示为:
返回值
条件strcmp
0
样本路径==”/usr/bin/pythno”
2
样本路径==”/usr/bin/bsd-port/knerl”
3
样本路径==常用的系统工具
1
默认情况
这里可以看出,当样本替换系统命令之后,执行的行为和默认情况是不同的。这里说明样本具有伪装成系统工具的恶意能力。

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