1 系统运行监控
1.1 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果
目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
写好批处理脚本netstat1324.bat
schtasks /create /TN netstat1324 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > d:\netstatlog.txt
写好后将文件后缀名改成bat即可
在Windows的任务计划程序中,可以查看到新创建的任务:
设置启动条件,配置权限
这时可以看到D盘下出现了三个文件,若点开netstat1324.txt 的文件发现“请求的操作需要提升”,则输入下图指令
在Excel表格中分析记录的数据
-
导入文本数据:新建excel文件->“数据”->“导入数据”->“直接打开数据文件”
-
依次选择其他编码、分隔符号,然后将分隔符号的所有选项都选中,点击完成即可
- 创建数据透视图:选中我们所要分析的列,选择“插入”——数据透视图——新工作表
在新的工作表中,在右侧字段列表中筛选我们不需要的字段,选好后将字段列表拖到下方的框中
查看生成的图表,从图中可以看出位居第一位的是TCP。其余比较高的包括wps、wpsclouder、vmware、ChromeCore等,确实是当时正在运行的应用
1.2 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
在sysmon所在的文件夹下编写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
结尾的进程记录。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 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
用Sysmon64.exe -i sysmon1324.xml安装sysmon
查看“事件查看器”,选择日志的位置,应用程序和服务日志/Microsoft/Windows/Sysmon/Operational
此时运行我们在实验二中生成的后门程序20201324_backdoor.exe,成功获取主机shell。我们可以在事件查看器中找到此条日志
2恶意软件分析
分析该软件在
(1)启动回连,(2)安装到目标机,(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
PEiD软件分析恶意软件。
PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档的加壳类型和签名
普通后门程序
hou
- 用PEiD检测壳为:
yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h)*
- 有两种情况:
1)其他壳伪装成yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h)
2)没有加壳,作者加了花指令,伪装成yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h) - 此处应该是没有加壳的,也就是第二种情况。
加壳的后门程序
- 查到了压缩壳的相关信息
加了压缩壳之后又添加加密壳的文件
- 未被查出
普通的exe文件
Systracer动态分析
- 快照一:未移植后门程序,保存为
Snapshot #1
- 快照二:运行后门程序并在kali中实现回连,保存为
Snapshot #2
- 快照三:在kali中使用
dir
指令,保存为Snapshot #3
- 快照四:在kali中使用
screenshot和record_mic
指令,保存为Snapshot #4
- 快照五:在kali中使用
getuid
指令,保存为Snapshot #5
2.1 读取、添加、删除了哪些注册表项
比较第二次与第三次的不同(运行了dir指令)
可以看到快照3对根键中的内容进行了修改,对注册表中的配置信息进行了修改
2.2 读取、添加、删除了哪些文件
比较第一次和第二次的不同(后门程序运行回连前后)
可以显示该过程中文件增删情况
2.3 连接了哪些外部IP,传输了什么数据(抓包分析)
前三个包为TCP连接的三次握手
连接完成后,重新抓包,在kali中输入dir
,发现wireshark又捕获到了许多PSH+ACK包,可以判断有数据在传输
3 报告内容
3.1实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:利用主机自带的schtasks追踪启动情况、配置监控系统或进行快照差异比对。如本次实验中,利用sysmon工具,做好配置,一段时间后查看记录日志即可追查主机程序运行情况;或者用本次实验中的systracer工具,抓捕一些快照,进行差异对比。除实验中用到的工具外,还有Process Explorer工具、Process Monitor工具等选择
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
静态分析
- 使用virustotal
- 查看恶意软件的一些信息
- 使用使用PEiD分析
- 查看文件是否加壳
- 进行脱壳
- 使用PE Explorer分析恶意软件
动态分析
- 使用systracer工具
- 抓捕一些快照
- 查看系统中注册表信息、文件、应用的改变
- 使用Wireshark工具
- 进行抓包分析
- 查看可疑通信
- 使用ProcessExplorer工具
- 动态监视应用程序
- 查看哪些程序使用和改变了系统文件
3.2实验总结与体会
第一次接触这么多新工具,有些不熟练,实验中几个被卡住的地方都是因为没搞懂工具的正确使用方式,对自己的表现不太满意。另外,我刚好在其他方面也在接触逆向分析,感觉自己在课堂上学的还是太浅。实战中无论代码量还是隐秘程度都远高于实验,更重要的是,实验归根到底是验证性质的过程,而实战中没有人会告诉你“这附近有你想要的东西”或是“监听一分钟就可以得到数据了,不用等太久”,这种不确定性带来的挑战非常恐怖。希望自己继续加油吧