原文作者: Costin Raiu 2020-04-06 7:00 am
如果你阅读过我之前的博客文章使用YARA狩猎APT,那你应该知道我们在2020-03-31举办了一场webinar,介绍了我们在开发和应用YARA规则来搜寻恶意软件的经验。
如果你错过了这场webinar,或者想再看一遍,请点击下方链接(一个brighttalk的页面会打开,你需要先输入个人信息才能观看):
响应大家的要求,我们还把演示文档上传到了SlideShare:
由于webinar时间有限,我们不能展示地更加详尽。我们在会后收到了很多有意思的问题,如我之前承诺的,我将在这篇文章里给出我的回答。感谢所有的参与者和你们的反馈与想法!
很多人问能不能分享演示文档。
我们在上文中分享了SlideShare链接。
嗨,Costin,为什么要写漏洞利用的规则,而不是直接写漏洞的规则呢?(来自Ari)
嗨,Ari,希望你们一切都好! 在这个例子里,我们在尝试寻找未知的0day漏洞的利用,因此,我们不知道具体利用的到底是什么漏洞。 我们唯一可以寻找的是漏洞利用开发人员在利用相同漏洞的较旧版本(在本例中为Silverlight)中留下的痕迹。更多信息参阅博客CVE-2016-0034的神秘案例:寻找Microsoft Silverlight 0day。
我将在pestudio中添加一个基于xml的转换以小写形式显示Imphash! (来自Marc)
非常谢谢Marc!抱歉之前把你的姓氏弄错了。大家如果还没有开始使用过Pestudio进行恶意软件的初始评估, 请去这个网站看一看对你或许会有帮助。
“你的意大利语很好/你的意大利语不错/你的意大利语相当好” - 来自很多Amici(意大利语- 朋友的意思)
谢谢! 可能因为罗马尼亚在2000年前曾经是罗马殖民地,所以我们的语言如此相似。 祝你们一切顺利,保持安全,保持健康!
当您寻找其他语言时,“ pe.language”是否捕获所有十六进制格式? (比如说,UTF-8和UTF-16将以不同的十六进制字节显示普通话字符) (来自Jono)
这是个好问题。 实际上pe.language会循环浏览PE文件中的所有资源,并且如果至少一种资源的语言与您要查找的资源匹配,则返回true。 因此,它仅使用资源部分中的元数据进行搜索,而不是在文件中搜索任何字符。
能否请您解释规则匹配时的“not for all i” – 来自Rohit,请参考示例3中的通用YARA规则
确实,这是一个比较特别的规则。 为了简化起见,我在下面显示解决方案:
该规则的工作原理基本如下:首先,名为“ CompanyName”的version_info结构字段应包含“ Microsoft”,这意味着该文件声称来自Microsoft。 其次,它需要使用数字证书签名,因此pe.number_of_signatures应该大于0。最后,我们检查用于签署文件的所有证书,看是不是至少有一个不是来自Microsoft或VeriSign。 为什么要检测这最后一条? 嗯,这是相反的逻辑–对于所有证书,我们要确保签名来自Microsoft或VeriSign。 如果发现至少一个签名不是来自这两个机构,则文件可疑。 做到这一点的另一种方法是在循环内保留“ and for all”,并应用“ not”,将“ or”切换为“ and”。 (因为不是(a或b)==不是a和不是b)
您是否有用任何良好和良性文件的开源数据库来测试误报?(来自Ramon)
嗨,Ramon, 谢谢你的提问! 请转到幻灯片37 查看如何构建用于质量检查和误报测试的良性样本集的建议。
当您在规则中指定“文件大小”属性时,您指定的单位是什么? 字节(Bytes),千字节(Kilobytes),兆字节(Megabytes),等等…? (来自James)
默认情况下,文件大小以字节表示,因此200000将为200000字节。 YARA语法还支持KB和MB, KB是字节乘以1024 and MB是字节乘以2^.20.
你是否建议使用XOR? (来自 John) 参考幻灯片39页:
右侧的示例来自Shamoon2样本,其中一些字符串是通过一个字节的秘钥进行xor运算的,该字节在各个样本之间是不同的。 有趣的是,Yara从3.8版本开始就支持xor。 但是,xor总是在最后才被调用,因此对于我们上面的情况,它将起作用,因为宽字符串中的零也将被xor! 因此,如果未对零进行xor运算,我们需要对字符串进行暴力破解,并像上面的情况一样使用它们。
使用正常的YARA规则扫描您的完整收藏集需要多长时间? (来自Juan Aleister-Crowley)
针对卡巴斯基的整个恶意软件收藏集(可能也是世界上最大的)在几百台计算机的群集上需要花费一到两周的时间才能完全扫描。 但是,在大多数情况下,我们专注于扫描子集,例如最近的样本或已经由我们的机器人标记的已知APT样本,这些过程可能花费几分钟到一两天不等。
您在PE Rich Header上使用匹配的经验是什么? (来自Axel)
好问题! 虽然从理论上讲pe模块可以用来创建与解密的Rich标头匹配的规则,但我们并没有在这个方向上深入开展。 但是,这是我们发现这跟针对冬季奥运会的Hades APT攻击及依赖于Lazarus样本的Rich标头的false标志相关。
有关管理YARA规则集合的一些最佳做法是什么? 是从网上收集规则以及还是最好内部制定规则?是否有专门用于维护此类集合的特定工具? 您只使用Git吗? (来自V)
嘿V,谢谢你的提问! 这确实是最棘手的事情之一,我不得不承认我还不知道一个完美的解决方案。 是的,市面上有一些YARA管理框架,但是我不能说特别喜欢其中的任何一个。 我确实为此目的使用了Git,但是我还缺少一个允许我一键搜索,编辑和运行它们的可视化界面。
如果在规则之前检查文件大小,速度会更快吗?(来自Damien)
这是个好问题。 根据Victor,条件是由决策树评估,因此顺序不一定是您在语法中输入的顺序。 老实说,我确实更喜欢将文件大小检查放在首位,也许是出于“迷信”的原因。
我的问题是: “5 of (\$b*)” 代表 “任何 5个 (\$b*)”还是 “第一个5个 ($b*)” (来自 Yerbol)
[注意]APP应用上架合规检测服务,协助应用顺利上架!
最后于 2020-4-20 09:34
被一壶葱茜编辑
,原因: