《网络对抗技术》Exp4 恶意代码分析 20201302姬正坤
《网络对抗技术》Exp4 恶意代码分析
一、实践步骤
1、系统运行监控
任务要求:使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包.
使用schtasks指令监控系统:
输入指令如下图,每五分钟记录下有哪些程序在连接网络,每3分钟就会监测哪些程序使用网络,结果记录在netstatlog.txt中
TN是TaskName的缩写;sc表示计时方式,以分钟计时填MINUTE;TR=Task Run,要运行的指令是netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口。
新建文件netstat输入一段代码,保存为bat文件
打开计算机管理 ,找到刚创建的程序netstat
更改设置如下
这里需要勾上最高权限运行,否则后面会出错
一段时间等待,netstat.txt记录数据
将数据导入到表格,查看统计
2、安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为
点击Sysmon64.exe,在属性详细信息查看产品版本
确定要监控的目标:在这里我选择进程创建、进程创建时间、网络连接、远程线程创建
写配置文件
相关事件过滤器选项在使用轻量级工具Sysmon监视你的系统可看到,
- 进程创建ProcessCreate
- 进程创建时间FileCreateTime
- 网络连接NetworkConnect
- 远程线程创建CreateRemoteThread
开始写与自己想要监控的事件相对应的配置文件如下
点击查看代码
<Sysmon schemaversion="4.12">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<ProcessCreate onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
</ProcessCreate>
<ProcessCreate onmatch="include">
<ParentImage condition="end with">cmd.exe</ParentImage>
</ProcessCreate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">chrome.exe</Image>
</FileCreateTime>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.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">firefox.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
- exclude相当于白名单,不用记录。include相当于黑名单
- 版本号4.12对应本机的sysmon版本
- Image condition根据自己使用的浏览器更改,如谷歌浏览器是chrome.exe,IE浏览器是iexplore.exe
- 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。(137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。)
- 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程。
- explorer.exe是Windows程序管理器或者文件资源管理器
- svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
- winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出。
- powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
以管理员身份运行CMD在Sysmon.exe目录下执行下列命令
此前做实验的时候cmd命令出错了,纠正后与之前截图不太一致,这里换了sysmon运行,错误报告写在后面
cmd输入下图内容,找到事件查看器,在应用程序和服务日志-Microsoft-Windows-Sysmon-Operational可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等
3、恶意软件动态分析
使用systracer分析恶意软件
捕获四个快照如下
- 快照一:未移植后门程序,保存为Snapshot 1
- 快照二:运行后门程序并在kali中实现回连,保存为Snapshot 2
- 快照三:在kali中执行dir 指令,保存为Snapshot 3
- 快照四:在kali中执行exit 指令,保存为Snapshot 4
快照1与2不同:多出了后门程序与调用端口
快照3kali运行dir命令后exit快照4,发现端口与进程都消失了
4、wireshark监测
wireshark对流量进行抓包,输入过滤条件ip.addr == 192.168.241.132,可以看到Wireshark上捕获到大量的TCP传输,输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)
5、PE Explorer
PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。
实验总结
基础问题回答
1、如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控
可以用任务管理器查看自启动项,在自启动项进行过滤查看
利用Windows计划任务netstat,定期查看并分析网络连接情况
可利用sysmon工具,配置好想要监控的端口、注册表信息、网络连接等信息,通过其生成的日志文件进行查看
2、如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息
利用Wireshark抓包,进行分析有没有异常的或可疑的连接
还可以利用Systracer来拍摄快照,进行对比分析改变的注册表及文件信息
遇到的问题
1、监控netstat文件得不到数据,且所有设置没有问题
查找原因出在文件目录上,路径带有空格会使任务调用出错,这是修改与原来的区别
带有空格的路径得不到结果
更改文件目录与名称,重新在cmd中写命令,得到正确数据
2、sysmon的找不到定位xml,版本不一致问题
这个问题我不理解其中原理,看下图
注意有一个错误行:Incorrect or unsupported schema version 4.12. Current Sysmon schema version 3.10Error
但是本机的sysmon属性中是这样的
于是我尝试修改sysmon1302.xml文件的描述第一行版本号为3.10
真的得到了正确反馈
3、wireshark找不到端口可用
参考博客
https://blog.csdn.net/qq_45057336/article/details/108532180
https://blog.csdn.net/try_learner/article/details/100710516