【逆向】Delphi程序逆向之熊猫烧香病毒分析

1、前言

本文主要用于记录Delphi程序逆向的一些方法和技巧,以及熊猫烧香病毒的分析过程。

2、分析技巧

2.1 使用IDR或DEDE加载Delphi程序,导出Map文件,将Map文件导入OD。

2.2 IDA加载Delphi程序后,根据实际情况修改编译器选项,ASCII字符串风格,增加代码可读性。

2.3 IDA添加Delphi程序签名文件,识别常用系统函数调用。

2.4 由于IDR对Delphi库函数的识别率比IDA高,动态调试时,可以配合OD/IDA一起使用。

2.5 常用Delphi系统库函数,可以查看Delphi system文件,也可以参考文末参考链接。

2.6 Delphi程序,使用fastcall调用约定,前2个参数使用eax,edx传递,其余参数从左到右依次压栈,堆栈由被调用者恢复。(由于编译器不同,寄存器,压栈顺序可能不同,视具体情况而定)

1 004529A9    push       dword ptr ds:[455C00];   //参数3:"Hello"
2 004529AF    push       452A18; ' '              //参数4:" "
3 004529B4    push       dword ptr ds:[455C04];   //参数5:"World"
4 004529BA    lea        eax,[ebp-4]              //参数1
5 004529BD    mov        edx,3                    //参数2
6 004529C2    call       @LStrCatN                LStrCatN(lpBuff,3,"Hello"," ","World")

3、分析流程

3.1 流程图

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第1张图片

3.2 静态分析

3.2.1 分析导入表

 1 文件:
 2     0x0000       "CreateFileA"
 3     0x0000       "WriteFile"
 4     0x0000       "ReadFile"
 5     0x0000       "FindNextFileA"
 6 网络:
 7     0x0000       "socket"
 8     0x0000       "connect"
 9     0x0000       "InternetReadFile"
10     0x0000       "InternetOpenUrlA"
11 服务:
12     0x0000       "OpenServiceA"
13     0x0000       "OpenSCManagerA"
14     0x0000       "DeleteService"
15     0x0000       "ControlService"
16     0x0000       "CloseServiceHandle"
17 进线程:
18     0x0000       "CreateThread"
19     0x0000       "TerminateProcess"
20     0x0000       "WinExec"
21 注册表:
22     0x0000       "RegSetValueExA"
23     0x0000       "RegDeleteValueA"
24     0x0000       "RegCreateKeyExA"
25 其它:
26     0x0000       "SetTimer"
27     0x0000       "NetRemoteTOD"
28     0x0000       "NetScheduleJobAdd"
29     0x0000       "URLDownloadToFileA"
30     0x0000       "OpenProcessToken"
31     0x0000       "LookupPrivilegeValueA"
32     0x0000       "AdjustTokenPrivileges"
33     0x0000       "WNetAddConnection2A"
34     0x0000       "WNetCancelConnectionA"

3.3 动态分析

3.3.1 初始化自校验

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第2张图片

3.3.2 主功能模块1:自拷贝,bat自删除

判断当前路径是否存在ini配置文件,存在则删除

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第3张图片

如果当前文件未被感染,并且不是"drivers\spcolsv.exe",则自拷贝并运行

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第4张图片

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第5张图片

如果是被感染的文件,则从自身释放原文件,创建.bat删除感染文件,运行原文件后自删除

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第6张图片

如果"drivers\spcolsv.exe"正在运行则程序退出,否则删除"drivers\spcolsv.exe"后重新创建,并运行。

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第7张图片

3.3.3 主功能模块2:

递归遍历,感染Exe等文件

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第8张图片

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第9张图片

递归遍历,感染Html等文件

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第10张图片

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第11张图片

删除.GHO系统备份文件

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第12张图片

在每个文件夹目录下生成ini配置文件,更新当前日期

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第13张图片

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第14张图片

设置定时器,每6秒执行一次,在磁盘根目录生成setup.exe和autorun.inf文件

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第15张图片

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第16张图片

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第17张图片

创建线程,通过139,445端口感染局域网主机。

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第18张图片

自拷贝到网络主机共享目录,创建计划任务执行“GameSetup.exe”

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第19张图片

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第20张图片

3.3.4 主功能模块3:

创建定时器,执行不同任务

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第21张图片

结束杀软,任务管理器等进程

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第22张图片

设置Run注册表自启动

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第23张图片

设置隐藏文件不显示

 【逆向】Delphi程序逆向之熊猫烧香病毒分析_第24张图片

解密URL,下载并执行

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第25张图片

删除共享

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第26张图片

停止并删除杀软服务

【逆向】Delphi程序逆向之熊猫烧香病毒分析_第27张图片

 

Delphi常用库函数参考:

https://www.cnblogs.com/Little-Star/p/7541389.html

https://www.pediy.com/kssd/pediy06/pediy6843.htm

样本与调试文件下载:

https://files.cnblogs.com/files/SunsetR/熊猫烧香样本.zip 密码("SunsetBlogs")

转载于:https://www.cnblogs.com/SunsetR/p/11358388.html

你可能感兴趣的:(【逆向】Delphi程序逆向之熊猫烧香病毒分析)