• Exp4 恶意代码分析


    Exp4 恶意代码分析

    一.实践目标
    二.实践内容
    三.实践过程
    3.1 系统运行监控
    3.1.1 分析联网程序
    3.1.2 sysmon监控电脑程序
    3.2 恶意软件分析
    3.3 基础问题回答
    四.实验体会

    一.实践目标

    1.1 监控你自己系统的运行状态,看有没有可疑的程序在运行。
    1.2 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
    1.3 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    二.实践内容

    1.系统运行监控
    (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么,你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
    (2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
    2.恶意软件分析
    分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时。该后门软件:
    读取、添加、删除了哪些注册表项;
    读取、添加、删除了哪些文件;
    连接了哪些外部IP,传输了什么数据(抓包分析)

    三.实践过程

    3.1系统运行监控


    (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
    在cmd中键入schtasks /create /TN netstat1201 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat1201.txt"创建计划任务netstat1201

    先在桌面新建txt文本文件(netstat1201.txt),使用记事本写入后再修改后缀为.bat,复制到C盘中,写入内容如下:

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


    键入"win+r"打开命令窗口,输入taskschd.msc进入任务计划程序
    双击我们刚创建的任务,点击操作-编辑,将其中的程序或脚本改为我们创建的netstat1201.bat批处理文件点击确定。(注:一定要勾选使用最高权限运行)


    在计算机管理界面对该任务右键点击运行,此时,可在netstat1201.bat所在目录下看到一个txt文本文件,打开就可看到每隔一分钟被输到这里的联网数据。

    等待一段时间后,让记录项目足够多了我们用excel来进行分析。将netstat1201.txt已经记录的数据导入wps表格中去.
    打开Excel表格,选择数据-获取外部数据,在数据类型中选择分隔符号


    点击下一步,标记所有分隔符号,点击完成

    选择要分析的列——>选择插入——>选择数据透视图——>直接默认值确认
    再在右侧选择分析的日期,拖入下方的轴和值

    可以看到,在几分钟里,我的电脑有许多程序在联网,比如vmware、微信、微软浏览器等。
    而其中,vmware连接的外部IP是我自己虚拟机的IP,微软浏览器浏览的是微软自身分布在全世界各地的微软云,比如:20.184.57.167、13.89.179.9等等,而微信一直在连接一个定位在深圳的ip:58.251.111.105,具体是做什么的还没有查到。
    


    (2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为
    确定要监控的目标:在这里我选择进程创建、进程创建时间、网络连接、远程线程创建
    进程创建:
    UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
    进程创建时间:
    UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
    网络连接:
    UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
    远程线程创建:
    UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
    根据这些过滤事件自主选择编写配置文件sysmon20191201.xml,内容如下:

    <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">msedge.exe</Image>
    </ProcessCreate>
    
    <FileCreateTime onmatch="exclude" >
    <Image condition="end with">msedge.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
    <Image condition="end with">msedge.exe</Image>
    <SourcePort condition="is">137</SourcePort>
    <SourceIp condition="is">127.0.0.1</SourceIp>
    </NetworkConnect>
    <NetworkConnect onmatch="include">
    <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相当于黑名单.其中将其中将Explorer与msedge浏览器设为白名单.同时去掉回环地址127.0.0.1,去掉137号端口,137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,查看http的80端口与https的443端口。
    Image condition根据自己使用的浏览器更改,如谷歌浏览器是chrome.exe,微软浏览器是msedge.exe
    网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。

    下载Sysinternals压缩包并解压(https://gitee.com/wildlinux/NetSec/attach_files)
    键入"win+x",选择以管理员身份运行,找到压缩后的文件夹,键入Sysmon64.exe -i sysmon20191201.xml,然后一路前进

    左下角右键Windows标志,找到事件查看器,在应用程序和服务日志-Microsoft-Windows-Sysmon-Operational可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等

    打开kali,从实验二或实验三中任选一种后门软件进行回连

    运行shell

    再点击Sysmon-Operational刷新记录,找到运行后门文件20191201backdoor.exe相对应的日志如下

    3.2恶意软件分析

    • 用systracer进行分析

    下载安装systracer软件
    捕获三个快照:
    1.回连之前
    2.开启后门程序回连kali
    3.键入screenshot获取截图

    首先对第一个和第二个快照进行比较:

    从上图可以看出,在回连之后,在删除了一些进程的同时又增加了一些进程,比如删除了cmd.exe,增加了smartscreen.exe,用于保护虚拟机遭到下载的恶意软件和恶意网站的侵害。


    很明显,回连前后端口发生了较大的变化,并且增加了许多启动后门程序后增加的dll文件

    注册表方面,增加了SYSTEM,删除了DRIVERS。

    然后是第二个和第三个快照进行比较:

    在运行scrennshot后,很明显增加了跟桌面搜索有关的进程。


    同样,端口和dll组件也进行了变化。

    注册表不可查

    • 用wireshark进行抓包

    kali有wireshark可以直接使用
    回连时的抓包:

    可以看出,回连时首先进行了三次握手进行连接,连接了192.168.120.1这个ip,是学校的本地局域网。传输的是都是TCP报文,以及一大堆ACK包,有时还伴有PSH+ACK包,表示有数据传输。

    键入screenshot后的抓包。说实话,数据太多了,真没看出来和上一个抓包有什么区别,分析同上。

    3.3 基础问题回答

    (1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
    答:可以使用计划任务,每隔一个小时记录自己的电脑有哪些程序在联网。如果有未知的IP联网的话,很有可能就是恶意代码,这时就可以将其记录下来,并查看其连接的外部IP是哪里。还可以用systracer每一天都对电脑的注册表或自启动项进行快照备份,并比较快照之间的区别,查出是否有可疑的进程在运行。
    (2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
    答:如果已经确定可疑程序在运行的话,可以使用wireshark进行抓包,查看程序是否在传输数据文件以及数据包的目的ip地址。而且同样也可以使用systracer每分钟进行快照,分析进程对系统做了什么,比如新增文件,修改注册表信息等。

    四.实验体会

    我认为这个实验是目前为止最复杂的一次实验。因为本次实验的重点不在于操作,更多的是注重对数据或截图的分析。比如,我用wireshark确实捕获了一堆包,但这些包有什么用、为什么这些包会在这个操作中出现......对于这些问题的探索,我觉得是比单纯地在虚拟机上敲几行命令要曲折得多。
    当然,在查找问题的答案的时候,我也能够对内容及原理有更深一层的体会。信息安全任重而道远。现如今,各种恶意代码、恶意软件层出不穷,我们在日常生活中一定要提高警惕。前几个实验告诉我们如何识别、鉴别恶意代码,而经过这次实验,我们就要养成对我们的电脑实时监控的习惯。及时发现,及时处理,让危险无处可藏。

  • 相关阅读:
    【Vijos-P1285】佳佳的魔法药水-Dijkstra思想
    【NOIP2009提高组T3】最优贸易-双向SPFA
    【NOIP2009提高组T3】最优贸易-双向SPFA
    【Vijos-P1046】观光旅游-Floyd求最小环
    【Vijos-P1046】观光旅游-Floyd求最小环
    【Vijos-P1060】盒子-DP+组合数学
    mysql 结合keepalived测试
    set global read_only=0; 关闭只读,可以读写 set global read_only=1; 开始只读模式
    set global read_only=0; 关闭只读,可以读写 set global read_only=1; 开始只读模式
    -F, --flush-logs
  • 原文地址:https://www.cnblogs.com/WANTED/p/16136599.html
Copyright © 2020-2023  润新知