Exp4 恶意代码分析
Exp4 恶意代码分析
一.实践目标
二.实践内容
三.实践过程
3.1 系统运行监控
3.1.1 分析联网程序
3.1.2 sysmon监控电脑程序
3.2 恶意软件分析
3.3 基础问题回答
四.实验体会
一.实践目标
1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行。
1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
1.3 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
二.实践内容
1.系统运行监控
(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么,你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
2.恶意软件分析
分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时。该后门软件:
读取、添加、删除了哪些注册表项;
读取、添加、删除了哪些文件;
连接了哪些外部IP,传输了什么数据(抓包分析)
三.实践过程
3.1系统运行监控
(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
在cmd中键入schtasks /create /TN netstat1201 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat1201.txt"
创建计划任务netstat1201
先在桌面新建txt文本文件(netstat1201.txt),使用记事本写入后再修改后缀为.bat,复制到C盘中,写入内容如下:
date /t >> c:\netstat1201.txt
time /t >> c:\netstat1201.txt
netstat -bn >> c:\netstat1201.txt
键入"win+r"打开命令窗口,输入taskschd.msc进入任务计划程序
双击我们刚创建的任务,点击操作-编辑,将其中的程序或脚本改为我们创建的netstat1201.bat批处理文件点击确定。(注:一定要勾选使用最高权限运行)
在计算机管理界面对该任务右键点击运行,此时,可在netstat1201.bat所在目录下看到一个txt文本文件,打开就可看到每隔一分钟被输到这里的联网数据。
等待一段时间后,让记录项目足够多了我们用excel来进行分析。将netstat1201.txt已经记录的数据导入wps表格中去.
打开Excel表格,选择数据-获取外部数据,在数据类型中选择分隔符号
点击下一步,标记所有分隔符号,点击完成
选择要分析的列——>选择插入——>选择数据透视图——>直接默认值确认
再在右侧选择分析的日期,拖入下方的轴和值
可以看到,在几分钟里,我的电脑有许多程序在联网,比如vmware、微信、微软浏览器等。
而其中,vmware连接的外部IP是我自己虚拟机的IP,微软浏览器浏览的是微软自身分布在全世界各地的微软云,比如:20.184.57.167、13.89.179.9等等,而微信一直在连接一个定位在深圳的ip:58.251.111.105,具体是做什么的还没有查到。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为
确定要监控的目标:在这里我选择进程创建、进程创建时间、网络连接、远程线程创建
进程创建:
UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
进程创建时间:
UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
网络连接:
UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
远程线程创建:
UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
根据这些过滤事件自主选择编写配置文件sysmon20191201.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">msedge.exe</Image>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">msedge.exe</Image>
</FileCreateTime>
<NetworkConnect onmatch="exclude">
<Image condition="end with">msedge.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>
exclude相当于白名单,不用记录。include相当于黑名单.其中将其中将Explorer与msedge浏览器设为白名单.同时去掉回环地址127.0.0.1,去掉137号端口,137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,查看http的80端口与https的443端口。
Image condition根据自己使用的浏览器更改,如谷歌浏览器是chrome.exe,微软浏览器是msedge.exe
网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。
下载Sysinternals压缩包并解压(https://gitee.com/wildlinux/NetSec/attach_files)
键入"win+x",选择以管理员身份运行,找到压缩后的文件夹,键入Sysmon64.exe -i sysmon20191201.xml
,然后一路前进
左下角右键Windows标志,找到事件查看器,在应用程序和服务日志-Microsoft-Windows-Sysmon-Operational
可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等
打开kali,从实验二或实验三中任选一种后门软件进行回连
运行shell
再点击Sysmon-Operational刷新记录,找到运行后门文件20191201backdoor.exe相对应的日志如下
3.2恶意软件分析
- 用systracer进行分析
下载安装systracer软件
捕获三个快照:
1.回连之前
2.开启后门程序回连kali
3.键入screenshot获取截图
首先对第一个和第二个快照进行比较:
从上图可以看出,在回连之后,在删除了一些进程的同时又增加了一些进程,比如删除了cmd.exe,增加了smartscreen.exe,用于保护虚拟机遭到下载的恶意软件和恶意网站的侵害。
很明显,回连前后端口发生了较大的变化,并且增加了许多启动后门程序后增加的dll文件
注册表方面,增加了SYSTEM,删除了DRIVERS。
然后是第二个和第三个快照进行比较:
在运行scrennshot后,很明显增加了跟桌面搜索有关的进程。
同样,端口和dll组件也进行了变化。
注册表不可查
- 用wireshark进行抓包
kali有wireshark可以直接使用
回连时的抓包:
可以看出,回连时首先进行了三次握手进行连接,连接了192.168.120.1这个ip,是学校的本地局域网。传输的是都是TCP报文,以及一大堆ACK包,有时还伴有PSH+ACK包,表示有数据传输。
键入screenshot后的抓包。说实话,数据太多了,真没看出来和上一个抓包有什么区别,分析同上。
3.3 基础问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:可以使用计划任务,每隔一个小时记录自己的电脑有哪些程序在联网。如果有未知的IP联网的话,很有可能就是恶意代码,这时就可以将其记录下来,并查看其连接的外部IP是哪里。还可以用systracer每一天都对电脑的注册表或自启动项进行快照备份,并比较快照之间的区别,查出是否有可疑的进程在运行。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:如果已经确定可疑程序在运行的话,可以使用wireshark进行抓包,查看程序是否在传输数据文件以及数据包的目的ip地址。而且同样也可以使用systracer每分钟进行快照,分析进程对系统做了什么,比如新增文件,修改注册表信息等。
四.实验体会
我认为这个实验是目前为止最复杂的一次实验。因为本次实验的重点不在于操作,更多的是注重对数据或截图的分析。比如,我用wireshark确实捕获了一堆包,但这些包有什么用、为什么这些包会在这个操作中出现......对于这些问题的探索,我觉得是比单纯地在虚拟机上敲几行命令要曲折得多。
当然,在查找问题的答案的时候,我也能够对内容及原理有更深一层的体会。信息安全任重而道远。现如今,各种恶意代码、恶意软件层出不穷,我们在日常生活中一定要提高警惕。前几个实验告诉我们如何识别、鉴别恶意代码,而经过这次实验,我们就要养成对我们的电脑实时监控的习惯。及时发现,及时处理,让危险无处可藏。