2018-2019-2 网络对抗技术 20165212 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165212 Exp4 恶意代码分析
原理与实践说明
1.实践目标
- 监控你自己系统的运行状态,看有没有可疑的程序在运行。
- 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
- 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
2.实践内容概述
- 系统运行监控
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据
实践过程记录
1.使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)
- 使用schtasks /create /TN netstat5212 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"命令创建计划任务netstat5212
- TN是TaskName的缩写,我们创建的计划任务名是netstat5212;
- sc表示计时方式,我们以分钟计时填MINUTE;
- TR=Task Run,要运行的指令是 netstat
- bn,b表示显示可执行文件名,n表示以数字来显示IP和端口;
-
表示输出重定向,将输出存放在c:\netstatlog.txt文件中
-
在桌面建立一个netstatlog.txt文件,内容为: date /t >> c:\netstatlog.txt time /t >> c:\netstatlog.txt netstat -bn >> c:\netstatlog.txt
- 这些指令是用来将记录的联网结果格式化输出到netstatlog.txt文件中
- 将后缀名改为.bat后,用管理员身份将该文件放入C盘
- 打开计算机管理的“任务计划程序库”,可以查看到5212netstat任务就绪,打开其属性,修改其指令为c:\netstatlog.bat
- 还可以自行更改该任务的其他属性,如在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务”,把这个取消掉
执行此脚本一定时间,就可以在netstat5212.txt文件中查看到本机在该时间段内的联网记录:
- 当记录的数据足够丰富时,停止任务,将所得数据在excel中进行分析,此过程要一直保持开机联网状态才能持续监控 等待一段时间(6小时),将存储的数据通过excel表进行整理, 统计图如下:
- 由统计数据可知,联网排名第1的是“vmware-hosted.exe”,这一管理服务是esx主机和vmkernel之间的主要通信通道。其次还有ware.exe、QQ.exe等常见的程序,并没有发现什么异样这
2.使用sysmon工具监控系统(安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。)
-
sysmon是微软Sysinternals套件中的一个工具,直接从(马云链接)上下载。使用sysmon工具前首先要配置文件。参考使用轻量级工具Sysmon监视你的系统该文章,手动创建配置文件sysmon20165212.xml。
-
代码如下
-
<Sysmon schemaversion="3.10"> <!-- Capture all hashes --> <HashAlgorithms>*</HashAlgorithms> <EventFiltering> <!-- Log all drivers except if the signature --> <!-- contains Microsoft or Windows --> <ProcessCreate onmatch="exclude"> <Image condition="end with">360se.exe</Image> </ProcessCreate> <FileCreateTime onmatch="exclude" > <Image condition="end with">360se.exe</Image> </FileCreateTime> <NetworkConnect onmatch="exclude"> <Image condition="end with">360se.exe</Image> <SourcePort condition="is">137</SourcePort> <SourceIp condition="is">127.0.0.1</SourceIp> </NetworkConnect> <NetworkConnect onmatch="include"> <DestinationPort condition="is">80</DestinationPort> <DestinationPort condition="is">443</DestinationPort> </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>
- 安装sysmon:执行命令sysmon.exe -i C:\sysmon2016212.xml,成功安装结果如下:
-
查看“事件查看器”,选择日志的位置,应用程序和服务日志/Microsoft/Windows/Sysmon/Operational,在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等。
-
分析日志,我分析的是自己生成的后门文件进行分析。 启动回连到kali
- 找到运行后门文件相对应的日志,打开这个事件,可以看到其属于“NetworkContect”。查看详细信息,可以看到这个后门映像文件的具体位置、源IP和端口、目的IP和端口等
- 在kali中会用webcam_snap命令调用主机的摄像头抓拍,日志中看到一个带有Photo关键词的日志记录
- kali中运行dir命令后,主机日志中可以看到一个带有searchfile关键词的日志记录
- SearchFilterHost.exe是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。
- kali中输入ps后,主机中的日志记录
- kali中输入shell,主机中的日志记录
恶意软件分析
使用VirusTotal分析恶意软件
-
把生成的恶意代码放在VirusTotal进行分析(也可以使用VirusScan工具),基本情况如下:
-
查看这个恶意代码的基本属性:
-
-
可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。(注:TRiD通过读取文件头,根据特征码进行文件类型匹配。)最神奇的是它可以查出来文件的编码方式,可以看出我是用VC++进行编译的!
-
还可以看到加壳连接情况:upx壳和http连接
-
- 以及该恶意代码的算法库支持等一系列信息
使用systracer分析恶意软件
这个我放在win7虚拟机里进行。文减少,易于进行比较
-
点击右侧的take snapshot,存储快照
- 快照1:移植后门程序,保存为Snapshot #1
- 快照2:运行后门程序并在kali中实现回连,保存为Snapshot #2
- 快照3:在kali中使用dir指令,保存为Snapshot #3
- 快照4:在kali中使用record_mic指令,保存为Snapshot #4
-
快照1和2的对比,可以明显看到增加了后门程序
- 快照2和3的对比,注册表和文件增删改方面
- 快照2和4对比,能够看到在媒体播放器方面有所改动
返回目录
使用wireshark抓包分析恶意软件
- 回连完成后结束捕获,并过滤ip,只看和虚拟机IP有关的数据包,所以把没用的包过滤掉 - 首先是tcp建立的三次握手
- 有大量的TCP包,这其中有回连相关的包,之后我有用dir指令查看了靶机的当前目录,传输了很多数据过来:
基础问题回答
- 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 使用windows自带的schtasks指令设置一个计划任务,发现网络连接异常
- 使用Sysmon,编写配置文件,记录有关的系统日志
- 使用Process Explorer工具,监视进程执行情况。
- 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
- 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 使用systracer工具分析恶意软件,查看其对注册表和文件的修改。
- 使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
- 使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
实验中遇到的问题及解决方法
- 安装sysmon时,自己写的xml配置文件和下载的安装包版本要对应
- xml配置文件中的过滤项里一般我们填的127.0.0.1的过滤掉,因此有时候如果虚拟机ifconfig显示的ip时候127.0.0.1那么日志里是肯定看不到相关日志的,所以要注意虚拟机的ip不要被过滤掉。
- 开启360情况下所有日志中的目的地址都会是360设定的地址,应该是360会将主机和kali之间通信的数据进行加密或者“安全处理”,所以为了直观的观察结果,可以吧360关掉
实验总结与体会
本次实验相比于之前2次少了很多具体的操作,但是要求我们更充分的去了解恶意代码的特征、工作原理,通过观测我们上几次自己制作的特征明显的后门程序,我能直观地看到日志行为特征,连蒙带猜,仅通过sysmon的日志就可以判断自己的电脑有没有可以迹象 本次实验在动态分析的时候,锻炼了我们的信息处理能力,明显看到有很多不同,但是分析是又不知道该从何下手,不太清楚每一项具体代表什么含义,只能通过查阅资料,连蒙带猜的进行分析。 通过自己动手实践,实现了从攻击者身份到检测、分析者身份的转变,更全面的理解了前两次实验中生成的后门程序到底在做什么,对恶意代码有了更深入的理解。所以,我们在发现自己电脑有了不正常的流量消耗之后,而杀软没有任何报毒,就可以通过观察日志去判断自己的电脑有没有被植入后门,这一点,能力范畴超越了360等杀软,是我们实验过程中弥足珍贵的收获!