恶意代码分析基础技能表 - 图1

基础技能

汇编基础

  1. x86汇编
    x86汇编依旧是目前恶意代码分析中可执行文件的主流,属于恶意代码分析中最重要的基本功。关于x86汇编的学习途径有很多,个人推荐是王爽老师的《汇编语言》
    同时,论坛也有许多资料,比如https://bbs.pediy.com/thread-191802.htmhttps://bbs.pediy.com/thread-216825.htm 可利用论坛进行搜索学习。
    2. x64汇编
    随着计算机的发展,x64汇编势必会逐渐成为主流,相比x86汇编,x64多了一些寄存器和指令,相对来说会复杂一些,可先熟练掌握x86汇编再对x64进行学习。
    https://bbs.pediy.com/thread-43967.htm
    https://bbs.pediy.com/thread-44078.htm
    https://bbs.pediy.com/thread-206780.htm
    3. ARM汇编/MIPS汇编以及其他汇编
    对于恶意代码分析来说,x86-x64架构是主流,但诸如ARM、MIPS架构的恶意样本偶尔也会遇到,对于初学者来讲,这些架构不属于一上来就必须要掌握的范畴,但想要更上一层楼,这个技能点是必不可少的。

编程基础

在恶意代码分析的时候,常常会遇到由不同语言编写的恶意软件,想要对其进行详细分析,就需要”掌握”这门语言。其中,有的只需要能读,有的则需要能写。
1. C语言
2. C++
C++开发方向推荐《C++ Primer》
逆向方向推荐钱老师的《C++反汇编与逆向分析技术揭秘》
3. C#
由于C#强大的语言特性,越来越多的攻击者会选择使用C#样本作为Downloader或者loader。因此掌握C#的开发技术是非常重要的。虽然C#本身的语法并不复杂,但是却有着很多高级用法,分析一些比较高级的C#样本时,则需要对C#本身的一些特性有比较深刻的了解。

  1. python

  2. JavaScript
    JavaScript通常出现在webshell中,但在windows平台的恶意样本中也经常会看到。js脚本通常会结合其他的脚本文件出现在攻击的第一阶段,调试js脚本可通过浏览器F12自带的控制台。

    6. Powershell
    Powershell作为windows强大的命令行shell工具。从诞生开始就不断被攻击者用来执行恶意操作。在实际攻击中,Powershell通常用于下载或加载后续payload,起到一个承上启下的作用。

  3. VBS(VBA)
    VBS是基于Visual Basic的脚本语言。vbs脚本由wscript加载执行,VBA是嵌入在office宏中的VBS代码,需要依赖office执行。而带宏的office文档作为钓鱼界的常青树,宏代码的分析和调试尤为重要。

  4. autoit
    Autoit是一种类似BASIC的脚本语言,常用于自动化变成和批量管理。近年来也不断被攻击者利用编写恶意样本,比如南亚APT组织”白象”。

    编译器识别

    不同的编译器所生成的代码大相径庭。为了在分析的时候能够更快的定位到关键代码,避免分析到库函数或者框架中,我们需要熟悉不同编译器生成样本的结构,最简单的方法就是使用不同的编译器编译出样本,然后分别去分析,查找自己写的代码,久而久之,在遇到不同编译器生成的恶意样本时,就能快速定位到恶意代码了。

文件结构

pe文件结构

推荐《WindowsPE权威指南》
https://bbs.pediy.com/thread-121488.htm

elf文件结构

https://bbs.pediy.com/thread-261349.htm

office文档文件结构

推荐阅读:https://www.decalage.info/files/THC17_Lagadec_Macro_Pest_Control2.pdf

lnk文件结构

https://bbs.pediy.com/thread-260953.htm

常用红队框架

CobaltStrike

https://www.yuque.com/p1ut0/qtmgyx/aneyo7
https://www.yuque.com/p1ut0/qtmgyx/gsytex

msf

https://www.yuque.com/p1ut0/qtmgyx/ik3omh#YbxEP

VEil

https://www.yuque.com/p1ut0/qtmgyx/ik3omh#YbxEP

Empire

https://github.com/EmpireProject/Empire

威胁情报

通用威胁情报

商业木马

诸如AgentTesla、njrat、Remcosrat之类的商业远控/窃密木马是目前灰黑产的主力军。

网银木马

网银木马危害极大,更新迭代也很快,比较出名的有Emotet、Qbot、TrickBot等。出于利益的驱使,网银木马和勒索病毒通常比APT相关的样本更难对付。

勒索病毒

自从Lazarus搞出震惊全球的wannacry事件之后,全球范围内的勒索软件就没停过。勒索作为当今网络安全中面临的一个难题,本文中不做过多介绍,关于勒索推荐关注正正大佬的公众号:<安全分析与研究>

捆绑广告

国内外都有很多捆绑软件类型的恶意软件,这类软件比较烦人~ 有点打法律擦边球的感觉~~

威胁情报来源

笔者之前整理过一个常用的威胁情报来源
https://bbs.pediy.com/thread-265627.htm

https://www.yuque.com/p1ut0/qtmgyx/mcgn7i

威胁情报的来源是相当多的,作为个人而言,有限的精力不可能每天消化掉所有的资源,应该建立适合自己的数据处理体系,在众多数据中提取出有用的信息。

安全公司博客

对于初学者而言,安全公司博客是一个不错的情报来源。博客里的文章都是全球各大安全公司研究人员的心血,通过阅读和练习这些文章,可以有效的提升自己的技术水平和见识。

Twitter

Twitter也是一个不错的来源,很多安全研究员会在Twitter上分享自己最新捕获的样本和最新的研究结果。

Telegram

想要了解有些恶意软件是如何传播的?不然通过tg打人受害者内部,看看恶意软件都从哪儿来。

vt

vt应该是恶意代码分析过程中最直接、最丰富的数据来源,无论是对于个人用户还是企业用户,vt都发挥着至关重要的作用。

app.any.run

免费沙箱、开放了样本下载功能,目前应该是除VT以外最大的恶意样本来源。

bazaar

由个人用户运营的恶意样本共享站点。

高级威胁情报

高级威胁,也就是常说的APT。
笔者之前整理了部分活跃APT组织的公开情报(适合初学者)
https://www.yuque.com/p1ut0/qtmgyx/rgx9gk

推荐阅读红雨滴团队年报
https://ti.qianxin.com/uploads/2021/02/08/dd941ecf98c7cb9bf0111a8416131aa1.pdf

恶意代码检测

关于恶意代码检测,鼎力推荐rhett大佬的文章:https://zhuanlan.zhihu.com/p/352004681?utm_source=wechat_session&utm_medium=social&utm_oi=750822339549106176&s_r=0

样本hunt

捕获未知样本的主要来源是VT,主要规则是yara规则。笔者之前写过一个yara规则入门贴:https://www.yuque.com/p1ut0/qtmgyx/eubd9v
关于如何在VT上捕获样本,本文中不再赘述。

流量特征

如果说yara规则在样本hunt中发挥着重要作用,那么snort规则在实际的红蓝对抗和防御中占据着重要地位。
snort入门:https://www.anquanke.com/post/id/220539

机器学习

机器学习更多的情况下更像是用来查漏补缺,在恶意代码检测中,静态检测和动态检测还是占据了主导地位。关于机器学习,推荐《基于数据科学的恶意软件分析》

样本查杀

杀软引擎相关,进阶学习,此处不详细展开。

分析基础

网络协议

恶意软件常用的通信协议有Socket、udp、HTTP/HTTPS、DNS隧道等。协议分析在恶意代码分析中也是很重要的一部分。

密码学基础

在恶意代码分析中,遇到的比较多的数据编码方式是base64系列的,包括base64、base32、base16等。
https://bbs.pediy.com/thread-251117.htm

base64不算是加密算法,主要的加密算法还是DES、AES、RC4、xtea、rsa、rotr13和一些古典加密算法,除此之外,攻击者还可能会自定义一些简单的方法,这些方法主要就是通过位运算实现的。

常用工具

  • 反汇编工具
  • 调试工具
    • OD
    • x64dbg
    • windbg
    • dnspy
  • 行为检测工具
    • 火绒剑
    • systracer
    • Procmon
    • ……
  • 进程管理工具
    • PChunter
    • Procmon
    • 火绒剑
  • 文件格式分析工具
    • CFF Explorer
    • StudyPE
    • Winhex
    • 010Editor
  • 流量分析工具
    • wireshark
    • fakenet
    • tcpdump
    • BurpSuite
  • 基本分析流程
      1. 文件查壳,识别文件类型
      1. 行为检测,确认文件基本行为
      1. 静态分析,梳理样本大概结构
      1. 动态调试,复现样本完整功能
      1. 流量分析,提取样本通信协议
      1. 关联分析,溯源样本相关家族
      1. 流程分析,推演完整攻击流程

恶意代码常用技术

  • 常见恶意代码利用技术
    • 注入技术
      • 全局钩子注入
      • 远线程注入
      • 傀儡进程注入
      • APC注入
    • 持久化技术
      • 启动目录
        • 用户启动目录
        • 系统启动目录
      • 注册表持久化
        • Run
        • Runonce
        • Userinit
        • Load
        • AutoRun
        • 其他注册表键值
      • 计划任务
      • 服务持久化
      • 其他后门
    • 提权技术
      • BypassUAS
      • 漏洞提权
    • 启动技术
      • CreateProcess
      • CreateThread
      • Winexec
      • ShellExecute
      • 内存解密加载
    • 进程隐藏技术
      • 傀儡进程
      • dll劫持
      • 进程伪装
      • Hook ZwQuerySystemInformation实现进程隐藏
    • 信息收集技术
      • 文件遍历筛选
      • 桌面截屏
      • 音频录制
      • 账号密码窃取
      • u盘监控
      • 文件监控
      • 键盘监听
    • 痕迹清理
      • 样本自删除
    • 代码混淆技术
      • 公共壳
      • 私有壳
      • 花指令
      • 流程混淆
      • 其他
    • 反检测技术
      • 反沙箱
      • 反虚拟机
      • 反调试
        • 终止型反调试
        • 误导型反调试

恶意代码常见加载方式

    1. 邮件钓鱼
      • 附件为Office文档
        • 漏洞利用类型文档
        • 宏代码利用文档
      • 附件为lnk文件
        • lnk文件也通常起到一个下载功能
      • 附件为pe文件
        • 通常为C#类型的加载器或下载器
    1. 用户执行邮件附件
    1. 加载后续payload
      • 解码自身数据执行
      • 从C2下载解密执行
      • 从C2下载直接执行
      • 从第三方托管机构下载直接执行
      • 从第三方托管机构下载解密执行
    1. 实现对用户计算机的完全控制