一款"骷髅"病毒的分析日常
本帖最后由 x51zqq 于 2017-3-24 16:41 编辑之前分析的一个样本,今天整理了下,发出来与论坛的大神们交流下,样本是网上找的,如有不足之处还望大家指出,共同进步.{:17_1073:}
一.病毒概况
病毒名称:样本.exe
软件图标:
文件大小: 21504 字节 (21.00 KB)
编译时间: 2015-5-23 11:13:42
编译平台: Microsoft Visual C++ 6.0
MD5值:5b8bc92296c2fa60fecc6316ad73f1e2
SHA1值: 44b95162f85b81e71e5f2e7abbc904a6339ce0aa
CRC32:d149f2bf
病毒行为:1.拷贝自身到系统目录 2.添加服务自启动 3.自删除 4.建立指定套接字连接...
二.具体行为分析PEID查壳:UPX
ESP秒脱后:Microsoft Visual C++ 6.0
启动后调用RegOpenKeyEx检测服务是否已经被创建,病毒主程序通过服务自启动执行.
根据检测的结果执行不同的操作
以下是情况一:不存在指定服务 判断是否处于系统目录
随机生成新文件名称
拷贝自身到系统目录
拷贝路径,以自启动方式创建服务
启动服务
添加服务描述
具体分析服务主函数中的病毒行为
实现病毒行为的服务主函数
创建互斥体,确保只运行一个实体
接下来这一层创建了3个线程来执行不同的功能
回调一:保存常见主机登录账号密码,以备后面访问局域网主机
初始化套接字
获取主机名,主机详细信息
拼接局域网主机iP
遍历用户名,密码,ip地址尝试连接局域网内的所以主机连接成功后调用Sub_402AD0函数进行病毒传播
分析线程回调2.3获取系统当前日期,比较是否指定日期
发送数据,接收控制码
sub_4040DA分析: 连接服务器
以下是ConnectServer连接服务器函数的具体分析通过网址获取IP
TCP连接服务器,之后发送信息给服务器,并接收控制码
获取系统信息
将收集到的系统信息发送给服务器
关于控制码,以下做简单分类
接下来看线程4的具体行为:有了前面几个线程的铺垫,线程4显得很干脆,直接连接了服务器,但是对服务器的网址做了加密处理.进入回调后,首先连接服务器
在连网函数中获取加密字符串
调用DecodeURL解密字符串
解密字符表:
解密算法:在解密字符表中查找每个字符的位置,获取该字符在解密表中对应的位置下标,查找到下一个字符位置下标后,(第一个字符下标<<6位)+第二个字符下标,保存相加的和,依次类推.
公式: 1 = 第一个字符对应的下标 2 = 1<<6+2 3 =2<<6+3
最后:用保存下来的值,依次减去200,在异或123就解密成功了
解密后的网址:
控制码分析:
控制码:16 功能:下载并运行程序获取系统临时文件夹路径->生成随机文件名->UrlDownLoadToFile从服务器下载文件->WinExec运行程序
控制码:14 功能:程序升级 UrlDownLoadToFile下载新程序 ->随机命名保存到临时文件夹
删除原服务->运行新程序
控制码:12 功能:打开IE浏览器访问指定网页 (可能是广告)
控制码:6 功能:销毁自身
控制码:3功能:向指定网站发送http请求
至此基本就结束了.{:17_1089:}
下面附上调试服务主函数的方法:简述:ServiceMain主函数的动态调试
样本:
大神,能否请教下,在“拷贝路径,以自启动方式创建服务”这部分的时候,我的IDA分析那几个createservice和startservice函数,都没有标注,只有几个var_*变量,这是什么原因呢?
现在的病毒防不胜防啊 我电脑的QQ管家又被干死了!是不是需要我全盘格 不错,厉害呀 赞, 学习一下哈 哇哦 腻害了! 厉害,希望有更多样本 厉害了—我的冰 分析得挺好。 666,原来病毒这样分析的