那一日,人们又回忆起被胖达支配的恐惧。。。。
那年,机房风扇呼呼的吹,小狮子的呼噜呼呼的打,胖达揣着三根香占满了电脑。。。
时过数十载,重现当年经典,今日带来胖达分析四部曲。病毒分析初尝试,如有不足,望各位大佬指点
“熊猫烧香”是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,他不但能感染系统中exe,com,pif,src,html,asp等文件,他还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件。该文件一般是系统备份工具GHOST的备份文件,使用户的系统备份文件丢失。被感染的用户系统中所有.exe可执行文件全部被改成熊猫烧香的模样。
来自百度百科:熊猫烧香病毒对系统中所有除了盘符为A,B的磁盘类型为DRIVE_REMOTE,DRIVE_FIXED的磁盘进行文件遍历感染
注:不感染文件大小超过10MB以上的
2.待病毒执行之后,观察可疑情况
使用PCHunter工具查看进程,定位到进程文件,再结束病毒进程
可疑进程判断依据:图标、文件名、文件路径
找到病毒所在位置,将其样本保存,再删除目录下的病毒程序(需结束病毒进程后删除)
注:在病毒运行后,需观察病毒情况
首先查看可疑进程,进程部分上文已经写出
再查看启动项(注册表,计划任务等)
注册表启动项有可疑进程
查看驱动,服务等可疑项
未发现异常
查看其他杂项,网络连接
有可疑进程的网络连接,主要端口号:80、443、139
使用抓包工具(WSExplorer)查看可疑流量
有加密的流量传输
将路径下文件提取到本地,并修改扩展名为vir
C:\Windows\System32\drivers\spo0lsv.exe 改为
C:\Windows\System32\drivers\spo0lsv.vir
文件: C:\Windows\System32\drivers\spo0lsv.vir
大小: 30001 bytes
修改时间: 2018年7月14日, 8:40:21
MD5: 512301C535C88255C9A252FDF70B7A03
SHA1: CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32: E334747C
①结束可疑进程 spo0lsv.exe
②删除可疑进程启动项
③程序安装目录下被感染的exe变成了熊猫烧香图标,手工无法清除,当运行被感染程序时,病毒再次复活。可以发现,手工无法清除此病毒,想要清除需要进一步分析。
分析监控到的日志,主要观察的点:
①文件操作,主要看文件创建、修改、删除等操作
②注册表操作,主要看注册表设置、创建等操作
③进程操作,主要看创建进程、写入内存等操作
④网络操作,主要看网络连接地址、IP等信息
⑤其他行为,以及观察病毒样本运行后的反应
分析样本的行为,尽可能发现恶意行为。
开启火绒剑监控样本运行
①观察文件操作,主要观察文件的写入操作,这里保险起见勾选文件被修改和写入文件两个选项
②观察注册表操作,主要观察设置注册表的操作,这里勾选设置注册表项值
病毒程序自己建了一个注册表项,设置了一些信息
Internet Setting看起来应该是跟网络设置相关
其他的大多都是一些设置启动项和隐藏的一些操作
③观察进程操作
因为进程现在还不太好判断,所以进程相关的所有操作都先看一下
枚举进程可能是为了查找是否存在杀毒软件
④观察网络操作,这里能监控的数据不多,有可能会有遗漏
具体操作可以使用抓包工具(WSExplorer)进一步观察
⑤观察其他行为
行为监控属于火绒剑这个工具特色的一种功能,这里将常见的一些恶意代码行为进行了总结
执行监控可以观察病毒程序执行了哪些进程,加载了哪些模块的操作,这里还创建了CMD,执行了一些命令
查看动作信息->进程
分析情况总结:
分析监控的日志以及自行观察操作之后,可以分析出样本的恶意行为:
1.自我复制样本到C盘:C:\Windows\System32\drivers\目录下,启动C:\Windows\System32\drivers\spo0lsv.exe(即病毒程序)
2.在每一个目录下创建Desktop_.ini,里面存放的是当前日期
3.在C盘根目录下创建了autorun.inf文件,其中指定了自动启动的文件为根目录下的setup.exe(即病毒程序)
4.对程序目录下的exe进行了感染,图标变为熊猫烧香,打开exe时,自动打开病毒
5.枚举进程、查找窗口、打开设备
6.设置注册表启动项为C:\Windows\System32\drivers\spo0lsv.exe
7.自己创建了一个注册表的项,在其中写入了很多信息HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\spo0lsv_RASAPI32
8.设置注册表键值,隐藏文件不显示HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL中的CheckedValue值
9.修改注册表的项IE浏览器的代理和连接设置
10.使用CMD命令关闭网络共享
11.连接局域网的一些地址,访问一些门户网站
通过行为分析之后,可以知道恶意代码的一些恶意行为,想要获取更加详细的行为需要使用IDA或是OD分析样本。
使用Exeinfo PE 查壳,发现是FSG2.0的壳
因为FSG是压缩壳,所以脱壳最应该尝试的是ESP定律,其次就是单步跟踪。
使用OD载入病毒程序,发现入口没有pushad/pushfd指令,单步观察堆栈变化。
程序一开始并没有保存环境,遇到这种情况继续单步跟踪,发现有解密代码的地方
继续单步跟踪,不进入CALL,线性分析代码。很快找到了修复IAT的地方。继续跟踪
找到跳出循环修复IAT的地方,到达跳转到原始OEP的地方。
在原始OEP处DUMP文件,再使用ImprotREC修复IAT即可。
使用ImportREC修复IAT时发现不能完整识别所有的导入函数。
观察IAT,发现两个模块的函数之间被填充成了7FFFFFFFF。
将7FFFFFFF都改为0,再使用ImportREC重新获取。
这次成功获取,然后修复转存的文件即可。
使用dump修复后的文件用IDA打开进行分析,添加签名便于分析
搜索Delphi,找到Delphi6-7的特征库,应用可以识别出很多库函数
使用F5将其转换为伪代码,简单分析OEP处代码
OEP处代码
OEP代码分析过程:
根据伪代码所示,可以发现OEP处的代码一开始都是一些初始化变量的操作;
之后使用了一些库函数进行连接、赋值的一些操作;
调用的第一个函数为sub_405250,其参数有字符串“xboy",之后另一次调用中,参数有字符串“whboy”,在调用sub_405250之后,有LStrCmp字符串比较函数的调用,之后又有判断返回值的代码,可以猜测函数sub_405250应该是解密字符串函数。
在OD中动态调试病毒程序,验证猜测
观察数据窗口,内存窗口以及寄存器的变化,可以确认sub_405250就是解密字符串函数,故将sub_405250更改为解密字符串函数DecodeString。
剩下的sub_40819C、sub_40D18C、sub_40D088三个函数应该是执行恶意代码的函数,在代码的末尾处可以看到有一个消息循环,猜测应该是等待恶意代码执行完毕,函数才会退出。
所以OEP处函数可以分为五部分:
sub_40819C函数分析
首先如我们之前分析的一样,在每一个目录下创建Desktop_.ini文件
进行判断,是否进入判断语句
之后再对运行程序与生成路径比较,不一致则进入判断中,一致则继续向下
sub_4053AC函数功能为GetSystemDirectory,即获取Windows系统目录(System目录)的完整路径名。
故将sub_4053AC函数更名为GetSystemDirectory。
sub_405FC4函数功能在IDA中不太好判断,所以需使用OD动态调试分析
在OD中搜索405FC4函数,来到函数入口处,在入口处下断点,将病毒程序运行至此,此时可以观察到EAX中保存的是病毒程序的名称
进行栈回溯,找到调用位置
在下一行代码处下断点,观察其返回值,其返回值为1,但是这里是字节里的1;
判断此处功能应该是结束程序名为"spo0lsv.exe"的程序
验证猜想
将任一程序名更改为"spo0lsv.exe",将其运行
然后设置CALL的上一行代码为新EIP,再次F9运行
可以观察到被我们修改为"spo0lsv.exe"的程序被结束了
故将sub_405FC4函数更名为KillVirusProcess。
继续向下分析伪代码
sub_407B68函数内为写入bat批处理文件的操作以及启动未被感染的程序,故将名称变更为WriteBatFile。
继续分析,判断当前是否为源病毒程序,如果是则进入判断语句,不是则结束进程
sub_40819C函数汇总:
快速定位感染exe的函数
使用OD动态调试样本,在CreateProcessA处下断点
进行栈回溯,找到关键跳转,使病毒程序不复制自身,不创建副本进程
跳转后对kernel32.CreateFileA下断点
F9运行程序,程序在CreateFileA断下,不断F9,直至运行至感染exe程序时
此时进行栈回溯,寻找感染关键代码,最终找到函数00407F00函数为病毒程序感染的关键函数,发现感染的类型有exe,scr,pif等。
在IDA中继续分析407F00函数
sub_40D18C函数分析
这个函数中有三个函数,分别功能:
1.Createini函数创建线程,遍历目录创建Desktop.ini
2.Create_exe_inf函数设置了一个定时器,检查C盘中setup.exe和autorun.inf文件是否存在,若不存在则创建
3.Create_network函数创建线程,进行网络连接
Create_ini函数
进入sub_40A48C函数,可以看到在循环执行sub409348函数,根据之前的判断,这里应该是在创建Desktop.ini文件
进入sub409348函数可以发现Desktop.ini字符串,因为我们之前已经分析过Desktop_.ini文件中存放的是本地时间,此函数中也有获取本地时间的行为,推测此处为代码执行的地方
Create_exe_inf函数
进入TimerFunc函数,实际功能就是检查C盘中setup.exe和autorun.inf文件是否存在,若不存在则创建
Create_network函数
进入sub_40BA8C函数,再进入sub_40B864函数发现是与网络连接相关的一些函数
sub_40D18C函数汇总:
sub_40D088函数分析
这个函数中调用了6个定时器:
1.定时器1,sub_40CEE4,添加启动项、修改注册表
2.定时器2,sub_40D040,下载恶意代码
3.定时器3,sub_40D048,下载恶意代码、执行cmd命令
4.定时器4,sub_407430,删除杀毒软件启动项、关闭杀软服务
5.定时器5,sub_40CC4C,打开解密之后的网页
6.定时器6,sub_40C728,下载恶意代码
进入sub_40CEE4函数,发现是添加启动项、修改注册表的操作
进入sub_40D040函数,再进入sub_40CC34,再进入sub_40C9B0,这里在访问网站并获取系统目录,应该是从服务器下载恶意代码
进入sub_40D048函数,发现内部有两个函数,函数sub_40CC34与函数sub_40D040功能相同,均为下载恶意代码
函数sub_40CDEC为执行cmd命令,关闭网络共享
进入sub_407430函数,再进入sub_406E44函数,发现都是删除杀毒软件启动项、关闭杀毒软件服务的操作
进入sub_40CC4C函数,打开解密之后的网页
进入sub_40C728函数,再进入sub_40C5E0函数,发现与sub_40D040功能类似,此处函数功能大致也是下载恶意代码
访问http://update.whboy.net/worm.txt下载并且执行病毒
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2022-1-4 16:49
被HLuKT编辑
,原因: