demon病毒样本分析

1. 简介

该样本是前几周爆发的THINKPHP漏洞中,被批量上传的一个病毒样本。如图所示。

2. 分析

该样本未经混淆,加壳,所以直接拖到IDA中即可分析。
首先从main函数开始。做一些初始化的函数,然后fork进程,父进程退出,子进程继续执行,推测是为了更好的迷惑。

如图
1.png

然后设置sid,更改病毒运行目录为根目录,设置信号。主要是忽略SIGPIPE信号,防止进程出错。参考 https://blog.csdn.net/qq_34888036/article/details/81014529

2.png

随后调用initConnection函数去尝试连接服务器。如果连接成功的话,继续往下执行代码,如果不成功的话,则进程sleep 5秒,然后继续。如图


3.png

在initConnection中,mainCommSock是已经建立成功的socket描述符,因为这个函数在运行期间可能会调用多次,所以如果已经成功建立好socket连接的话,则直接返回就行,否则尝试重新连接一次远控服务器。该函数主要作用是尝试168.235.82.199:69建立tcp连接。并检测是否可以连接。socket宏定义这块,参考https://blog.csdn.net/liuxingen/article/details/44995467

4.png

回到main函数中,然后开始获取诸如linux发行版名称,系统位数等信息,发送给远控服务器。如图


5.png

getOS和getPortz函数都比较简单,读取相应的文件,然后判断一下文件内容。如图


6.png

7.png

然后跳转到loc_40392E处,接收服务器的指令。如果接收成功,没有出错,则跳转到loc_4034E8去处理指令。否则跳转回initConnection重新执行一遍。


8.png

loc_403618处,首先调用listfork,fork一遍子进程用于处理请求,然后将结果trim一下。判断一下受不是以0x21开头,如果不是的话,则继续从远控服务器接收指令。如果是的话,则开始处理消息体


9.png

随后各种乱七八糟的跳转,跳转到processcmd中。这个函数主要用来解析远控服务器发来的指令。处理完指令后,继续等待服务器的指令,然后重新执行一遍上面的流程。

将服务器的结果解析成命令和参数,随后调用processcmd去处理。

10.png

processcmd比较长,这里阉割了很多功能,具体可以看下面的附录。该样本中只有tcp dos, udp dos,astd。tcp dos根据解析出来的参数,想起发出dos攻击。如图


11.png

udp dos攻击的代码


12.png

最奇怪的是astd攻击,根据ip和port,建立udp 连接,向其发送一段hex编码的数据,很奇怪。如图


13.png

3. 清除

很容易清除,杀掉进程就行,没有篡改系统文件。这个应该是专门针对于嵌入式设备的病毒,为了兼容性考虑。所以没有大量的混淆和加壳。

4. 相关

样本地址 http://168.235.82.199/GaXZMIng 目前已经被删除
相关样本代码,对的,这个也是基于一套开源的QBOT改出来的
https://github.com/CanadianJeff/QBOT-ART-OF-WAR/blob/master/client.c
https://pastebin.com/aV9Uw4jD

推荐阅读更多精彩内容

  • 计算机系统漫游 代码从文本到可执行文件的过程(c语言示例):预处理阶段,处理 #inlcude , #defin...
    willdimagine阅读 2,477评论 0 5
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 9,965评论 1 29
  • 第一章 引言和网络编程基础知识 1.1 分别简述OSI参考模型和TCP/IP模型,并阐述他们之间的对应关系 1.2...
    V0W阅读 3,311评论 0 5
  • 节庆的音乐在 流转 长空中 明灭的烈焰在绽放 杯盘交错 尽数悲欢变迁 花花绿绿 点缀着闪烁的空间 人人都知道 今夜...
    陈谦swan阅读 144评论 0 0
  • 文字有着一种非常神奇的力量,将数个不同的字、词、句子、段落组合在一起,就可以表达出一个深邃的思想、讲出一个生动的故...
    疯玩阅读 62评论 2 1
  • 今天带着一个问题和大家聊聊西游记孙悟空师兄弟收徒的故事:如何理解“人之患,在好为人师?” 西游记中用了三回(第88...
    王建设自媒体阅读 1,486评论 0 0