PowerShell脚本的内部证书规则分析

区块链安全档案
区块链安全档案 机构得得号

Sep 03, 2018 隶属于曲速未来安全区,安全问题深度分析、一手威胁情报披露

摘要: 本文将提供让你可以在组织中使用的不同规则来检测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生成的文件,这是各种对手的当前运作方式,所以规则设置得非常具体。

(作者:区块链安全档案,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 区块链安全档案 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信