最近一段时间,遇到不少朋友问我关于"恶意代码分析如何入门","应该哪些书","如何提升分析能力"之类的问题,断断续续回复了之后,我也思考了一些相关的内容,在这里整理成了一份《恶意代码分析基础技能表》分享给大家。主要是为刚刚开始学习恶意代码分析的同学一点点经验。
忙中难免出错,若文章有不对的地方希望各位大佬海涵。
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架构的恶意样本偶尔也会遇到,对于初学者来讲,这些架构不属于一上来就必须要掌握的范畴,但想要更上一层楼,这个技能点是必不可少的。
在恶意代码分析的时候,常常会遇到由不同语言编写的恶意软件,想要对其进行详细分析,就需要"掌握"这门语言。其中,有的只需要能读,有的则需要能写。
JavaScript
JavaScript通常出现在webshell中,但在windows平台的恶意样本中也经常会看到。js脚本通常会结合其他的脚本文件出现在攻击的第一阶段,调试js脚本可通过浏览器F12自带的控制台。
Powershell
Powershell作为windows强大的命令行shell工具。从诞生开始就不断被攻击者用来执行恶意操作。在实际攻击中,Powershell通常用于下载或加载后续payload,起到一个承上启下的作用。
不同的编译器所生成的代码大相径庭。为了在分析的时候能够更快的定位到关键代码,避免分析到库函数或者框架中,我们需要熟悉不同编译器生成样本的结构,最简单的方法就是使用不同的编译器编译出样本,然后分别去分析,查找自己写的代码,久而久之,在遇到不同编译器生成的恶意样本时,就能快速定位到恶意代码了。
推荐《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
https://bbs.pediy.com/thread-261349.htm
推荐阅读:https://www.decalage.info/files/THC17_Lagadec_Macro_Pest_Control2.pdf
https://bbs.pediy.com/thread-260953.htm
https://mp.weixin.qq.com/s/iTzZGKkXK48NR8YT1OTw_Q
https://www.yuque.com/p1ut0/qtmgyx/gsytex
https://www.yuque.com/p1ut0/qtmgyx/ik3omh#YbxEP
https://www.yuque.com/p1ut0/qtmgyx/ik3omh#YbxEP
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上分享自己最新捕获的样本和最新的研究结果。
想要了解有些恶意软件是如何传播的?不然通过tg打人受害者内部,看看恶意软件都从哪儿来。
vt应该是恶意代码分析过程中最直接、最丰富的数据来源,无论是对于个人用户还是企业用户,vt都发挥着至关重要的作用。
免费沙箱、开放了样本下载功能,目前应该是除VT以外最大的恶意样本来源。
由个人用户运营的恶意样本共享站点。
高级威胁,也就是常说的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
捕获未知样本的主要来源是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
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2021-2-27 17:01
被jux1a编辑
,原因: 重新上传图片附件