如何开始学习逆向以及分析恶意软件?

工具 & 环境

为了避免感染自己的主机,首先我们需要准备一个安装了所有恶意软件分析所需工具的隔离虚拟环境,你可以在其中部署恶意软件样本并对其进行分析。更多细节请参阅:

Malware analysis for N00bs – part 1: malware and the tools for its analysis (slides)

Malware Analysis Virtual Machine – by OALabs

Creating a Simple Free Malware Analysis Environment – by MalwareTech

Reviews of various tools for reverse engineering

工具学习

在日常的工作中你将会频繁的用到一些调试和反汇编工具,例如IDA,OllyDbg(或其某些衍生产品,如ImmunityDbg),x64dbg,以及非常实用先进的 WinDbg,虽然它的用户界面并不友好,但也非常值得大家去学习,但对于初学者而言我并不建议一开始就去接触它。以下是一些相关工具使用的指导课程:

Reversing with Lena151 – learn OllyDbg (虽然有点老了,但非常实用)

TiGa’s course on IDA ProS D

Introduction to WinDbg by Anand George

如何获取恶意软件样本,情 等?

如果你是一个初学者并且也不是任何 区的成员,那么你可以在这里免费找到精心分类且最新的恶意软件样本:

https://malwarebreakdown.com/

https://www.malware-traffic-analysis.net/

你还可以从一些免费在线沙箱和开放存储库中下载它们,例如:

http://www.malshare.com/

https://virusshare.com/

对于威胁情 ,有关爆发的信息,以及新鲜样本的哈希等,我建议你加入twitter并关注你熟悉的一些研究人员。

随着你变得熟练和上手,我建议你可以加入以下这个 区:

https://beta.virusbay.io/

练习

逆向是一种只有通过多学多练才能掌握的技能,因此我建议你直接开始练习。刚开始你可以按照练习说明逐步进行。

Beginner Malware Reversing Challenges (by Malware Tech)

Malwarebytes CrackMe #1 + tutorial

Malwarebytes CrackMe #2 + list of write-ups

https://crackmes.one/ – 各种crackmes帮助你练习逆向

你也可以阅读年度FlareOn挑战赛的文章。其中包含了各种难度层次的逆向工程任务,这对于提高你的能力有极大的帮助。

底层学习

逆向本地应用还需要你对一些底层概念有基本的了解。如果你专注于Windows恶意软件(就像我一样),那么你大部分的时间都会在处理PE文件。当你在调试器下观察应用程序时,你会以反汇编的形式看到它 – 转换为汇编语言(汇编程序)。因此,你知道的汇编程序,PE结构和操作系统越多,你就越容易理解。这里和这里是有关x86汇编的一些介绍教程。想要更深入的了解并掌握其它平台汇编,请参阅此免费书籍。

PE101, PE102)。使用PE-bear查看各种可执行文件,并将其与你阅读的格式进行比较。

基本代码理解

并非所有的恶意软件分析师都是熟练的程序员,但你需要掌握一些基本的技能,至少能够理解代码。你理解的越透彻,对你就越有利。如果你对代码编程足够熟悉,你甚至可以自己来编写一些工具来辅助你的分析任务。

https://www.malwaretech.com/2018/03/best-programming-languages-to-learn-for-malware-analysis.html

恶意软件解包

恶意软件通常都是打包的,为了分析核心,你必须从外部保护层打开它。

https://blog.malwarebytes.com/threat-analysis/2015/12/malware-crypters-the-deceptive-first-layer/

我的关于恶意软件解包的视频教程如下:

看不到?点这里

恶意软件注入方法

大多数恶意软件会在其他进程中注入代码。注入的一般目的是:伪装其他应用程序以及hooking。使用的方法各式各样,最流行的是Process Hollowing(又名RunPE)和Reflective DLL注入。

a walk-through various techniques (by Endgame)

ready-made demos of various techniques (source code)

Hooking

Hooking技术无论对安全软件还是恶意软件都是十分关键的一项技术,其本质就是劫持函数调用。例如:监控应用程序,拦截正在发送的数据等。另一方面,沙箱也使用相同的技术来监控恶意软件。

hooking是如何工作的:

“Inline Hooking for programmers” (by MalwareTech) – part #1 and part #2

一个简单的userland rootkit如何利用hooking:

https://blog.malwarebytes.com/threat-analysis/2016/12/simple-userland-rootkit-a-case-study/

内核模式恶意软件

大多数恶意软件都在userland中运行。但是,你可能也会不时碰到一些内核模式的恶意软件模块。对于这类恶意软件逆向起来非常困难,并且需要不同的环境设置。

设置用于在内核模式下分析恶意软件的环境,你可以遵循我在Windows内核利用实践中描述的步骤进行:

hshrzd.wordpress.com/2017/05/28/starting-with-windows-kernel-exploitation-part-1-setting-up-the-lab/

以下,是一个非常好的关于逆向内核的PDF文档推荐给大家:

http://www.sekoia.fr/blog/wp-content/uploads/2016/10/Rootkit-analysis-Use-case-on-HIDEDRV-v1.6.pdf

有关更多信息,请参阅:

https://resources.infosecinstitute.com/hooking-idt/

https://www.adlice.com/kernelmode-rootkits-part-1-ssdt-hooks/

https://www.adlice.com/kernelmode-rootkits-part-2-irp-hooks/

https://www.adlice.com/kernelmode-rootkits-part-3-kernel-filters/

课程

https://www.begin.re/– Reverse Engineering for beginners

Reverse Engineering Malware 101 and 102 – by MalwareUnicorn

http://legend.octopuslabs.io/sample-page.html

http://opensecuritytraining.info/Training.html

https://samsclass.info/126/126_S17.shtml – Practical Malware Analysis

YouTube 频道

Malware Analysis For Hedgehogs

OALabs

Colin’s channel about malware

my channel

Tips & ideas

“How to Become (and Remain) a Malware Researcher” – by Todd Cullum

“How to become the best Malware Analyst E-V-E-R” – by Hexacorn

“So You Want To Be A Malware Analyst” – by Adam Kujawa

如何获得一份恶意软件分析师的工作?

根据我的经验,最好的方法是在 区中做出贡献。积极主动开始自己的研究,并展现自己的热情,分享你学到的东西。在twitter上有一个非常友好的研究人员 区,它帮助我在这个领域找到了好几份工作。因此,如果你还没有加入,那么我强烈建议你加入到我们的队伍当中。

感谢大家的信任与支持!谢谢!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年7月2日
下一篇 2018年7月2日

相关推荐