0x00 简介
Defender是Windows系统自带的反病毒软件,从Vista开始直接内置在Windows系统中,默认处于开启状态,对大部分普通用户来说是其系统安全基础保障,因此也是安全研究者一个重要的研究目标。
Defender本地数据库主要包含四个文件:
- mpasbase.vdm:AntiSpyware 模块的数据库
- mpasdlta.vdm:更新到 AntiSpyware 数据库
- mpavbase.vdm:防病毒模块的数据库
- mpavdlta.vdm:更新防病毒数据库
本次分析主要是通过对mpasbase.vdm、mpavbase.vdm这两个数据文件进行解码,提取出SIGNATURE_TYPE_ELFHSTR_EXT和SIGNATURE_TYPE_PEHSTR_EXT这两种特征码类型中的病毒名称,对病毒名称数据进行分析,具体提取数据名称的方法请查看参考链接。
0x01 Defender病毒名称命名规范
Defender病毒名称命名参考了Computer Antivirus Research Organization (CARO) 组织的恶意代码命名规范,一个完整的病毒名称包含了5个部分,包括:
- 恶意代码类型 Type: 描述恶意代码类型信息,如蠕虫、病毒、木马、勒索软件等。
- 平台 Platform: 主要包含操作系统、恶意代码脚本语言类型、恶意代码宏类型信息等。
- 恶意代码家族 Family:主要包含恶意代码家族信息,将具有相同特征的恶意代码划分为同一家族,常见的如Mimikatz、CobaltStrike等。
- 恶意代码变种信息 Variant: 标识同一恶意代码家族不同的变体,按字母顺序依次增加。
- 恶意代码其他详细信息 Suffixes:提供恶意代码的其他详细信息
- .dam: damaged malware
- .dll: Dynamic Link Library component of a malware
- .dr: dropper component of a malware
- .gen: malware that is detected using a generic signature
- .kit: virus constructor
- .ldr: loader component of a malware
- .pak: compressed malware
- .plugin: plug-in component
- .remnants: remnants of a virus
- .worm: worm component of that malware
- !bit: an internal category used to refer to some threats
- !cl: an internal category used to refer to some threats
- !dha: an internal category used to refer to some threats
- !pfn: an internal category used to refer to some threats
- !plock: an internal category used to refer to some threats
- !rfn: an internal category used to refer to some threats
- !rootkit: rootkit component of that malware
- @m: worm mailers
- @mm: mass mailer worm
0x02 Defender病毒名数据分析
根据之前的方式可提取SIGNATURE_TYPE_ELFHSTR_EXT病毒名数据47426条,SIGNATURE_TYPE_ELFHSTR_EXT病毒名数据1254条,使用正则[:/.!]对病毒名进行分离,分析名称各部分数据。
SIGNATURE_TYPE_PEHSTR_EXT
恶意代码类型数据分析
恶意代码类型Type数据总共47426,针对每项数据去重计数后的数据如下:
Trojan 28285
TrojanDownloader 3603
VirTool 3393
Ransom 2598
Backdoor 2503
TrojanSpy 1441
PWS 1407
Worm 1022
TrojanDropper 748
Rogue 400
BrowserModifier 335
HackTool 297
Adware 260
Virus 222
TrojanProxy 183
MonitoringTool 179
TrojanClicker 153
Exploit 81
SoftwareBundler 77
Spammer 73
Spyware 56
DDoS 31
DoS 20
Misleading 20
Constructor 7
PUA 7
SupportScam 2
Behavior 1
Joke 1
Program 1
PseudoThreat_c0000923 1
可以发现PE类特征码中针对木马Trojan的特征数量占比超过50%,在这我们再针对Trojan类型恶意代码分析下那些恶意代码家族特征码分布情况,这里展示下前20的Trojan家族信息。
AgentTesla 3588
Redline 1087
Emotet 1007
Formbook 724
Qakbot 668
IcedId 614
CobaltStrike 586
Trickbot 438
Remcos 428
Dridex 424
SmokeLoader 398
EmotetCrypt 391
Lokibot 373
Glupteba 351
CryptInject 340
Azorult 271
NSISInject 266
Ursnif 266
ClipBanker 254
RedLineStealer 246
平台 Platform数据分析
Win32 31226
BAT 11764
Win64 3119
MSIL 779
WinNT 502
Linux 6 :Mepos、Sejweek、Zitmo、StealthBot
UEFI 4 :VectorEDK、MoonBounce、Lojax
AndroidOS 2 :Skygofree、AndroRat
DOS 2
PowerShell 2
Win95 2
恶意代码家族 Family数据分析
AgentTesla 3753
RedLine 1115
Emotet 1016
Obfuscator 975
Formbook 744
Qakbot 679
CobaltStrike 648
IcedId 632
CeeInject 607
VBInject 578
Banload 535
Injector 473
Remcos 473
Trickbot 441
Dridex 431
SmokeLoader 400
EmotetCrypt 391
CryptInject 387
Lokibot 382
Ursnif 360
与直接Trojan类型数据差异不大,新出现的恶意代码家族大部分都是VirTool类型,如混淆加壳工具、注入工具等。
后缀 Suffixes
MTB 26639
bit 1458
dha 749
A 490
MSR 403
B 219
dll 187
C 137
D 92
E 58
F 55
ibt 47
G 45
rsm 45
H 39
I 33
sys 31
J 25
L 25
K 24
Q 21
M 18
N 16
R 16
eml 15
P 15
S 15
dr 14
O 13
sms 12
后缀代表一些针对该特征码的一些其他详细信息,如类型dll、eml,扫描方式sms内存扫描等。
SIGNATURE_TYPE_ELFHSTR_EXT
Defender本地病毒库中SIGNATURE_TYPE_ELFHSTR_EXT类型特征码比较少,总共只有1254条,但为了展示与PE类型的区别这里也对其进行简单分析。
恶意代码类型数据分析
Backdoor 585
Trojan 233
Exploit 144
Ransom 92
DDoS 61
HackTool 58
TrojanDownloader 21
TrojanDropper 20
Worm 7
Misleading 6
TrojanSpy 6
Virus 6
Adware 5
VirTool 5
MonitoringTool 2
DoS 1
PUA 1
TrojanProxy 1
SIGNATURE_TYPE_ELFHSTR_EXT类别与PE类型排名还是有比较大的不同,Exploit、Ransom、DDOS、HackTool类别恶意代码类型排名比较靠前。
平台 Platform数据分析
Linux 1178
AndroidOS 75
Win64 1
有一个异常数据是出现Win64类型数据,看了下对应的恶意代码家族是Zenbleed,可能是针对AMD处理器漏洞的利用代码。
恶意代码家族 Family数据分析
Mirai 264
Gafgyt 191
Tsunami 32
SAgnt 23
Flooder 21
Filecoder 16
GetShell 13
Turla 13
Lotoor 12
CoinMiner 8
MsfShellBin 8
Dakkatoni 7
Lightaidra 7
Wroba 7
BPFDoor 6
Tusnami 6
Asacub 5
CVE-2017-17215 5
Gyfgyt 5
Local 5
恶意代码家族排名也不一样,主要家族都是些BOT类型恶意代码。
0x03 总结
对红队做免杀武器化:
- 根据病毒名可以获取到很多信息,如果Type为Behavior大概率是动态行为触发,如果后缀包含sms可能是内存扫描到特征码
- 根据Platform平台的特征码数量,可知Win32特征码是Win64特征码的10倍,如果编译为Win64是不是更容易绕过特征码扫描
对蓝队做样本运营:
- 获取不同恶意代码家族tag
- 可以针对不同恶意代码家族特征数量调整分析优先级
- 可以根据本地病毒库不同家族新增感知外网恶意代码变化
0x04 参考
- github.com/commial/experiments/tree/master/windows-defender/VDM
- learn.microsoft.com/en-us/microsoft-365/security/intelligence/malware-naming?view=o365-worldwide