*本文原创作者:熊猫正正 ,本文属FreeBuf原创奖励计划,未经许可禁止转载
一、起因
上周五晚上,前同事丢给我一个样本,让我帮他分析一下,周未有事也没时间看,只是把样本丢到VT上扫了扫,报XorDDos.2,原来是14年就出现的XorDDos样本的变种,晚上没玩LOL,把样本详细分析一下,写了这篇报告,欢迎学习交流,顺便赚点奶粉钱,呵呵。
二、样本简介
XorDDos类型样本主要特点,用暴力猜解目标机器ssh弱密码的方式,入侵目标机器,然后执行相应的shell脚本,安装病毒到目标机器,将目标机器变为DDos肉鸡,然后病毒利用多线程发起DDOS攻击。
被安装的病毒会通过fork结束掉父进程,删除自身,并拷贝自身到各个系统目录下执行创建多个守护进程,样本在拷贝的过程中运用了简单的“多态”处理方式,随机生成相应的文件名,随机md5变换等。
拷贝完成之后加载自启动服务,根据获取到操系统内核版本信息安装rootkit,p实现隐藏网络端口,文件等,最后通过多种方式发起DDos攻击。
三、详细分析
首先查看文件类型,如下:
从图中我们可以得知,文件是linux32位可执行程序,通过ida反编译程序,main函数如下:
病毒首先设置相应环境变量,从上面的代码中我们可以看到里面有一个dec_conf函娄,用于解密字符串,得到相应的文件路径,下载地址等信息,解密函数如下:
查看ida里的xorkeys,我们得到了它的加解密key为:BB2FA36AAA9541F0,我们来用edb动态调试一下看看,打开edb加载样本,跟踪到main函数,如图所示:
然后单步调试,解密相应的字符串,得到如下图所示的路径信息:
将main函数中前面的字符串一个一个解密完成之后,得到如下的解密字符串列表:
v27 = /usr/binv26 = /bin/v25 = /tmp/v23 =/var/run/gcc.pidv22 =/lib/libudev.sov21 = /lib/v20 = http://www1.gggtata456.com/dd.rarv24 = /var/run/
通过edb动态调试,我们将下面的一些字符串全部解密完成,如图所示:
病毒通过解密daemonname中的字符串,得到如下命令行列表,并执行相应的命令:
cat reslov.confshbashsups -eflsls -lanetstat -annetstat -antopgrep "A"sleep 1cd /etcecho"find"ifconfig eth0ifconfigroute -ngnome-terminalidwhowhoamipwduptime
然后病毒创建子进程,结束到父进程,如图所示:
复制自身到相应的目录,然后执行创建多个守护进程,并删除到自身,如图所示:
通过edb动态调试如下,在生成文件的时候使用随机文件名,病毒将自身拷贝到相应的目录下,如图所示:
拷贝完成如图所示:
病毒会把自身复制到如下目录列表中:
/usr/bin/,/lib/libudev.so,/bin/,/lib/,/tmp/
复制完成之后,它会把文件的做一点小的修改,使每个复制之后的md5值都不相同,实现简单的多态变型,代码如下:
加载设置自启动服务项,如图所示:
生成/etc/init.d/tmoogsb,文件内容如下:
修改/etc/cron.hourly/gcc.sh文件,将下面的脚本信息写入gcc.sh文件中,如图:
同时将/etc/init.d/tmoogsb文件拷贝生成到相应的目录下,实现多进程守护自启动,通过edb调试如下:
最后生成的文件列表如下:
/etc/rc1.d/S90tmoogsb/etc/rc2.d/S90tmoogsb/etc/rc3.d/S90tmoogsb/etc/rc4.d/S90tmoogsb/etc/rc5.d/S90tmoogsb/etc/rc.d/rc1.d/S90tmoogsb/etc/rc.d/rc2.d/S90tmoogsb/etc/rc.d/rc3.d/S90tmoogsb/etc/rc.d/rc4.d/S90tmoogsb/etc/rc.d/rc4.d/S90tmoogsb
增加系统服务:chkconfig –add tmoogsb,修改/etc/crontab,修改后的crontab内容如下:
病毒通过解密算法,解密远程服务器地址列表,通过edb动态调试如下所示:
解密完成之后的远程服务器列表如下:
aaa.gggatat456.comaaa.xxxatat456.com:6000bbb.gggatat456.com:22bbb.xxxatat456.com:22bbb.gggatat456.com:443bbb.xxxatat456.com:443
然后通过/proc/meminfo,/proc/cpuinfo将感染后的机器相应信息发送到远程服务器上,如图所示:
并能过rootkit隐藏相应的网络端口号,如图所示:
病毒安装rootkit之前会先收集感染机器的内核版本信息等,如图所示:
然后能过判断/proc/rs_dev是否可读,来判断LVM rootkit安装成功与否,如果存在LVM,则调过ioctl命令,执行相应的rootkit功能,隐藏进程端口,文件等功能,病毒通过http://www1.gggatat456.com/dd.rar配置信息网站,然后利用HTTP请求,下载配置文件信息,如图所示:
下载之后的配置文件,通过前面的解密函数进行解密,并对不同的信息,进行不同的操作,不同的配置信息包括:denyip,filename,rmfile,killpid等,执行如下所示的操作:
病毒会执行相应的下载,更新,发送信息,结束进程,并通过多线程发起ddos攻击,如图所示:
执行ddos攻击的代码add_task,如下所示:
通过网络抓包的方式,利用wireshark抓包,如图所示:
通过分析,它发起的ddos攻击的地址列表如下:
112.74.54.14061.153.110.3260.205.14.1219.135.226.97112.74.169.39114.113.198.158139.196.250.103
对于ip地址和域名信息的情报分析工作,我就不作了,大家有兴趣可以去分析一下,也就是google大法了!
样本基本就分析完毕了,此样本的主要作用是能过受感染的机器进行ddos攻击,再远程能过配置文件进行控制,执行相应的攻击,远程更新,下载,上传,执行相应的命令等。
四、清除样本
通过前面的分析,我们可以很容易清除相应的样本,同时我们可以发现,里面有一个DelService函数,如下图所示:
可以按上面的方法,清除相应的自启动服务项:
/etc/init.d/tmoogsb/etc/cron.hourly/gcc.sh/etc/rc1.d/S90tmoogsb/etc/rc2.d/S90tmoogsb/etc/rc3.d/S90tmoogsb/etc/rc4.d/S90tmoogsb/etc/rc5.d/S90tmoogsb/etc/rc.d/rc1.d/S90tmoogsb/etc/rc.d/rc2.d/S90tmoogsb/etc/rc.d/rc3.d/S90tmoogsb/etc/rc.d/rc4.d/S90tmoogsb/etc/rc.d/rc4.d/S90tmoogsbchkconfig –del tmoogsbupdate-rc.d tmoogsb remove
然后我们再去清除病毒拷贝到相应目录的文件就可以了,同时病毒存在rootkit技术,我们可以使用rkhunter,chkrootkit这两个工具去系统进行扫描,清除相应的rootkit模块就可以了,使用rkhunter如图所示:
大家可以自行去研究,相应的下载地址点击阅读原文。
五、总结
主体样本基本分析完了,下面就开始“扯蛋”了,送给想加入这行,跟我一起苦逼的人吧,前方高能,大牛绕道,都是小弟的一点愚见!
从事搬砖(逆向分析)这行也有好多年了,期间分析各种不同类型的样本。
从最开始的window时代的鬼影第三代到第六代,蠕虫病毒,输入法,感染型,灰鸽子远程,熊猫烧香,游戏盗号,QQ盗号等样本,到后面Android时代的各种截持短信,流氓推广,弹广告,刷流量,刷ROM,以及后面手机端蠕虫,敲诈者,百脑虫,FakeDebugger,GhostPush,ios/mac上WireLurker,XcodeGhost,YiSpecter,ZergHelper,BackStab,KeyRaider,TinyV的等样本,以及现在linux上的一些恶意样本等。
做为一名从业人员,有些是公司要求分析的,有些是自己觉得好玩下载分析的,我简单说说一些学习技巧与方法,需要的知识点,以及分析的大致流程。
(1)拿到一个样本,不管是什么,先弄清它是什么文件格式,这里就要求你要对不同的文件格式有所了解了:window(PE),linux(ELF),android(dex,ELF),ios/mac(mach-o)
(2)然后看样本有没有壳或加密,如果有壳就脱壳,有加密就看能不能解密
(3)脱完壳,解完密,后面就是动 静态分析了
动态调试:window(od,windbg),linux(gdb,edb),android(jeb,ida),ios/mac(lldb)
静态调试: ida,010Editor,readelf,objdump,string等
(4)网络抓包工具
wireshark,tcpdump,Charles,BrupSuite
(5)当分析一个样本,有可能程序很大,我们要有快速定位问题的能力,针对不同的样本,要分析不同的功能点,真正工作过程中分析一个样本,是需要一个快速响应,解决问题的能力的,同时在最快的时间内输出相应的分析报告,这个就要靠平时多锻炼了,有一种“阅片无数”的感觉
(6)分析系统级的样本的时候,我们还需要对相应的系统有一个大致的了解,了解相应系统的启动过程,每种系统的自启动方式以及注入方式都不同,我们要对这些不同的系统都比较了解。
(7)有了上面的一些基础,就是多实战了,可以从各个渠道下载不同类型的样本进行练习,积累经验。
从事这行需要的一些知识点,我也简单的列一下吧,师傅带进门,修行靠个人了:
(1)熟悉C/C /Java/Python等语言,会一些简单的编程
(2)熟悉PE,ELF,Mach-O文件格式
(3)熟悉各个平台下的动态调试技术,以及ida的使用方法
(4)了解各平台下的系统原理,知道它是如何加载一个程序的,自启动服务项,底层加载过程等
(5)熟悉主流的一些黑客技术,攻击方式,各平台注入,hook等手段,以及工具的使用方法
(6)熟悉tcp/ip网络协议,会使用各种抓包工具,分析数据包内容
(7)简单的英语能力,至少会看的懂相应的英文文档
(8)“访问外国网站”能力,这个不用多说了,去买个V**吧
(9)学会使用google,gmail等工具,加入一些gmail组邮件,会不定期发送一些样本,同时关注一些恶意样本下载网站,也会定期更新,如contagiodump.blogspot.com等,自行google吧……
(10)到github上去fork一些好的关于安全的主页,想做安全这行,还是得多用心去关注这个行业的吧,如:
https://github.com/rshipp/awesome-malware-analysis
https://github.com/secmobi/wiki.secmobi.com
其它的自行github吧……
好吧,需要的基本知识也就这些了,这条路很苦逼,只能带你入门,修行还是靠个人,很多时候大牛们都很忙,根本没时间教你,还是靠自己多努力吧,其实大牛们也是这么过来的,也没人手把手教他们,所以相互理解吧。
我一般也不敢打扰那些大牛,都是自己去摸索,实在不行了,就问一下大牛们,不过最后还是得靠自己解决,随着网络安全的发展,我们需要去了解和学习新的网络安全技术,路还很长,且行且珍惜吧!
网络安全发展到现在已经被云安全,IOT安全,移动安全等占据了主要位置,不管是云安全,还是智能移动安全,还是IOT安全,Malware恶胁总是无处不在。
前段时间通过IoT和云服务器发起的大规模的DDos攻击,安全在未来不能去说有多么多么重要,但是安全总会一直在那存在着,因为有利益的地方,也就有“江湖”!
看了一下,网上也有一些关于这个样本的其它不同变种的分析报告,我按我的分析流程和思路,写的报告,绝对原创,这里把相关的链接也贴下,免得有些人又会说这个那个的,诶,不解释了,圈里大,唯有独善其身,大家也可以参考一下:
http://www.myhack58.com/Article/48/66/2015/59519_4.htm
https://blog.avast.com/2015/01/06/linux-ddos-trojan-hiding-itself-with-an-embedded-rootkit/
http://www.liuhaihua.cn/archives/110384.html
http://www.aptno1.com/YC/102.html
rkhunter及chkrootkit下载:点击阅读原文
*本文原创作者:熊猫正正 ,本文属FreeBuf原创奖励计划,未经许可禁止转载