zoukankan      html  css  js  c++  java
  • Exp 4 恶意代码分析

    1,实验目标

    1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行。

     1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。

     1.3假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    2,实践内容

     2.1系统运行监控(2分)

    (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。

    (2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。

    参考:schtask与sysmon应用指导

    3,具体操作

    3.1系统运行监控——计划任务

    系统运行监控:

    1.schtasks计划任务

    Step1:输入命令:

    schtasks /create /TN netstat4305 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstat4305.txt",创建一个名为netstat4305的计划任务。

     

     

    Step2:在c盘根目录下新建netstat4305.bat ,以文本文件形式打开,输入以下内容:

    date /t >>c: etstat4305.txt

    time /t >>c: etstat4305.txt

    netstat -bn >>c: etstat4305.txt

     

    Step3:按win+R键,输入taskschd.msc打开任务计划程序,找到新创建的计划任务netstat4305.

     

    Step4:右键单击该任务,打开任务属性。在“常规”界面,勾选“使用最高权限运行”,配置选择windows10。

     

     

    Step5:找到操作,对启动程序进行编辑。

     

    bat文件写入到“程序或脚本”中,确认、保存和退出。

    至此,netstat4305.txt文件可以每隔一分钟记录一次本机的网络连接以及记录时间。

     Step6:写入excel表格,制表分析

    数据透视表

     

     簇状柱形图

     3.2sysmon工具监控

    1,下载sysmon工具并解压至桌面。

    在桌面新建一个XML文件sysmon.xml,以txt文件形式打开并写入下面这段内容并保存:

    <Sysmon schemaversion="4.23">

      <!-- Capture all hashes -->

      <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>

        

        <NetworkConnect onmatch="exclude">

          <Image condition="end with">chrome.exe</Image>

          <Image condition="end with">iexplorer.exe</Image>

          <SourcePort condition="is">137</SourcePort>

          <SourceIp condition="is">127.0.0.1</SourceIp>

        </NetworkConnect>

     

    <NetworkConnect onmatch="include">

    <DestinationPort condition="is">4305</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>,

    2,右键单击开始菜单,选择Windows PowerShell(管理员)(A),进入管理员界面下的命令行。通过cd进入到sysmon安装程序所在的目录也就是桌面,执行命令:.Sysmon.exe -i sysmon.xml,安装sysmon工具。

     

    随着安装步骤进行直至安装成功。Sysmon.xml文件内容可随时更改,修改完需要用指令进行更新:Sysmon.exe -c sysmon.xml。

    右键单击开始菜单,选择并打开事件查看,双击“应用程序和服务日志”,依次进入/Microsoft/Windows/Sysmon/Operational,在这里可以查看sysmon工具记录下的系统日志。

    此时在Windows端上运行之前实验生成的后门使其成功回连至kali端上。

    根据kali显示的信息可知,连接建立于9:49:12,那么照着这个时间去搜索日志,可以很精确地找到记录后门建立的日志信息。

    如上图所示,找到9:49:12这个时间的日志,就是后门建立的日志信息,可以看出任务类别是“ProcessCreate”,也就是创建进程的日志,在下面的常规信息和详细信息说的都是这个日志的内容,包括进程对应的镜像地址是C:Users10983Desktop4305encoded.exe,日志来源是sysmon,记录时间是2020/4/17 9:49:12,本机连接的服务器类型是Apache HTTP Server,日志描述是ApacheBench command line utility。类似地,后门的其他日志也可以通过这种方式辨别和分析。

    3.3恶意软件分析

    静态分析

    1)Virustotal分析

    将可以目标放到virustotal网站上进行扫描,可以得到该网站上每一款杀软对该目标的扫描结果,从图中可以看出71款杀软中有56款都示警了。在DETECTION栏目里,可以看到每一款杀软的示警信息,告知用户它是什么类型的恶意代码。

    有的杀软只是说suspicious,可疑的,比如Acronis;有的杀软就会明确给出它是什么类型的恶意代码,比如BitDefender就说是Trojan.CryptZ.Gen这种木马,很详细!

    DETAILS栏目里,可以查看关于该文件的详细信息,

    2)文件格式识别(peid工具)

    PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。

    该软件可以使用不同的扫描模式:正常扫描:可在PE文档的入口点扫描所有记录的签名;深度扫描:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;

    核心扫描:可完整地扫描整个PE文档,建议将此模式作为最后的选择。

    (3) 反编译、反汇编(PE Explorer工具)

    PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,非常好用。

    导入实验三生成的编码一次的后门4305encoded.exe,然后在“视图”栏可以查看文件头信息、数据目录、区段头等信息。

    上图是该后门的文件头信息,可以看出这些信息都是相当具体、细节和底层的信息,很多都是和地址、大小、特征有关。

    上图是该后门的数据目录,内容很复杂,但是可以看出它们都非常具体详细,从微观层面解释了这个后门。

    上图是该后门的区段头。结合着数据目录和文件头信息,这么多底层细节很有助于分析一个后门在计算机中的活动轨迹,精确度极高,但同时也需要足够的知识储备和专业素养。

    打开附属扫描器,可以看到该后门(4305once.exe)所调用到的dll模块,非常详细,几个大类里面有许多小的dll模块,数量非常之大,在这里查看的dll比上面的PEiD查看的更为详细。

     

     上图是针对后门4305once.exe的反汇编结果。

    调用出附属扫描器,可以得到该后门所依赖的的dll列表,这部分内容非常详细。

    ·动态分析:

    主要有以下几种方法:

    快照比对(SysTracer、Filesnap、Regsnap工具等)

    抓包分析(WireShark工具等)

    行为监控(Filemon、Regmon、ProcessExplorer工具等)

    沙盒(NormanSandbox、CWSandbox工具等)

    动态跟踪调试(Ollydbg、IDAPro工具等)

    (1)Wireshark抓包分析

    在后门作用期间用wireshark进行抓包,完整记录kali与Windows间的网络信息交互过程。以tcp4305端口为过滤条件精准得到和后门有关的数据包。因为后门在kali端只启用了4305端口,而Windows往往很少会调用这个端口,所以以此条件过滤得到的数据包绝大多数都是和后门有关、因后门而生成的。上图的前三个数据包是tcp三次握手的过程,192.168.1.104是Windows的IP地址,192.168.1.103是kali的IP地址。第一次握手由Windows向kali发出,即由被攻击方向攻击方主动申请建立连接,这正是反弹连接的一大特点。从第四个数据包开始,就由kali端先发送数据包,窃取Windows端的信息。

    kali端命令行输入exit,断开后门连接。此时winreshark会抓到一个标红的数据包rst包,这是最后一个数据包,它标志着连接的断开。

    (2)systracer工具安装。

    选中间那个。

     设置端口4305。

    制作当前状态下的快照。每次快照均记录以上信息,包括注册表状态、磁盘文件状态和应用程序状态。在三个状态下制作系统快照,分别是后门运行前、后门会连成功并执行一些操作以及后门断开连接。

    在软件右下角,有下图所示的对比操作,可以选中两个快照进行对比,看它们彼此间有什么差异变化。从中就可以看出后门在此期间干了什么。

    比如,可以选择compare快照一和二,对比它们之间的变化。

    左侧导航栏查看的是注册表的对比情况,绿色表示新增,红色表示删除,几大类注册表信息下面有所有的子类注册表信息。

    如上图所示对比文件信息的差异,可以看到后门运行前后有哪些文件是新添加的,还有哪些是被后门删去了的。文件路径都很明确很完整。

    对比快照一和二的开放端口信息,可以看出新增了上图红框所示的那部分内容,这就是后门建立的连接,本地29747端口连向了kali的apache http服务器,直指kali的tcp4305端口。

    4,基础问题回答

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

    使用schtasks,设置计划任务,对主机的进程及上网情况进行记录。

    使用Systracer定期定时进行快照,对系统状态进行比较,系统是否有执行一些非用户主动下的操作。

    (2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

    用SysTracer记录不同时刻系统的快照, 发现该进程或程序都对自己的电脑做了哪些修改,

    用wireshark进行定向定目标地抓包分析,从而获取攻击方与主机的通信内容、ip等等信息。

    5,实验心得

    此次实验不是特别困难,但也很考验操作。需要掌握多种软件及其操作方法,需要特别细心与沉着。实验中出现了许多问题,非常感谢老师和同学的帮助。通过本次实验,我对恶意代码的分析有了更深的认识。对于网络防护,需要谨小慎微。希望下一次实验我能表现得更好。

  • 相关阅读:
    进程同步&&进程互斥
    CHAP4 字符串和格式化输入输出
    记录学习到的内容
    数据链路层 差错控制
    二叉树的顺序存储
    Java复习笔记
    Stream流
    函数式接口
    网络编程
    接口,多态,抽象类总结
  • 原文地址:https://www.cnblogs.com/lhz20174305/p/12718931.html
Copyright © 2011-2022 走看看