熊猫烧香病毒分析报告

熊猫烧香

基本信息

  • 报告名称:熊猫烧香病毒报告

  • 作者:Pawn

  • 文件名:xiongmao.exe

  • 样本类型:EXE文件

  • 样本文件大小:30,001 字节

  • 样本文件的MD5校验值:512301c535c88255c9a252fdf70b7a03

  • 样本文件SHA1校验值:ca3a1070cff311c0ba40ab60a8fe3266cfefe870

  • 壳信息:FSG 2.0

  • 相关漏洞:弱密码

基础动静态分析

PEiD信息

熊猫烧香病毒分析报告_第1张图片

程序加了壳,壳为FSG 2.0

脱壳

使用OllyDBG插件 OllyDump可以轻松找到OEP为 0040D278,使用ImpREC修复注册表发现只有kernal32.dll,可能是自动修复导入表失败

所以查看脱壳存根构建的IAT

根据FSG2.0壳的特点 搜索JMP DWORD PTR DS:[EBX+0xC] 指令(一般为跳转OEP指令),设置断点,向上寻找LoadLibrary和GetProcAddress函数。

熊猫烧香病毒分析报告_第2张图片

可以看到 导入表 不同库函数之间被填充为了7FFFFFFF,导致自动修复IAT失败。所以将7FFFFFFF填充为00000000。使用OllyDump脱壳修复导出表

导入表函数

使用Dependency walker查看导入表函数

熊猫烧香病毒分析报告_第3张图片

KERNEL32.DLL中导入了关于文件读写的API函数,猜测病毒创建了文件,并写入。

ADVAPI.DLL中导入了关于注册表操作的相关API函数,猜测病毒修改了注册表

WS2_32.DLL和WININET.DLL提供了与网络操作相关的API函数,猜测函数连接外部网络

使用windows xp(service pack3)系统兼容模式启动

发现恶意代码关闭了安全中心服务

熊猫烧香病毒分析报告_第4张图片

运行后发现多了一个进程spo01sv.exe

在C:\Windows\System32\drivers\目录下,创建了spo0lsv.exe

查看spo0lsv的md5值,发现和xiongmao.exe相等,所以推测病毒将xiongmao.exe复制到此目录下

熊猫烧香病毒分析报告_第5张图片

使用regshot工具对比运行前后的注册表变化(详见/熊猫烧香分析报告.asset/运行前后注册表对比.txt)

  • 注册表删除的键

熊猫烧香病毒分析报告_第6张图片

此注册表键代表了windows的安全防护服务,恶意代码关闭了windows的安全防护服务

  • 注册表添加的键

Tracing键是跟踪日志和跟踪文件的路径、文件名和其他设置。

  • 注册表添加的键值

熊猫烧香病毒分析报告_第7张图片

恶意代码设置HKU\S-1-5-21-3607991960-4000027800-3246950079-1000\Software\Microsoft\Windows\CurrentVersion\Run\svcshare键值为"C:\Windows\system32\drivers\spo0lsv.exe" 添加了自启动功能

  • 注册表删除的键值

熊猫烧香病毒分析报告_第8张图片

可以看到spo0lsv.exe尝试删除了很多自启动项,通过检索这些名称,推测为恶意代码会删除和杀毒软件相关得自启动项

Internet Settings应该是浏览器的一些信息

文件操作

  • 恶意代码创建了大量的desktop_.ini文件,里面存储了时间信息

  • 恶意代码打开了大量的exe文件,结合观察到的一些文件图标变为“熊猫烧香”的图标,推测为恶意代码便利文件目录并将exe等文件图标改为“熊猫烧香”的图标

  • 恶意代码打开了cmd.exe,可能执行了一些命令

网络操作

熊猫烧香病毒分析报告_第9张图片

查看网络操作可以看到,因为本机的ip地址为192.168.40.129所以可以看到恶意代码尝试连接局域网的其他主机。

进程和线程信息

只看到恶意代码创建了一些线程,没有特别有用的信息

其他

尝试打开任务管理器和注册表闪退,推测恶意代码阻止用户打开windows自带的工具

总结

  • 恶意代码首先将自身复制到系统C:\Windows\System32\drivers\目录下,并设置了自启动注册表键值

  • 恶意代码关闭了安全防护的服务

  • 恶意代码将杀毒软件的开机启动键值删除

  • 恶意代码阻止用户打开任务管理器和注册表等

  • 恶意代码连接局域网

  • 恶意代码遍历文件系统,将一些文件的图标改为“熊猫烧香”图标,如exe文件,每个目录下创建desktop_.ini文件,记录时间信息

  • 恶意代码创建了关于自身运行的相关注册表键

详细分析

静态分析设置和技巧

首先脱壳后发现恶意代码是使用Delphi 6.0-7.0编写的恶意代码,Delphi使用fastcall调用约定,但是与Windows的fastcall略有不同,参数顺序为eax为第一个参数、edx为第二个参数、ecx为第三个参数,大于3个的参数通过堆栈传递,大于三个的堆栈顺序从左到右依次压栈,堆栈由被调用者恢复。我们使用IDR和IDA PRO对此恶意代码进行反汇编分析。

对ida进行一些设置:

  • Options–>Compiler:Compiler(Delphi)、Calling convention(FastCall)

  • View–>Open Subviews–>Signatures–>Apply new Signatures:选择delphi相关Signatures

恶意代码初始化

程序开始OEP调用了InitExe和LStrAsg函数,应为一些初始化函数。

熊猫烧香病毒分析报告_第10张图片

解码

函数有三个参数并将40D8A0处的数据,xboy,第一个局部变量。

进入00405250分析

结合Ollydbg和IDA分析,此函数为解密函数,将“xboy”和“'"++戊+缓"叛聋+肛+删"蚊苜+兆++*'”以某种顺序取字符异或,解密

熊猫烧香病毒分析报告_第11张图片

熊猫烧香病毒分析报告_第12张图片

解密后的字符串与*武*汉*男*生*感*染*下*载*者* 对比,相同则跳转,不同则退出。然后继续解密,对比,相同则跳转,不同则退出

熊猫烧香病毒分析报告_第13张图片

综合查看start中所有流程,图中的三个call应该为病毒的主功能调用。我们先进入sub_40819C分析

熊猫烧香病毒分析报告_第14张图片

主体功能函数 一

删除Desktop_.ini文件

首先判断通过程序的目录,查看目录下Desktop_.ini文件是否存在。有则执行

存在Desktop_.ini文件,则会更改文件属性为NORMAL,然后删除 Desktop_.ini

熊猫烧香病毒分析报告_第15张图片

判断是否为被感染的程序

这一段代码内容一直没搞明白是什么内容,直到看到下图的的分支,我测试了源程序和C:\Windows\System32\drivers\spo0lsv.exe函数的分支都没有实现跳转,然后我测试了被感染文件的这个判断,发现执行了跳转,然后测试前面的程序的数据流,明白了Writre_PE_Dictionary函数的作用

熊猫烧香病毒分析报告_第16张图片
熊猫烧香病毒分析报告_第17张图片

被感染程序的特征码为类似

其实感染特征码为WhoBoy+源文件名+.exe+2+源文件大小+1

判断是否为C:\Windows\system32\drivers\spo0lsv.exe

将程序绝对地址转换为大写字符,然后与系统根目录路径cat上drivers\spo0lsv.exe(本系统为C:\Windows\System32)对比,然后有两条执行路径。

根据先前的基础分析,我们猜测

如果程序不是drivers\spo0lsv.exe则可能复制文件到此处,再运行;

如果程序是drivers\spo0lsv.exe则可能执行我们基础分析的相关功能;

熊猫烧香病毒分析报告_第18张图片

不是感染文件且不是\spo0lsv.exe程序

首先判断系统是否纯在spo0lsv.exe进程,有则结束掉进程,然后复制spo0lsv.exe到C:\Windows\System32\drivers\目录下并运行。

查看C:\Windows\System32\driver目录下,发现了spo0lsv.exe函数验证猜想

其中@Judge_process_kill程序分析流程如下

将SPO0LSV.EXE与循环取出进程名对比,去除进程名有关的API函数为CreateToolhelp32Snapshot、Process32First、Process32Next等函数

熊猫烧香病毒分析报告_第19张图片

然后改为分析系统目录下的spo0lsv.exe文件跳转到另一个分支,这个分支会和感染程序的分支汇合形成另一个分支

是dirvers\spo0lsv.exe

右边的分支直接清栈返回

熊猫烧香病毒分析报告_第20张图片

是感染文件

感染后的文件由[ 病毒文件+原文件+感染特征值]组成。所以我们分析程序可知程序将原文件复制到一个新文件中,新文件与感染后的文件有相同的属性

之后,病毒在C:\Users\Pawn\AppData\Local\Temp下生成批处理块,格式为“数字+$$“,内容如下

`:try1

del "源程序绝对地址"

if exist "源程序绝对地址" goto try1

ren "源程序绝对地址+后缀名" "源程序名称"

if exist "源程序绝对地址+后缀名" goto try2

"源程序绝对地址"

:try2

del %0`

具体作用为

  • 删除位于 "源程序绝对地址" 的文件。

  • 如果文件被成功删除,执行下一步操作;如果删除失败,跳转到标签 ":try1" 重新执行删除操作。

  • 将 "源程序绝对地址+后缀名" 重命名为 "源程序名称"。

  • 如果重命名成功,执行下一步操作;如果重命名失败,跳转到标签 ":try2" 删除当前脚本文件。

  • 启动 "源程序"。

  • 删除当前脚本文件。

这条分支的作用是如果只是表面杀死病毒没有将所有文件恢复,运行未恢复的文件就会再次感染。

熊猫烧香病毒分析报告_第21张图片

熊猫烧香病毒分析报告_第22张图片

熊猫烧香病毒分析报告_第23张图片

主体功能函数 二

三个call 分被为

  • 创建线程,本地感染

  • 使u盘等移动介质可以传播病毒

  • 连接局域网网络,传播病毒

熊猫烧香病毒分析报告_第24张图片

第一个call,创建线程,本地感染

熊猫烧香病毒分析报告_第25张图片

线程其实地址为 sub_40A48C,将盘符转化为字符串,遍历盘符,排除A和B盘符

熊猫烧香病毒分析报告_第26张图片

遍历所有文件 感染

熊猫烧香病毒分析报告_第27张图片

Infect函数分析

如果为目录文件则判断目录名称,以排除一些名称

排除WINDOWS、WINNT、system32、Documents and Settings 、 System Volume Information 、Recycled 、 Windows NT 、 WindowsUpdate 、Windows Media Player 、 Outlook Express、Internet Explore 、 NetMeeting 、Common Files 、Complus Applications 、Common Files 、 Messenger 、InstallShield Installation Information等目录

熊猫烧香病毒分析报告_第28张图片

判断Desktop_.ini文件是否存在来判断是否感染

熊猫烧香病毒分析报告_第29张图片

不存在则创建Desktop_.ini

熊猫烧香病毒分析报告_第30张图片

Desktop_.ini写入日期

熊猫烧香病毒分析报告_第31张图片

Desktop_.ini存在则更新日期

熊猫烧香病毒分析报告_第32张图片

如果为普通文件,则先判断是不是GHO文件,如果为GHO文件则删除

熊猫烧香病毒分析报告_第33张图片

然后判断是不是setup.exe或者NTDETECT.COM文件,是则跳过

熊猫烧香病毒分析报告_第34张图片

然后判断感染文件类型程序,会判断后缀名是否为EXE、SCR、PIF、COM文件,是的话则执行Infect_file函数感染

熊猫烧香病毒分析报告_第35张图片

进入Infect_file函数

首先判断程序是否在执行,执行中退出,然后判断文件是否为病毒自身,如果为自身退出;然后将原文件和爆破字典写入内存以便感染,然后判断是否已经感染,如果已经感染则退出

否则执行感染过程

熊猫烧香病毒分析报告_第36张图片

首先复制病毒本体,

熊猫烧香病毒分析报告_第37张图片

然后生成感染特征值,连接病毒文件和原文件,再连接感染特征值

熊猫烧香病毒分析报告_第38张图片

判断感染类型,判断是否为htm、html、asp、php、jsp、aspx

熊猫烧香病毒分析报告_第39张图片

是则执行感染函数Infect_Web_File

首先将要写入的内容解码,然后判断是否已经感染。

熊猫烧香病毒分析报告_第40张图片

然后将上文的内容与\n和\r连接写入网页文件

熊猫烧香病毒分析报告_第41张图片

第二个call,使u盘等移动介质可以传播病毒

设置了一个时间为1770h的ms的计时器,然后执行TimerFunc函数

熊猫烧香病毒分析报告_第42张图片
TimeFunc函数

首先也是获得盘符并且跳过A、B盘符

熊猫烧香病毒分析报告_第43张图片

然后判断setup.exe文件是否存在

熊猫烧香病毒分析报告_第44张图片

不存在则创建,并复制病毒本体到setup.exe

熊猫烧香病毒分析报告_第45张图片

存在则判断是否为病毒文件,不是则删除,并创建setup.exe并复制病毒本体

熊猫烧香病毒分析报告_第46张图片

之后判断autorun.inf与setup.exe几乎一致,不过autorun.inf的内容为 [AutoRun]\r\nOPEN=setup.exe\r\nshellexecute=setup.exe\r\nshell\\Auto\\command=setup.exe\r\n

之后就是设置文件属性和退出

熊猫烧香病毒分析报告_第47张图片

第三个call,连接局域网网络,传播病毒

函数创建了10个线程

熊猫烧香病毒分析报告_第48张图片

线程起始地址

熊猫烧香病毒分析报告_第49张图片

动态调试发现 call edx 的edx的值为40BA8C,跳转到 40BA8C查看

熊猫烧香病毒分析报告_第50张图片

查看主函数功能

主功能函数

首先查看网络连接状态

熊猫烧香病毒分析报告_第51张图片

尝试感染端口139和445

熊猫烧香病毒分析报告_第52张图片

连接成功后感染

熊猫烧香病毒分析报告_第53张图片

主体功能函数 三

函数设置了6个定时器

熊猫烧香病毒分析报告_第54张图片

第一个定时器 1s 关闭杀毒软件,注册表添加病毒自启动

sub_406E2C创建了一个线程,会尝试关闭各种作者列举的杀毒软件和windows安全防护,与基础静态分析相符

第一个定时器比较简单,将C:\Windows\System\dirvers\spo0lsv.exe添加到

  • SOFTWARE\Microsoft\Windows\CurrentVersion\run

  • SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folde

即设置自启动和添加到受系统保护的文件

熊猫烧香病毒分析报告_第55张图片

第二个计时器 1200s 下载文件,可能会二次感染其他病毒

创建的线程首先会冒充qq下载http://www/ac86.cn/66/up.txt

熊猫烧香病毒分析报告_第56张图片

猜测将下载的文件解码然后拼接,运行某程序

熊猫烧香病毒分析报告_第57张图片

第三个计时器 10s 关闭所有盘符的网络共享

创建了2个线程,第一个线程与第二个计时器的功能相同

第二个线程为cmd执行命令关闭所有盘符的网络共享

熊猫烧香病毒分析报告_第58张图片

第四个计时器 6s 关闭安全服务,删除一些杀毒软件自启动

第四个计时器关闭了一些服务,删除了一些自启动注册表项,

熊猫烧香病毒分析报告_第59张图片

第五个计时器 10s 解码一些网站,打开?

解码了一些网站,并下载一些内容?

熊猫烧香病毒分析报告_第60张图片

第六个计时器 1800s 下载文件,与二一致

与第二个计时器类似 只不过下载http://update.whboy.net/worm.txt

总结

熊猫烧香病毒分析报告_第61张图片

参考

  • delphi中的一些与字符串处理相关的函数:https://www.cnblogs.com/RbtreeLinux/articles/2353454.html

  • chatgpt

  • https://bbs.kanxue.com/thread-263407.htm#msg_header_h1_3

  • https://www.52pojie.cn/thread-1569939-1-1.html

  • https://blog.csdn.net/shufac/article/details/52071945

你可能感兴趣的:(安全)