5

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

 3 years ago
source link: https://bbs.pediy.com/thread-268106.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
[调试逆向] [病毒木马] [原创]动态静态逐步分析熊猫烧香
2021-6-16 20:52 1676

动态静态分析熊猫烧香

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

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

一.先尝试手动查杀病毒

1.  排查可疑进程

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

3AXWGMQQ485YMA3.jpg

2.检查启动项msconfig

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

921497_5DJC3YTZ3VH87H8.jpg921497_DKKMM2XMYCXKUAZ.jpg

3.删除病毒

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

88BMEGCUNH5CVXZ.jpg921497_RFVYR6Z8WZ3MBCE.jpg

二.进一步行为分析

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

921497_HH4FT93BVV3UBS2.jpg

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

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

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

MP66TGF7DKQ8B5F.jpg

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

NSZHK82MP5QKM74.jpg

三.逆向分析调试

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

921497_T2DDCSYMEDFNT66.jpg

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

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

921497_SNFVPUVCUK3DBZH.jpg

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

921497_9T9Q6RUPDX3NA4H.jpg921497_XCAVNDMUXF5VP37.jpg

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

PGPNNSMDKZ65K6D.jpg

921497_T73Y8EKEMSY3ZXP.jpg

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

921497_BJ96FP68WYQ74SF.jpg

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

VFX5EVWDCQ4TJ3T.jpg

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

921497_8ZNZY629WQ8JEEU.jpg921497_KQ3V4FDG7YNGZJP.jpg

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

921497_FGQV83PKRD4BJWT.jpg

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

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

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

921497_N7JSHZRFABRCR7V.jpg

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

921497_SFD798Z4YKGECQ9.jpg

921497_SYKM76CZNHB9ERS.jpg

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

921497_XNCNQ3DG6UGUBTR.jpg

921497_BHSE8B96E4TKSNA.jpg

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

921497_93NMRR2ZZ5SYWXB.jpg

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

921497_SKCSR3U569VPHYN.jpg

 接下去遇到两个相同的call

TDUTRQ8EDC3EYGN.jpg

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

921497_DEEHN2K2ASXQ7QB.jpg921497_SWXAZG6SSYW6FRF.jpg

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

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

921497_NCMYTD8PN95ZFNA.jpg

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

DGAURXFN7MY9HQ5.jpg

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

Q8TKXS6EJ5YMT64.jpg

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

6JM38FHDXU34ZCU.jpg

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

52U7FGF8EZXCF3J.jpg

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

BCCDCCB3799YEZP.jpg

R5T9AXF7WXRSZNU.jpg

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

921497_C73XS77VZDMFJT9.jpg

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

921497_URDKH6Y3MP28GC8.jpg

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

921497_JX77J4F2M5USQS5.jpg

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

921497_HDR8DFN88CRNWU4.jpg

921497_9XYPTMZ43W95UY5.jpg

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

921497_6B25RTNVNZAY4YQ.jpg

921497_PJ9VDGQGHNTTS55.jpg

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

921497_E8H8D9NZFX9NWKF.jpg

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

921497_FX3THJUUDHUH6BU.jpg

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

921497_FJ52CXPMQZW5BS5.jpg

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

921497_XT3WFWYMUJKCQWQ.jpg

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

921497_MMHN6R3FBHMUPF3.jpg

921497_3U5255AATQAXEST.jpg

921497_M349Q4BY2K97FHC.jpg921497_AMM6XZFK2P7J45G.jpg

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

921497_NH5JAW4PG96QXJ7.jpg

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

921497_HYTCSBWQK2XWUGR.jpg

 进入创建的线程内

921497_CC3ZFFP6DQZQPXD.jpg

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

921497_JGVQYBJVZGPVTBG.jpg

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

921497_XMMUH3UDMG2DXVR.jpg

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

921497_BCWVU8APBMK6ETT.jpg

921497_8SUW5KK5B64UB7W.jpg

26MAK4PB48FKY6B.jpg

  接着是模拟一些键盘敲击

921497_WGURH6YVSDJWN7F.jpg

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

921497_JKHQW9FVY66VSRB.jpg

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

921497_64PZMBMT5A6UNRS.jpg

921497_2P9QHK8HFR7MXJ3.jpg

921497_GKRYPTTUWF42VTA.jpg

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

921497_PYY4VNURWW3GVE4.jpg

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

921497_37YVFRXTNCFHEUM.jpg

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

四.总结主要行为

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

    7.创建线程感染文件

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

最后于 2021-6-16 21:15 被wx_dopeusa91编辑 ,原因:

上传的附件:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK