• 2019-2020-2 20174317祝源《网络对抗技术》Exp4 恶意代码分析


    1. 实验目的

    1. 学会是监控你自己系统的运行状态,看有没有可疑的程序在运行。
    2. 使用工具分析一个恶意软件。
    3. 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

    2. 实验思路

    使用工具监控->分析结果

    3. 实验内容

    3.1. 系统运行监控

    3.1.1. 利用任务计划程序

    一、设置

    新建一个名为monitor4317.bat的批处理文件,输入如下内容,保存到D盘根目录。

    date /t >> D:monitor20174317.txt 
    time /t >> D:monitor20174317.txt 
    netstat -bn >> D:monitor20174317.txt
    

    参考实验二,在任务计划程序中创建任务。任务名称设置为monitor20174317,安全选项设置为不管用户是否登录都要运行使用最高权限运行,用户选择自己的管理员账户。

    新建一个触发器,设置为每1分钟执行一次,持续1小时。

    新建一个启动程序的操作,选择之前创建好的monitor4317.bat文件。

    点击确定创建这个计划时会要求输入密码。让人意外的是这个脚本文件在执行的时候被杀毒软件拦下来了。一小时后可以在文件中看到监控记录,但格式比较乱。

    参考学长的博客将导入数据到excel进行分析,但由于使用的是OFFICE 2019,导入的时候发现不能设置多个分隔符,导入结果有过多的列,百度一下还是解决了。

    二、分析:

    首先分析应用程序,数据透视图如下:

    没有什么可疑的程序。那个无法获取所有权信息属实让人迷惑,使用卡巴斯基自带的网络监控功发现,这种连接是使用svchost.exe建立的,目的IP除127.0.0.1外、还有位于广州、香港、美国(微软公司的IP)等地的连接,目的端口多为80和443,但流量都很小,应该没什么问题。

    然后分析外部地址,就是目的IP,数据透视图如下(过滤掉了127.0.0.1的连接):

    可以发现连接次数较多的IP的目的端口都是80和443端口,查了连接次数前五的IP和连接的是5228端口的IP的WHOIS信息,似乎都没什么可疑的,绘制表格如下:

    IP WHOIS desrc 所属组织 所在城市
    119.255.133.60 Beijing Education Information Network Langfang Development Area Huarui Xintong Network T Beijing
    222.138.2.184 China Unicom Henan province network China Unicom Henan Zhengzhou
    114.118.64.116 NO.18 Building University of Technology ShenZhen TC telecom Network Corp. Beijing
    117.18.237.29 EdgeCast Networks Asia Pacific Network Edgecast Networks Taipei
    40.90.189.152 Microsoft Corporation (MSFT) Singapore
    108.177.125.188 Google LLC (GOGL) US, Mountain View

    3.1.2. 使用Sysmon

    一、下载

    在Windows的官方网站可以下载Sysmon和查看帮助文档:Sysmon v10.42

    二、编写配置文件

    编写Sysmon配置文件,我想监控的是:进程创建 ProcessCreate、网络连接 NetworkConnect、远程线程创建 CreateRemoteTh、驱动器读取 RawAccessRead、进程访问 ProcessAccess、文件创建 FileCreate、注册表事件 RegistryEvent。用到了Image、DestinationIp、SourceIp、SourcePort等过滤选项。配置文件如下:

     1 <Sysmon schemaversion="4.23">
     2   <!--注意:最新版的配置规则是4.23-->
     3   <!-- Capture all hashes -->
     4   <HashAlgorithms>*</HashAlgorithms>
     5   <EventFiltering>
     6     <!-- Log all drivers except if the signature -->
     7     <!-- contains Microsoft or Windows -->
     8     <ProcessCreate onmatch="exclude">
     9       <!--不记录chrome、IE和EDGE创建的进程-->
    10       <Image condition="end with">chrome.exe</Image>
    11       <Image condition="end with">MicrosoftEdge.exe</Image>
    12       <Image condition="end with">iexplore.exe</Image>
    13     </ProcessCreate>
    14 
    15     <NetworkConnect onmatch="exclude">
    16       <!--不记录chrome、IE和EDGE创建的网络连接-->
    17       <Image condition="end with">chrome.exe</Image>
    18       <Image condition="end with">MicrosoftEdge.exe</Image>
    19       <Image condition="end with">iexplore.exe</Image>
    20       <!--不记录源端口是137和源IP地址/目的IP地址是127.0.0.1的网络连接-->
    21       <SourcePort condition="is">137</SourcePort>
    22       <SourceIp condition="is">127.0.0.1</SourceIp>
    23       <DestinationIp condition="is">127.0.0.1</DestinationIp>
    24     </NetworkConnect>
    25 
    26     <CreateRemoteThread onmatch="exclude">
    27        <!--不记录chrome、IE和EDGE创建的线程-->
    28       <TargetImage condition="end with">explorer.exe</TargetImage>
    29       <SourceImage condition="end with">powershell.exe</SourceImage>
    30       <SourceImage condition="end with">cmd.exe</SourceImage>
    31     </CreateRemoteThread>
    32 
    33     <RawAccessRead onmatch="exclude">
    34        <!--不记录chrome、IE和EDGE读取磁盘的记录-->
    35       <Image condition="end with">chrome.exe</Image>
    36       <Image condition="end with">MicrosoftEdge.exe</Image>
    37       <Image condition="end with">iexplore.exe</Image>
    38     </RawAccessRead>
    39 
    40     <FileCreateTime onmatch="exclude" >
    41        <!--不记录chrome、IE和EDGE创建文件的记录-->
    42       <Image condition="end with">chrome.exe</Image>
    43       <Image condition="end with">MicrosoftEdge.exe</Image>
    44       <Image condition="end with">iexplore.exe</Image>
    45     </FileCreateTime>
    46 
    47     <RegistryEvent onmatch="exclude">
    48       <!--不记录chrome、IE和EDGE的注册表事件-->
    49       <Image condition="end with">chrome.exe</Image>
    50       <Image condition="end with">MicrosoftEdge.exe</Image>
    51       <Image condition="end with">iexplore.exe</Image>
    52     </RegistryEvent>
    53 
    54   </EventFiltering>
    55 </Sysmon>
    查看配置文件

    其中exclude表示排除,在exclude中的都不会记录。include表示包含,只会记录和include相匹配的事件。

    三、安装

    将编写好的配置文件命名为config.xml,保存到D:shiyan4目录下,然后把下载好的Sysmon解压到同一个文件夹里。以管理员身份运行cmd或powershell,进入解压目录,输入.Sysmon64.exe -i config.xml进行安装(Powershell的cd不用再输/d也是挺方便的),在弹出来的对话框中点击“Agree”。

    四、查看日志

    Sysmon的日志可以在事件查看器中查看,依次打开应用程序和服务日志->Microsoft->Windows->Sysmon->Operational

    发现阿里旺旺的进程在后台偷偷运行,还改了我的注册表(抱胸.jpg),但我开机后根本就没启动过这个程序。从任务管理器里发现是通过名为Alibaba PC Safe Service的服务启动的,把这个服务的启动类型改成了手动。

    还发现了很多System32文件夹下的应用程序在修改注册表、建立网络连接之类的,比如ctfmon.exe、svchost.exe、sihost.exe。

    打开kali启动msf监控,运行之前生成的后门程序,查看记录,发现后门程序常用的操作有建立网络连接和创建进程。

    3.2. 恶意软件分析

    3.2.1. 静态分析

    IDA Pro

    IDA Pro是一款交互式的,可编程的,可扩展的,多处理器的分析程序。具体使用可以参考这篇博客

    使用IDA打开后门程序,选择右侧窗口上方的“Import”可以看到程序引用的DLL和使用了DLL中的什么函数。浏览发现程序分别引用了ADVAPI32KERNEL32MSVCRTWS2_32WSOCK32这几个DLL。

    查资料后知道,ADVAPI32.DLL与注册表操控以及事件日志有关;KERNEL32.DLL控制着系统的内存管理、数据的输入输出操作和中断处理,属于内核级文件,驻留在内存中特定的写保护区域;MSVCRT.DLL是微软在windows操作系统中提供的C语言运行库执行文件;WSOCK32.DLLWS2_32.DLL用于创建网络套接字,调用关系是:网络应用程序->CSocket(WSock32.dll)->Socket API(ws2_32.dll)->网络传输服务进程。

    使用shift+12可以查看程序中所有的字符串,竟然能在里面发现html样式的字符串,这可能是病毒用来免杀或者反向连接用的?

    3.2.2. 动态分析

    1.Systracer

    将后门程序放入虚拟机中执行,分别拍摄如下几个快照:

    1. 安装完Systracer后,运行后门程序前。命名为Snapshot #1
    2. 后门程序回连kali成功后。命名为Snapshot #2
    3. 在msf中执行获取屏幕、提权等操作后。命名为Snapshot #3

    首先分析快照1和2:

    在网上查到注册表的根键如下:

    根键 说明
    HKEY_CLASSES_ROOT 该根键包括启动应用程序所需的全部信息,包括扩展名,应用程序与文档之间的关系,驱动程序名,DDE和OLE信息,类ID编号和应用程序与文档的图标等
    HKEY_CURRENT_USER 该根键包括当前登录用户的配置信息,包括环境变量,个人程序以及桌面设置等
    HKEY_LOCAL_MACHINE 该根键包括本地计算机的系统信息,包括硬件和操作系统信息,安全数据和计算机专用的各类软件设置信息
    HKEY_USERS 该根键包括计算机的所有用户使用的配置数据,这些数据只有在用户登录系统时才能访问。这些信息告诉系统当前用户使用的图标,激活的程序组,开始菜单的内容以及颜色,字体
    HKEY_CURRENT_CONFIG 该根键包括当前硬件的配置信息,其中的信息是从HKEY_LOCAL_MACHINE中映射出来的

    能发现很多明显是和后门程序有关的注册表项被修改,还有一些奇奇怪怪的注册表项,但看不懂,推测和病毒程序有关。

    然后分析文件差异,发现很多文件的大小增大了,但不能肯定是后门程序的原因,然后发现后门程序在在C:Document and SettingsuazzAPPDataLocalApplication DataMicrosoftWindows下创建了一个后缀名为pf的文件,可能用来保存数据的。并且能够发现后门程序建立的TCP连接。

    pf

    TCP

    然后分析快照2和3:

    和上面相比注册表没有被过多的修改,发现有两个注册表项被删除了,还添加了名为VirtualDesktop的注册表项,但是之前观察到的由后门程序创建的注册表项并没有被修改。其它被修改的注册表项我也看不出来是不是后门程序改的。

    分析文件变化时能发现两个后缀为.pf的文件大小有变化,可能和后门程序有关。没有发现其它什么异常。

    2.Wireshark捕获数据包

    然后在kali中启动msf进行侦听,主机打开Wireshark,设置接口为WLAN,设置过滤器,只显示我的主机和kali之间的数据包,然后运行后门程序,观察wireshark的输出。

    分析数据包已经有些遗忘了,参考了以下博客:TCP的状态TCP报文之-tcp dup ack 、tcp Out-of-OrderCP协议中的seq/ack序号是如何变化的?

    从序号为18-23的数据包可以看出主机和kali先进行TCP三次握手,然后传输数据。我看了几个有数据的数据包,除了第28个数据包的data字段中有This program cannot be run in DOS mode.以外,还在第308个数据包中发现了:Acore_console_write core_channel_open core_channel_write core_channel_close等字符串,推测是程序与msf通信时使用的。其它数据包里还有类似的,也有很多数据包里的data看不懂。

    从捕包的结果来看,几乎每个数据包在发送后都有超时重传、丢失等问题,家里路由器有那么差吗?

    保存之前的结果,再重新捕包,在msf中使用dir、guid、screenshot等命令,发现所有的数据包的data字段都是都是看不懂的字符,推测是加密了。

    3.Sysmon分析

    运行后门程序并观察Sysmon的日志。

    1.录音,发现后门程序和svchost.exe修改了和Audio有关的注册表项,怀疑后门程序通过调用svchost.exe启动相关的服务来录音:

    2.拍照,发现后门程序和svchost.exe修改了和webcam有关的注册表项,还发现了svchost.exe创建了一个和Camera有关的进程:

    4. 问题回答

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

    我想监控的主要有网络连接、文件读写、注册表操作,因为如果有恶意代码的话,它很可能会拍照、录音,并把我电脑上的文件发送给攻击者,还可能接收攻击者的命令做一些别的事,可以使用Sysmon进行监控,也可以向实验中这样,使用任务计划程序执行脚本文件来监控系统。

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

    如果我确定某个程序有问题的话,可以使用Virtotal和杀毒软件来扫描,然后使用IDA看一下它使用来哪些DLL,然后可以将程序放入虚拟机里运行并用SysmonSystracerWireshark等程序来监控和分析它的行为,比如修改注册表、连接其它主机等。还可以在网上搜索一下这个程序。

    如果我确定某个进程有问题的话,可以使用windows自带任务管理器查看进程对应的程序和命令行,使用资源监视器查看进程使用的服务、关联的模块等,使用杀毒软件进行扫描,还可以使用上面讲到的工具进一步分析。

    5. 实验总结与体会

    这次实验到目前为止是我做的最久的网络对抗实验。经过这次实验,知道了可以使用哪些工具来监控自己的系统,同时加深了对恶意代码的认识,以前都不知道恶意代码具体会做些什么。以后怀疑自己的电脑里有恶意软件的时候也能够自己做初步分析了。平时使用电脑的时候还是要注意不下载和运行来路不明的程序。

    至于使用工具进行分析,最开始遇到的问题是不知道使用什么工具,后来问题就变成了看不懂应用程序给出来的结果。

  • 相关阅读:
    [Unit testing Rxjs] Confirm subscription points with marble testing (expectSubscriptions)
    [Typescript] Abstract Classes
    [Typescript] Get class properties type in union
    [Unit testing RxJS] Test asynchronous operations with marbles
    [Typescript] 45. Easy PickValue
    [RxJS] AuditTime & throttleTime
    [Unit testing RxJS] Test hot observables with marbles
    模拟数据利器之Mock Server使用教程来啦
    我PUA你了么
    你“被”全链路了么
  • 原文地址:https://www.cnblogs.com/20174317zhuyuan/p/12725599.html
Copyright © 2020-2023  润新知