神操作:教你用Python识别恶意软件

本文介绍了静态分析技术在恶意软件分析中的应用,帮助理解恶意软件的运作原理。通过解析PE文件格式,理解Windows可执行文件结构,以及使用Python的pefile库,可以提取PE文件中的节信息,如入口点、资源、导入表等。静态分析能揭示恶意软件的潜在功能,例如发现恶意软件可能的HTTP服务器和下载行为,为安全防护提供线索。
摘要由CSDN通过智能技术生成


导读:本文将利用静态分析技术揭示这些恶意软件的功能。

作者:约书亚·萨克斯(Joshua Saxe)、希拉里·桑德斯(Hillary Sanders)

来源:大数据DT(ID:hzdashuju)

在本文中,我们将介绍恶意软件静态分析的基础知识。静态分析是对程序文件的反汇编代码、图形图像、可打印字符串和其他磁盘资源进行分析,是一种不需要实际运行程序的逆向工程。虽然静态分析技术有欠缺之处,但是它可以帮助我们理解各种各样的恶意软件。

通过细致的逆向工程,你将能够更好地理解恶意软件二进制文件在攻击目标后为攻击者提供的好处,以及攻击者可以隐藏并继续攻击受感染计算机的方式。正如你将看到的,本文结合了描述和实例,每个部分都介绍了静态分析技术,然后说明其在实际分析中的应用。

本文的代码和数据,可以在公众号后台回复恶意软件获取下载方式。你将在数据目录/ch1中找到本文示例中使用的恶意软件示例。为了演示本文讨论的技术,我们在演示中使用ircbot.exe,这是一个互联网中继聊天(Internet Relay Chat,IRC)机器人,也在日常广泛监测中最常见的恶意软件的示例之一。

严格来说,当连接到IRC服务器时,这个程序被设计常驻在目标计算机上。在ircbot.exe控制目标后,攻击者可以通过IRC控制目标计算机,执行控制指令,例如打开网络摄像头偷偷捕获视频、提取目标的地理位置和桌面的截图,以及从目标机器中提取相关文件等。

01 微软Windows可移植可执行文件格式

要进行恶意软件静态分析,你需要了解Windows PE文件格式,该格式描述了如.exe、.dll和.sys等当今Windows程序文件的结构,并定义了它们存储数据的方式。PE文件包含x86指令、图像和文本等数据,以及程序运行所需的元数据。

PE格式最初的设计是用来进行下面的操作。

1)告诉Windows如何将程序加载到内存中

PE格式描述了文件的哪些块应该加载到内存中,以及在哪里加载。它还告诉你,Windows应该在程序代码里的哪个位置开始执行程序,以及哪些动态链接代码库应该加载到内存中。

2)为运行程序提供在执行过程中可能使用的媒体(或资源)

这些资源可以包括字符串,如GUI对话框或控制台输出的字符串,以及图像或视频。

3)提供安全数据,例如数字代码签名

Windows使用这些安全数据来确保代码出自受信任的来源。

PE格式通过利用图1-1中所示的一系列结构来完成以上工作。

▲图1-1 PE文件格式

如图1-1所示,PE文件格式包括一系列(header),用来告诉操作系统如何将程序加载到内存中。它还包括一系列(p)用来包含实际的程序数据。Windows将这些节加载到内存中,使其在内存中的偏移量与它们在磁盘上的显示位置相对应。

让我们从PE头开始,来更详细地探讨这个文件结构。我们将略过对DOS头的讨论,这是20世纪80年代微软DOS操作系统的遗留产物,仅仅出于兼容性原因而存在。

1. PE头

如图1-1底部所示,在DOS头❶的上面是PE头❷,它定义了程序的一般属性,如二进制代码、图像、压缩数据和其他程序属性。它还告诉我们程序是否是针对32位或64位系统而设计的。

PE头为恶意软件分析师提供了基本但有用的情景信息。例如,头里包括了时间戳字段,这个字段可以给出恶意软件作者编译文件的时间。通常恶意软件作者会使用伪造的值替换这个字段,但是有时恶意软件作者会忘记替换,就会发生这种情况。

2. 可选头

可选头❸实际上在今天的PE可执行程序中无处不在,恰恰与其名称的含义相反。它定义了PE文件中程序入口点的位置,该位置指的是程序加载后运行的第一个指令。

它还定义了Windows在加载PE文件、W

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值