Linux木马分析初体验(BillGates及XORDDOS查杀)

文章目录
  1. 1. BillGates
    1. 1.1. 静态分析
    2. 1.2. 动态分析
    3. 1.3. 清理
  2. 2. 清理及监控
  3. 3. 主要参考资料


分析工具:

  • ida pro
  • edb
  • strace

事情是这样的,某一天发现某一台服务器数据流量异常,怀疑中了木马而且是一台Windows机器,想着就能一展我手动杀毒的技能了,但是开了机才发下这台机器上通过Hyper-V装了另外5台虚拟机,比我想象中复杂多了而且在机房狭小的环境中。在几台Windows机器上找了良久也未发现木马的踪迹,难道是什么高级木马?好在师兄经验丰富一想肯定是剩下的那台centos有问题,果然一找一大堆,billgates附送个xorddos,不是说linux很安全么,怎么会中马呢? linux是很安全但是耐不住用的人没安全意识啊,直接暴露在公网的主机被设置了ssh弱密码。好了故事编完了,进入正题,这篇博客主要是这两天的linux系统下的木马分析与查杀的一个简单记录。

BillGates

BillGates就是上面那个比重最大的Linux.BackDoor.Gates.5,2014年就被drweb曝光过,网上很多分析的很多了,但是还是自己跟着走一遍还是能学到很多东西的,特别是第一次分析Linux木马的我。

静态分析

基本信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
backbox@backbox-virtual-machine:~/Desktop/ctf/tmp$ md5sum lang
779d77646d84cc012c5da5c01ea592c6 lang
backbox@backbox-virtual-machine:~/Desktop/ctf/tmp$ file lang
lang: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped
backbox@backbox-virtual-machine:~/Desktop/ctf/tmp$ readelf -a lang|grep FILE|awk '{print $8}'|sort -u
AmpResource.cpp
Attack.cpp
AutoLock.cpp
CmdMsg.cpp
ConfigDoing.cpp
crtstuff.c
DNSCache.cpp
ExChange.cpp
FileOp.cpp
Global.cpp
Ijduy.cpp
Iysd76.cpp
Log.cpp
Main.cpp
Manager.cpp
Md5.cpp
Media.cpp
MiniHttpHelper.cpp
NetBase.cpp
ProtocolUtil.cpp
ProvinceDns.cpp
StatBase.cpp
SysTool.cpp
ThreadAtk.cpp
ThreadClientStatus.cpp
ThreadCondition.cpp
ThreadConnection.cpp
Thread.cpp
ThreadDoFun.cpp
ThreadFakeDetect.cpp
ThreadHttpGet.cpp
ThreadKillChaos.cpp
ThreadLoopCmd.cpp
ThreadMonGates.cpp
ThreadMutex.cpp
ThreadRecycle.cpp
ThreadShell.cpp
ThreadShellRecycle.cpp
ThreadTask.cpp
ThreadTns.cpp
ThreadUpdate.cpp
UserAgent.cpp
Utility.cpp
WinDefSVC.cpp

从上面可以简单总结,这个木马是一个32位的elf文件,采用静态链接的方式(所以在ida中看不到导入表)可能是为了提高兼容性吧,支持2.2以上的linux系统,not stripped就是没有剔除符号信息(这就方便了我们逆向调试),从源文件名可以看书这个木马多线程多任务。
有了上面的信息我们就可以上ida了,是32位的(之前我想都没想认为是64位的直接上64位ida,但是工作的也不错反编译都没问题但是没有f5导致我绕了很大一圈)。

直接上ida f5 main函数,大概就就是上面这个样子的,从ida来看大概有3900个函数,还是比较复杂了。整个木马的执行流程如下面这个图的样子,为什么这么快就能够弄出这么清晰的脉络呢?主要是符号信息没strip加上f5大法,况且360的分析也详细了,所以直接就出来了。不过在ida静态看的时候发现C++写的代码是要比C写的难分析,没用f5看的时候大部分函数名显示都是_ZNSt6vectorISsSaISsEEixEj这个样子的,主要可能就是C++的多态性显示吧,还有就是类成员指针this不知道从哪里冒出来的。

动态分析

静态分析的时候通过函数名基本就可以看出功能这些了,但是获取其他的一些信息函数要动态调试一下,比如说控制端的地址,如果看静态代码然后自己写解密函数太复杂了。Linux的调试器首先想到的就是gdb但是对于用惯了Widnwos图形界面调试器的我用起来真的是太复杂了即使加了peda插件,所以首先就是找一个好的调试器,最终选择了edb基本上和ollydbg无缝对接,按照readme编译安装就可以用了。
下断点
刚开始真的不知道怎么下断点,静态链接的也没导入表导入函数,然后熟悉了下edb发现默认的插件里面有SymbolViewer可以直接搜索函数然后下断点,根据前面的静态分析大概知道解密控制端地址在函数CSysTool::Ikdfu94()中然后搜索f2。这里还需要注意edb的堆栈窗口的显示设置,不然堆栈窗口看起来会怪怪的看不到什么东西,word width设置为4byte(因为32位系统嘛)然后row width 设置为1 word,这样才看起来正常。


断点情况

这里动态调试主要是看看MainBeikong主功能安装函数部分,看能不能找出控制端的地址。




初始化一些校验量部分及一些全局字符串


解密出一个控制端地址中间量

在Ikdfu94()+1a1解密出一个控制端地址中间量,后面部分的0x8130800地址的位置ida会出现反编译失败的情况,而进入这里面会发现会在解密出一个控制端地址,搜索发现这个可能才是真正的控制端地址(反正没怎么搞清楚c++的代码逆向这些类成员怎么存的….),之前以为这个中间量就是控制端地址后面进入0x8130800后才发现这一步才是真正的解密出控制端的地址。

0x8130800部分代码

解密出真正的控制端地址

搜索发现这个域名和很多恶意软件都有关联,应该是个惯犯了。https://www.threatcrowd.org/domain.php?domain=www.007au.net


007au.net域名关联

在路径/usr/bin/bsd-port/getty下主功能程序时解密的后台地址


主功能中间地址

最终控制端地址

2xpk.com域名关联

参数格式:

1
<C2-ip>:<C2-port>:<Is Listener ?>:<IsService ?>:<Campaign Name>:<Enable Backdoor ?>


参数格式

总的来说目的基本达到了,应该是找到了控制端的地址,后面其他的太多了就没有继续分析了,看360分析的那篇文章感觉很庞大很复杂。
威胁情报相关:
1
2
3
4
5
6
7
007au.net
775940302@qq.com
ss@qq.com
513131779@qq.com
2xpk.com
tb8t.com
daywin666@gmail.com


