zoukankan      html  css  js  c++  java
  • 2019-2020-2 网络对抗技术 20175211 Exp4 恶意代码分析

    实践内容

    系统运行监控

    使用schtasks指令监控系统

    netstat-b选项显示在创建每个连接或侦听端口时涉及的可执行程序,但是在没有足够权限时可能失败,-n选项以数字形式显示地址和端口号。schtasks指令和之前的计划任务差不多,只不过是cli的。既然之后要用excel分析,我就一步到位好了。将一下内容写进netstat5211.bat

    date /t >> d:
    etstat5211.txt
    time/t >> d:
    etstat5211.txt
    netstat -bn >> d:
    etstat5211.txt
    

    使用命令schtasks /create /tn netstat5211 /sc MINUTE /mo 1 /tr "cmd /c d: etstat5211.bat"

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

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

    按理来说,此时任务计划已经开始每分钟运行一下批处理脚本。但是我打开txt检查的时候发现出问题了

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

    常规栏勾选使用最高权限运行,然后把操作中的启动程序改一下

    就可以正常获取数据了。耐心等待一段时间之后,删掉这个计划任务

    参考学姐博客将数据导入excel做个图表,方便分析

    没发现什么奇怪的进程,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安装

    然后我们就可以在事件查看器/应用程序和服务日志/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反编译之类的深入研究

    实践总结与体会

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

  • 相关阅读:
    42. Trapping Rain Water
    223. Rectangle Area
    645. Set Mismatch
    541. Reverse String II
    675. Cut Off Trees for Golf Event
    安装 VsCode 插件安装以及配置
    向上取整 向下取整 四舍五入 产生100以内随机数
    JS 判断是否为数字 数字型特殊值
    移动端初始配置,兼容不同浏览器的渲染内核
    Flex移动布局中单行和双行布局的区别以及使用
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/12726667.html
Copyright © 2011-2022 走看看