本文将主要介绍,清洗一个"Basic Block"中无用指令的原理及实现方案。该项目用到的主要技术包括Capstone和活跃变量分析,最后,以本人在工作时所遇到的一恶意样本中"带混淆加密算法"分析为例,展示了该项目的使用方式和实际效果。
整体流程:
本文主要关注的是,如何通过虚拟地址(Virtual Address, VA)来获取文件中的对应数据,因而不再对PE结构进行详细解释,重点聚焦于文件偏移和虚拟地址之间的转换。
以《加密与解密中》中的示意图为例:
做如下定义:
可得出如下表达式:
File Offset = RVA - Δk
File Offset = VA - ImageBase - Δk
过程如下
以下部分引用自——活跃变量分析,可用表达式分析,在此感谢大佬分享。
该实现思路的完善和理顺来自——利用活跃变量分析来去掉vmp的大部分垃圾指令,在此感谢大佬分享。
过程如下
注: 本例来自一个恶意Loader中的解密算法部分(样本MD5为:B7D90C9D14D124A163F5B3476160E1CF),若对该样本的整体流程感兴趣,可阅读本人所撰写的该样本分析文章,可能会有所收获!
去混淆前:
下面我们利用指令去混淆工具对该段指令进行清洗。
启动指令如下:
清洗后的指令如下:
希望大家读的开心,有所收获。目前,本人也在学习基本块合并的相关知识,使得清洗范围可以扩大到一个函数或整个程序,希望各位大佬可以给出更多相关资料和宝贵意见。对于本文有任何想问的以及意见也欢迎随时指出。
.text:
00411190
loc_411190: ; CODE XREF: decrypt_shellcode_411040
+
111
↑j
.text:
00411190
2B
7C
24
10
sub edi, [esp
+
6F4h
+
var_6E4]
.text:
00411194
C7
84
24
78
01
00
00
C5 BC
71
+
mov [esp
+
6F4h
+
var_57C],
4B71BCC5h
.text:
00411194
4B
.text:
0041119F
C7
84
24
1C
02
00
00
53
8D
22
+
mov [esp
+
6F4h
+
var_4D8],
14228D53h
.text:
0041119F
14
.text:
004111AA
C7
84
24
A4
00
00
00
55
D3
1F
+
mov [esp
+
6F4h
+
var_650],
4B1FD355h
.text:
004111AA
4B
.text:
004111B5
C7
84
24
EC
00
00
00
40
0D
8E
+
mov [esp
+
6F4h
+
var_608],
458E0D40h
.text:
004111B5
45
.text:
004111C0
C7
84
24
D4
01
00
00
6E
E9
24
+
mov [esp
+
6F4h
+
var_520],
7524E96Eh
.text:
004111C0
75
.text:
004111CB
C7
84
24
A0
01
00
00
FA
0B
77
+
mov [esp
+
6F4h
+
var_554],
6B770BFAh
........
.text:
00412994
81
84
24
F4
01
00
00
52
F7
57
+
add [esp
+
6F4h
+
var_500],
5657F752h
.text:
00412994
56
.text:
0041299F
81
AC
24
08
02
00
00
5C
EB
35
+
sub [esp
+
6F4h
+
var_4EC],
1B35EB5Ch
.text:
0041299F
1B
.text:
004129AA
81
84
24
40
01
00
00
C4 CB
36
+
add [esp
+
6F4h
+
var_5B4],
7336CBC4h
.text:
004129AA
73
.text:
004129B5
81
6C
24
28
8B
9F
9C
39
sub [esp
+
6F4h
+
var_6CC],
399C9F8Bh
.text:
004129BD
81
84
24
80
02
00
00
7E
C6 AC
+
add [esp
+
6F4h
+
var_474],
20ACC67Eh
.text:
004129BD
20
.text:
004129C8
8B
C7 mov eax, edi
.text:
004129CA
C1 E0
04
shl eax,
4
.text:
004129CD
89
44
24
14
mov [esp
+
6F4h
+
var_6E0], eax
.text:
004129D1
8B
84
24
B0
02
00
00
mov eax, [esp
+
6F4h
+
var_444]
.text:
004129D8
01
44
24
14
add [esp
+
6F4h
+
var_6E0], eax
.text:
004129DC
81
3D
74
44
83
00
96
01
00
00
cmp
uBytes,
196h
.text:
004129E6
8D
34
3B
lea esi, [ebx
+
edi]
.text:
004129E9
75
0E
jnz short loc_4129F9
.text:
00411190
loc_411190: ; CODE XREF: decrypt_shellcode_411040
+
111
↑j
.text:
00411190
2B
7C
24
10
sub edi, [esp
+
6F4h
+
var_6E4]
.text:
00411194
C7
84
24
78
01
00
00
C5 BC
71
+
mov [esp
+
6F4h
+
var_57C],
4B71BCC5h
.text:
00411194
4B
.text:
0041119F
C7
84
24
1C
02
00
00
53
8D
22
+
mov [esp
+
6F4h
+
var_4D8],
14228D53h
.text:
0041119F
14
.text:
004111AA
C7
84
24
A4
00
00
00
55
D3
1F
+
mov [esp
+
6F4h
+
var_650],
4B1FD355h
.text:
004111AA
4B
.text:
004111B5
C7
84
24
EC
00
00
00
40
0D
8E
+
mov [esp
+
6F4h
+
var_608],
458E0D40h
.text:
004111B5
45
.text:
004111C0
C7
84
24
D4
01
00
00
6E
E9
24
+
mov [esp
+
6F4h
+
var_520],
7524E96Eh
.text:
004111C0
75
.text:
004111CB
C7
84
24
A0
01
00
00
FA
0B
77
+
mov [esp
+
6F4h
+
var_554],
6B770BFAh
........
.text:
00412994
81
84
24
F4
01
00
00
52
F7
57
+
add [esp
+
6F4h
+
var_500],
5657F752h
.text:
00412994
56
.text:
0041299F
81
AC
24
08
02
00
00
5C
EB
35
+
sub [esp
+
6F4h
+
var_4EC],
1B35EB5Ch
.text:
0041299F
1B
.text:
004129AA
81
84
24
40
01
00
00
C4 CB
36
+
add [esp
+
6F4h
+
var_5B4],
7336CBC4h
.text:
004129AA
73
.text:
004129B5
81
6C
24
28
8B
9F
9C
39
sub [esp
+
6F4h
+
var_6CC],
399C9F8Bh
.text:
004129BD
81
84
24
80
02
00
00
7E
C6 AC
+
add [esp
+
6F4h
+
var_474],
20ACC67Eh
.text:
004129BD
20
.text:
004129C8
8B
C7 mov eax, edi
.text:
004129CA
C1 E0
04
shl eax,
4
.text:
004129CD
89
44
24
14
mov [esp
+
6F4h
+
var_6E0], eax
.text:
004129D1
8B
84
24
B0
02
00
00
mov eax, [esp
+
6F4h
+
var_444]
.text:
004129D8
01
44
24
14
add [esp
+
6F4h
+
var_6E0], eax
.text:
004129DC
81
3D
74
44
83
00
96
01
00
00
cmp
uBytes,
196h
.text:
004129E6
8D
34
3B
lea esi, [ebx
+
edi]
.text:
004129E9
75
0E
jnz short loc_4129F9
(base) PS C:\Users\g0mx> D:\Code_Files\Deobfusecate\Release\Clean_BB.exe
-
f D:\Malware_Analysis\packer\packer\mal_packer
-
s
"411190"
-
e
"4129EB"
(base) PS C:\Users\g0mx> D:\Code_Files\Deobfusecate\Release\Clean_BB.exe
-
f D:\Malware_Analysis\packer\packer\mal_packer
-
s
"411190"
-
e
"4129EB"
Insn
List
After Clean:
0x411190
: sub edi, dword ptr [esp
+
0x10
]
0x411194
: mov dword ptr [esp
+
0x178
],
0x4b71bcc5
0x41119f
: mov dword ptr [esp
+
0x21c
],
0x14228d53
0x4111aa
: mov dword ptr [esp
+
0xa4
],
0x4b1fd355
0x4111b5
: mov dword ptr [esp
+
0xec
],
0x458e0d40
.........
0x411826
: mov dword ptr [esp
+
0x210
],
0x3884b2e9
0x411831
: mov dword ptr [esp
+
0x234
],
0x5a5beac9
0x41183c
: mov dword ptr [esp
+
0x22c
],
0x71a13663
0x411847
: mov dword ptr [esp
+
0x218
],
0x36e78a71
0x411852
: mov dword ptr [esp
+
0x224
],
0x4b2fcf14
0x4129c8
: mov eax, edi
0x4129ca
: shl eax,
4
0x4129cd
: mov dword ptr [esp
+
0x14
], eax
0x4129dc
:
cmp
dword ptr [
0x834474
],
0x196
0x4129e9
: jne
0x4129f9
clean over!!!
Insn
List
After Clean:
0x411190
: sub edi, dword ptr [esp
+
0x10
]
0x411194
: mov dword ptr [esp
+
0x178
],
0x4b71bcc5
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
最后于 2023-7-18 09:28
被g0mx编辑
,原因: