33

针对国内IP发起攻击的DDoS样本分析

 4 years ago
source link: https://www.tuicool.com/articles/fqu6zaA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、前言

ZbMZ7vz.jpg!web

近期光通天下团队捕获到名为stianke_trojan.bak的恶意样本,经过样本初步分析确认该病毒类型Linux.Trojan.Generic.DDos。

样本md5值等信息如下:

MD5:43a5c08bfac85e097b1eceeafaeeec40

SHA-1:9e9680e492bfcdf894bdedc92dc25848f0474f1d File Type ELF

Magic: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.2.5, not stripped

TRiD ELF Executable and Linkable format (Linux) (50.1%)

ELF Executable and Linkable format (generic) (49.8%)

File Size 1.17 MB

此次捕获到的病毒家族庞大,变种复杂多样,运用了大量的关键字符加密(动态解密过程)。利用linux特性,感染大量系统文件(高效、非临时性)作为自我保护与持续性攻击的手段。

利用Linux系统原理巧妙伪装与隐藏,被感染服务器植入后门,发动DDos网络攻击,如果被木马植入,将会带来极大的危害及不可预估的损失。

二、行为分析

观察病毒是否加壳进行了免杀处理,通过查壳并未加壳,如下所示:

226vuyz.jpg!web 图片一:查壳

病毒拖入虚拟机或沙箱进行运行,动态观察病毒对系统恶意行为,如修改配置、网络操作等,对病毒行为结果做到心中有数,如下所示:

RnAzMvY.jpg!webQ3EjQfJ.jpg!web 图片二:行为监控 

三、样本详细分析

(1)样本执行流程分析

拖入IDA中观察样本的复杂程度如下所示:

zMJvyqy.jpg!web 图片三:IDA VIEW

利用字符串交叉引用提取有效的字符串信息,其中提取大量的DDos所攻击的ip(高达300以上),ip源基本都是中国境内的,如下所示:

MvuANfi.jpg!web 图片四:目标ip源

定位到病毒入口点,经样本动态调试,执行流程大体如下:

fmMfArf.jpg!web2yqEfeF.jpg!webjmU7V3y.jpg!web 图片五:病毒执行流程  

(2)动态解密字符串模块

解密数据赋值给全局变量:

uMb2i2J.jpg!webZZ7FJfq.jpg!web 图片六:动态解密数据

通过字符串动态解密,最后解密出正确的ip域名端口等数据:

eIVZ3uE.jpg!web 图片七:ip/域名/port

最终整理全局变量被赋值的数据,如下所示:

uAfEzqe.jpg!webfQrAVji.jpg!web 图片八:域名解析

(3)MainBeikong模块

观察执行流程会发现,当病毒第一次执行的时候,g_iGatesType被赋值为1,则必然会进入到该函数,函数分析如下:

I3u2uqe.jpg!web 图片九:MainBeikong

执行恶意代码,会先killPid与删除“/tmp/bill.lock”,,在启动目录下存在bash,然后还会判断一些文件且删除,保证唯一性(后面还会在创建该文件)。

这时候就用到了前面的全局变量g_strSN(DbSecuritySpt)伪装在init.d与rc目录下,通过查看写入文件数据,是病毒源文件绝对路径。

N3iaYb3.jpg!web 图片十:伪装启动源

使用自己封装的函数MkdirPid,创建文件且写入线程文件,我们通过sysdig或者动态执行代码后,追踪恶意行为,这时候创建以全局变量g_strGL(lod)后缀的文件记录Pid如下所示:

N3En6j7.jpg!web 图片十一:写入Pid

MainBeikong函数进入了结尾,函数清理了环境(因为每执行一个函数就会fork()创建新进程,退出当前进程),把自己加入系统服务中,为下一步执行MainBackdoovr做预热准备,如下所示:

AF7jqiu.jpg!web 图片十二:MainBeikong

(注:windows使用OD等工具可以在新线程创建回调进行附加下断,也可以在Thread 运行回调时候可以下断,Linux fork或者processthread配合exit就很难下断新进程,提供思路,使用IDC写脚本修改二进制机器码与汇编指令,达到实现完整的动态调试效果。)

(4)MainBackdoorv模块

MainBackdoorv函数是病毒中尤为重要一个环节,这里是恶意攻击的执行点,也是重点分析的函数,如下所示:

yENjYf6.jpg!web 图片十三:MainBackdoorv

该函数会判断是否已存在getty.lock.ak,g_strBDG(selinux)全局变量解密的数据创建的文件,如果不存在则创建该文件且获取全局变量g_strBDSN,selinux针对getty文件,如下所示:

iIRNben.jpg!web 图片十四:selinux伪装

(5)MainProcess模块

MainProcess包含了C&C通信,自己也构建了服务端,创建了大量的线程(多线程方式),有着良好的线程锁与线程池来控制攻击线程。不同的操作使用了不同封装类来调用对象执行,用this作为参数,而this作为回调函数列表,以指针偏移方式去寻址调用恶意代码,是一个非常复杂的函数,重点分析如下:

2UriMzu.jpg!web 图片十五:MainProcess执行流程

MainProcess先是利用了谷歌公开的服务器更新了域名,网络抓包如图八,这个比较有意思,如下所示:

iIF3iqN.jpg!web 图片十六:InitDnsCache

接着初始化了大量的攻击ip,如图四所示,感染了/usr/lib/libamplify.so动态链接模块,而且初始化了ATK(攻击)模块及this偏移,如下所示:

QzuMfaR.jpg!web 图片十七:ATK模块

动态调试过程中还发现了函数感染了大量的文件,并拥有755的权限,提取被感染的文件名称,如下所示:

Yr6feaz.jpg!web jaMVjuv.jpg!web 图片十八:被感染文件

线程创建及类Manager调用,使用Socket创建了服务端,用来接收客户端(ip组中返回的数据),Send发送大量的数据如下所示:

mAV7byN.jpg!webbMbyuuJ.jpg!webVZzuQfI.jpg!web 图片十九:SocketDDos

这个样本比较独特的地方,维护了很多对象,对this指针进行调用列表赋值,作为创建新线程参数传入。在构造函数里进行了初始化,在析构释放执行了部分操作,如下所示:

jua67zQ.jpg!webbUFRNrM.jpg!web7niY7z6.jpg!web 图片二十:ObjectRef

最后找到了关键攻击函数ProssMain,封装了各类型的DDoS攻击,如下所示:

YnaeAry.jpg!web 图片二十一:DDos攻击封装

(Ps:附上一张DDoS攻击状态图(模拟),直观的感受DDoS对服务器带来的性能影响与危害。)

bAvMRjr.jpg!web 图片二十二:DDos攻击感官图

四、恶意域名,IP及被攻击IP整理

恶意域名:

Lea.f3322.org  103.73.160.25(中国香港)

vmUfem2.jpg!web 控制端-恶意IP:

130.73.160.25:2500 (德国柏林州柏林)

被攻击IP(331 个,大部分在中国):

61.132.163.68

202.102.192.68

202.102.213.68

...

221.7.92.86

221.7.92.98

五、病毒处理及加固措施

根据病毒的行为与样本分析定性,清理被感染的文件及尝试恢感染的数据,对服务器进行加固,编写伪脚本如下(需要配合实际情况):

i2eI7ze.jpg!web 图片二十三:病毒处理及数据恢复脚本

六、总结

经过病毒的全面分析,入侵系统以后,执行了大量的恶意代码,感染文件、加载内核模块、伪装隐藏等恶意行为,目的发动各种形式的DDos攻击。

单纯的观察行为是很难排查与定位,无法捕获到病毒执行过程与文件数据感染的具体情况。管理人员应该加强安全防范意识,有良好的网络监控服务(如DDos监控)日志审计等,第一时间掌控服务器健康状态,从而及时发现、排查、追踪、定位、分析、处理,将病毒造成的损害降至最低点。

*本文作者:光通天下,转载请注明来自FreeBuf.COM


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK