前言
🐎
简单病毒逆向分析
电脑病毒(computer virus),或称电子计算机病毒。是一种在人为或非人为的情况下产生的、在用户不知情或未批准下,能自我复制或运行的电脑程序;电脑病毒往往会影响受感染电脑的正常运作,或是被控制而不自知,电脑正常运作仅盗窃资料、或者被利用做其他用途等用户非自发启动的行为。
目标
- 针对病毒的简单分析
- 掌握发现病毒后的各类操作
步骤
数据源准备
病毒文件基本信息:
文件名:35a7db3cde6c0744dc2146f23f499df8ad527c93 大小:229 KB (234,496 字节) CRC32:7E28EBC8 MD5:324B6AB5E45E2A106025BE8802D39511 SHA-1:35A7DB3CDE6C0744DC2146F23F499DF8AD527C93
查壳程序:本次通过 Exeinfo PE 来进行查询,该软件目前内置海量 PEiD 的签名库并整合了近 50 种插件以及更加完整的中文语言包,具备非常强悍的可鉴定多种文件类别的能力,全面兼容包括bmp、.jpg、.mov、.mp4、.vpx、.crx、.skn、.dcu、.obj、.ice、.apk、.TLB、.ddd、.dcu、.pkg、.mkv、.WebM、.iso、.xar、.nup、.vhd、.tar、.gma、.mts、res、tiff、7z、rar 在内的多种文件格式,支持查看加密程序的 PE 信息、编译信息、是否加壳、输入输出表、入口地址、首字节、文件大小、子系统与覆盖等任何可执行程序的多种相关信息,给予用户引导脱壳方法
脱壳工具:XVolkolak 是一个功能强大的通用 shelling 实用程序,带有虚拟机。它旨在帮助用户快速解决各种加密 shell。与其他 shelling 工具不同,它使用虚拟机脱壳技术。避免损坏用户系统,同时使用 XVolkolak,还可以执行 PE 编辑,数据扫描检测和快速 shell 检查操作,支持拖放操作,易于使用
病毒分析
查壳:
有壳,是 MPRESS,同时查看到文件是 PE 文件,使用 XVolkolak 进行脱壳
脱壳完毕后生成一个 .unp 文件,拖入 OD 在入口点处,可以看到各项功能显示正常,说明脱壳成功
通过火绒剑识别病毒行为进行分析,将未脱壳的源文件改为:1.exe
将病毒 exe 拖动到火绒剑窗口当中(需关闭火绒防护)
病毒首先 PROC_exec 打开并创建了一个 conhost.exe 进程,接着在 C:\Program File 新建了 Microsoft DN1 文件
FILE_touch 新建了 images.exe 文件,并启动自释放文件。REG_setval 设置 images.exe 为开机启动项
接着进程 1.exe 结束,执行了 powershell.exe ,然后 images.exe 在 Windows\CurrentVersion\Explorer\ 下新建了一个键值 ADDEJIWOQK,并设置了一个注册表项值 inst
最底下可以看到远程连接的服务器ip和端口
文件夹木马病毒样本逆向分析
工具
Windows 虚拟机
沙箱、Exeinfo PE 等
步骤
云沙箱分析
关闭杀毒软件,在虚拟机中解压病毒,使用在线云沙箱进行文件解析
安恒云沙箱:https://sandbox.dbappsecurity.com.cn
微步云沙箱:https://s.threatbook.com
这里使用安恒云沙箱,首先访问网站,将病毒文件上传至平台
确认病毒的信息后,我们使用第二个工具。由 Windows 自带的 certutil -hashfile
certutil -hashfile 是一个在 Windows 操作系统中非常有用的命令行工具,它用于计算文件的哈希值。哈希值是一个固定长度的字符串,它代表了文件内容的数字指纹。即使文件内容发生微小变化,其哈希值也会发生显著变化。这使得哈希值成为验证文件完整性和一致性的理想工具
certutil -hashfile 文件地址 MD5 certutil -hashfile 文件地址 SHA1 certutil -hashfile 文件地址 SHA256
查壳
基础信息分析完成后,通过 Exeinfo PE 来进行查壳
无壳,用 Delphi 写的
Delphi 分析
通过 DeDe 查看 Delphi 程序窗体属性
通过 DeDe 分析工具我们可以看到,这个病毒程序由五个功能模块组成的,分别为 FromCreate、Timer1Timer、Timer2Timer、Timer3Timer、Timer4Timer,其中 FromCreate 类似于程序的入口函数(main),剩下 4 个是个定时器函数
检测依赖关系
通过 depends 工具来检测依赖关系:
查询 Windows 应用开发文档:https://learn.microsoft.com/zh-cn/windows/apps/
通过 Depends 检测可以发现这个病毒调用了很多注册表操作和文件操作,例如
RegOpenKeyExA()
RegSetValueExA()
WriteFile()
CreateFileA()
火绒剑分析
病毒创建了名为 avb.exe、javasc.exe 的恶意文件,路径如图所示,打开文件路径可以观察到这些恶意文件
继续观察,可以发现大量的注册表操作,avb.exe 写入自启动注册表:
禁用显示隐藏文件和文件夹的选项,以隐藏自身:
IDA静态分析
Delphi 函数参考库:http://docwiki.embarcadero.com/Libraries/Sydney/en/Main_Page
函数入口点
f5反编译
调用 Forms::TApplication 类的 CreateForm 方法,传入 off_450FD0[0] 指向的值、off_44E76C 和 off_4510B0,跟进 off_44E76C 函数:
跟进 word_44E8F3
分析函数:
FormCreate:跟进 _TForm1_FormCreate
可以看到这里把 javasc.exe、avb.exe 注册为服务,加入自启动
跟进 sub_44F3A0
应该是写入注册表隐藏文件不可见的代码,跟进这里的 &str_HideFileExt 和 &str_Hidden
于是可以得出结论:
TForm1_FormCreate 是这个病毒样本的入口函数,病毒的功能起源就是这个函数,功能是将病毒样本放置到系统盘的 Windows 目录下伪装成系统程序,将病毒文件写入到注册表中的开机自启动项里面,以实现每次开机就启动病毒样本
Timer1Timer 函数:
esc 退回到前面的函数页,跟进 _TForm1_Timer1Timer 函数
跟进 sub_44EF94
跟进 sub_44E9FC
跟进 sub_44E980
可以看到这里通过 Sysutils::DiskSize 获取磁盘大小来判断磁盘是否存在
然后回到上一级 sub_44E9FC
接下来调用 GetDriveTypeA 判断磁盘类型
然后退出 sub_44E9FC,进入 sub_44EEBC 函数
先跟进 sub_44EAA4
这里的操作主要是文件的遍历
然后看 sub_44EC88
主要是设置文件属性,随后进行了一个对自身的拷贝