病毒分析①熊猫烧香分析

1. 情报收集

1.0 哈希值

1.1 查壳

delphi写的程序,使用了FSG2.0壳

1.2 导入表

样本在脱壳之前跑不起来,脱壳之后,查看导入表

1.2 监控软件

1.2.1上传网站
运行病毒之后,本机开启火绒剑会被强制退出,将样本上传微步在线查看:

1.2.2 监控软件行为

使用Process Monitor监控软件查看进程树,启动了很多个命令行程序,并传入命令行参数

cmd.exe /c net share C$ /del /y命令行模式下删除C盘的网络共享,执行完后关闭cmd.exe。cmd.exe /c net share admin$ /del /y取消系统根目录的共享
查看进程事件,发现创建了很多文件,写入文件的操作特别多,还有一些网络行为

查看注册表操作:

网络监控:

1.3 查看本机变化

程序图标被篡改,双击程序不能正常运行

2. 分析程序

使用IDA,OD静态动态结合分析,发现病毒的主函数一共有3个:

2.1准备工作

  • 2.1.1 判断
    • 第一次打开病毒程序,获取当前所在路径,判断是否存在Desktop_.ini文件(ini文件是病毒程序感染之后写入的),存在的话就设置文件属性,并删除ini文件
  • 2.1.2 读取自身PE文件
  • 2.1.3 判断当前路径
    • 判断当前程序路径是否 "C:\Windows\system32\drivers\spo0lsv.exe"
  • 2.1.4 不是当前路径
    • 若不是System32/drivers路径,则将所有spo0lsv.exe进程结束(第一次运行的时候,病毒名称应该不是 spo0lsv.exe否则会将自身结束),将自身文件复制到 "C:\Windows\system32\drivers\spo0lsv.exe" 启动它。退出进程。

  • 2.1.5 启动原程序
    • 若本程序是在该路径运行的,对读取的自身PE文件,判断是否存在标志字符串"WhBoy010Editor.exe.exe 7040856"字符串,如果有这个字符串,说明是被感染的文件  (感染:在原程序的PE文件前面写入病毒程序)
    • 2.1.5.1 若是被感染的文件,则读取自身,将原文件的PE拷贝出来,以附加的方式写入到文件中
    • 2.1.5.2 编写并执行28$$.bat批处理文件:意思就是删除被感染的文件,运行原文件
:try1

"del "C:\Program Files\010 Editor\010Editor.exe"  //删除文件

if exist "C:\Program Files\010 Editor\010Editor.exe" goto try1  //判断文件是否存在

ren "C:\ProgramFiles\010 Editor\010Editor.exe.exe" "010Editor.exe"  //修改文件名

if exist "C:\Program Files\010 Editor\010Editor.exe.exe" goto try2  //判断文件是否存在

"C:\Program Files\010 Editor\010Editor.exe"  //运行没有感染的程序

:try2

del %0

    • 2.1.5.3 判断当前运行的本程序是否是病毒源程序,若是源程序,那么退出本进程
    • 2.1.5.4 若不是病毒源程序:将C盘获取drivers目录的病毒程序spo0lsv.exe删除,再将自身写入获取drivers目录的spo0lsv.exe程序中,然后退出进程,再启动获取drivers目录下的spo0lsv.exe
    • 第一部分结束

2.2 感染文件

  • 2.2.1 CreateThread_Infected
      • 创建线程,递归遍历并感染文件
    • 2.2.1.1 拼接磁盘路径
    • 2.2.1.2 感染文件
      • 遍历磁盘的文件夹,系统关键的文件夹不感染,遍历文件,获取感染文件,删除系统备份文件"GHO"文件
  • exe程序感染流程 :
    • 获取exe文件名,查找当前运行的程序,若该程序正在运行,放弃感染,若该程序是病毒程序,不感染
    • 读取exe文件,存储在内存中,在该exe文件中查找字符串"WhBoy",若存在WhBoy字符串,说明该文件已经被感染过了,不感染
    • 若不存在"WhBoy",则将病毒程序自身复制到exe文件中(此时,文件已经被修改成病毒文件,大小为124kb,病毒大小),然后将内存中的exe写入到被感染后的程序中(此时的大小为病毒程序 原程序)
    • 对感染后的文件写入格式化字符串(WhBoy 文件名 exe 02 十进制文件大小 1)

WriteLString__写入文件函数:

此时的原文件已经被感染成病毒

F8步过之后,将会把内存中的原PE文件写入到被感染的程序中

  • WEB文件感染流程

  • 2.2.2 Time_Create_C_Vir
    • 感染C盘文件,创建inf文件
      • 检查C:\autorun.inf文件是否存在,不存在就创建
      • 将自身病毒释放到C:\setup.exe

  • 2.2.3 CreateThreadInter_
    • 网络感染
      • 获取本地IP地址
      • 尝试感染

2.3 保护工作

  • 2.3.1 RegSetValueEx__1
    • 定时设置注册表,添加启动项
  • 2.3.2 CreateThread_ReadQQ_Mem
    • 解密网址,访问网址,下载内容
  • 2.3.3 CreateProcess__2
    • 创建计时器,启动进程,删除共享,并且调用了CreateT_ReadQQ_Mem
  • 2.3.4 DeleteService_Reg
    • 停止服务,终止杀软程序,删除注册表项
  • 2.3.5 DecryptHttp_ReadQQ
    • 解密网址,访问网站,读取访问的内容
  • 2.3.6 sub_40C728
    • 解密网址,从网址中下载并保存文件

3. 应对措施

3.0 预防措施

  • 提高安全意识,不明连接谨慎点击
  • 安装杀毒软件,定时查杀
  • 遇到突发情况中病毒,第一时间断网,防止损失扩大以及横向传播

3.1 手动查杀

  • 删除C盘System\drivers目录下的spo0lsv.exe病毒程序
  • 使用PcHumter结束病毒程序
  • 删除病毒启动项 "Software\\Microsoft\\Windows\\CurrentVersion\\Run"

3.2 编写专杀工具

  • 病毒查杀特征:
    • 哈希值
    • 感染特征
      • 文件名的末尾有字符串"WhBoy  PathName .exe 02 Size 1"

测试路径:

运行截图:

修复后的效果:

//在数组中寻找指定的字节位置int rfindStrInBuff(char* buffBase, int buffSize,const char* str) {    for (size_t i = buffSize; i > 0 ; i--)    {        char* findBuff = buffBase   i;        if (!memcmp(findBuff, str, strlen(str) 1)) {            return buffBase i;        }    }    return 0;}

来自为知笔记(Wiz)

附件列表

来源:https://www.icode9.com/content-4-805601.html

(0)

相关推荐