实践内容
系统运行监控
使用schtasks指令监控系统
netstat
的-b
选项显示在创建每个连接或侦听端口时涉及的可执行程序,但是在没有足够权限时可能失败,-n
选项以数字形式显示地址和端口号。schtasks
指令和之前的计划任务差不多,只不过是cli的。既然之后要用excel分析,我就一步到位好了。将一下内容写进netstat5211.bat
date /t >> d:\netstat5211.txt
time/t >> d:\netstat5211.txt
netstat -bn >> d:\netstat5211.txt
使用命令schtasks /create /tn netstat5211 /sc MINUTE /mo 1 /tr "cmd /c d:\netstat5211.bat"
具体的命令看文档或者直接schtasks /?
都行,简单解释一下
-
/create
创建计划任务,同理还有/query
、end
、/delete
-
/tn
taskname -
/sc
指定计划类型。有效值有MINUTE
,HOURLY
,DAILY
,WEEKLY
,MONTHLY
,ONCE
,ONSTART
,ONLOGON
,ONIDLE
-
/mo
指定任务在其计划类型内运行的频率 -
/tr
指定任务运行的程序或命令
按理来说,此时任务计划已经开始每分钟运行一下批处理脚本。但是我打开txt检查的时候发现出问题了
netstat
的权限不够,想起来上面提到的-b
对权限是有要求的,这跟创建计划任务的权限没什么关系。然后我花了亿点时间研究怎么在命令行里面提升权限或者切换用户,网上倒是有答案,但是都是一大堆批处理指令,遂罢,老老实实gui吧。打开任务计划程序,可以看到新创建的这个任务
在常规
栏勾选使用最高权限运行,然后把操作中的启动程序改一下
就可以正常获取数据了。耐心等待一段时间之后,删掉这个计划任务
参考学姐博客将数据导入excel做个图表,方便分析
没发现什么奇怪的进程,SearchUI.exe
是Cortana的进程,opsrv.exe
和svchost.exe
在搜索过后都是没什么风险的进程,别的进程都可以看的出来是什么程序的。
使用sysmon工具监控系统
下载Sysinternals套件,Sysmon是该套件中的一个工具,可以监控几乎所有的重要操作。
主要依靠xml格式的配置文件进行设置
以下是我的配置文件,通过事件过滤器和匹配规则进行过滤,具体规则根据名称也很容易看出来
<Sysmon schemaversion="10.42">
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">Microsoft</Signature>
<Signature condition="contains">Windows</Signature>
</DriverLoad>
<ProcessTerminate onmatch="include" >
<Image condition="end with">MsMpEng.exe</Image>
</ProcessTerminate>
<FileCreateTime onmatch="exclude" >
<Image condition="end with">chrome.exe</Image>
</FileCreateTime>
<ImageLoad onmatch="include">
<Signed condition="is">false</Signed>
</ImageLoad>
<ProcessAccess onmatch="include">
<TargetImage condition="end with">lsass.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
</ProcessAccess>
<ProcessAccess onmatch="exclude">
<SourceImage condition="contains">vmware</SourceImage>
</ProcessAccess>
<NetworkConnect onmatch="exclude">
<Image condition="end with">chrome.exe</Image>
<Image condition="end with">WeChat.exe</Image>
<Image condition="end with">svchost.exe</Image>
<Image condition="contains">vmware</Image>
</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>
<SourceImage condition="end with">cmd.exe</SourceImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
我这个配置文件还是白名单的多,网络连接中将信任的程序比如chrome
和WeChat
排除。然后把所有包含vmware
字段的进程都排除,因为我还开着kali作为攻击机
使用命令Sysmon.exe -i ..\5211config.xml
安装
然后我们就可以在事件查看器/应用程序和服务日志/Microsoft/Windows/Sysmon/Operational
里看到记录
恶意软件分析
运行实验三中的后门,可以在Sysmon的日志中看到进程创建
同时检测到网络连接
源ip端口,目的ip端口都写的清清楚楚,是由什么程序发起的也看得到
当kali控制端使用webcam_snap
调用摄像头的时候,可以看到驱动加载的记录
但是签名是无效的。
用Process Monitor来检测进程,过滤器的格式好像和sysmon的差不多。过滤网络连接就找到了后面程序,甚至可以从中看到这个后门调用了wsock32.dll
接下来在虚拟机win7中继续尝试。后面连接后,用wireshark可以捕获到tcp连接的包,但是都是看不懂的tcp包,没有上层协议。
最后用Systracer进行分析。Systracer能用快照对比的方式全面地监控系统。我拍下了后面启动前、启动后、提权后、断开连接后四个快照。
比较后面启动前和启动后,可以在Application
中看到后门的踪迹
注册表也有新增的记录,但是看不懂是什么意思
kali端bypassUAC后getsystem,再比较,发现后门程序换了
说明是通过一开始的简单后门传了个能绕过UAC的后门上去,建立新的连接,从而提权。注册表一样改了不少,但是看不出什么有用的信息。
报告内容
基础问题回答
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:
- 首先要监控的是网络,可以就用schtasks设置任务,然后筛选出可疑的网络行为。但凡攻击者想进行远程操作,建立了连接,就一定会被记录到
- 然后检测进程,比如攻击者要抓肉鸡DDOS或者挖矿,肯定会导致占用的CPU不正常(虽然我感觉应该很少抓PC)
- 还有要检测文件的创建和删除。如果攻击者是通过小马传大马的方式进行进一步的攻击,检测文件的创建和删除可以防止进一步的攻击,这个可以用schtasks,也可以用systracer。
- 最后是监控对驱动和硬件的调用,将损失尽量减少。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:Process Monitor可以看的很清楚这个进程的实施者、端口等等,如果能定位到具体的exe,可以进一步丢到vt上,或者用ida反编译之类的深入研究
实践总结与体会
实话实说,研究怎么防御、怎么监控系统没有学习怎么攻击来的有意思。但是我们能合法攻击别人的机会还是比较少的,实践中更多用到的反而是这些防护措施,通过这次实验也算是回归初心,补全了知识面。