Mastering Malware Analysis Chapter 1

只记录想记录的,一些熟练的就不记录了~ ~ ~
CTI:Cyber Threat Intelligence

IoCs: Indicator of Compromise

IoAs: Indicators of Attack

NDRs: Network Detection Responses

为什么分析恶意软件

恶意软件分析在事件响应中

攻击发生—>取证—>发现malware–>分析

  1. 发现所有的IoCs
  2. 理解Payload的能力
  3. 解密和理解在malware和attacker之间的网络流量

为了达到大的覆盖范围,基于Windows的恶意软件仍然是最盛行的(因为它常用),再就是Android, IoT

探索恶意软件类型

恶意软件种类

恶意软件的种类通常由他的影响或传播方法定义。下面是常用的例子

  1. Trojan: 最常见的恶意软件种类,在用户不知情的环境中执行恶意活动,得名于传说中征服特洛伊城的特洛伊木马。

    1. Downloader:下载执行外部的payload
    2. Dropper: 在这里额外的payload不是下载的,而是从Trojan的主体中释放出来的
    3. Backdoor, 被称为Remote Access Trojan(RAT): 在这里,恶意软件可以接受远程命令来表现一些行为
    4. Ransomware, 勒索病毒
    5. Infostealer, aka Password Stealer(PWS): ​窃取信息
    6. Spyware:范围相比Infostealer更广泛,可能包含视频,音频录制或者GPS跟踪等
    7. Banker: 应该是属于Infostealer的范畴,但是他目的更窄,然后潜在的功能范围大,在这里,恶意软件可能非常专注于获取资金,因此它也可以支持拦截银行发送的一次性令牌,作为双因素身two-factor authentication(2FA)的一部分。修改财务信息以重定向支付,或注入脚本以拦截输入的银行凭证。
    8. Dos: Denial of Service (DoS),目的是使目标系统或服务不能用
    9. Wiper: 在这里,恶意软件被用来删除对系统操作敏感或关键的信息,使其成为DoS攻击的另一个工具。
    10. DDos: Distributed Denial of Service (DDoS) 大量的bots通过网络攻击受害者
    11. Spammer, aka spambo: 代表受害者发送垃圾邮件
    12. Clicker:在这里,攻击者可以模拟真实的用户点击,从广告,搜索引擎中毒,或推广虚假账户中获得资金。
    13. Miner:挖矿
    14. Packed: 与实际的威胁无关,这个名称的意思就是这个样本被恶意保护起来了
    15. Injector: 用到了注入
  2. Worm: ​可以在不同机器间自我传播

  3. **Virus:**与机器间传播的蠕虫不同,文件感染程序的主要目标是通过感染其他可执行文件和文档在当前系统内传播。在这种情况下,当受害者打开/启动合法文件时,控制权也会交给恶意代码。它的使用方式有多种,从实际将恶意代码和数据写入可执行文件,到向文档添加宏模板,再到简单地用受害者文件的主体替换受害者文件,并将原始文件的副本存储在其他地方以供以后执行。

  4. Rootkit: 之前用来定义提升权限的工具,现在常用定义威胁,这些威胁要么用来隐藏其它威胁,要么只是在内核模式下操作。

  5. Bootkie: 这些威胁会将自己插入到引导过程中,从而在操作系统之前获得访问权限。

  6. Exploit: 利用漏洞

  7. FakeAV: 这类威胁向用户显示各种关于其系统据称存在的关键问题的警告,并强烈要求用户购买“完整版本”来修复它。

  8. Hoax: 吓唬用户不存在的问题

  9. PUAs: 指潜在的不想要的应用程序,比如在后台悄悄的安装并不需要的软件

  10. Adware: 广告

  11. Hacktool: ​很大类别,涉及攻击者和网络安全人员都可以使用的很多工具,例如用于红队目的的

  12. Dual-use tools: 攻击者和合法用户都可以使用的工具,比如Sysinternals的psexec工具

命名规范

没有统一的标准,通常检测名字包含目标平台,恶意软件种类和家族,有时候也包含版本和检测技术

下面是基于VirusTotal对恶意样本 9e0a15a4318e3e788bad61398b8a40d4916d63ab27b47f3bdbe329c462193600​的不同命名

  • Avast: ELF:CVE-2017-17215-A [Expl]
  • DrWeb: Linux.Packed.1037
  • Kaspersky Lab: HEUR:Backdoor.Linux.Mirai.b
  • Microsoft: Trojan:Win32/Ceevee
  • Sophos: Linux/DDoS-CI
  • Symantec: Trojan.Gen.NPE

MITRE ATT&CK框架解释

全称为 Adversarial Tactics, Techniques, and Common Knowledge

正如我们之前提到的,不同的网络安全供应商通常给黑客组织和恶意软件家族起不同的名字。因此,知识交流变得更加复杂,最终影响了社区的绩效。MITRE ATT&CK框架的创建就是为了解决这个问题和其他类似的问题,并让安全专家使用相同的语言。这是一个与供应商无关的全球知识库,它将各种攻击技术分组为战术,还提供了攻击者和恶意软件使用它们的示例,并为这些战术提供了广泛接受的名称。

基本的术语

Tactic: 表示攻击者的高级目标,执行相应动作的原因

Technique: 实现高级目标的具体实现方法

Sub-technique: 一个关于某个操作具体执行更细节的描述

Procedure: technique和sub-technique的具体实现

TTPs:代表Tactic、Technique和Procedure对攻击者使用的方法进行总结,并解释利用这些方法可以达到什么目的

Group: 代表一组相关的对抗活动,可能由在这个名字下面的已知的一个单独的实体执行^(不明白啥意思。。。 )^

Mitigation: 为了规避和预防攻击的技术和概念

Software:用来执行敌手行动的代码,有公开的获得工具和恶意软件结合

Matrix: 与特定行业相关的TTP的组合

这个框架下有很多Matrix,企业的,ICSs(Industrial Control Systems), 和移动端,最常使用的是企业Matrix

企业Matrix

目前,企业框架定义了下面的tactics

  1. Reconnaissance: 勘察,这个阶段涉及到收集关于受害者的相关信息,比如一些组织的基础设施和人员
  2. Resource development: 在这里,攻击者根据收集到的信息建立所有必需的依赖关系。这可以通过各种方式实现:购买/租用、创建或窃取先决条件(例如,主机或软件)
  3. Initial access: 在这里,攻击者尝试在受害者的环境中建立一个据点,最常见的例子就是钓鱼邮件
  4. Execution: 这里,攻击者执行任何种类的代码来实现目标
  5. Persistence: 比如SSH
  6. Privilege escalation: 高权限可以更多控制
  7. Defence evasion: 主要目标是隐藏不被发现
  8. Credential access: 这个策略包括窃取凭据以便以后的使用,比如最常见的一些技术涉及dump保存的凭据并拦截,例如通过记录按下的键
  9. Discovcery: 攻击者收集通过网络和当地的系统收集受害者环境的内部信息,以便于促进其他的策略,比如横向移动
  10. Lateral movement: 攻击者开始传播到其他的机器直到遇到感兴趣的。
  11. Collection: 收集感兴趣的信息
  12. Command and control: 这种策略涵盖了攻击者可能与受损系统远程通信的各种方式。
  13. Exfiltration: 将敏感信息移出受威胁的环境
  14. Impact: 最终,这个策略用来藐视攻击者可能对妥协系统带来消极影响的其他方式,比如操作,中断或者破坏关键的系统和数据。

STIX(Structured Threat Information Expression) 用来交换IoCs, 版本1是XML格式,版本2是JSON格式,

APT and zero-day attacks and fileless malware

APT: 高级可持续性威胁

Zero-day: 之前不知道的漏洞

Fileless malware: 无文件攻击,利用脚本命令

选择分析策略

理解受众

获取结果的用户不同,行动的成果可能是非常不同的

  • Threat intelligence: 获取IoCs,如哈希值、文件名和网络构件,因此,提取嵌入式有效载荷和下载远程样本,以及寻找其他相关模块,并从所有这些模块中提取C&C信息,可能将成为首要任务。
  • AV detection: 创建一个不会产生误报的检测,比如于恶意功能相关的字符串或代码片段以及使用的自定义的加密算法。理解主要逻辑将有助于选择正确的类别,代码和数据相似性将有助于分配恶意软件家族。
  • Technical article or conference presentation: 在这里,最重要的部分将是与功能、与其他恶意软件家族的相似性以及参与者属性相关的有趣的新技术细节。
  • Article for the general public: 对于非技术人员,通常只提供功能的高级描述,而不提供许多技术细节,主要关注影响。

回答受众的问题

定义目标

避免不必要的技术细节

  1. 根据目标受众选择所需的细节级别
  2. 如果某些事实对读者没有帮助,避免详细阐述
  3. 不要只提到技术细节——解释它们的高级目的以及为什么攻击者必须明确地使用它们

典型的工作流

我们怎样组织我们的工作以及时地产生尽可能好的结果?

  1. Triage: 收集样本中容易获得的大量的信息:

    • 分析PE头
    • 检查这个样本是否可能被加壳
    • 检查公共资源中已知的IoCs(哈希值,网络组建,AV检测名字等)
  2. 行为分析:大部分信息将从文件、注册表和网络操作中获得。这样,我们就会对潜在样本的能力有一个概念。

  3. 脱壳:如果不脱壳没法进行静态分析,当然有的样本可能没有加壳

  4. 静态分析:在反汇编器和反编译器打的帮助下进行,从可用的字符串和常被误用的winapi开始。

  5. 动态分析:在调试器的帮助下进行,设置和执行可能很expensicve,所以只在需要的时候使用它。

    • 确认某些功能
    • 处理字符串/API/嵌入的payload/通信加密