首页
论坛
课程
招聘
[原创]动态静态逐步分析熊猫烧香
2021-6-16 20:52 4579

[原创]动态静态逐步分析熊猫烧香

2021-6-16 20:52
4579

动态静态分析熊猫烧香

    最近看了蛮多篇关于熊猫烧香分析的文章,第一次尝试将病毒完整分析纪录下来,目前水平和经验有限,没法直接抓到重点分析,全篇都是一个个call逐步分析将病毒分析了个大概,旨在提升自己分析技术,很多内容步骤可能不太准确,如果有错误恳请各位大佬不吝赐教,篇幅过长,思路不够清晰!


    首先放到VirSCAN查询基本信息,查壳,编写语言为Delphi,默认调用约定为register,特点为传参会将参数依次放入寄存器

一.先尝试手动查杀病毒

1.  排查可疑进程

打开程序后查看进程发现多了一个spcolsv.exe,将可以进程强制结束

2.检查启动项msconfig

发现进程创建了一个spcolsv,在注册表打开其位置目录对其删除

3.删除病毒

根据注册表的路径检查到病毒所在目录对其进行删除,并且发现根目录下有病毒复制的隐藏文件,和病毒常用的自启动文件,将其删除

二.进一步行为分析

进行行为分析发现panda.exe创建了spcolsv.exe,之后打开了两次cmd执行了删除了c盘的共享和根目录的共享

监控Spoclsv.exe的行为,将常用杀毒软件的自启动项都删除

创建svcshare自启动项,通过设置hidden文件夹下的键值可以实现文件隐藏,并且不能通过普通的设置进行显示

频繁在各种目录下创建Desktop_.ini

并且不断在局域网中尝试连接

三.逆向分析调试

 在OD中打开,看到第一个call4049E8跟进去看看功能,发现是调用GetModuleHandle函数,用来获取句柄,百度后发现前面这段为Delphi编译器默认生成的

 跳过开始部分,分析第三个call,发现是传递字符串,进入分析,根据所调用的api推断为初始化互斥空间和分配空间再进行字符串的拷贝

 接着往下分析,看到两个相同的代码段

 跟进其中第一个call发现该功能为解密字符串,第二个call为自校验,如果校验失败则结束本进程

 遇到三个连续的主要call,跟进第一个4082F8,根据api判断,第一个功能为获取当前进程的完整路径

 进入第二个call通过结合ida分析循环处,推测其功能实现为通过循环获取进程路径不包含当前文件名

 第三个call传入的参数为Desktop_.ini,步过发现连接在原来的路径名后面,可知这个call的功能为连接字符

 进入第四个call,跟进405730查看,通过api推测功能为检测Desktop_.ini文件是否存在

 后续结合IDA发现大都是已经分析过的call,80h为文件的正常属性,借此推测功能为验证Desktop_.ini存不存在,如果不存在则跳过,如果存在则改变Desktop_.ini的属性,再删除文件

 接下去分析下一个call 407760,步过发现被写入了一大串字符串,推测可能为通过写入字典进行暴力破解验证机制,可作为获取病毒的行为信息

 继续分析下一个call发现无实际意义,仅用来设计标志位

 进入下一个call,功能为获取PE文件长度,因为用Delphi编写的,数据的前四位则为数据大小

 接着发现下一个call功能为将字符转换成大写,再接着调用GetSystemDir获取系统路径

 接下来将System32 driver spclosv压栈,根据数据窗口变化,功能为路径字符串拼接,

 查看IDA,在执行完字符串改大写操作后进入cmp函数查看

 通过对比EAX和EDX实现跳转,对比自身进程是不是spoclsv

 接下去遇到两个相同的call

 查看其功能,根据api和push的参数可知,作用是查找spoclsv进程,如果有则将其结束掉,接下来的代码在IDA里可以直接看出其流程

 获取系统路径,将drivers,spcolsv.exe压栈,连接字符,构造路径,然后利用CopyFileA 将自身复制写入system32/drivers目录下然后通过WinExec将此程序运行再ExitProcess将自身进程结束,运行到此病毒主体程序就退出了,但是依然可以通过上面验证本程序程序名的call修改标志位,从而继续运行程序,即可继续分析程序

 实现跳转后根据之前分析,第一个call功能为获取文件长度

 第二个call传参为字符长度和操作的地址,用来删除字符的信息

 接着进行一个无条件跳转之后,eax里保存了一个01,用来标记文件是否为已被感染的文件

 平栈以后则进入第二个主要call

 进入第一个call中,功能为CreateThread创建线程40a6c8

 下断点进入40a6c8,再进入第一个call分析功能,循环调用GetDriveTypeA用来遍历盘符并且和:\连接

 接下来的函数基本都被分析过,大致功能为,将遍历出来的路径储存,并且加上:\


 接下来进入4094a4进行分析,大致功能为在路径盘符\后连接*.*,构造路径

 进入下一个call 407640发现api FindFirstFileA寻找任意文件

 查看下一个call,进入后发现根据查找到的文件循环查找’ .’而获取其文件后缀

 接下来的功能为拓展名和GHO作比较,如果有的话则将此文件删除

 构造路径

 接下来的一连串call都已经分析过了,大致思路为对比是否为setup.exe或者NTDETECT.COM,如果成立则跳转去寻找下一文件

 接下去分析,查看传入的参数,exe然后调用cmp,对比文件后缀

 传入的参数scr,pif,com,htm,html,asp,php,jsp,aspx然后调用cmp,对比文件后缀,然后进行文件感染

 返回分析第二个call,是一个计时器,每隔6秒就执行40c0b8

 进入40c0b8分析功能,大致为在磁盘里寻找setup.exe文件与autorun.inf文件,如果有则进行删除再将正在运行的病毒复制成setup.exe,如果没有则跳转复制,接着判断autorun.inf是否存在,如果没有则创建,接着将属性设置为隐藏

 现在进入第三个call查看,在获取时间后,进入403c00

 创建线程,并且根据传进来的参数0a循环10次

 进入创建的线程内

 运行至回调函数分析,根据调用的api,发现其通过139,445端口传播,和其他主机建立连接

 进入最后一个主要call,创建了四个计时器

 进入第一个计时器,跟进其第一个call,创建了一个线程,再进入其线程分析,根据参数和api推测大致功能为关闭各种杀毒软件

  接着是模拟一些键盘敲击

 然后关闭一些应用程序,例如任务管理器

 到第二个计时器中分析, 试图从网站读取到网页源代码并且运行代码

 进入第三个计时器,功能为命令删除共享文件

 进入第四个计时器,发现功能为删除一些杀毒软件的启动项

 到此动态静态分析就结束了

四.总结主要行为

    1.自我复制,添加注册表自启动项
    2.释放文件,设置隐藏属性
    3.删除GHO文件
    4.结束安全软件进程,删除安全软件服务和启动项
    5.访问指定网址,下载病毒文件
    6.感染PE文件

    7.创建线程感染文件



第五届安全开发者峰会(SDC 2021)议题征集正式开启!

最后于 2021-6-16 21:15 被wx_dopeusa91编辑 ,原因:
上传的附件:
收藏
点赞2
打赏
分享
最新回复 (3)
雪    币: 386
活跃值: 活跃值 (287)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wx_dopeusa91 活跃值 2021-6-16 21:06
2
0
噢我这糟糕的排版
雪    币: 1476
活跃值: 活跃值 (237)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
半个大西瓜 活跃值 2021-6-16 21:07
3
0
这奇怪的排版
雪    币: 386
活跃值: 活跃值 (287)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
wx_dopeusa91 活跃值 2021-6-16 21:13
4
0
半个大西瓜 这奇怪的排版
改好了
游客
登录 | 注册 方可回帖
返回