Linux二进制分析

 




Preface(序言)

软件工程是一种创造发明的行为,该发明在微处理器上存在、生活并且呼吸。我们称它为程序(program)。逆向工程是发觉程序是如何生活和呼吸,以及如何理解、剖析或者修改程序行为,通过结合使用反汇编器和逆向工具并且依赖我们的黑客直觉来掌控我们正在逆向的目标程序。我们必须理解二进制格式、内存布局和给定处理器指令集的复杂性。我们因此成为微处理器上的程序的主人。一个逆向工程师对二进制控制艺术很娴熟。本书将为您提供成为Linux二进制黑客所需的合适的课程、视角和任务。当某人能称他们自己是一名逆向工程师时,他们晋升了他们自己,使其超出了仅仅的工程级别。一个真正的黑客不仅能写代码而且能通过解剖代码、反汇编二进制和内存段来修改程序的内部运作。这才力量。。。

从专业和业余爱好者的层级上,我都使用我的逆向工程技能在计算机安全领域,无论是漏洞分析,恶意软件分析,防病毒软件,rootkit检测或病毒设计。这本书的大部分将会聚焦在电脑安全。我们将分析内存转储、重构程序镜像、并且探索一些更晦涩难懂的二进制分析区域,包括Linux病毒传染和二进制取证。我们将解剖受感染的恶意软件并且感染正在运行的进程。本书旨在解释Linux中逆向工程的必要构件,所以我们将深入学习ELF(可执行并且可链接格式),这是Linux平台的可执行文件、共享库、核心转储文件、和目标文件的二进制格式。这本书的最重要的方面之一是它给出了ELF二进制格式结构复杂性的深刻见解。ELF剖面图、段、和动态链接原则是重要的并且令人兴奋的知识块。我们将探究到hacking ELF的深处,并且看看这些技能如何应用于广泛的工作。

这本书的目的是教你成为少数几个在Linux二进制hacking中有坚实基础的人之一,揭露出一个打开创新研究的大门的广大的话题,并且让你站在Linux系统low-level hacking的尖端。你将轻易获取到关于Linux二进制(和内存)patch、病毒工程/分析、内核取证,以及ELF二进制格式整体上的有价值的知识。您还将获得有关程序执行和动态链接的更多见解,并更好地了解二进制保护和内部调试。

我是一名电脑安全研究员、软件工程师、黑客。这本书仅仅是我做的研究的一个有组织的观察报告和文件,并且最终作为基本知识呈现出来。

这些知识涵盖了在互联网上任何一个地方都找不到的,大范围的信息。这本书试图把许多相互关联的主题集中在一起,以便它可以作为Linux二进制和内存hacking的介绍手册和参考。它绝不是一个完备的参考,但确实包含了很多刚开始上手时的核心信息。

 
What this book covers(涵盖)

第一章,       The Linux Environment and ItsTools

介绍Linux环境,以及本书中会用到的Linux平台的工具。

第二章,       The ELF Binary Format

帮助你学习Linux以及类Unix平台主流的二进制格式ELF。

第三章,       Linux Process Tracing

教你使用ptrace系统调用读写进程内存,并注入代码

第四章,       ELF Virus Technology –Linux/Unix Viruses

探索Linux病毒的从前,现在以及未来。Linux病毒是如何设计出来的,以及关于它们的惊人的研究。

第五章,       Linux Binary Protection

阐明ELF二进制保护的本质

第六章,       ELF Binary Forensics in Linux

通过解剖ELF对象,来发现病毒、后门以及可疑的代码注入。

第七章,       Process Memory Forensics

向你展示如何通过解剖进程的地址空间来发现恶意软件、后门以及在其内存中的可疑的代码注入。

第八章,       ECFS – Extended Core FileSnapshot Technology

对ECFS的简介,ECFS是一个开源的产品,用以对进程内存进行深度分析取证

第九章,       Linux /proc/kcore Analysis,

向你展示通过分析/proc/kcore来发现Linux内核恶意软件。

 

What you need for this book

阅读本书的前提条件如下:我们假设你已经知道如何使用Linux命令行开展工作、完备的C语言技能、和非常基础的x86汇编语言(很有帮助,但非必须)。有句话说,“如果你能读懂汇编语言,那么一切都是开源的”

 

Who this book is for(目标读者)

如果你是一名软件工程师或者逆向工程师并且想要学习Linux二进制分析,本书将会帮助你在安全、取证和反病毒领域实现解决方案时,提供一切必须。这本书非常适合安全爱好者和系统层(system-level)工程师。前提假设你已经有一些使用C语言和Linux命令行的经验。

 

Conventions(约定)

在这本书中,你会发现好几种文本样式用以区分不同种类的信息。这里是这些样式的一些例子和对他们的意义的解释。

文本中的代码,数据库表名,文件夹名,文件名,文件扩展名,路径名,虚拟URL,用户输入和Twitter句柄如下所示:“有七个节头,从偏移0x1118开始”。

代码段如下所示:

uint64_tinjection_code(void * vaddr)

{

volatilevoid *mem;

mem =evil_mmap(vaddr,

 8192,

 PROT_READ|PROT_WRITE|PROT_EXEC,

 MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS,

-1, 0);

__asm____volatile__("int3");

}

当我们希望让某些代码块引起你的注意时,相应的行或条目将被加粗:

0xb755a990] changed to [0x8048376]

[+] Patched GOT with PLT stubs

rebuilt ELF object frommemory

Output executable location: dumpme.out

[Quenya v0.1@ELFWorkshop]

quit

任何命令行的输入输出如下书写:

hacker@ELFWorkshop:~/

workshop/labs/exercise_9$./dumpme.out

 


Reader feedback(读者反馈)

非常欢迎读者们给我们反馈。让我们知道读者对本书的看法——你们喜欢什么和不喜欢什么。读者反馈对我们非常重要,它帮助我们开发出读者真正最想要的内容。

通过简单的e-mail到feedback@packtpub.com,向我们发送常规的反馈,并且在你的消息主题中注明书的章节。

如果你对某个论题有专业知识并且你有兴趣写作或者贡献到某本书中,请参阅我们的作者指南http://www.packtpub.com/authors

 

Customer support

现在你是Packt书的骄傲的拥有者,Packt能帮助您从购买中获得最大收益。

 

Downloading the example code

你能从https://www.packtpub.com/下载到任何你已经从Packt出版社购买的书籍的示例代码文件。如果你从其他地方购买了本书,你能通过访问https://www.packtpub.com/books/content/support并注册,以使将文件直接发送给你。

 

Errata(勘误)

尽管我们已经非常谨慎,以确保内容的准确性,但是差错还是会发生。如果你发现了我们书中的错误——或许是文本上的错误或者代码错误——如果你能向我们报告,我们将不胜感激。通过这样做,您可以避免其他读者感到挫败,并帮助我们改进本书的后续版本。如果您发现任何勘误,请通过访问http://www.packtpub.com/submit-errata 报告错误,选择您的图书,点击勘误提交表单链接,然后输入勘误的详细信息。一旦您的勘误表被核实,您的提交将被接受,勘误表将被上传到我们的网站或添加到该标题的勘误表部分下的任何现有勘误表。

要查看先前提交的勘误,请转到https://www.packtpub.com/books/content/support,并在搜索字段中输入图书的名称。所需信息将显示在勘误表下。

 

Piracy(剽窃)

互联网上通过各种媒介盗版资源是个经常性的问题。在Packt,我们非常重视我们的版权和许可的保护。如果您在互联网上发现我们作品的任何形式的非法副本,请立即向我们提供地理位置或者网站名称,以便我们能够寻求补救。

请附上涉嫌盗版的资源的链接,联系我们copyright@packtpub.com。

我们对你在保护作者以及保护我们能给你带来有价值内容的能力所做的帮助深表感谢。

 

Questions

如果您对本书的任何方面有问题,您可以与我们联系questions@packtpub.com,我们会尽力解决。

 

阅读更多
个人分类: 信息安全
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