2019-2020-2 20175218陈敬勇 《网络对抗技术》 Exp4 恶意代码分析

2019-2020-2 20175218陈敬勇 《网络对抗技术》 Exp4 恶意代码分析

一、实践目标

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

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

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

二、实践内容

2.1 系统运行监控
(1)使用如计划任务,每隔一分钟记录电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控主机的重点事可疑行为。
参考:schtask与sysmon应用指导

2.2恶意软件分析
分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时。该后门软件
(3)读取、添加、删除了哪些注册表项
(4)读取、添加、删除了哪些文件
(5)连接了哪些外部IP,传输了什么数据

三、实验准备

1.文件准备

  • 实验需要用到后门程序,可以将之前实验二中的后门程序和实验三中加壳的程序准备好

  • 因为上次实验后,我卸载了360(不是有偏见,而是想去试试其他好的软件),然后下载了火绒,结果一运行扫描全都被我杀掉了,幸好 kali 里还有,就直接用上了

2.环境准备

  • 这次实验在主机和虚拟机中共同完成,任务一在主机中完成,任务二使用win7虚拟机完成

  • 任务一中需要安装sysmon工具,在sysinternals,systracer套件下载SysinternalsSuite201608.zip,解压后在文件夹中可以看到sysmon工具

  • 任务二中需要使用PEID工具,通过PEID下载安装到win7虚拟机中

  • 任务二中需要使用PE explorer工具,通过PE explorer下载安装到win7虚拟机中

  • 任务二中需要使用到wireshark补包工具,可以通过wireshark下载安装到win7虚拟机中

  • 任务二中需要使用systracer工具,在sysinternals,systracer套件下载systracer_x64_setup_en.exe到win7虚拟机中

四、实验步骤

任务一:系统运行监控

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

  • 使用schtacks指令监控系统,打开主机命令提示符

  • 通过命令 schtasks /create /TN netstat5218 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstat20175218.txt" 创建计划任务 netstat5218

  • 其中,具体命令含义:

    • TN 是 TaskName 的缩写,接计划任务名,这里是 netstat5218
    • sc 为计时方式,这里是分钟,即 MINUTE
    • TR 接要运行的指令,这里接的是 netstat
    • bn 其中,b表示显示可执行文件名,n表示以数字来显示IP和端口
    • 表示输出重定向,这里将输出存放在C盘下的 netstat20175218.txt 文件中

  • 在桌面先创建一个文本文档 netstat5218.txt ,然后写入一下内容:

 date /t >> c:\netstat5218.txt
 time /t >> c:\netstat5218.txt
 netstat -bn >> c:\netstat5218.txt
  • 保存退出,修改文件后缀为 .bat ,即批处理脚本

  • 将其复制到C盘下,弹出提示中选择继续(移动到C盘需要管理员权限)

  • 进入任务计划程序中(直接搜索进入或者右击开始处,在计算机管理下进入),在这里可以查看到新创建的任务

  • 双击这个任务,在操作中进行编辑,在“程序或脚本”中,浏览选择刚刚创建的 netstat5218.bat 批处理文件,将可选参数清空,然后确定

  • 在常规中最下面,选择使用最高权限运行 ,点击确定退出

  • 然后电脑就放置进行挂机了,注意,因为我之前没有设置使用电源也能进行此任务,所以需要一直连接电源

  • 从晚上8点到第二天早上8点,进行了12个小时的挂机。然后右键禁用此任务,接下来可以利用Excel来进行分析了

  • 参考学姐博客进行统计分析,因为我的 Excel 版本是 2019 的,所以稍微有些不同

  • 导入文本数据前,需要进行“返旧”操作。创建打开一个新的Excel文件,点击左上角文件进入。选择选项,在 Excel 选项中,选择数据一栏,在“显示旧数据导入向导”中,将从“旧文本(T)(旧版)”勾选,然后确定退出

  • 开始进行导入,点击数据,在数据下选择“获取数据”下拉栏。下拉栏中选择“传统向导”,点击“旧文本(T)(旧版)”,这样就可以通过文本导入向导进行导入啦

  • 在文本导入向导第一步,选中“分隔符号”,点击“下一步”

  • 在文本导入向导第二步,选中全部分隔符号,点击“下一步”

  • 在文本导入向导第三步,列数据格式选择常规,点击“完成”

  • 在导入数据中,鼠标选中左上角第一个单元格,然后点击“确定”

  • 这样数据就成功导入进来,并且比直接导入要好看一些了

然后制作统计表和统计图,首先选中我们要分析的列,点击上方的插入,选择数据透视图下拉栏,选择“数据透视图和数据透视表”,这样表和图都能创建

