您的位置:首页 > 编程语言 > Delphi

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

2020-02-16 08:55 435 查看

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 流程图

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
22624
"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 初始化自校验

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

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

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

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

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

3.3.3 主功能模块2:

递归遍历,感染Exe等文件

递归遍历,感染Html等文件

删除.GHO系统备份文件

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

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

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

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

3.3.4 主功能模块3:

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

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

设置Run注册表自启动

设置隐藏文件不显示

 

解密URL,下载并执行

删除共享

停止并删除杀软服务

 

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
bailing1370 发布了0 篇原创文章 · 获赞 0 · 访问量 146 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: