• 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反编译之类的深入研究

    实践总结与体会

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

  • 相关阅读:
    C/C++之文件打开方式差别
    C/C++获取文件大小
    dedecms使用
    TCP/IP概念简述
    protobuf新增message报错:类型已存在
    亚马逊MWS开发套路演示
    请求MWS报错401:Access Denied
    敏捷开发
    过滤器和拦截器的区别
    防盗链
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/12726667.html
Copyright © 2020-2023  润新知