创建好之后,查看结果:

  • 本来这里应该有我之前实验所生成的后门程序的,但是由于被我用火绒杀掉了,所以就没统计到之前的后门程序

  • 在这段时间里,QQ、QQ浏览器、微信、IE浏览器、联想杀毒、系统,还有一些win10自带的程序 SearchUI.exe 等都被统计到了。其中,可以看到QQ是统计次数最多的,然后是与之相关的QQ浏览器,接着是微信

  • 然后我查询了几个访问的IP地址所在地:

    • QQ:

      • 183.192.199.123 --- 来自上海市上海市 移动
      • 111.45.68.30 --- 来自广东省广州市 移动
      • 121.51.23.110 --- 来自广东省广州市 腾讯云
    • WpnService:

      • 40.119.211.203 --- 来自新加坡
    • SearchUI.exe:

      • 204.79.197.222 --- 来自美国 微软云

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

sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息

在实验准备已经下载好了sysmon工具,使用sysmon工具前首先要配置文件

在桌面创建一个文本文档 sysmon20175218.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">QQBrowser.exe</Image> 
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">QQBrowser.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">QQBrowser.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相当于黑名单

  • Image condition根据自己使用的浏览器更改,因为从上面实验可知,我使用QQ浏览器比较频繁,这里就是QQ浏览器QQBrowser.exe

  • 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务

    • 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态
    • 127.0.0.1表示本机IP
  • 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程

    • explorer.exe是Windows程序管理器或者文件资源管理器
    • svchost.exe是从动态链接库 (DLL) 中运行的服务的通用主机进程名称
    • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出
    • powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序
  • 在实验准备已经下载好了sysmon工具,这里需要先进行安装,通过管理员权限进入命令提示符,执行命令 sysmon.exe -i C:\sysmon20165318.xml ,出现下面提示选择Agree

  • 成功安装:

  • 进入事件查看日志(直接搜索进入),通过应用程序和服务日志/Microsoft/Windows/Sysmon/Operational找到日志具体位置

  • 在这里,我们可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等,下图就是一个mmc的记录(Microsoft 管理控制台,在其他课程中使用过,所以这里看到了就比较亲切)

  • 进行日志分析,这里我选择分析的是我在实验二中生成的后门文件

  • 在这里,我再一次见证火绒强大的实力,我在kali中,刚刚将后门程序复制到共享文件夹中,主机上火绒就报了,可见火绒静态查杀的厉害之处(360要在运行后才能察觉...)

  • 在事件查看器中,点击操作,选择刷新,可以看到刚刚火绒报了之后,事件查看器中就有了它的记录

  • 之后也看到了联想杀毒的扫描,但是此时后门程序已被火绒隔离,它这里可能没有扫描到啥东西了(虽然后门程序不运行的话,联想杀毒静态查杀有时也是查不到的...)

  • 在火绒的隔离区中,对刚刚隔离的后门程序进行恢复和添加信任

  • 回到kali中,进行回连后,输入一些命令,例如输入shell后,回到主机查看事件查看器,可以发现其中有一条记录是cmd的

  • 除此之外,在事件查看器中还可以看到之前输入dir时,记录了一条事件是关于svchost.exe,Svchost.exe是微软视窗操作系统里的一个系统进程,管理通过Dll文件启动服务的其它进程,一些病毒木马伪装成系统dll文件通过Svchost调用它,试图隐藏自己。每个svchost可以同时调用多个dll文件,启动多个服务

任务二:恶意软件分析

(一)静态分析工具

使用VirusTotal分析恶意软件

  • 这里我用到了之前实验三中的加压缩壳后的后门程序,因为主机上被我删掉了,这里我从kali中直接通过共享文件夹传输过来,结果第一时间又被火绒查杀到了,所以这里又进行了添加信任处理

  • 将其放入virusTotal中分析,可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,TRiD文件类型、加壳情况、算法库支持

使用PEiD分析恶意软件

  • 在win7虚拟机中,打开PEiD工具,点击浏览,选择实验三的加壳后门程序,在这里可以看到其加壳的版本,EP区段等等信息

  • 还可以将实验二未加壳的后门程序进行分析,可以看到竟然什么也没发现

使用PE Explorer分析恶意软件

  • 在win7虚拟机中,打开PE Explorer工具,将实验三的加壳后门程序拖拽到指定位置,可以看到其头部信息

  • 通过 视图->引入 进行查看文件引用的dll库

ws2_32.dll:若系统文件ws2_32.dll出错,极有可能是盗号木马、流氓软件等恶意程序所导致,其感染相关文件并加载起来,一旦杀毒软件删除被感染的文件,就会导致相关组件缺失,游戏等常用软件运行不起来
WSOCK32.dll:Windows Sockets应用程序接口,用于支持很多Internet和网络应用程序。是一个对系统很关键或很可疑的文件,易遭受木马病毒(如“犇牛”病毒)破坏导致系统找不到此文件,出现错误提示框。
  • 还可以进行查看静态数据目录、节头信息

  • 在工具栏中,通过反汇编器可以进行反汇编

(二)动态分析工具

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

  • 在win7中打开wireshark开始补包

  • 在kali中打开 msfconsole 控制台开始监听,然后在win7中运行后门程序进行回连

  • 在wireshark中可以看到捕获到的大量数据包,为了便于查看,通过设置过滤条件 ip.addr==192.168.1.105&&ip.addr==192.168.1.102 进行筛选查看,可以看到最开始有三次握手连接的过程

  • 对比kali中的连接情况和wireshark中的情况,发现二者的端口情况是一致的,连接的都是win7的49162端口

  • 在kali中输入命令dir,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包,说明两者之间产生了数据传输

  • 在kali中输入exit退出断开,发现win7的wireshark中捕获到了挥手过程的数据包

使用systracer分析恶意软件

  • 在win7中打开systracer进行安装,经过第一个提示选择Agree,然后第二个界面选择第二个,如下图:

  • 接下来设置监听端口号为5218(与kali中的监听端口号一致)

  • 打开systracer工具之后,通过 take snapshot ---> Start 进行快照拍摄,依次按照下列顺序进行了5次快照拍摄

    • 后门连接前快照Snapshot #1
    • 开启后门程序回连后创建第二个快照Snapshot #2
    • kali中输入ls命令后创建第三个快照Snapshot #3
    • kali中输入screenshot命令后创建第四个快照Snapshot #4
    • kali中输入exit结束链接后创建第五个快照Snapshot #5

  • 通过Ctrl进行多选,选择Snapshot #1和Snapshot #2进行compare比较,发现增加5218端口和一些dll端口以及新的进程

  • 通过 View Differences Lists 进入View界面可以集中看见不同之处

  • 选择Snapshot #2和Snapshot #3进行compare比较,这里可以选择 Only Difference 直接查看不同点,发现既有一些新增的,也有一些取消关闭的

  • 也可以通过 View 进行查看

  • 选择Snapshot #3和Snapshot #4进行compare比较,大多数处理都是进行取消关闭,只有一个是新增打开的

  • 选择Snapshot #4和Snapshot #5进行compare比较,因为是exit操作,所以看到后门进程取消关掉了,而且还有大量的取消关闭处理,以及端口的关闭

使用Process Explorer分析恶意软件

  • 打开Process Explorer,然后进行回连,在软件中可以看到对后门程序是记录

  • 双击可以看到对应属性,可以详细查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等

五、实验中遇到的问题

问题一

使用systracer时,想要多拍几个快照,发现拍多了之后会提示错误,就是 Not registered
解决方法:从表面意思上可以知道是没有注册,然后我就进入到注册界面发现需要注册码。上网搜索注册码发现没有现成的注册码,因为是根据上面的一段数据,不同的应该是用不同的注册码。然后我就去下载破解版,发现是通过一个软件获取注册码,然后填入注册码注册的。注册成功后,的确在边框上已经没有 Not registered 的字样了,而且能进行拍摄快照且不报错,但是拍了两三个之后,竟然又给我报错未注册,但是边框上还是没有 Not registered 的字样。于是我进行了重启软件,发现还是没用。然后我觉得可以是快照数量有限的原因,于是我删除了几个快照,并且进入到软件文件夹下的快照日志将其日志进行删除,重启软件后发现还是不行。于是我决定重新安装软件,注意这里不要安装在同一个文件夹下,最好是不同的盘下,这样启动软件后,就不会有之前的记录,而且还能拍摄多个快照,当然还是需要注意快照数量,毕竟这不是注册版本。

六、实践思考

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

答:对于此,我觉得可以利用此次实验中的方法进行监控,例如,1、使用windows下schtasks指令设置一个计划任务,然后查看文本记录;2、使用Sysmon工具,编写配置文件后会记录有关的系统日志,然后查看日志发现可疑之处;3、使用 Process Explorer工具和 Process Monitor 工具进行监视;4、分几个时间段,然后在不同时间段使用Systracer拍摄快照,对比不同快照,寻找可疑之处

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

答:对于此,我觉得也可以利用此次实验中的方法解决,例如,1、利用PEiD工具看看有没加壳,以及加壳信息;2、使用Process Explorer工具进行监视文件活动,查找其信息;3、通过wireshack进行补包分析,在数据包中查找信息

七、实验收获与感想

这次实验,总的来说不是很困难,做得也还算顺利,稍微遇到了一点点麻烦,但是在整体上还是比较好的。对于这次实验,使用到了很多工具,对于这些工具,大都是第一次使用(除了wireshark,这个还是比较熟练了),使用起来还算顺利,没有什么比较复杂的地方,当然我这也是使用基本功能,还有更深的功能没有去挖掘,这一点还是需要去加强的。然后通过这次实验,我也学到了很多,对于后门程序的组成、执行过程和结果等也有了一些比较深刻的了解。这些也是比较基础的东西,想要学得更好,对保护好自己的设备安全(如果不是什么特意的攻击,基本保护还行。当然我的设备也没啥重要的信息,不知道有意人对我的设备是否感兴趣来攻击我...)还是有一段路要走的,希望在以后好好学习,增强自身知识储备和能力,争取做得更好。

八、参考资料

posted @ 2020-04-16 11:31  20175218陈敬勇  阅读(343)  评论(0编辑  收藏  举报