您的位置:首页 > 理论基础 > 计算机网络

20145319 《网络攻防》恶意代码分析

2017-03-29 23:16 295 查看

20145319 《网络攻防》恶意代码分析

一 实验内容

了解恶意代码的简单分类

传统型的计算机病毒

脚本

木马

蠕虫

了解恶意代码一般具有的特征

目的上来说一般是获取计算机权限,窃取用户文件

行为上来说一般存在着

主动与未知ip地址建立连接

修改注册表键值,修改文件关联

将自身添加到自启动项

……

了解恶意代码的免杀手段

修改特征码

加壳

大致熟悉恶意代码的分析手段以及分析工具的使用

分析方法:

静态分析:在恶意代码没有运行的情况下,利用反汇编等手段分析恶意代码本身所具有的特征

动态分析:在可控的环境下将恶意代码运行,通过监测,分析恶意代码的行为,例如注册表是否被修改,计算机是否正在向未知IP发起连接请求等,来对该恶意代码进行分析

一般来说仅仅只会其中一两种手法是无法准确对恶意代码进行分析的,所以这就要求我们掌握“十八般武艺”才能真正的遇事不惊,应对自如

分析工具(Windows端):

PEID:用于查壳,脱壳,可以探测大多数的PE文件的加密器、编译器

PEView:一种文件分析器,可以分析PE文件的基础信息和拓展信息(导入表,导出表,节区等)

PE Exploer:用于分析软件资源(资源,即指图形化界面中所导入的对话框,图标等)

Dependency walker:动态分析文件依赖性,分析PE文件导入函数,导出函数

systracer:可以通过保留,比较不同时间点的计算机注册表,文件,端口等信息来进行动态分析

sysmon:按照一定时间间隔来对计算机设定行为进行监测,并生成日志

二 实验步骤

初步分析

现在我们正式开始我们的恶意代码分析,首先作为实验,本次所用到的恶意代码分析样本为“后门原理实验”中我自己生成的后门程序

《后门原理与实践》链接

第一步,我们仍然将后门软件交给virscan网站上的众多杀毒软件进行初步分析,我们可以看到其基本信息如下



之后我们点开其行为分析







可见其该程序行为(修改键值,建立与未知IP连接)基本与我们上述所提到的恶意软件特征行为相吻合,因此我们完全可以判断该程序就是一种恶意代码

分析工具的初步使用(PE exploer)

之后我们使用我们开始所提到的工具来进行自己的分析,使用
PE EXPLOER
打开之后我们可以看到该程序的一些基本信息



可以看到其中各个部分的地址起始

pe exploer除了编辑资源之外,我们可以用其打开该程序的导入表(一般作为可执行文件,都不向外部提供函数,而需要外部提供一些基础函数支持,所以只有导入表,没有导出表)



我们对其中的导入文件进行逐一分析,
msvcrt.dll
为操作系统中提供的C语言运行库执行文件,
kernel32.dll
控制着系统的内存管理、数据的输入输出操作和中断处理,
advapi.dll
与注册表和系统日志有关,
wsock32.dll
与系统套接字有关,
ws2_32.dll
和上一个dll文件组合使用,是Windows Sockets应用的程序接口, 用于支持Internet和网络应用程序

从以上对于导入表的分析我们可以看出,除了正常的函数,内存管理等调用,该可执行文件还有着修改注册表,系统日志的功能,且与外界建立了
socket套接字
,如果这并非是该程序起初就声明所具有的功能的话,那么这个程序就具有非常大的潜在危险

分析工具的初步使用(PEID)

在免杀原理中我们总结出了恶意代码常用的一些障眼法,在上述两个环节中,我们分别使用了比对特征库,以及对其一些设计上的行为功能进行了分析,接下来,我们使用工具PEID对一些加壳的恶意代码进行壳分析。



PEID的操作不算太复杂,我们很清楚的看出该可执行文件使用了
microsoft visual c++ 6.0
编译器

分析工具的初步使用(systracer)

之上的种种分析大多是属于静态分析,通过分析其代码本身特点等方式来达到我们想要的目的,而现在我们使用的
systracer工具
就能通过截取各个时间段计算机注册表各方面的状态,通过进行比较,来完成恶意代码的行为分析

首先打开systracer我分别对正常时刻,通过后门对控制端进行连接时,控制端进行操作时,以及控制端断开连接,四个时刻进行了扫描。





我们尤其对比第一时刻和第三个时刻的情况,我通过控制端对被控端进行了,抓取击键记录,新建文件夹等操作



我们分别对注册表键值,文件变化,行为等信息做分析







从以上可以比较容易的看出文件上的变化(创建了文件夹haha)端口上除了80端口关闭,比较让人注意的就是通过443端口向192.168.199.220发起了TCP连接(注册表键值实在是太多了,百度了很多也没完全搞清楚很多键值变化代表了什么意思,实在是才疏学浅能力有限,等再详细了解,学习几天之后对详细键值变化做出详细分析)

分析工具的初步使用(sysmon)

sysmon也是一款可以对重要操作进行分析的工具

sysmon安装如下(要用管理员权限运行命令行)

sysmon安装.jpg

之后再sysmon文件夹下写好配置文件
xml5319.xml


<Sysmon schemaversion="3.10">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">microsoft</Signature>
<Signature condition="contains">windows</Signature>
</DriverLoad>

<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">iexplorer.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourceIp condition="is">127.0.0.1</SourceIp>
</NetworkConnect>

<CreateRemoteThread onmatch="include">
<TargetImage condition="end with">explorer.exe</TargetImage>
<TargetImage condition="end with">svchost.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>


对sysmon配置进行设定





完成了上述配置之后,会在我们的计算机中生成相关日志,我们可以打开事件查看器,在
windows文件夹
中逐层找到
sysmon
文件夹



我们可以看到什么时间,什么类别的事件已经发生等等

之后如果我们想要其中某个行为进行监控(例如:网络访问)我们除了找到事件日志分析也可以在任务计划中设置计划,写好任务文件,输出参数设置为
>> director filename
将其导出,也可以进行分析

首先使用命令
C:\schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > Filename"
创建任务

在我们任意的指定位置写下驱动脚本
filename.bat


date /t >> filename
time /t >> filename
netstat -bn >> filename


在任务计划程序中新建我们自己的触发器和操作,导入我们写好的驱动脚本,将参数设置好即可



之后找到我们设置好的文件位置,就可以看到我们每天的网络行为状况了



三 问题回答

如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控

监控注册表键值

监控自启动表单

监控文件关联

监控未知网络连接请求

如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息

在第一部分中所提到的工具(大多数都是计算机病毒课上用的)

沙盒软件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: