PowerShell脚本的内部证书规则分析
摘要: 本文将提供让你可以在组织中使用的不同规则来检测PowerShell的证书。
本文将提供让你可以在组织中使用的不同规则来检测PowerShell的证书。
YARA
这是开始这项研究的YARA规则:
此YARA规则搜索字符串--BEGIN CERTIFICATE--后跟回车符(\ r),换行符(\ n),最后是任何不是大写字母M的字符。它使用正则表达式($ re1 )搜索此序列,必须在文件的开头找到此序列($ re1为0)。
Microsoft的certutil生成的证书将始终以--BEGIN CERTIFICATE--开头,然后是回车符和换行符,然后是BASE64编码的内容。该RFC允许多余的空格,而不是由产生的certutil,这就是为什么我们不考虑这个YARA规则多余的空格。
请注意,还有一个较旧的证书文件规范,它允许第一行和BASE64有效负载之间的标头。虽然我们没有在VirusTotal上观察到这些规则,但我们的规则将触发这些旧证书。
如果您希望YARA规则检测嵌入式证书(例如,另一个文件中的证书),您可以将条件从“$ re1 at 0”更改为“@ re1> 0”,如下所示:
这意味着您希望正则表达式re1(@ re1)匹配的字符串的位置大于0(> 0),例如不在文件的开头。
另一个例子--BEGIN CERTIFICATE--可以在文件中的某个位置找到(即不在位置0)。crt文件可以包含多个证书。
由于YARA仍然是许多组织的新技术,我们还开发了Suricata和ClamAV规则,可以在下一节中找到。
Suricata
Suricata是一个免费的开源IDS。
使用以下Suricata规则,您可以监视网络流量,查找不符合正确标准且可能包含恶意负载的可疑证书文件如下图:
我们执行与YARA规则完全相同的匹配类型:我们搜索--BEGIN CERTIFICATE--后跟回车符和换行符,尽管编码有点不同(--BEGIN CERTIFICATE-- | 0D 0A |)。在标头之后,我们使用byte_test操作查找与M(0x4D)不同的字节。
第一个规则在文件的开头(file_data)查找此模式,而第二个规则在文件的任何位置查找此模式。
我们已在测试环境中测试了这些规则,但请确保在生产环境中使用它们之前执行相同操作。
ClamAV
ClamAV是一种免费的开源反病毒。
就像Suricata一样,ClamAV可以提供自定义检测签名,可以帮助您检测恶意文件,例如隐藏在电子邮件附件中的有效负载。
这些签名应存储在.ndb文件中。签名ClamAV.Certificate.Unknown检测到包含证书数据以外的其他内容的证书文件(!(4D)表示不是M)和签名ClamAV.ContainsCertificate.Unknown检测到包含除证书数据之外的其他内容的嵌入证书文件。
请注意,如果您有最新版本的ClamAV,也可以使用ClamAV的YARA规则。
结论
此研究基于一个简单的想法:具有不以大写字母M开头的数据的证书不能包含有效的证书数据。将继续遵守现在的规则,并及时报告出是否做出有趣的发现。
区块链安全公司WF曲速未来建议您从规则开始检测证书,而不是嵌入证书。
当然,绕过现有的规则检测是微不足道的,就像任何基于模式匹配的规则一样。例如,添加额外的空格将避免基本规则检测到是因为当前正在搜索使用certutil生成的文件,这是各种对手的当前运作方式,所以规则设置得非常具体。
(作者:区块链安全档案,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)
评论(0)
Oh! no
您是否确认要删除该条评论吗?