南阳理工学院
逆向
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
项目作业说明书
《逆向工程》项目作业任务书
一、项目内容
1.逆向分析的意义说明
2.逆向分析目标选取(可以是加解密,脱壳,反调试,
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
分析,恶意软件分析等等),分析工具的选用,使用格式
3.逆向分析步骤及方法说明,要有截图
4.逆向分析实现的效果,要有截图
5.逆向分析结论
二、作业要求
1. 作业书写顺序:拟解决问题分析,确立实施目标,实施步骤,结论说明和改进措施。字数不少于5000字,文字图表清晰,排版整齐。不能使用网上复制内容(尤其是图片)
2. 编写大型作业说明书。说明书主要有以下内容:
1)任务书(单独用一页)
2)前言
3)目录
4)
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
论证
确定逆向分析方案,工具选择。对拟采用的几种方案进行分析、比较,选择最终方案。
5)测试
通过测试,分析逆向分析方案是否适合设计要求。
6)收获和体会
写出心得体会。
7)主要参考书
前 言
软件逆向工程(代码逆向分析)是一种探究应用程序内部组成结构及工作原理的技术。不论我们是自己编写程序还是其他人编写的无源码程序。灵活运用逆向分析技术可以在程序的开发和测试阶段发现bug和漏洞,并直接修改程序文件或内存解决这些隐含的问题。而且,我们还可以借助逆向分析技术为程序添加新功能,使程序更加强大。
恶意代码 ,也称为恶意软件,在大多数计算机入侵事件中都扮演了重要角色。任何以某种方式来对用户、计算机或网络造成破坏的软件,都可以被认为是恶意代码,包括计算机病毒、木马、蠕虫、内核套件、勒索软件、间谍软件,等等。恶意代码分析是一种解剖恶意代码的艺术,了解恶意代码是如何工作的、如何识别它,以及如何战胜或消除它。
目录
1、恶意代码分析目标
2、恶意代码分析技术
3、恶意代码类型
4、逆向分析文件Lab.exe和Lab.dll
五、
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
与改进
一、恶意代码分析目标
恶意代码分析的目标,通常是为一起网络入侵事件的响应提供所需信息。因此,你的目标往往是确定到底发生了什么,并确保你能够定位出所有受感染的主机和文件。在分析可疑恶意代码时,你的目标通常是确定某一个特定的可疑二进制程序到底可以做什么,如何在网络上检测出它,以及如何衡量并消除它所带来的损害。
一旦你确定了哪些文件需要全面分析,便是时候来编写出相应的检测特征码了,以便在网络中检测出恶意代码感染的主机。你可以从本书中学到,恶意代码分析可以用来编写出基于主机的和基于网络的检测特征码。 基于主机的特征码,或称为感染迹象,用于在受感染主机上检测出恶意代码。这些迹象经常是恶意代码所创建或修改的文件,或是它们对注册表的特定修改。与反病毒软件所使用的病毒特征码不同,恶意代码感染迹象关注的是恶意代码对系统做了什么,而不是恶意代码本身的特性。这使得有时它们较反病毒软件特征码会更加有效,比如检测那些经常变化自身形态的多态性恶意代码,甚至是恶意代码已经将自身文件从硬盘中删除。 网络特征码是通过监测网络流量来检测恶意代码的。
网络特征码可以在没有进行恶意代码分析时创建,但在恶意代码分析帮助下提取的特征码往往是更加有效的,可以提供更高的检测率和更少的误报。 在获得特征码之后,最终目标是要弄清楚究竟这些恶意代码是如何工作的。而这往往是高级管理人员经常提出的问题,他们希望得到一起重大入侵事件的详细解释。从本书中你所学习到的技术,将允许你确定出恶意程序的目标与功能特性。
3、恶意代码分析技术
在大多数情况下,进行恶意代码分析时,你将只有恶意代码的可执行文件本身,而这些文件并不是人类可读的。为了了解这些文件的意义,你需要使用各种工具和技巧,而每种只能揭露出少量的信息。因此你需要综合使用各种工具,才能看到一个全貌。 恶意代码分析有两类基本的方法:静态分析与动态分析。静态分析方法是在没有运行恶意代码时对其进行分析的技术,而动态分析方法则需要运行恶意代码,而这两类技术又进一步分为基础技术和高级技术。
(1)静态分析基础技术 静态分析基础技术包括检查可执行文件但不查看具体指令的一些技术。静态分析基础技术可以确认一个文件是否是恶意的,提供有关其功能的信息,有时还会提供一些信息让你能够生成简单的网络特征码。静态分析基础技术是非常简单,同时也可以非常快速应用的,但它在针对复杂的恶意代码时很大程度上是无效的,而且它可能会错过一些重要的行为。
(2) 动态分析基础技术 动态分析基础技术涉及运行恶意代码并观察系统上的行为,以移除感染,产生有效的检测特征码,或者两者。然而,在你可以安全运行恶意代码之前,你必须建立一个安全环境,能够让你在避免对你的系统与网络带来风险的前提下,研究运行的恶意代码。像静态分析基础技术一样,动态分析基础技术可以被大多数没有深厚编程知识的人所使用,但是它们并非对所有恶意代码都是有效的,也会错过一些重要功能。
(3)静态分析高级技术 静态分析高级技术,主要是对恶意代码内部机制的逆向工程,通过将可执行文件装载到反汇编器中,查看程序指令,来发现恶意代码到底做了什么。这些指令是被CPU执行的,所以静态分析高级技术能够告诉你程序具体做了哪些事情。然而,静态分析高级技术较基础技术相比,有着较为陡峭的学习曲线,并且需要掌握汇编语言、代码结构、Windows操作系统概念等专业知识,而所有这些你都可以在本书中学到。
(4)动态分析高级技术 动态分析高级技术则使用调试器来检查一个恶意可执行程序运行时刻的内部状态。动态分析高级技术提供了从可执行文件中抽取详细信息的另一条路径。
5、恶意代码类型
进行恶意代码分析时,你会发现一个非常有用的经验技巧,就是一旦你能够猜测出这个恶意代码样本在尝试做些什么,然后去验证这些猜想,就会加速你的分析过程。当然,如果你知道恶意代码通常会做哪些事情,那么你就能够做出更准确的猜测。到目前为止,绝大多数的恶意代码都可以被分到如下类别中。
后门:恶意代码将自身安装到一台计算机来允许攻击者访问。后门程序通常让攻击者只需很少认证甚至无须认证,便可连接到远程计算机上,并可以在本地系统执行命令。
僵尸网络:与后门类似,也允许攻击者访问系统。但是所有被同一个僵尸网络感染的计算机将会从一台控制命令服务器接收到相同的命令。
下载器:这是一类只是用来下载其他恶意代码的恶意代码。下载器通常是在攻击者获得系统的访问时首先进行安装的。下载器程序会下载和安装其他的恶意代码。
间谍软件:这是一类从受害计算机上收集信息并发送给攻击者的恶意代码。比如:嗅探器、密码哈希采集器、键盘记录器等。这类恶意代码通常用来获取E-mail、在线网银等账号的访问信息。
启动器:用来启动其他恶意程序的恶意代码。通常情况下,启动器使用一些非传统的技术,来启动其他恶意程序,以确保其隐蔽性,或者以更高权限访问系统。
内核套件:设计用来隐藏其他恶意代码的恶意代码。内核套件通常是与其他恶意代码(如后门)组合成工具套装,来允许为攻击者提供远程访问,并且使代码很难被受害者发现。
勒索软件:设计成吓唬受感染的用户,来勒索他们购买某些东西的恶意代码。这类软件通常有一个用户界面,使得它看起来像是一个杀毒软件或其他安全程序。它会通知用户系统中存在恶意代码,而唯一除掉它们的方法只有购买他们的“软件”,而事实上,他们所卖软件的全部功能只不过是将勒索软件进行移除而已。
发送垃圾邮件的恶意代码:这类恶意代码在感染用户计算机之后,便会使用系统与网络资源来发送大量的垃圾邮件。这类恶意代码通过为攻击者出售垃圾邮件发送服务而获得收益。
蠕虫或计算机病毒:可以自我复制和感染其他计算机的恶意代码。 恶意代码还经常会跨越多个类别。例如,一个程序可能会有一个键盘记录器,来收集密码,而它可能同时有一个蠕虫组件,来通过发送邮件传播自身。所以不要太陷入根据恶意代码功能进行分类的误区。
恶意代码还可以根据攻击者的目标分成是大众性的还是针对性的两类。大众性的恶意代码,比如勒索软件,采用的是一种撒网捞鱼的方法,设计为影响到尽可能多的机器。在这两类恶意代码中,这类是最为普遍的,通常也不会太过复杂,而且是更容易被检测和防御的,因为安全软件以这类恶意代码作为防御目标。 而针对性恶意代码,比如特制后门,是针对特定组织而研制的。针对性恶意代码在网络上是比大众性恶意代码更大的安全威胁,因为它们不是广泛传播的,而你的安全产品很可能不会帮你防御它们。如果没有对针对性恶意代码的具体分析,你要保护你的网络免受这类恶意代码侵害或是移除感染,都几乎是不可能的。针对性恶意代码通常是非常复杂的,而你对它们的分析往往需要借助本书中提到的一些高级分析技巧。
四、逆向分析文件Lab.exe和Lab.dll
1、需要使用的工具:
反病毒搜索引擎、PEID、PETool、Strings、PEview
2、 逆向分析的步骤:
(1)在分析一个可疑的恶意代码的样本时,第一步就是最好拿多个反病毒软件扫描下这个文件,看是否有哪个引擎可以识别它,但是反病毒软件并不是完美的,主要依靠一个已知恶意代码可识别片段的特征数据库(病毒文件特征码),以及基于行为模式匹配的分析(启发式检测)来识别可疑文件。
上传文件到网站
再检测一下DLL文件
通过反病毒引起扫描显示是病毒文件。
(2)查看文件编译的时间,在PE格式中,有个字段是记录程序是什么时候编译的。在PE中
使用PETool工具进行查看
查看Lab.exe程序结果如下,生成时间是2010年12月19日16:16:19
查看Lab.dll程序结果如下,生成时间是2010年12月19日16:16:38
从时间上看,两个文件几乎是同一时间生成的,应该说这两个文件时有关联的,猜测这个文件可能是用于使用或者安装.dll文件的,因为DLL动态链接库不能够运行自己
(3)查看文件是否被加壳或者混淆了
使用PEID进行查壳,如下所示,可以看到程序都没有被加壳。
(4)查看其导入函数和导出函数,一般在导入函数或者导出函数中可以初步判定这个程序的一些行为。
先查看DLL文件:可以看出在输出表中没有信息
一般来说WS_32.dll这个dll是用于连网操作的,如果使用socket套接字一定会使用这个dll。该DLL中没有导出表,这是不正常的(没有被加壳)。
在进行查看EXE文件,里面有对文件的一些操作,是值得怀疑的,这些导入函数告诉我们,恶意代码会对文件系统进行搜索,以及打开或者修改文件。
(5)查看文件是否有基于网络的迹象以及基于主机的迹象
我们使用Strings这个工具,需要在cmd命令下
再看看DLL文件
里面有一个网址,我们可以使用查看一下这个网址
因为这是一个书上的实验程序,IP应该是编者的一个内网并不是恶意网站,如果是真正的恶意代码,这二个IP地址应该是可路由的公网IP的地址。可以看出这个DLL程序很可能是一个后门程序,而exe文件是用来安装与运行DLL文件的。
五、总结与改进
以上对文件的分析是利用相对简单的工具基于静态的分析,来获得对它功能的一些猜测,仅仅使用静态分析是不够的,还需要进行动态分析,在进行动态分析前,需要准备好环境,如果在本机上进行试验运行的话,估计要给自己带来好多麻烦,需要先创建一个安全的环境-虚拟机。为了分析恶意代码,通常要先运行恶意代码,以观察它的行为。恶意代码在运行时,一定要小心,不要让它感染到我们的计算机或网络。虚拟机允许我们将恶意代码运行在一个安全、可控的环境中,而且它也为你提供了完成分析后用来清楚恶意代码所需的工具。
参考资料:《恶意代码分析实战》
《Windows PE权威指南》