Exp4 恶意代码分析
实践内容
系统运行监控
(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
a.使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)
- 在命令行中输入以下命令,创建任务计划netstat1224
schtasks /create /TN netstat1224 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > d:\netstatlog.txt
-
在D盘中创建一个脚本文件 netstat1224.bat
-
在Windows的任务计划程序中,可以查看到新创建的任务,并将“程序或脚本”改为我们创建的 netstat1224.bat 批处理文件的位置,点击确定:
-
在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务”,那么使用电池电源时就会停止任务。为了我们统计足够多的数据,这个选项取消掉。
-
等待一段时间即可获得在所创建任务计划netcontrol1224监视下获得的数据
-
发现出现了“请求的操作需要提升”示意,这是因为权限不够,这时我们可以回到任务计划那里,选择任务,编辑属性,勾选上这个脚本“使用最高权限运行”。然后再右键点击运行
-
在wps的Excel表格中分析记录的数据
-
导入文本数据:新建excel文件->选择上方“数据”->选择“导入数据”->选择“导入数据”->选择“直接打开数据文件”
-
选择数据源文件:在D盘中(这里按照自己生成的位置)选中netstat1224.txt
-
依次选择其他编码、分隔符号,然后将分隔符号的所有选项都选中,点击完成即可
分析:
排名第一的是TCP是因为我打开了许多相关页面,大多数为http和https连接
第二个多的就是msedge.exe,msedge.exe 进程属于 Microsoft Edge,它是 Microsoft Internet Explorer Web 浏览器的继任者。
第三个就是SearchHost.exe,是搜索引擎,这是因为我应用软件比较多,所以找起来很麻烦,每次使用的时候都是直接搜索名字出来的。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
-
安装并解压sysinternals压缩包:
-
编写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">chrome.exe</Image>
</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">winlogon.exe</TargetImage>
<SourceImage condition="end with">powershell.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
- 参数解释:
exclude:相当于白名单,不用记录。include相当于黑名单。
ProcessCreate:进程创建。Image condition要根据自己使用的浏览器更改。由于我使用的是Chrome浏览器,所以在我的配置文件中,排除了(不记录)进程名为Chorme.exe的进程。但是要记录以cmd.exe结尾的进程记录。(大家如果有用别的浏览器的:比如Edge,在这里可以替换)
FileCreatTime:进程创建时间。这里排除(不记录)浏览器进程的创建时间。
NetworkConnect:网络连接。过滤掉(不记录)浏览器的网络连接,源IP地址为127.0.0.1、源端口为137的连接服务。包含(记录)目的端口为80(http)和443(https)的网络连接。
137端口:提供局域网中ID或IP查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。
127.0.0.1:环回地址,表示本机。
CreateRemote:远程线程创建。记录的线程如下:
explorer.exe:Windows程序管理器或者文件资源管理器
svchost.exe:一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
winlogon.exe:Windows NT 用户登陆程序,用于管理用户登录和退出。
powershell.exe:专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
- 以管理员身份运行命令行启动sysmon:
- 输入命令
Sysmon64.exe -i sysmon20201224.xml
,安装sysmon:
- 使用事件查看器分析进程:
- 查看“事件查看器”,选择日志的位置,应用程序和服务日志
/Microsoft/Windows/Sysmon/Operational
- 运行实验二中生成的后门程序
20201224_backdoor.exe
,并启动回连到kali虚拟机中,我们可以通过事件查看器中找到此日志:
恶意软件分析
1.启用wireshark分析TCP流量包:
- 打开wireshark开始抓包,在Kali中打开msfconsole并进行监听,在Windows上运行20201224_backdoor.exe后门程序,Kali攻击机中通过TCP反弹获取到Windows端口
- 如图,此为在后门回连后的三次TCP握手
2.使用SysTracer动态分析:
-
systracer工具链接:
https://gitee.com/wildlinux/NetSec/attach_files
-
systracer可以记录下计算机某个时刻的状态。然后过一段时间后再次记录。通过比较两次记录中计算机的不同进行相应的分析。
-
若出现提示systracer not registered,是因为免费版的只能用五次,解决办法卸载后重新下载就可以用了
-
我们总共截了以下五张快照:
- 快照一:未移植后门程序,保存为Snapshot #1
- 快照二:运行后门程序并在kali中实现回连,保存为Snapshot #2
- 快照三:在kali中使用dir指令,保存为Snapshot #3
- 快照四:在kali中使用screenshot和record_mic指令,保存为Snapshot #4
- 快照五:在kali中使用getuid指令,保存为Snapshot #5
- 接下来我们对比快照,分析恶意软件在执行过程中系统有哪些变化
- 在Opened Handlers中,我们可以看到增加了一些和后门有关的文件,也删除了一些文件,发生了键值的变化
- 在loaded dll中,查看启动后门程序后删除的dll文件
- 在running processes中,查看被删除的conhost.exe
conhost.exe全称是Console Host Process, 即命令行程序的宿主进程。简单的说他是微软出于安全考虑,在windows 7和Windows server 2008中引进的新的控制台应用程序处理机制。 - 在opened ports中看到主机端口与虚拟机ip及相关端口间的交互
3.使用Process Explorer分析恶意软件
- 下载链接:https://download.sysinternals.com/files/ProcessExplorer.zip
- 打开procexp.exe
- Process Explorer可以监听到电脑上所有正在运行的程序,找到可疑行为,仔细观察是否有后门程序
通过Process Explorer中的Find工具查找使用了cmd的进行,直接定位到后门程序20201224_backdoor.exe
- 可以选择程序并直接杀死进程:
实验后回答问题:
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- a.我们可以通过在windows下建立一个监测本机连接ip地址的任务计划程序,不定时的查看一下电脑都在什么时候连了网干了什么,如果在你觉得自己的电脑没有联网的情况下出现了ip访问记录就十分可疑了。
- b.使用Sysmon,编写配置文件,记录有关的系统日志
- c.使用SysTracer,一定时间间隔拍摄一张快照,对比不同快照,查看是否有可疑行为。
- d.使用Process Explorer监视主机状态,查找与该进程相关的句柄,看看其是否进行了危险操作(如运行cmd.exe等)
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 静态分析
- 用PE Explorer工具,对该程序进行抽丝剥茧地探查,这款工具的反汇编功能很强大,还可以扫描和显示处该程序依赖于外部的DLL列表,知道这个进程都有哪些功能模块
- 使用IDA对程序进行静态分析,反汇编代码并进行进一步分析
- 动态分析
- 使用Wireshark抓包,分析恶意软件的通信过程
- SysTracer记录不同时刻系统的快照,对比不同时刻系统在注册表、磁盘文件、应用程序活动等方面的差异,发现该进程或程序都对自己的电脑做了哪些修改,好让自己知道自己应该采取什么样的应对措施进行弥补
- Process Explorer可以看的很清楚这个进程的实施者、端口
实验总结与体会
- 通过本次实验,在我们知晓恶意程序是谁的情况下进行的,有针对性,但如果单单从茫茫数据中要分析出每个程序的可疑行为或者入侵行为,单靠人去读数据,分析数据是比较复杂的,这次分析都是跟着学长学姐和课题负责人的报告走的,只能看懂一些基础的分析,在网络攻防这条路上,我们还需要任重而道远,缓步前行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通