zoukankan      html  css  js  c++  java
  • 2019-2020-2 20175105王鑫浩《网络对抗技术》Exp4 恶意代码分析

    2019-2020-2 20175105王鑫浩《网络对抗技术》Exp4 恶意代码分析

    实践内容及步骤

    1 系统运行监控

    1.1 Windows计划任务schtasks

    (1)输入以下命令,每隔1分钟就会监测哪些程序在使用网络,并把结果记录在netstatlog.txt文档里。
    schtasks /create /TN 20175105netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstatlog.txt"

    上条命令中的参数分别为:
    TN是TaskName的缩写,我们创建的计划任务名是20175105netstat;
    sc表示计时方式,我们以分钟计时填MINUTE;
    TR是Task Run,要运行的指令是netstat
    bnb表示显示可执行文件名,n表示以数字来显示IP和端口;
    >表示输出重定向,将输出存放在c: etstatlog.txt文件中

    (2)创建记事本文件,写入以下内容:

    date /t >> c:
    etstat20175105.txt
    time /t >> c:
    etstat20175105.txt
    netstat -bn >> c:
    etstat20175105.txt
    

    (3)将记事本文件更改文件后缀为bat并移动到C盘根目录下

    (4)打开控制面板搜索管理工具,然后打开任务计划程序,找到新建的计划20175105netstat

    (5)点击计划属性,然后操作选项卡里面的编辑启动程序,把程序或脚本cmd改成C:schtasks5105.bat

    (6)在常规选项卡勾选不管用户是否登录都要运行使用最高权限运行

    (7)程序运行后,打开netstat20175105.txt,就能看到计划运行记录下来的联网记录

    (8)打开Excel,在数据->自文本导入txt文件,并依次选择分隔符号所有分隔符号

    (9)导入后如下

    (10)插入数据透视图并将右键点击周一,取消勾选不需要的项

    (11)将周一拖动到

    (12)数据透视图如下

    1.2 sysmon

    (1)下载sysmon

    (2)在sysmon.exe所存在的文件夹内,新建一个txt文件,文件中写入如下代码:

    <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">iexplore.exe</Image> 
        </ProcessCreate>
    
        <FileCreateTime onmatch="exclude" >
          <Image condition="end with">iexplore.exe</Image>
        </FileCreateTime>
        
        <NetworkConnect onmatch="exclude">
          <Image condition="end with">iexplore.exe</Image>
          <SourcePort condition="is">137</SourcePort>
          <SourceIp condition="is">192.168.159.1</SourceIp>
        </NetworkConnect>
        <NetworkConnect onmatch="include">  
          <DestinationPort condition="is">5105</DestinationPort>    
          <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是黑名单,需要重点监视的文件。
      • Image condition这里是自己使用的浏览器,我用的是IE浏览器,所以,我用的是iexplore,自己可以写自己常用的浏览器,可以在任务管理器中的进程中查看。
      • 进程的创建时间我也没有创建浏览器进程的时间。
      • 网络连接我过滤掉了浏览器的网络连接、源IP为192.168.159.1(本机IP)的网络连接和目的端口为137的连接服务,且查看目的端口为5105、80(http)和443(https)的网络连接。
      • 远程线程创建记录了目标为explorer.exesvchost.exewinlogon.exepowershell.exe的远程线程。

    (3)将txt文放入C盘根目录下,再以管理员身份运行命令提示符,在sysmon文件夹下输入指令Sysmon.exe -i C:20175105Sysmoncfig.com

    (4)安装成功后界面如下

    (5)事件查看器(本地)-应用程序和服务日志-Microsoft-Windows-Sysmon-Operational查看根据配置信息sysmon20175314.xml记录的进程信息进程号 路径等系统信息

    2 恶意软件分析

    2.1 抓包分析

    (1)用wireshark抓包来分析连接了哪些外部IP,传输的数据,因为我们只想查看和虚拟机IP有关的数据包,所以,把没用的包过滤掉,我们可以把过滤规则设置为ip.addr == 192.168.87.132

    (2)Kali系统与Windows系统Ping通时的ICMP

    (3)MSF反弹连接时的TCP

    2.2 快照比对

    (1)下载安装systracer

    (2)点击软件右侧的take snapshotstart,开始捕获;点击stop停止并存储。
    快照一(Snapshot #1):已移植后门程序
    快照二(Snapshot #2):运行后门程序并在kali中实现回连
    快照三(Snapshot #3):执行getuid命令

    (3)点击右下角的compare对比快照一和快照二。点击Applications,可以看到回连地址、远程地址和端口号。

    (4)对比快照二和三。可以看到删除了大量的键值,并能看到增删了一系列注册表。


    基础问题回答

    • (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
      • 使用Schtasks监听,利用统计图分析应用程序情况;
      • 使用Sysmon编写配置文件监视相应的进程情况,记录相关的日志文件;
    • (2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
      • 对文件进行扫描
      • 使用PEiD对文件进行加壳检查
      • 使用Systracer进行分析,查看其对注册表、文件和进程内容的修改;
      • 使用Wireshark进行捕包分析,查看它连接到了哪些IP、与外部进行了哪些通信。

    实验收获与感想

    • 本次实验相较于上次实验轻松了很多,对于动态分析的过程体会很深刻,看到的各种进程和注册表以及键值的增删有些陌生,不能完全理解,意识到自己还需要继续努力学习。
  • 相关阅读:
    linux下查看当前登陆的用户数目
    uboot能ping通本机无法ping通本机上搭建的虚拟机
    一个时序图描述从用户在浏览器地址栏输入url并按回车,到浏览器显示相关内容的各个过程
    3*0.1 == 0.3 将会返回什么?true 还是 false?
    Floating Point Math
    浮点数在计算机中是如何表示的
    浮点数在计算机中是如何表示的
    Java并发编程:volatile关键字解析
    join的源码
    i++ 是线程安全的吗
  • 原文地址:https://www.cnblogs.com/wxhblogs/p/12728292.html
Copyright © 2011-2022 走看看