array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 恶意代码分析_Lab01-02_静态分析 - 爱码网

所谓无底深渊,下去,也是前程万里。
-----木心

Lab01-02.exe

问题及分析:

第一问

将Lab01-02.exe文件上传至http://www.VirusTotal.com/进行分析并查看报告。文件匹配到了已有的反病毒软件特征吗?

分析报告如下图:

恶意代码分析_Lab01-02_静态分析

由上图可以得出该病毒具有一下特征:

  1. Trojan/Win32.StartPage.C26214 修改浏览器主页
  2. Trojan Clicker 木马点击病毒
  3. Trojan Generic:拥有与特洛伊木马病毒疑似功能的代码;
  4. TR/Downloader.Gen 有下载功能
  5. malware.gen 记录键盘输入,并传出

第二问

是否有这个文件被加壳或混淆的任何迹象?如何是这样,这些迹象是什么?如果该文件被加壳,请进行脱壳,如果可能的话。
恶意代码分析_Lab01-02_静态分析

通过PEiD的检测,检测结果为Nothing Found。即没有找到壳,这种情况可能有两种原因:1.该程序没有加壳;2.该程序加壳了,但该壳比较新,该软件检测不出来。

但注意到了EP Section中的标识为UPX1,说明这个exe文件很可能用了一个UPX技术的变种,所以PEiD才会识别不出来.

然后我们用Dependency Walker,我们就会发现这个代码的导入表KERNEL32.DLL 中有两个函数LoadLibraryA,GetProcAddress.这两个函数都是加壳的迹象,因为加壳的程序运行时候脱壳是必须要这两个函数的.

恶意代码分析_Lab01-02_静态分析

下面再使用PE viewer进一步检测:
恶意代码分析_Lab01-02_静态分析
恶意代码分析_Lab01-02_静态分析
恶意代码分析_Lab01-02_静态分析

首先该程序的节部分就非常的可疑,这里显示的是UPX0,UPX1,UPX2.不是常见的.text .data .rdata .rsrc,很明显这是UPX加壳后的表现.下面通过虚拟大小与原始数据大小的对比就可以实锤UPX加壳了.

分节 虚拟大小 原始数据大小
UPX0 00004000 00000000
UPX1 00001000 00000600
UPX2 00001000 00000200

IMAGE_SECTION_HEADER UPX0中可得出Virtual Size00004000 Size of Raw Data00000000, 所以Virtual Size 比Size of Raw Data大
IMAGE_SECTION_HEADER UPX1IMAGE_SECTION_HEADER UPX2中的也是Virtual SizeSize of Raw Data大,所以可以确定该程序被加壳了.

并通过查资料该程序可能是UPX加壳,所以我们尝试一下脱壳:
使用UPX.exe进行脱壳,过程如下:
恶意代码分析_Lab01-02_静态分析
恶意代码分析_Lab01-02_静态分析
​ 脱壳成功!!!
恶意代码分析_Lab01-02_静态分析

第三问

有没有任何导入函数能够暗示这个程序的功能?如果有,是哪些导入函数,它们会告诉你什么?

现在我们继续对脱壳后的程序分析,使用Dependency Walker对该程序进行分析:
恶意代码分析_Lab01-02_静态分析
由上图可以看见该程序共有四个动态链接库:
KERNEL32.DLL ADVAPI32.DLL MSVCRT.DLL WININE.DLL
KERNEL32.DLL 中:
SystemTimeToFileTime是一个进程,即系统时间本地时间。
GetModuleFileNameA获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
CreatWaitableTimerA创建计时器对象
ExitProcess退出程序
OpenMutex打开互斥
SetWaitableTimer启动一个可等待计时器
WaitForSingleObject
CreatMutex创建一个互斥体
CreatThread创建一个线程
恶意代码分析_Lab01-02_静态分析
Advapi32.dll,使用了注册表,提醒我们注意程序中象注册表键值的字符串,还有服务管理.可能会恶意关闭一些服务是某些程序不能运行,或者自动开启一些服务.
恶意代码分析_Lab01-02_静态分析

WININE.DLL使用了网络服务,InternetOpenUrl,可以访问网站,这里值得警惕,该恶意木马可能会通过访问网络下载更多病毒,或者实时监控该主机,InternetOpenA 初始化一个应用程序

第四问

哪些基于主机或基于网络的迹象可以被用来确定被这个恶意代码所感染的机器?

使用Strings.exe查看脱壳的程序,具体内容如下:
恶意代码分析_Lab01-02_静态分析

出现可疑的URL: www.malwareanalysisbook.com 还有IE8.0 推测应该是使用IE打开该网站

关键提示:

1、使用virustotal.com查看程序,分析报告;
2、用PEview分析是否加壳(注意该程序的节与其它程序的节的区别);
3、UPX0的虚拟大小是多少?实际大小是多少?属性(characteristics)中,表明这个节是否能够运行?
4、这个程序通过UPX工具加壳。
5、使用upx -d 进行脱壳,然后再分析。
upx -o newFilename -d originalFilename
-d 脱壳
-o 指定输出文件名
6、使用Study_PE查看脱壳后的文件:导入函数有哪些?哪些是常用的?
wininet.dll的作用是什么?使用了哪些函数?可能做出什么样的恶意操作?
advapi32.dll的作用是什么?使用了哪些函数?可能做出什么样的恶意操作?
7、使用strings查看字符串。字符串中是否有URL?程序可能会用哪个函数处理这个URL?
注意到Malservice这个字符串吗?猜猜这个字符串的作用是什么?

引用

1.《 Practical Malware Analysis 》 By Michael Sikorski, Andrew Honig · 2012
2. 以及网上前辈的一些作品,由于查阅过多过细,这里就不一一例举。

相关文章: