基础技能
汇编基础
- x86汇编
x86汇编依旧是目前恶意代码分析中可执行文件的主流,属于恶意代码分析中最重要的基本功。关于x86汇编的学习途径有很多,个人推荐是王爽老师的《汇编语言》
同时,论坛也有许多资料,比如https://bbs.pediy.com/thread-191802.htm,https://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#本身的一些特性有比较深刻的了解。
python
JavaScript
JavaScript通常出现在webshell中,但在windows平台的恶意样本中也经常会看到。js脚本通常会结合其他的脚本文件出现在攻击的第一阶段,调试js脚本可通过浏览器F12自带的控制台。
6. Powershell
Powershell作为windows强大的命令行shell工具。从诞生开始就不断被攻击者用来执行恶意操作。在实际攻击中,Powershell通常用于下载或加载后续payload,起到一个承上启下的作用。VBS(VBA)
VBS是基于Visual Basic的脚本语言。vbs脚本由wscript加载执行,VBA是嵌入在office宏中的VBS代码,需要依赖office执行。而带宏的office文档作为钓鱼界的常青树,宏代码的分析和调试尤为重要。autoit
Autoit是一种类似BASIC的脚本语言,常用于自动化变成和批量管理。近年来也不断被攻击者利用编写恶意样本,比如南亚APT组织”白象”。
编译器识别
不同的编译器所生成的代码大相径庭。为了在分析的时候能够更快的定位到关键代码,避免分析到库函数或者框架中,我们需要熟悉不同编译器生成样本的结构,最简单的方法就是使用不同的编译器编译出样本,然后分别去分析,查找自己写的代码,久而久之,在遇到不同编译器生成的恶意样本时,就能快速定位到恶意代码了。
文件结构
pe文件结构
推荐《WindowsPE权威指南》
https://bbs.pediy.com/thread-121488.htm
- 辅助工具
- Stud_PE
- LoadPE
- CFF Explorer
- EXEINFO
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上分享自己最新捕获的样本和最新的研究结果。
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和一些古典加密算法,除此之外,攻击者还可能会自定义一些简单的方法,这些方法主要就是通过位运算实现的。
常用工具
- 反汇编工具
- IDA
- 推荐17bdw大佬系列文章:https://www.cnblogs.com/17bdw/p/12239505.html
- IDA
- 调试工具
- OD
- x64dbg
- windbg
- dnspy
- 行为检测工具
- 火绒剑
- systracer
- Procmon
- ……
- 进程管理工具
- PChunter
- Procmon
- 火绒剑
- 文件格式分析工具
- CFF Explorer
- StudyPE
- Winhex
- 010Editor
- 流量分析工具
- wireshark
- fakenet
- tcpdump
- BurpSuite
- 基本分析流程
- 文件查壳,识别文件类型
- 行为检测,确认文件基本行为
- 静态分析,梳理样本大概结构
- 动态调试,复现样本完整功能
- 流量分析,提取样本通信协议
- 关联分析,溯源样本相关家族
- 流程分析,推演完整攻击流程
恶意代码常用技术
- 常见恶意代码利用技术
- 注入技术
- 全局钩子注入
- 远线程注入
- 傀儡进程注入
- APC注入
- 持久化技术
- 启动目录
- 用户启动目录
- 系统启动目录
- 注册表持久化
- Run
- Runonce
- Userinit
- Load
- AutoRun
- 其他注册表键值
- 计划任务
- 服务持久化
- 其他后门
- 启动目录
- 提权技术
- BypassUAS
- 漏洞提权
- 启动技术
- CreateProcess
- CreateThread
- Winexec
- ShellExecute
- 内存解密加载
- 进程隐藏技术
- 傀儡进程
- dll劫持
- 进程伪装
- Hook ZwQuerySystemInformation实现进程隐藏
- 信息收集技术
- 文件遍历筛选
- 桌面截屏
- 音频录制
- 账号密码窃取
- u盘监控
- 文件监控
- 键盘监听
- 痕迹清理
- 样本自删除
- 代码混淆技术
- 公共壳
- 私有壳
- 花指令
- 流程混淆
- 其他
- 反检测技术
- 反沙箱
- 反虚拟机
- 反调试
- 终止型反调试
- 误导型反调试
- 注入技术
恶意代码常见加载方式
- 邮件钓鱼
- 附件为Office文档
- 漏洞利用类型文档
- 宏代码利用文档
- 附件为lnk文件
- lnk文件也通常起到一个下载功能
- 附件为pe文件
- 通常为C#类型的加载器或下载器
- 附件为Office文档
- 邮件钓鱼
- 用户执行邮件附件
- 加载后续payload
- 解码自身数据执行
- 从C2下载解密执行
- 从C2下载直接执行
- 从第三方托管机构下载直接执行
- 从第三方托管机构下载解密执行
- 加载后续payload
- 实现对用户计算机的完全控制