首页
论坛
课程
招聘
[病毒木马] [原创] 分享一份恶意代码分析方向的基础技能表
2021-2-23 21:19 3519

[病毒木马] [原创] 分享一份恶意代码分析方向的基础技能表

2021-2-23 21:19
3519

概述

最近一段时间,遇到不少朋友问我关于"恶意代码分析如何入门","应该哪些书","如何提升分析能力"之类的问题,断断续续回复了之后,我也思考了一些相关的内容,在这里整理成了一份《恶意代码分析基础技能表》分享给大家。主要是为刚刚开始学习恶意代码分析的同学一点点经验。
忙中难免出错,若文章有不对的地方希望各位大佬海涵。

 

基础技能

汇编基础

  1. 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#本身的一些特性有比较深刻的了解。
  4. python
  5. JavaScript
    JavaScript通常出现在webshell中,但在windows平台的恶意样本中也经常会看到。js脚本通常会结合其他的脚本文件出现在攻击的第一阶段,调试js脚本可通过浏览器F12自带的控制台。

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

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

 

基本分析流程

  1. 文件查壳,识别文件类型
  2. 行为检测,确认文件基本行为
  3. 静态分析,梳理样本大概结构
  4. 动态调试,复现样本完整功能
  5. 流量分析,提取样本通信协议
  6. 关联分析,溯源样本相关家族
  7. 流程分析,推演完整攻击流程

恶意代码常用技术

常见恶意代码利用技术

注入技术

全局钩子注入
远线程注入
傀儡进程注入
APC注入

持久化技术

启动目录

用户启动目录
系统启动目录

注册表持久化

Run
Runonce
Userinit
Load
AutoRun

计划任务
服务持久化

提权技术

BypassUAC
漏洞提权

启动技术

CreateProcess
CreateThread
Winexec
ShellExecute
内存解密加载

进程隐藏技术

傀儡进程
dll劫持
进程伪装
Hook ZwQuerySystemInformation实现进程隐藏

信息收集技术

文件遍历筛选
桌面截屏
音频录制
账号密码窃取
u盘监控
文件监控
键盘监听

痕迹清理

样本自删除

代码混淆技术

公共壳
私有壳
花指令
流程混淆
其他

反检测技术

反沙箱
反虚拟机
反调试(终止型反调试 误导型反调试)

恶意代码常见加载方式

图片描述


看雪侠者千人榜,看看你上榜了吗?

最后于 5天前 被顾何编辑 ,原因: 重新上传图片附件
上传的附件:
收藏
点赞10
打赏
分享
最新回复 (14)
雪    币: 5235
活跃值: 活跃值 (3067)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
顾何 活跃值 8 2021-2-23 21:20
2
0
思维导图是在语雀创作的 https://www.yuque.com/p1ut0/qtmgyx/xwd9w0,转换为图片之后传上来可能有点模糊
雪    币: 5235
活跃值: 活跃值 (3067)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
顾何 活跃值 8 2021-2-23 21:30
3
0
最后,希望对逆向,或者威胁情报感兴趣的同学明白喜欢的<逆向>到底是什么。逆向并不是一个学科,只是一门技术。在此技术基础上,可以选择深耕软件破解、木马分析、漏洞挖掘、安全研发等多个方向。所以首先需要确定喜欢的的<逆向>属于哪一类,并花费一定的时间去了解和学习相关的知识。 提升分析能力最直接的方式就是不断的练习。目前网上已经有非常多完整的分析报告,在能下载到文章中样本的情况下,可以先独立对样本进行分析,分析之后对比自己的分析和原文作者的分析有何不同,进行查漏补缺。 只有先将分析能力提升起来,才能做更多有意义的事情。个人的一个小建议是可以尝试摒弃IDA的F5功能,尝试只阅读汇编代码试试看(别喷我这是回到石器时代~~),刚开始这样做是非常痛苦的,但对自身的成长和提升将会比上来就看F5代码要大的多。经过一行一行代码,一本一本书籍,一篇一篇笔记堆起来,自然就能水到渠成。
雪    币: 3054
活跃值: 活跃值 (3725)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 活跃值 8 2021-2-23 22:07
4
0
顾何 思维导图是在语雀创作的 https://www.yuque.com/p1ut0/qtmgyx/xwd9w0,转换为图片之后传上来可能有点模糊
感谢分享!
原图以附件形式再上传一份,附件图片不失真。
雪    币: 3917
活跃值: 活跃值 (572)
能力值: ( LV11,RANK:194 )
在线值:
发帖
回帖
粉丝
堂前燕 活跃值 1 2021-2-23 22:17
5
0
醍醐灌顶
雪    币: 5235
活跃值: 活跃值 (3067)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
顾何 活跃值 8 2021-2-23 22:19
6
0
kanxue 感谢分享! 原图以附件形式再上传一份,附件图片不失真。
感谢段老师提醒,原图已上传
雪    币: 5235
活跃值: 活跃值 (3067)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
顾何 活跃值 8 2021-2-23 22:19
7
0
堂前燕 醍醐灌顶[em_63]
感谢大佬肯定
雪    币: 0
活跃值: 活跃值 (247)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lookzo 活跃值 2021-2-24 08:33
8
0
感谢
雪    币: 4455
活跃值: 活跃值 (3898)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
SSH山水画 活跃值 1 2021-2-24 09:26
9
0
收藏=学会  进我收藏夹吃灰吧
雪    币: 2450
活跃值: 活跃值 (1980)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
1行 活跃值 1 2021-2-24 10:08
10
0
优秀,可以根据这个图来查缺补漏了
雪    币: 445
活跃值: 活跃值 (374)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
库尔 活跃值 2021-2-24 10:19
11
0
收藏=学会  进我收藏夹吃灰吧
雪    币: 7648
活跃值: 活跃值 (2995)
能力值: ( LV12,RANK:212 )
在线值:
发帖
回帖
粉丝
一半人生 活跃值 3 2021-2-24 11:11
12
0
感谢整理
雪    币: 51
活跃值: 活跃值 (50)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Esc 活跃值 2021-2-24 15:43
13
0
雪    币: 321
活跃值: 活跃值 (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dragonvc 活跃值 2021-2-24 20:33
14
0
查漏补缺
雪    币: 562
活跃值: 活跃值 (106)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
miaostart 活跃值 2021-2-26 09:08
15
0
非常用,感谢分享!
游客
登录 | 注册 方可回帖
返回