### 清理及恢复系统
清理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/usr/bin/.sshd                   	               守护进程木马文件,首先应该被干掉
/usr/bin/bsd-port/getty 主功能木马文件,直接删除
/bin/、/usr/bin/、/usr/sbin/ 下netstat、lsof、ps或ss 过滤功能木马文件,通过文件大小可判断
/tmp/lang 安装功能木马文件,直接删除
/etc/rc.local 自启动配置文件,清理掉里面的含有木马路径的
/etc/init.d/DbSecuritySpt 自启动配置文件,直接删除
/etc/rc[1-5].d/S97DbSecuritySpt 自启动配置文件,直接删除
/etc/rc[1-5].d/S99selinux 自启动配置文件,直接删除
/etc/conf.n 木马残留文件直接删
/etc/cmd.n 木马残留脚本,直接删除
/usr/lib/libamplify.so 木马残留可执行文件直接删除
/usr/bin/bsd-port/conf.n 木马残留文件直接删除
/tmp/*.lock
/tmp/moni.lod
/tmp/gates.lod



恢复
替换的命令都是一些系统进程网络文件等检测系统异常的命令,不过好在进过分析这些命令都被备份/usr/bin/dpkgd/目录下,我们只需要将木马命令删除然后放回去就好了,实在不放心可以从一台正常的主机上拷贝这些命令。
1
2
3
4
5
6
7
8
9
/bin/netstat
/bin/lsof
/bin/ps
/usr/bin/netstat
/usr/bin/lsof
/usr/bin/ps
/usr/sbin/netstat
/usr/sbin/lsof
/usr/sbin/ps


其他查杀参考:
记一次Linux服务器上查杀木马经历

## XORDDOS

XOR木马DDOS攻击流程--fireeye

### 静态分析
基本信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
root@backbox-virtual-machine:/home/backbox/Desktop/ctf# md5sum ylsfwpisem 
fb7991805655eb06e4380c1f703f0dcb ylsfwpisem
root@backbox-virtual-machine:/home/backbox/Desktop/ctf# file ylsfwpisem
ylsfwpisem: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.9, not stripped
root@backbox-virtual-machine:/home/backbox/Desktop/ctf# readelf -a ylsfwpisem |grep FILE|awk '{print $8}'|sort -u
autorun.c
buildnet.c
crc32.c
crtstuff.c
dns.c
encrypt.c
execpacket.c
findip.c
hide.c
http.c
kill.c
main.c
proc.c
socket.c
tcp.c
thread.c


和BillGates一样,XOR也是32位的静态链接的elf文件同时有我们喜欢的符号信息,但是从源文件来看就有些不同了,首先源文件数量较少(XOR大小为648k,BillGates有差不多1.2M)而且是C语言来写的,看这些命名就感觉很亲切看网上说好像是中国人写得,难怪哈哈。从名称来看有自启动、tcp、隐藏加密等功能所以可以看出xor相比BillGates要简单并且好分析得多。

由于最近事情比较多这里就没写了,可以看参考链接,比较详细基本相似
xor ddos字符解密脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#-*- coding:utf-8 -*-
#dec_conf.py
#xorddos 解密脚本

import os
import sys

def dec_conf(payload):
key="BB2FA36AAA9541F0"
dec_payload=[]
for i in range(len(payload)):
dec_payload.append(chr(ord(payload[i])^ord(key[i%len(key)])))
print ''.join(dec_payload)

if __name__=='__main__':
dec_conf(sys.argv[1])

char xorkeys[17]="BB2FA36AAA9541F0";
void *__cdecl encrypt_code(void *buf, int count)
{
char *p; // [sp+4h] [bp-Ch]@1
signed int i; // [sp+8h] [bp-8h]@1

p = (char *)buf;
i = 0;
while ( i < count )
{
*p ^= xorkeys[i++ % 16];
++p;
}
return buf;
}


### 动态分析

linux xorddos样本分析2


xorddos样本后台地址

样本后台地址godaddy.gdgaoxiang.com:5858|119.147.145.216:2897,可以看到这个域名想冒充godaddy这个域名服务商,








gdgaoxiang.com域名及ip威胁情报信息

域名godaddy.gdgaoxiang.com的威胁情报分析看还比较赶紧没什么做坏事的痕迹,但是ip地址的威胁情报分析来看就是劣迹累累,与这个域名相关的病毒不仅有ddos还有最近流行的敲诈勒索软件Tescrypt。
相关情报如下:

1
2
3
4
5
6
7
8
9
10
11
12
info1.300
godaddy.gdgaoxiang.com
www.gdgaoxiang.com
ly70cc.gdgaoxiang.com
ftp.gdgaoxiang.com
yueliang1235@gmail.com
cs@0662.com.cn
gd500d@126.com
13326596866
1774930466@qq.com
game000123.com
hmgyddos.game8888888.com

清理

可能的木马文件目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/usr/bin/[10 random characters a-z]
/etc/init.d/[10 random characters a-z]
/usr/bin/[Session ID]
/etc/init.d/[Session ID]
/etc/rc1.d/S90[Session ID]
/etc/rc2.d/S90[Session ID]
/etc/rc3.d/S90[Session ID]
/etc/rc4.d/S90[Session ID]
/etc/rc5.d/S90[Session ID]
/etc/rc.d/rc1.d/S90[Session ID]
/etc/rc.d/rc2.d/S90[Session ID]
/etc/rc.d/rc3.d/S90[Session ID]
/etc/rc.d/rc4.d/S90[Session ID]
/etc/rc.d/rc5.d/S90[Session ID]
/var/run/sftp.pid
/var/run/udev.pid
/var/run/mount.pid
/etc/cron.hourly/cron.sh
/etc/cron.hourly/udev.sh
/etc/crontab
/etc/cron.hourly/udev.sh
/lib/libgcc.so
/lib/libgcc.so.bak
/lib/libgcc4.so
/lib/libgcc4.4.so
/lib/udev/udev
/lib/udev/debug

清理及监控

kill_ddos_backdoor
billgates-botnet-tracker

主要参考资料

Linux.BackDoor.Gates.5——又一针对Linux的木马
某僵尸网络被控端恶意样本分析
云端博弈——木马屠城
Notes on Linux/Xor.DDoS
ANATOMY OF A BRUTE FORCE CAMPAIGN: THE STORY OF HEE THAI LIMITED
linux xorddos样本分析1
bill-gates-botnet-threat-advisory

20161031更新–腾讯电脑管家的分析主要利用了其他几种工具
Linux平台“盖茨木马”分析

20161104更新
从“方程式”到“方程组”EQUATION攻击组织高级恶意代码的全平台能力解析