最近看了蛮多篇关于熊猫烧香分析的文章,第一次尝试将病毒完整分析纪录下来,目前水平和经验有限,没法直接抓到重点分析,全篇都是一个个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,用来标记文件是否为已被感染的文件
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2021-6-16 21:15
被wx_dopeusa91编辑
,原因: