欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

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

来源:本站整理 作者:佚名 时间:2018-08-02 TAG: 我要投稿

许多人都问我是如何开始学习逆向以及成为病毒分析师的,有什么好的学习资料可以推荐等等这样的问题。为了解答大家的疑问,在本文中我将为初学者提供一些自己的学习经验以及一些实用的链接资源。逆向工程涉猎的范围非常的广泛,你可以针对各种平台各种类型的软件进行逆向,也可以对硬件进行逆向。但在本文中,我将主要关注Windows上恶意软件分析所需的技能。
工具 & 环境
为了避免感染自己的主机,首先我们需要准备一个安装了所有恶意软件分析所需工具的隔离虚拟环境,你可以在其中部署恶意软件样本并对其进行分析。更多细节请参阅:
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汇编的一些介绍教程。想要更深入的了解并掌握其它平台汇编,请参阅此免费书籍。
学习PE格式,我建议你阅读Matt Pietrek和Ange Albertini的相关文章(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/

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载