某天,同事编写的软件更新后,居然被微软自家的杀毒软件即 Windows Defender 识别为病毒,引起了我的好奇,到底是什么样的二进制特征,引发了 AV(AntiVirus)杀毒软件的告警?
1 基本概念
病毒与恶意软件
计算机病毒在二十世纪 90 年代以后出现,随着计算机的普及而被大众所知晓。而如今,安全人员更喜欢”恶意软件“、”威胁“替代,所以杀毒软件,杀的是恶意软件,病毒只是其中的一种。
病毒是一种特定类型的恶意软件,能够感染正常文件。因此,从民众认知的角度上来说,病毒可以广义上替代恶意软件;从安全领域来说,病毒只是恶意软件的子集。 一个恶意软件,是不是病毒,对于普罗大众来说没有绝对正确的对错之分。为了方便,后文也不会区分具体的概念。
恶意软件/病毒的签名
很多反病毒软件,包括 Windwos Defender Antivirus,通过扫描文件是否与一组预定属性匹配,检测该文件是否是恶意软件。这样的一组属性,我们称之为签名。
防病毒软件的病毒签名,实际上并没有统一定义。卡巴斯基 Viruses, signatures, disinfection 的一篇博客讲述了从 1980 年开始,签名作为一个概念就没有明确定义。直至今日,病毒签名更像是一个安全领域的基础概念,而非是一个晦涩难懂的词汇。
经典签名:恶意软件样本常见的连续字节序列,包含在恶意软件中中,这也是大多数人接触到的最原始的病毒签名。
今天的签名:防病毒软件的数据库中的条目,是指一类病毒的多个特征,它更像是一组规则的哈希。
Malware 签名有多种格式,最常见的是 yara,安全专业人员可以使用的一些流行的恶意软件存储库包括 VirusTotal、Malpedia 和 MalShare,静态分析恶意软件的签名。
2 威胁
威胁是指某一类特定的恶意软件家族,也就是Windows Defender Antivirus (微软反病毒软件)弹框提示,如下所示,就是指 Trojan: MSIL/Cryptor 的恶意软件家族,微软官方有对恶意软件命名规则的解释。
Trojan,即恶意软件类型为木马
MSIL,即平台类型为 MSIL 中间语言
Cryptor,即属于勒索软件或者密码学相关恶意软件
可以简单理解为,一种威胁对应一种恶意软件。
Defender 提供多个 Powershell 命令,用于管理 Defender
PS C:\Users\Q> Get-Command -Module Defender
CommandType Name Version Source
----------- ---- ------- ------
Function Add-MpPreference 1.0 Defender
Function Get-MpComputerStatus 1.0 Defender
Function Get-MpPreference 1.0 Defender
Function Get-MpThreat 1.0 Defender
Function Get-MpThreatCatalog