2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

实践内容

系统运行监控

使用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"
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

具体的命令看文档或者直接schtasks /?都行,简单解释一下

  • /create创建计划任务,同理还有/queryend/delete
  • /tn taskname
  • /sc指定计划类型。有效值有MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE
  • /mo指定任务在其计划类型内运行的频率
  • /tr指定任务运行的程序或命令

按理来说,此时任务计划已经开始每分钟运行一下批处理脚本。但是我打开txt检查的时候发现出问题了
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

netstat的权限不够,想起来上面提到的-b对权限是有要求的,这跟创建计划任务的权限没什么关系。然后我花了亿点时间研究怎么在命令行里面提升权限或者切换用户,网上倒是有答案,但是都是一大堆批处理指令,遂罢,老老实实gui吧。打开任务计划程序,可以看到新创建的这个任务
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

常规栏勾选使用最高权限运行,然后把操作中的启动程序改一下
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

就可以正常获取数据了。耐心等待一段时间之后,删掉这个计划任务
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

参考学姐博客将数据导入excel做个图表,方便分析
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

没发现什么奇怪的进程,SearchUI.exe是Cortana的进程,opsrv.exesvchost.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>

我这个配置文件还是白名单的多,网络连接中将信任的程序比如chromeWeChat排除。然后把所有包含vmware字段的进程都排除,因为我还开着kali作为攻击机
使用命令Sysmon.exe -i ..\5211config.xml安装
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

然后我们就可以在事件查看器/应用程序和服务日志/Microsoft/Windows/Sysmon/Operational里看到记录

恶意软件分析

运行实验三中的后门,可以在Sysmon的日志中看到进程创建
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

同时检测到网络连接
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

源ip端口,目的ip端口都写的清清楚楚,是由什么程序发起的也看得到

当kali控制端使用webcam_snap调用摄像头的时候,可以看到驱动加载的记录
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

但是签名是无效的。
用Process Monitor来检测进程,过滤器的格式好像和sysmon的差不多。过滤网络连接就找到了后面程序,甚至可以从中看到这个后门调用了wsock32.dll
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

接下来在虚拟机win7中继续尝试。后面连接后,用wireshark可以捕获到tcp连接的包,但是都是看不懂的tcp包,没有上层协议。
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

最后用Systracer进行分析。Systracer能用快照对比的方式全面地监控系统。我拍下了后面启动前、启动后、提权后、断开连接后四个快照。
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

比较后面启动前和启动后,可以在Application中看到后门的踪迹
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

注册表也有新增的记录,但是看不懂是什么意思
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

kali端bypassUAC后getsystem,再比较,发现后门程序换了
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

说明是通过一开始的简单后门传了个能绕过UAC的后门上去,建立新的连接,从而提权。注册表一样改了不少,但是看不出什么有用的信息。
2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

报告内容

基础问题回答

(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:

  • 首先要监控的是网络,可以就用schtasks设置任务,然后筛选出可疑的网络行为。但凡攻击者想进行远程操作,建立了连接,就一定会被记录到
  • 然后检测进程,比如攻击者要抓肉鸡DDOS或者挖矿,肯定会导致占用的CPU不正常(虽然我感觉应该很少抓PC)
  • 还有要检测文件的创建和删除。如果攻击者是通过小马传大马的方式进行进一步的攻击,检测文件的创建和删除可以防止进一步的攻击,这个可以用schtasks,也可以用systracer。
  • 最后是监控对驱动和硬件的调用,将损失尽量减少。

(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:Process Monitor可以看的很清楚这个进程的实施者、端口等等,如果能定位到具体的exe,可以进一步丢到vt上,或者用ida反编译之类的深入研究

实践总结与体会

实话实说,研究怎么防御、怎么监控系统没有学习怎么攻击来的有意思。但是我们能合法攻击别人的机会还是比较少的,实践中更多用到的反而是这些防护措施,通过这次实验也算是回归初心,补全了知识面。

上一篇:Windows 10 SCHTASKS 创建计划任务


下一篇:在windows上 定时执行 Schtasks命令详解(计划任务DOS批处理)