2018-2019 2 20165203 《网络对抗技术》 Exp4 恶意代码分析

2018-2019 2 20165203 《网络对抗技术》 Exp4 恶意代码分析

实验要求

  1. 监控你本身系统的运行状态,看有没有可疑的程序在运行。html

  2. 分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽可能使用原生指令或sysinternals,systracer套件。linux

  3. 假定未来工做中你以为本身的主机有问题,就能够用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。git

实验任务

实践内容(3.5分)shell

  1. 系统运行监控(2分)

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

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

参考:schtask与sysmon应用指导浏览器

实际日志的分析还须要发挥下本身的创造力,结合之前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得你们会什么用什么了。安全

  1. 恶意软件分析(1.5分)

分析该软件在(1)启动回连(2)安装到目标机(3)及其余任意操做时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件微信

(3)读取、添加、删除了哪些注册表项网络

(4)读取、添加、删除了哪些文件

(5)链接了哪些外部IP,传输了什么数据(抓包分析)

该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其余人能够重点放在分析上。

基础知识问答

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

我感受后门程序会

①建立一些进程来进行恶意行为

②占用一些端口

③修改我电脑上的一些文件,偷看个人文件内容

④链接一些网络以进行一些信息交互

监控的话,能够

①让主机执行netstat并分析网络链接状况。

②还能够利用Sysmon,编写配置文件,记录日志。

(2)若是已经肯定是某个程序或进程有问题,你有什么工具能够进一步获得它的哪些信息。

①利用Wireshark抓包,进行分析有没有异常的或可疑的链接。

②还能够利用Systracer来拍摄快照,进行对比分析改变的注册表及文件信息。

实验过程及步骤分析

任务一 使用系统运行监控

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

(1)使用schtask监控系统运行

  • 对于计划任务,我打算使用Schtasks命令来监视,学姐的博客中建议阅读Schtask命令详解

  • 学习也要有目的地学习,咱们想要建立一个计划任务,因而,了解到与建立任务有关的命令参数:

/tn TaskName ------- 指定任务的名称

/tr TaskRun  ------- 指定任务运行的程序或命令

/sc schedule ------- 指定计划类型,有效值MINUTE表示指定计划的单位时间为minute。

/mo modifier
指定任务在其计划类型内的运行频率,默认值为1

由此,命令可为

schtasks /create/tn TaskName /tr TaskRun /sc MINUTF [/mo {1 - 365}]

第一步:建立一个计划任务

  • 在Windows7下输入schtasks /create /TN 20165203netstat /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt"便可以每分钟监测哪些程序在利用网络,而且能够把结果记录进netstatlog.txt文件里,如图所示建立成功。

在文档中如何显示日期和时间呢?咱们须要经过bat批处理来实现。那什么又是bat批处理呢?学姐推荐了dos命名大全,.bat文件的写法

>命令在清除掉原有文件中的内容后才把新的内容写入原文件
>>命令会另起一行把新的内容追加到原文件中。

time,显示和设置DOS的系统时间。[格式] time [hh[:mm[:ss[.cc]]]

date,显示和设置DOS的系统日期。[格式] date [MM-DD-YY]

netstat,显示与IP 、TCP 、UDP 和ICMP 协议相关的统计数据
-b显示包含于建立每一个链接或监听端口的可执行组件
-n以数字形式显示地址和端口号。

因此,最后bat文件以下:
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
netstat -bn >> c:\netstatlog.txt

第二步:

  • 在桌面上建立一个netstatlog.txt文件,文件内容为上面分析的内容。
date /t >> c:\netstatlog.txt
time /t >> c:\netstatlog.txt
natstat -bn >> c:\netstatlog.txt
  • 保存后修改文件名为"netstatlog.bat";
  • 将其复制粘贴到C盘,须要用管理员权限。

第三步:编辑任务

  • 首先,咱们须要进入任务计划程序:
    点击控制面板 -> 选择管理工具 -> 选择任务计划程序

  • 活动任务中找到咱们建立的计时任务20165203netstat,并双击点开。

  • 点击左数第三个选项操做 -> 点击右栏中的属性 -> 属性页面上方的操做

  • 双击任务进入编辑操做界面

  • 程序或脚本处点击浏览 -> 选择咱们建立的netstat.txt添加参数处可选空。

  • 修改完毕后,点击肯定就能够啦。

  • 还要提升任务权限。(后面问题解决模块详细说明)

  • 查看C盘目录下的netstat.txt文件,就已经有了时间的记录了,任务的建立完成了。

第四步:接下来咱们要作的就是等待,等待的时间取决于你想要监视的时长,注意,必定是电脑接通交流电源的时候监视任务才能运行哦,可不要竹篮打水一场空。

第五步:分析数据

获得了数据,咱们就要分析数据了,这须要咱们的数学知识和计算机基本操做知识了,分析数据最直观的就是统计图的形式了,那么在哪里能够找到统计图呢?个人选择是Excel

  • 导入数据:在新建的excel文件中选择上方的数据 -> 获取外部数据 -> 自文本。并选择带有咱们所要统计数据的文本netstatlog.txt,点击导入

  • 进入向导后,选择分隔符号,点击下一步

  • 进入第二步后,选中所有分隔符号,点击下一步

  • 进入第三步后,列数据格式选择常规,点击完成便可。

  • 鼠标选中左上角第一个单元格,点击肯定便可。

  • 如此就获得了咱们的待分析的数据了。

第六步:获得数据的统计图,并进行统计学分析

咱们能够统计一下哪一个程序链接互联网的次数最多。

  • 统计哪一个程序链接互联网的次数最多,天然咱们的数据对象就是咱们的程序(第2列),咱们首先选中第2列。

  • 在上方的插入 -> 数据透视图

  • 选择在一个新工做表中生成

  • 右侧选择要添加到报表的字段,点击下三角,取消没有意义的字段(由于TCP和一些时间信息不在咱们统计范围内,咱们须要的是程序名),点击肯定

  • 将咱们设置好的字段拖到如图所示的轴字段数值两个区域中。

  • 接下来就看到咱们的图了。

分析一下,根据个人图,联网最多的是虚拟机vm对应的程序vmware-hosted.exe,由于我一下午一直在整理我虚拟机里的文档,用虚拟机作可信的实验,嘻嘻,排名第二的是vmware.exe,是虚拟机的一个进程程序,此外,咱们还能够看到你们熟悉的微信wechat.exe,QQTIMTIM.exe等等。

咱们还能够分析一些进程程序的链接位置,干了什么事,例如,个人搜狗浏览器SougouExplorer.exe的外部地址是36.110.170.195:55261,应该是我在查东西的时候进入到这个地址而后进行数据传输。

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

这一步,我想在Windows7虚拟机里作。

  • 首先,咱们肯定监控对象:

我选择的是进程建立ProcessCreate、进程建立时间FileCreatTime、网络链接NetworkConnect、远程线程建立CreateRemoteThread。

  • 接下来,来写配置文件。

根据本身想要监控的事件对应的配置文件,由于使用浏览器不少,为了,因此,我不想监视虚拟机的浏览器,天然就要过滤掉对应iexplorer.exe,创建一个配置文件20165203Sysmoncfig.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">127.0.0.1</SourceIp>
    </NetworkConnect>
    <NetworkConnect onmatch="include">  
      <DestinationPort condition="is">5203</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这里是本身使用的浏览器,个人Windows7虚拟机用的是IE浏览器,因此,我用的是iexplore,本身能够写本身经常使用的浏览器,能够在任务管理器中的进程中查看。
    • 进程的建立时间我也没有建立浏览器进程的时间。
    • 网络链接我过滤掉了浏览器的网络链接、源IP为127.0.0.1(本机IP)的网络链接和目的端口为137的链接服务,且查看目的端口为520三、80(http)和443(https)的网络链接。
    • 远程线程建立记录了目标为explorer.exesvchost.exewinlogon.exepowershell.exe的远程线程。
  • 把配置文件放在C盘根目录下。

  • 咱们在[老师给的连接]https://gitee.com/wildlinux/NetSec/attach_files)上下载SysinternalsSuite201608.zip,并解压。

  • 以管理员的身份进入cmd.exe,输入sysmon.exe -i C:\20165203Sysmoncfig.txt以安装sysmon。

  • 输入运行后会弹出如图所示的一个窗口,点击agree便可。

  • 成功安装后,如图所示。

接下来,咱们来查看一下咱们的日志

  • 右击计算机,点击打开管理

  • 点击左侧系统工具 -> 事件查看器

  • 点击左侧事件查看器右侧小箭头,选择日志的位置:应用程序和服务日志/Microsoft/Windows/Sysmon/Operational

  • 利用Sysmon具体分析日志,我所分析的日志为本身生成的后门程序20165203_backdoor.exe

分析:

    • 启动回连、安装到目标主机。

    • 如图所示,能够找到本身在23:52运行的后门文件20165203_backdoor.exe 对应的日志。

    • 我还发现了qqpctray.exe的程序启动,这应该是电脑管家试图杀死后门程序所启用的程序。

    • 我又试了一下:dir、shell、getuid、getpid等一些操做我又发现了一些新的线索。
      • 首先我发现了一个进程svchost.exe,如图所示。

      • 起初我也不知道这是什么进程,百度上给出的解释晦涩难懂,请教了学姐才发现,它是微软视窗操做系统里的一个系统进程,管理经过DLL文件启动服务的其它进程,一些病毒木马假装成系统dll文件经过Svchost调用它,想要试图隐蔽本身。每一个Svchost能够同时调用多个dll文件,启动多个服务。
    • 我又运行了一下shell,观察到一个进程```C:\Windows\SysWOW64\cmd.exe,这个忘了截图了。
      • 通过分析,我发现SysWOW64能够在64bit的Windows中运行32bit的程序,而Windows下的cmd.exe是64bit的,kali回连获取的windows的cmd程序时32位的,更加说明了这个终端是Kali用来攻击主机的。

任务二 恶意软件分析

分析该软件在(1)启动回连(2)安装到目标机(3)及其余任意操做时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件

(3)读取、添加、删除了哪些注册表项

(4)读取、添加、删除了哪些文件

(5)链接了哪些外部IP,传输了什么数据(抓包分析)

静态分析

  1. virscan扫描
  • virscan网站上,扫描本身的后门程序xyx_backdoor.exe

  1. 使用PEiD进行外壳检测
  • PEid的官网上下载工具,它是一款著名的查壳工具,其功能强大,几乎能够侦测出全部的壳,其数量已超过470 种PE 文档 的加壳类型和签名。

  • 下载后解压,点击文件夹中的.exe文件,进行安装启用。

  • 咱们能够直接选择本身想要分析的后门程序或者直接把后门程序拖进PEid中。

    • 我一开始选择的是没有加壳的xyx_backdoor.exe,则显示如图所示信息----什么也没发现

    • 后来,我选择了加压缩壳的程序,则显示了加壳的版本。

    • 点击右下角>>,能够看到关于壳的详尽信息。
  1. 使用PE explorer来查看PE文件头中包含的代码信息
  • 官网上下载PE explorer。

  • 在软件中打开咱们须要查看的后门程序,我选择的是本身生成的xyx_backdoor2.exe。

  • 打开后咱们就能查看头部信息。

  • 咱们能够在试图 -> 数据目录中查看程序静态数据目录信息。

  • 咱们也能够在试图 -> 节头中查看节头信息。

  • 找到工具 -> 反汇编器能够进行反汇编,咱们能够看到头部的汇编语言。

  • 点击导入标志,咱们能够查看引用的Dll库。

  • 咱们能够看到该后门程序运用了一些dll库执行文件:
    • msvcrt.dllmsvcrt.dll是微软在windows操做系统中提供的C语言运行库执行文件(Microsoft Visual C Runtime Library),其中提供了printf,malloc,strcpy等C语言库函数的具体运行实现,而且为使用C/C++(Vc)编译的程序提供了初始化(如获取命令行参数)以及退出等功能。
    • kernel32.dll:kernel32.dll是Windows 9x/Me中很是重要的32位动态连接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操做和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序没法占用这个内存区域。
    • advapi32.dlladvapi32.dll是一个高级API应用程序接口服务库的一部分,包含的函数与对象的安全性,注册表的操控以及事件日志有关。xp系统通常位于C:\WINDOWS\system32\目录下,大小659KB。
    • wsock32.dll:wsock32.dll是Windows Sockets应用程序接口,用于支持不少Internet和网络应用程序,容易遭受木马病毒的破坏而致使系统找不到该文件,而且出现错误提示框。
    • ws2_32.dll:Windows和须要执行TCP/IP网络通讯的应用程序会调用动态连接库ws2_32.dll
      若是ws2_32.dll不可用,那么计算机链接网络的操做会不稳定(即便不链接到外部网络)。

动态分析

  1. 使用Systracer来分析:

    • 设置咱们所要监听的端口号(我选的个人学号,也就是生成后门程序时利用的端口)。

    • 接下来安装完成。
  • 打开后门程序前,先快照一下,点击take snapshot,记录一下电脑安全时的文件状况,快照名字为Snapshop #1。

  • 在Kali中咱们打开msfconsole,开始监听,Windows运行后门,咱们再开始快照,记录一下Kali监听后的计算机文件状况,快照为Snapshop #2。

  • 进行分析:

    • 咱们点击上方的Applications -> 左侧Running Processes -> 找到后门程序"xyx_backdoor2.exe" -> 点击"Opened Ports" 就能查看回连地址、远程地址和端口号。

    • 能够进入快照界面Snapshots右下角点击Compare,比对一下回连先后计算机文件所发生的变化。

    • 其实,这款软件设计的很好,蓝色标注的地方就是先后发生变化的地方。
      • 首先,我发现了UserAssist中的Count发生了变化,如图所示,这是注册表中的一个表项,它是软件使用记录,不过常常会被病毒或木马用到,应该是启动后门程序后,后门程序对该键项值作了修改。

      • 其次,我还发现了nsi表项是一个脚本表项,用来描述安装程序的行为和逻辑的,后门的程序侵入电脑,记录天然会发生变化。

      • 此外,如图所示,咱们还能够观察到一些表项被删除。

  • 此外,咱们访问让攻击机获取目标主机音频、摄像头和击键记录生成了快照snapshop #3和#4。

    • 咱们也能够看到UserAssist中的Count又发生了改变,Nsi也发生了改变。

    • 删除了如下表项。

  1. 咱们用wireshark抓包来分析链接了哪些外部IP,传输的数据。
  • 在回连以前,开始捕获包;

  • 在回连完成后结束捕获,由于咱们只想查看和虚拟机IP有关的数据包,因此,把没用的包过滤掉,咱们能够把过滤规则设置为ip.addr == 192.168.1.186

  • 发现了本身的windows主机IP

  • 分析一下所传输的数据:

    • 第一条:咱们发现了Windows向Kali发出的TCP同步请求包[SYN]:

    • 第二条:发现了Kali的[SYN+ACK]包:

    • 第三条:Windows给Kali的回应包。

    • 这很明显,就是三次握手啊,哈哈哈。后面还有不少[PUSH + ACK]包。
    • 后面,我在Kali获取下摄像头、录音、获取击键记录并查看,观察到[PSH + ACK]包更多了。

实验中遇到的问题及解决方法

问题1:在使用schtask监控系统运行时,关于监控的状况始终写不进记录文件中。

解决1:后来,发如今计算机管理中找到咱们所建立的任务,右键 -> 属性,设置成最高权限,就能够了。

问题2:在安装sysmon时,在终端输入输入sysmon.exe -i C:\20165203Sysmoncfig.txt后,显示安装失败,如图所示。

解决2:后来发现,原来是没有以管理员身份运行cmd.exe,咱们点击查找,在cmd.exe处点击右键,选择以管理员身份运行便可。

实验体会与总结

本次实验,咱们经过各个软件对后门程序做了分析,你们使用的软件有不少,还有一些我没写进博客中,可是也在课下尝试了一下。随着软件的不一样,咱们的分析方法也不一样。经过这些软件,咱们更加全面地分析了后门程序所犯下的罪行,这些后门都绕过了杀毒软件,这些更加证实了杀毒软件不是万能的,打铁还需自身硬,提升本身的知识才能不给这些后门程序可乘之机。

相关文章
相关标签/搜索