zoukankan      html  css  js  c++  java
  • 2020-2021-2 网络对抗技术 20181318 Exp4 恶意代码分析

    一、实验目标

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

    二、实验内容

    • 系统运行监控

      • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
      • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
    • 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

      • 读取、添加、删除了哪些注册表项
      • 读取、添加、删除了哪些文件、
      • 连接了哪些外部IP,传输了什么数据

    三、基础知识

    1. 恶意代码

    • 定义:泛指指没有作用却会带来危险的代码,即使计算机按照攻击者的意图运行以达到恶意目的的指令集合。
      • 指令集合: 二进制执行文件, 脚本语言代码, 宏代码, 寄生在文件、启动扇区的指令流
    • 特征:①本身是计算机程序 ②有恶意的目的 ③ 通过执行发生作用
    • 目的:技术炫耀/恶作剧、远程控制、窃取私密信息、盗用资源、 拒绝服务/破坏,...
    • 常见的恶意代码:计算机病毒、蠕虫、恶意移动代码、后门、特洛伊木马、僵尸程序、Rootkit、逻辑炸弹...
      • 计算机病毒:需要传播受感染的驻留文件来进行复制,一般需要宿主程序被执行或人为交互才能运行。普通病毒的传染能力主要是针对计算机内的文件系统而言。
      • 蠕虫:是一种通过网络传播的恶性病毒,它不使用驻留文件即可在系统之间进行自我复制,蠕虫病毒的传染目标是互联网内的所有计算机。

    2. schtasks

    • 定义:计划命令,程序以定期或在特定时间运行,在计划中添加和删除任务,启动和停止按需任务,以及显示和更改计划任务。

    • schtasks.exe 工具与 控制面板 中的 "计划任务" 执行相同的操作。

    • 语法:schtasks +参数 参数如下:

      • change:更改任务
      • create:计划新的任务。
      • delete:删除计划任务。
      • end:停止任务启动的程序。
      • query:显示计划在计算机上运行的任务。
      • run:立即启动计划任务。
    • 实例

      `schtasks /create /TN netstat1318 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:
      etstatlog.txt`
      
      • TN:Task Name,本例中是netstat1318
      • SC:表示计时方式,我们以分钟计时填MINUTE
      • MO:MOdifier
      • TR:Task Run,要运行的指令是 netstat
      • bn:b表示显示可执行文件名,n表示以数字来显示IP和端口
      • >:表示输出重定向,将输出存放在c: etstatlog.txt文件中

      备注:

      /Tn/s 参数用于识别任务。 /Tr/ru/rp 参数指定可以更改的任务的属性

      /Ru/rp 参数指定运行任务所用的权限。 /U/p 参数指定用于更改任务的权限。

    • 具体使用说明请参考Microsoft官方文档

    3.sysmon

    • sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具。它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。

    • sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。

    • 可选择的事件过滤器有:

      • ProcessCreate 进程创建
      • FileCreateTime 进程创建时间
      • NetworkConnect 网络链接
      • ProcessTermina 进程结束
      • DriverLoad 驱动加载
      • ImageLoad 镜像加载
      • CreateRemoteTh 远程线程创建
      • RawAccessRead 驱动器读取
      • ProcessAccess 进程访问
      • FileCreate 文件创建
      • RegistryEvent 注册表事件
      • FileCreateStre 文件流创建

      详细说明请参考使用轻量级工具sysmon监视你的系统

    • 监控系统的基本操作可分为以下三步:

      • 确定要监控的目标:写好过滤条件(相当于白名单),多多益善,信任的程序尽量不要记到日志里(日志多了不好分析)。
      • 写好配置文件.xml文件
        • 记录所有网络连接就可以简单写为<NetworkConnect>*</NetworkConnect>
        • exclude相当于白名单,凡是未声明的都记录下来。include相当于黑名单。
        • 注意规则大小写敏感。
      • 启动sysmon

    四、实验过程

    1.使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)

    • 在命令行中输入以下命令,创建任务计划netstat1318

      `schtasks /create /TN netstat1318 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:
      etstatlog.txt`
      

      image

    • 在C盘中创建一个netstat1318.bat脚本文件,写入以下内容

      date /t >> c:
      etstat1318.txt
      time /t >> c:
      etstat1318.txt
      netstat -bn >> c:
      etstat1318.txt
      
    • 在任务计划程序中找到计划任务

    • 编辑计划任务,使其运行正确的脚本文件,也就是我们刚刚编写的.bat

    image

    • 编辑完成后,右键选择运行,此时可以在C盘目录下看到以下三个文件

    image

    • 执行脚本一定时间,就可以在netstat1318.txt文件中查看到本机在该时间段内的联网记录:

    image

    • 当记录比较长的时间后,我们已经获得比较丰富分记录数据,此时停止任务,将所得数据在Excel中进行分析。

      • 导入文本数据:新建excel文件->选择上方“数据”->选择“导入数据”->选择“导入数据”->选择“直接打开数据文件”

      image

      • 选择数据源文件:在C盘中选中netstat1318.txt

        image

      • 依次选择其他编码、分隔符号,然后将分隔符号的所有选项都选中,点击完成即可

        image
        image

    • 创建数据透视图

      • 选中我们所要分析的列,选择“插入”——数据透视图——新工作表

      image

      • 在新的工作表中,在右侧字段列表中筛选我们不需要的字段

      image

      • 将字段列表拖到下方的中,就生成了我们所需的数据透视图

      image

    image

    • 分析
      • 从图中可以看出连网最多的就是Edge浏览器,连接的外部地址是我打开的相关页面的,大多为http和https连接
      • 第二个多的就是VMware,这是因为在做实验,打开了虚拟机
      • 接着可以看到有WeChat、wps、typora、sougou等程序,在做实验的时候这些确实在使用,且连网了
      • 有一个叫做QQPCTray.exe的连网频率也比较高,查资料后知道它是腾讯公司推出的qq电脑管理程序软件。该程序是对用户的系统进行安全检测、修复漏洞及木马查杀等功能。
      • 还有一个叫做sesvc.exe的进程,它是360浏览器的进程,因为今天在教室连接教学楼wifi的时候使用了360浏览器,所以出现此进程也是正常的。
      • 还可以看到实验二中生成的后门程序20181318_backdoor也进行连网了,这是因为我在后续的实验中尝试与kali机进行回连。
        • 从下图中我们可以看到,目的地址和端口号就是我们在用msf生成后门程序时所设定的,ip=kali机地址,端口=1318
          image

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

    (1)明确要监控的目标,我在这里选择的是:进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread。

    (2)写好配置文件sysmon2018138.xml,内容如下:

    <Sysmon schemaversion="4.12">
      <!-- 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> 
          <Image condition="end with">360se.exe</Image>
        </ProcessCreate>
    
        <ProcessCreate onmatch="include"> 
          <ParentImage condition="end with">cmd.exe</ParentImage>
        </ProcessCreate>
    
        <FileCreateTime onmatch="exclude" >
          <Image condition="end with">msedge.exe</Image>
          <Image condition="end with">360se.exe</Image>
        </FileCreateTime>
        
        <NetworkConnect onmatch="exclude">
          <Image condition="end with">msedge.exe</Image>
          <Image condition="end with">360se.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">firefox.exe</TargetImage>
          <TargetImage condition="end with">winlogon.exe</TargetImage>
          <SourceImage condition="end with">powershell.exe</SourceImage>
        </CreateRemoteThread>
      </EventFiltering>
    </Sysmon>
    

    参数解释:

    • exclude相当于白名单,不用记录。include相当于黑名单。

    • ProcessCreate:进程创建。Image condition要根据自己使用的浏览器更改。由于我使用的是360和edge浏览器,所以在我的配置文件中,排除了(不记录)进程名为msedge.exe和360se.exe的进程。但是要记录以cmd.exe结尾的进程记录。

    • FileCreatTime:进程创建时间。这里排除(不记录)浏览器进程的创建时间。

    • NetworkConnect:网络连接。过滤掉(不记录)浏览器的网络连接,源IP地址为127.0.0.1、源端口为137的连接服务。包含(记录)目的端口为80(http)和443(https)的网络连接。

      • 137端口:提供局域网中ID或IP查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。
      • 127.0.0.1:环回地址,表示本机。
    • CreateRemote:远程线程创建。记录的线程如下:

      • explorer.exe:Windows程序管理器或者文件资源管理器
      • svchost.exe:一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
      • winlogon.exe:Windows NT 用户登陆程序,用于管理用户登录和退出。
      • powershell.exe:专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。

    (3)启动sysmon(要以管理员的身份运行命令行)

    • 输入命令Sysmon64.exe -i sysmon20181318.xml,安装sysmon,结果如下:

    image

    • 查看“事件查看器”,选择日志的位置,应用程序和服务日志/Microsoft/Windows/Sysmon/Operational

    image

    在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等。

    • 我们随意选中一条日志进行分析
      image
      image
      从图中可以看到进程号、路径、源ip、源端口、目的ip、目的端口(80),使用的是http协议

    • 运行我们在实验二中生成的后门程序20181318_backdoor.exe,并启动回连到kali虚拟机中。我们可以在事件查看器中找到此条日志
      image

    • 紧接着,我在msf监听环境下,输入了shell指令,获得了Windows的cmd,日志如下:
      image
      在获取到命令行后,我发现了一条有关conhost.exe的记录
      image
      Conhost.exe进程是微软为其Vista以及Win7、Windows 2008(服务器版)系统定义的系统文件,在系统中被称为“控制台窗口主机”。其功能主要是为命令行程序(cmd.exe)提供类似于Csrss.exe进程的图形子系统等功能支持,

    • 然后又输入了ipconfig指令,日志如下:
      image
      我们可以发现,此时的路径变为了SysWOW64,这是个什么文件夹呢?与system32有什么区别和联系呢?

      • SysWow64文件夹,是64位Windows,用来存放32位Windows系统文件的地方。
      • Windows下面的命令行是64位的,而kali回连获得的是32位的,所以会出现此条日志。
    • 在事件查看器中,我们可以发现许多svchost.exe的记录。svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。这个程序对系统的正常运行是非常重要,而且是不能被结束的。许多服务通过注入到该程序中启动,所以会有多个该文件的进程。

    • 我们还可以发现,RuntimeBroker.exe的占比也很高,查资料知道, Runtimebroker.exe是Win10系统的一个核心进程,用来进行Metro App权限管理的一个进程。

    • SearchFilterHost.exe的出现频率也很高,它是桌面搜索引擎的索引程序,其主要作用是建立快速索引文件,让用户能够更好的搜索出电脑中的任意资料。它会在计算机空闲时自动扫描索引位置的文件名、属性信息和给定类别的文件内容,这些索引位置默认包括桌面、收藏夹、开始菜单、系统目录。

    3.使用VirusTotal分析恶意软件

    • 把生成的后门程序在VirusTotal进行分析(也可以使用VirusScan工具),结果如下:52/69,被杀软查出来的比率还是蛮高的

    image

    • 继续查看此恶意软件的基本属性,可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。

    image

    • 还可以看到此软件的头部、各个节的相关信息,以及引入的动态链接库

    image

    • 如果是加了壳的程序,还可以看出它使用的加壳的相关信息。

    4.使用PEiD分析

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

    • 首先我们用它来检查最普通的后门程序20181318_backdoor.exe
      image
      发现什么也没有查到,这是正确的结果

    • 接着我们来检查一下使用了压缩壳的软件
      image
      发现他查到了压缩壳的相关信息

    • 再来检查经过压缩壳又加上了加密壳的软件
      image
      诶,结果和上面的一样,只查出来了压缩壳的信息,这是为什么呢?难道peid检查不出来加密壳吗?

    • 最后检查一下只用了加密壳的软件
      image
      结果证明,他确实检查不出来加密壳的存在,我猜测是他不认识这个壳,它的库里面没有这个壳的相关信息,看来它的功能也不是那么强大。

    5.使用PE Explorer分析

    • PE Explorer是一款资源编辑器,它支持直接查看、修改软件的资源,包括菜单、对话框、字符串表等,软件还具备有W32DASM 软件的反编译能力和PEditor软件的PE文件头编辑功能。

    • 我们用它打开1318_upx.exe,我们可以看到这个软件的文件头信息(基本信息),比如节对齐粒度、文件对齐粒度、时间戳、映像基址ImageBase等等

    image

    • 我们通过视图还可以查看数据目录、节头等详细信息

    image

    image

    image

    • 通过视图——引入可以查看此软件引用的dll

    image

    • 相关dll说明

      • kernel32.dll:Windows 中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
      • user32.dll:Windows用户界面相关应用程序接口,用于包括Windows处理,基本用户界面等特性,如创建窗口和发送消息。它是一个对系统很关键或很可疑的文件,易遭受木马病毒破坏导致系统找不到此文件,出现错误提示框。
      • msvcrt.dll:微软在windows操作系统中提供的C语言运行库执行文件。
      • wsock.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。

      我检查其他几个后门程序后发现,他们都引用了kernel32.dll,可以看出他对于后门程序的重要性

    6.使用Process Monitor分析

    • Process Monitor 是一款由 Sysinternals 公司开发的包含强大的监视和过滤功能的高级 Windows 监视工具,可实时显示文件系统、注册表、进程/线程的活动。总体来说,Process Monitor相当于Filemon+Regmon,其中的Filemon专门用来监视系统中的任何文件操作过程,而Regmon用来监视注册表的读写操作过程。

    • 打开软件,可以看到此时计算机各个进程的详细记录,包括时间、进程名、进程ID、操作、路径等。下图是我的后门进程20181318_backdoor.exe
      image

    • 后门进程的事件属性如下:
      image

    • 后门进程引用的各种库如下:
      image

    7.使用systracer动态分析

    点击右侧的take snapshot,拍摄快照。点击start开始,不用点击stop,当拍摄完毕会自动停止。我们总共截了以下四张快照:

    • 快照一:未移植后门程序,保存为Snapshot #1
    • 快照二:移植后门程序,保存为Snapshot #2
    • 快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
    • 快照四:在kali中使用dir指令,保存为Snapshot #4
    • 快照五:在kali中使用record_mic指令,保存为Snapshot #5

    接下来我们对比快照,分析恶意软件在执行过程中系统有哪些变化

    • 通过右下角的compare键或者View Differences Lists比对各快照,可以选择Only Difference只查看不同的项,在右下角可以选择对比哪两张快照

    • 对比快照一和快照二(后门程序移植前后)

    image

    image

    发现增加了我的后门程序

    image

    image

    可以看到增加、删除了一些文件、目录,键值也有变化

    • 对比快照二和快照三(后门程序运行前后)
      点击application,在opened ports中我们能看到后门连接的相关信息

    image

    opened handles中,可以看见增加了一些文件,也删除了一些文件

    image

    loaded dll中,启动后门程序后增加和删除的dll文件

    image

    c:WindowsPrefetch目录下相关文件有变动

    image

    • 对比快照三和快照四(kali机输入dir)

    我们可以看到在输入dir后,VMware有增加和删除的操作

    image

    loaded dll中,可以看到增加和删除的dll文件

    image

    • 对比快照四和快照五(kali机输入record_mic)

    可以发现注册表有变化

    image

    新建了很多连接,其中有与后门程序相关的Apache HTTP Server

    image

    loaded dll中,可以看到增加和删除的dll文件

    image

    8.使用wireshark抓包分析恶意软件

    • 运行后门20181318_backdoor.exe,在kali中回连。把过滤规则设置为ip.addr == 192.168.174.129,只留下与kali机有关的包

    • 我们可以看到前三个包为TCP连接的三次握手
      image

    • 在kali中输入dir,发现wireshark又捕获到了许多PSH+ACK包,可以判断有数据在传输
      image

    五、实验后问题回答

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

    • 使用windows自带的schtasks指令,设置一个计划任务,监视系统进程的运行情况。在一段时间后,将所得数据在Excel中得到数据透视图,继续进行分析。
    • 使用Sysmon,编写配置文件,记录有关的系统日志
    • 使用Process Explorer工具,监视进程执行情况。
    • 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
    • 使用SysTracer,一定时间间隔拍摄一张快照,对比不同快照,查看是否有可疑行为

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

    • 静态分析

      • 使用virustotal或virscan,对恶意软件进行分析,可以得到它的基本属性、头部、各个节以及引用的链接库的信息
      • 使用PEiD,查看恶意软件是否加壳,加的什么壳
      • 使用PE Explorer,查看恶意软件的PE头、数据目录、节头表信息,以及引用的链接库的信息
      • 使用String工具,分析恶意程序是否包含可疑字符串
    • 动态分析

      • 使用SysTracer,查看此恶意软件对注册表和文件的修改
      • 使用Wireshark抓包,分析恶意软件的通信过程
      • 使用Process Explorer或Process Monitor,监视文件系统、注册表,分析恶意软件的活动

    六、实验中的问题

    1. 在编辑好任务计划后,右击运行,在c盘目录下一直不出来netstat1318.txt文件
    • 原因:在编辑任务计划时,“条件”选项卡中电源选项的默认操作为“只有在计算机使用交流电源时才启动此任务”,在使用电池电源时停止任务。而我在做实验时并没有给电脑充电,所以任务计划一直没有运行。
      image
    • 解决方法:将此默认设置勾选掉,这样电脑就算不充电也可以正常运行任务计划。
    1. 在安装sysmon的时候出现以下报错:
      image
    • 原因:在配置文件sysmon20181318.xml中,版本号写的不对
    • 解决方案:将xml文件的第一行,版本号改为3.10即可
      image
    1. 不知道为什么,所有的后门程序都无法回连kali虚拟机了
      image
    • 解决方案:将kali的网络配置换为桥接模式

    七、实验心得

    这次实验做的真的是头大,感觉做之前的准备工作没有做好,导致做的时候一头雾水。本次实验用到了很多工具,之前都没有使用过,而且这些软件都是英文的,所以也花了很长时间在研究工具的使用上。这个SysTracer真是坑人,竟然只能抓五张快照,多抓就告诉没有内存了。

    本次实验的重点是使用这些软件进行恶意软件的分析,做完整个实验,我学到了一些监视计算机系统的方法,比如说用windows自带的schtasks指令设置一个计划任务,可以获取当前所有进程的网络连接情况;使用Sysmon,记录有关的系统日志......静态分析我觉得还比较容易,但是动态分析就完全不行了。我觉得最难理解的就是SysTracer这个软件抓到的快照对比分析,可能是因为我对本身系统就不够了解,所以不知道每个地方出现的差异都是什么,不能准确地分析为什么会出现这些差异,整个实验做下来都是看学长学姐和课题负责人的博客依葫芦画瓢、来蒙带猜,以后还是需要加强这方面的学习。

  • 相关阅读:
    摘金奇缘在线观看迅雷下载
    无敌破坏王2:大闹互联网在线观看
    神奇动物:格林德沃之罪电影在线观看
    你好,之华
    毒液:致命守护者
    apache 通过ajp访问tomcat多个站点
    docker使用大全 tomcat安装
    Log4j2 + Maven的配置文件示例详解
    centos7 设置tomcat自启动
    nginx多站路由配置tomcat
  • 原文地址:https://www.cnblogs.com/jjy-666/p/14640408.html
Copyright © 2011-2022 走看看