怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属

申博_安全防护 申博 25次浏览 已收录 0个评论

概述

本文重要引见了怎样运用YARA划定规矩来寻觅DoppelPaymer、BitPaymer和Dridex加载顺序等歹意软件家属。

媒介

无论是寻觅歹意软件,照样发明用于要挟谍报的APT,每当我们讨论到怎样主动发明想要寻觅的歹意软件时,都邑联想到YARA这把“瑞士军刀”。借助YARA划定规矩,每每会使歹意软件研讨人员和要挟谍报剖析的事情越发轻松。

关于歹意软件开发人员来讲,其事情历程就像是正当软件的开发人员,他们每每愿望能提拔事情自动化的水平,并尽量削减在反复性事情中糟蹋的时候。这也就意味着,歹意软件开发者会进修其他歹意软件的代码,编写通用代码并在差别的歹意软件中反复运用。如许的体式格局,不仅能削减歹意软件作者开发所需的时候,也为平安研讨人员供应了一个有力的线索。我们能够尝试建立搜刮划定规矩来检测这类代码重用的状况,从而下降研讨所需消费的时候本钱。在这篇文章中,我们细致申明怎样为Dridex歹意软件家属中的三个歹意软件变种编写YARA划定规矩,这三个歹意软件变种分别是:

1、Everis讹诈事宜中运用的BitPaymer讹诈软件(称为“wp_encrypt”);

2、PEMEX讹诈事宜中运用的DoppelPaymer讹诈软件;

3、Dridex加载顺序(称为“ldr”),僵尸收集ID 23005。

简而言之,我们的目标是应用代码重用对应的YARA划定规矩,而不是依赖于轻易被攻击者轻松修改的字符串划定规矩来寻觅雷同歹意软件开发人员开发的代码。

最入手下手,YARA划定规矩的重要目标是对歹意软件样本举行分类和辨认。这是一种异常简朴的基于Ruby言语的语法,用于形貌种种形式。

YARA的最新版本是3.11.0。YARA是一个基于署名的东西,具有支撑种种编程言语的多种敕令行界面。换而言之,YARA与用于检测歹意文件的静态反病毒署名相相似。

YARA的重要功能是扫描文件夹中的文件,并扫描缓冲区中的形式。有很多东西都依赖于YARA,比方yarashop。

对我们而言,运用YARA的最常见场景,就是依据代码和字符串重用,对想要深入调查的歹意软件样本举行扫描、分类和辨认。

典范的YARA语法示比方下:

import <module>
 
<rule type> rule <rule name> : <tags>
{
    meta:
        <name> = "<value>"
        ...
    strings:
        $<string name> = <value> <modifiers>
        ...
    condition:
        <some condition>
}

我们尝试为Zero2Hero编写YARA划定规矩:

/*
 
We practice writing YARA rules for Zero2Hero
 
*/
 
import "pe"
 
rule zero2hero_course : best
{
    meta:
        // Comment
        description = "This is an example rule to demonstrate typical syntax"
        reference = "https://www.sentinelone.com/lp/zero2hero"
        author = "@VK_Intel"
        tlp = "white"
 
    strings:
        $hero = "helloworld" xor wide
        $unique_function = { ?? ?? 8b fa 8b ?? 8b cf e8 ?? ?? ?? ?? 85 c0 75 ?? 81 ?? }
 
    condition:
        uint16(0) == 0x5A4D and pe.exports("CryptEncrypt") and  all of them
}

厥后面的修饰符(modifiers),有以下几个选项:

· global:在任何后续划定规矩之前婚配;

· private:建立其他划定规矩;

· none:除非运用global,不然婚配。

能够运用的标签(tag)以下:

· strings:正则表达式,文本或十六进制;

· string modifiers:wide、ascii、xor、fullword、nocase。

能够运用的前提(condition)以下:

· 布尔表达式;

· 内置、外部、模块变量、函数。

YARA字符串&发明代码重用的历程

用于寻觅歹意软件的YARA划定规矩与用于检测歹意软件的YARA划定规矩比拟是存在一些区分的。在本章的研讨中,我们会生成一些前提更加宽松的YARA划定规矩,以用于发明要挟,尝试捕获到新的变种(个中也大概会包含一些误报)。在其他一些场景中,我们大概会愿望在特定的检测机制中,或针对特定的歹意软件,运用更加严厉的YARA划定规矩。

整体来讲,YARA划定规矩的效果是由生成YARA划定规矩的数据源质量来决议的。反病毒研讨人员和歹意软件研讨人员须要依赖于大批已知样本(包含正当样本、歹意样本)的数据集来生成最具保真度的划定规矩,斟酌到单一某位研讨人员的视野有限,一般很难展望YARA划定规矩的机能。

有关YARA划定规矩的一些歹意/正当数据泉源,能够参考VirusTotal、Hybrid-Analysis、VirusBay、Malpedia、Microsoft和VirusShare。Florian Roth开发的东西yarGen中还包含一些必要的字符串和操作码数据集,以用于YARA机能搜检。用于YARA划定规矩治理的另一个精彩东西,是由卡巴斯基开发的KLara东西。

要想设想出胜利的YARA划定规矩,须要将基于字符串的检测与基于代码的检测相结合。我们以为,要生成有用的YARA划定规矩的,其关键在于选用简朴而清楚的划定规矩集,并综合斟酌上述两者。我强烈推荐人人寓目Jay Rosenberg在2019年Confidence Conference上的演讲,其主题是“应用YARA检测不断发展的歹意软件”(Utilizing YARA to Find Evolving Malware)。

在建立代码重用YARA划定规矩时,我们须要斟酌编译标志、差别的编译器及代码略有修改的状况,歹意软件作者大概会对代码举行修改,而这一修改有大概就会破坏掉YARA划定规矩。因而,我们应当对某些字段运用通配符,比方运用的寄存器,由于这些内容在差别样本中大概会不一样。

举例来讲,诸如xor eax之类的种种指令,会依据xor的寄存器发生差别的操作码。为了使编译器能延续有用,同时使YARA划定规矩涵盖差别的环境,一般须要将“[1-2]”操作码从1字节变成2字节。

YARA划定规矩开发的周期,本质上能够归结为以下的7个步骤:

1、对歹意软件举行剖析;

2、辨认歹意软件字符串和代码的“唯一性”;

从头开始了解和使用Hypervisor(第3部分)

从头开始了解和使用Hypervisor(第1部分) 从头开始了解和使用Hypervisor(第2部分) 虚拟机器控制数据结构(VMCS) 逻辑处理器在VMX操作中时会使用虚拟机控制数据结构(VMCS),它们管理进出VMX非根操作(VM项和VM出口)的转换,以及VMX非根操作中的处理器行为,该结构由新指令VMCLEAR,VMPTRLD,VMREAD和VMWRITE操作。 上图演示了VMCS区域上的生命周期VMX操作。 初始化VMCS区域 VMM可以使用不同的VMCS区域,因此你需要设置逻辑处理器关联性并多次运行初始化例程。 VMCS所在的位置称为“VMCS区域”。 VMCS区域的特点如下: 1、4 KB(位11:0必须为零); 2、必须与4KB边界对齐 该指针不得设置超出处理器物理地址宽度的位,软件可以通过在EAX中执行80000008H执行CPUID来确定处理器的物理地址宽度,物理地址宽度以EAX的7:0位返回。 处

3、依据剖析效果,制造YARA划定规矩的原型;

4、在种种歹意软件家属、正当软件、歹意软件数据源中,测试YARA划定规矩原型;

5、布置划定规矩,发明别的样本;

6、在测试阶段和最入手下手的歹意软件剖析阶段中,检测并监控大概发生的误报或漏报;

7、反复这一轮回。

现实歹意软件代码重用案例:Dridex歹意软件家属

停止现在,Dridex是收集平安范畴中最庞杂、剖析难度最大的歹意软件之一。

该歹意软件也曾被一些研讨人员命名为“Bugat”和“Cridex”。最初的Bugat歹意软件能够追溯到2010年,这一点以至能够和“Zeus”银行歹意软件相媲美。

其背地的歹意开发团队开发过三种差别的歹意软件变种,这也是我们在建立YARA时的重要研讨目标,这三个歹意软件变种分别是:

1、Everis讹诈事宜中运用的BitPaymer讹诈软件(称为“wp_encrypt”);

2、PEMEX讹诈事宜中运用的DoppelPaymer讹诈软件;

3、Dridex加载顺序(称为“ldr”),僵尸收集ID 23005。

怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属

在Dridex开发者重用的代码中,最为典范的一个示例就是用于剖析Windows API挪用的奇特API哈希函数。这是该歹意软件家属最为显著的特性之一。

基于API哈希函数(如上图所示),能够借助这个YARA划定规矩,根据以下体式格局来形貌Dridex开发者开发的歹意软件:

