概述
最近一段时间,遇到不少朋友问我关于"恶意代码分析如何入门","应该哪些书","如何提升分析能力"之类的问题,断断续续回复了之后,我也思考了一些相关的内容,在这里整理成了一份《恶意代码分析基础技能表》分享给大家。主要是为刚刚开始学习恶意代码分析的同学一点点经验。
忙中难免出错,若文章有不对的地方希望各位大佬海涵。
基础技能
汇编基础
x86汇编
x86汇编依旧是目前恶意代码分析中可执行文件的主流,属于恶意代码分析中最重要的基本功。关于x86汇编的学习途径有很多,个人推荐是王爽老师的《汇编语言》
同时,论坛也有许多资料,比如https://bbs.pediy.com/thread-191802.htm,https://bbs.pediy.com/thread-216825.htm 可利用论坛进行搜索学习。
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
ARM汇编/MIPS汇编以及其他汇编
对于恶意代码分析来说,x86-x64架构是主流,但诸如ARM、MIPS架构的恶意样本偶尔也会遇到,对于初学者来讲,这些架构不属于一上来就必须要掌握的范畴,但想要更上一层楼,这个技能点是必不可少的。
编程基础
在恶意代码分析的时候,常常会遇到由不同语言编写的恶意软件,想要对其进行详细分析,就需要"掌握"这门语言。其中,有的只需要能读,有的则需要能写。
- C语言
- C++
C++开发方向推荐《C++ Primer》
逆向方向推荐钱老师的《C++反汇编与逆向分析技术揭秘》
- C#
由于C#强大的语言特性,越来越多的攻击者会选择使用C#样本作为Downloader或者loader。因此掌握C#的开发技术是非常重要的。虽然C#本身的语法并不复杂,但是却有着很多高级用法,分析一些比较高级的C#样本时,则需要对C#本身的一些特性有比较深刻的了解。
- python
JavaScript
JavaScript通常出现在webshell中,但在windows平台的恶意样本中也经常会看到。js脚本通常会结合其他的脚本文件出现在攻击的第一阶段,调试js脚本可通过浏览器F12自带的控制台。
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
v2.6.0.5 https://bbs.pediy.com/thread-125638.htm
LoadPE
工具下载:https://bbs.pediy.com/thread-161746.htm
练习文章:https://bbs.pediy.com/thread-77120.htm
CFF Explorer
原版下载: https://tool.pediy.com/index-detail-165.htm
坛友改进:https://bbs.pediy.com/thread-94129.htm
EXEINFO
0.0.5.7 B https://bbs.pediy.com/thread-257082.htm
0.0.5.2 https://bbs.pediy.com/thread-249128.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://mp.weixin.qq.com/s/iTzZGKkXK48NR8YT1OTw_Q
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之类的商业远控/窃密木马是目前灰黑产的主力军。
https://mp.weixin.qq.com/s/esL5BWuVwI8_ZZdKANUGFg
网银木马
网银木马危害极大,更新迭代也很快,比较出名的有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、FTP、SMTP、HTTP/HTTPS、DNS隧道等。在APT的攻击事件中,攻击者通常会通过构造特殊的请求包与C2通信以免出现异常流量。而在黑灰产样本中,特别是像AgentTesla之类的饿商业木马,更青睐使用第三方的免费邮件服务器来接收客户端上传的数据。这样做的好处是不用考虑ip和域名的成本,并且增加了溯源难度。
密码学基础
在恶意代码分析中,遇到的比较多的数据编码方式是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
调试工具
OD
x64dbg
windbg
dnspy
行为检测工具
火绒剑
systracer
Procmon
......
进程管理工具
PChunter
Procmon
火绒剑
文件格式分析工具
CFF Explorer
StudyPE
Winhex
010Editor
流量分析工具
wireshark
fakenet
tcpdump
BurpSuite
基本分析流程
- 文件查壳,识别文件类型
- 行为检测,确认文件基本行为
- 静态分析,梳理样本大概结构
- 动态调试,复现样本完整功能
- 流量分析,提取样本通信协议
- 关联分析,溯源样本相关家族
- 流程分析,推演完整攻击流程
恶意代码常用技术
常见恶意代码利用技术
注入技术
全局钩子注入
远线程注入
傀儡进程注入
APC注入
持久化技术
启动目录
用户启动目录
系统启动目录
注册表持久化
Run
Runonce
Userinit
Load
AutoRun
计划任务
服务持久化
提权技术
BypassUAC
漏洞提权
启动技术
CreateProcess
CreateThread
Winexec
ShellExecute
内存解密加载
进程隐藏技术
傀儡进程
dll劫持
进程伪装
Hook ZwQuerySystemInformation实现进程隐藏
信息收集技术
文件遍历筛选
桌面截屏
音频录制
账号密码窃取
u盘监控
文件监控
键盘监听
痕迹清理
样本自删除
代码混淆技术
公共壳
私有壳
花指令
流程混淆
其他
反检测技术
反沙箱
反虚拟机
反调试(终止型反调试 误导型反调试)
恶意代码常见加载方式
[培训]内核驱动高级班,冲击BAT一流互联网大厂工
作,每周日13:00-18:00直播授课
最后于 2021-2-27 17:01
被jux1a编辑
,原因: 重新上传图片附件