rule dridex_family
{
    strings:
        $code = { 5? 5? 8b fa 8b ?? 8b cf e8 ?? ?? ?? ?? 85 c0 75 ?? 81 ?? ?? ?? ?? ?? 7? ?? }
 
    condition:
        $code
}

我们对该划定规矩举行测试,能够输入以下敕令行敕令:

yara -s <rule_name> <malware_location>

经由过程对YARA划定规矩举行测试,能够发明文件夹中有多个Dridex家属歹意软件婚配该划定规矩。

怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属

将代码重用与字符串检测相结合

1、DoppelPaymer讹诈软件中,包含一些在Dridex歹意软件家属的差别样本中都反复运用的特别字符串。这些歹意软件经由过程lstrcpyW API挪用,将Unicode字符串“setup run\n”复制到eax。

基于此,我们能够设想一个特定的DoppelPaymer讹诈软件检测划定规矩:

怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属

rule crime_win32_ransomware_doppelpaymer_1
{
    strings:
        $str1 = "Setup run\n" wide
        $code = { 5? 5? 8b fa 8b ?? 8b cf e8 ?? ?? ?? ?? 85 c0 75 ?? 81 ?? ?? ?? ?? ?? 7? ??}
 
    condition:
        $code and $str1
}

2、在BitPaymer讹诈软件的差别样本中包含雷同的援用字符串,其作用是用于匹敌Windows Defender的标志,歹意软件会搜检“C:\\aaa_TouchMeNot_.txt”文件是不是存在,该文件用于指导Windows Defender沙箱运动。

基于此,我们能够设想一个特定的BitPaymer讹诈软件检测划定规矩:

怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属

rule crime_win32_ransomware_bitpaymer_1
{
    strings:
        $str1 = "C:\\aaa_TouchMeNot_.txt" wide
        $code = { 5? 5? 8b fa 8b ?? 8b cf e8 ?? ?? ?? ?? 85 c0 75 ?? 81 ?? ?? ?? ?? ?? 7? ??}
 
    condition:
        $code and $str1
}

3、在Dridex加载顺序示例中,该歹意软件运用OutputDebugStringW屡次挪用雷同的字符串“installed”,该字符串能够表明Dridex加载东西的存在。

基于此,我们能够设想一个特定的Dridex加载东西检测划定规矩:

怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属

rule crime_win32_loader_dridex_1
{
    strings:
        $str1 = "installed" wide
        $code = { 5? 5? 8b fa 8b ?? 8b cf e8 ?? ?? ?? ?? 85 c0 75 ?? 81 ?? ?? ?? ?? ?? 7? ??}
    condition:
        $code and $str1
}

我们末了生成的YARA划定规矩,涵盖了DoppelPaymer讹诈软件未加壳Payload的代码和字符串,以下所示:

rule crime_win32_doppelpaymer_ransomware_1
{
    meta:
        description = "Detects DoppelPaymer payload Nov 11 Signed"
        author = "@VK_Intel"
        reference = "https://twitter.com/VK_Intel/status/1193937831766429696"
        date = "2019-11-11"
        hash1 = "46254a390027a1708f6951f8af3da13d033dee9a71a4ee75f257087218676dd5"
 
    strings:
        $s1 = "Setup run" wide
        $hash_function = { 5? 5? 8b fa 8b ?? 8b cf e8 ?? ?? ?? ?? 85 c0 75 ?? 81 ?? ?? ?? ?? ?? 7? ??}
 
    condition:
        ( uint16(0) == 0x5a4d and
            filesize < 2500KB and
            ( all of them )
        )
}

歹意软件样本

DoppelPaymer讹诈软件(未加壳)SHA-256:

46254a390027a1708f6951f8af3da13d033dee9a71a4ee75f257087218676dd5

BitPaymer讹诈软件(未加壳)SHA-256:

78e180e5765aa7f4b89d6bcd9bcef1dd1e0d0261ad0f9c3ec6ab0635bf494eb3

Dridex银行木马(未加壳)SHA-256:

ce509469b80b97e857bcd80efffc448a8d6c63f33374a43e4f04f526278a2c41

本文翻译自:https://www.sentinelone.com/blog/yara-hunting-for-code-reuse-doppelpaymer-ransomware-dridex-families/


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明怎样设想YARA划定规矩发明代码重用:DoppelPaymer讹诈软件和Dridex歹意软件家属
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址