2019-2020-2 20175208张家华《网络对抗技术》Exp4 恶意代码分析

2019-2020-2 20175208张家华《网络对抗技术》Exp4 恶意代码分析

实验内容

  • 1.系统运行监控
    • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
    • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
  • 2.恶意软件分析
    • (1)启动回连,(2)安装到目标机(3)及其他任意操作时。该后门软件
    • (3)读取、添加、删除了哪些注册表项
    • (4)读取、添加、删除了哪些文件
    • (5)连接了哪些外部IP,传输了什么数据(抓包分析)

实验过程

实验准备即相关知识

恶意代码的概念与分类
  • 是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。
  • 指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。
  • 常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。
  • 恶意代码都有以下共同特征:
    • 恶意的目的
    • 本身是计算机程序
    • 通过执行发生作用
      详情参见
恶意代码的分析方法
  • 静态分析
    -使用反病毒软件来确认程序样本的恶意性(VirusTotal或者virscan,可调用多个反病毒引擎来进行扫描)
    • 哈希值:恶意代码的指纹(md5deep程序:计算出程序的哈希值)
    • 通过检索恶意代码字符串获得相应的功能调用解释等,查看是否有被加壳处理(字符串检索:Strings 外壳检测:PEiD)
    • 可移植执行(PE)文件以一个文件头开始,包含代码信息、应用程序类型、所需的库函数与空间要求。(使用PEview来分析PE文件。使用Resource Hacker工具来浏览.rsrc节(资源)。PEBrowse Professional和PE Explorer 也是分析PE文件的两大工具)
  • 动态分析(运行程序)
    • 沙箱:提供容易理解的输出结果,用来做初诊断非常有用(Norman沙箱、GFI沙箱等)
    • DLL类型文件执行(PEview、PE Exporer)
    • 用一些系统监视类软件捕获运行中恶意程序的系统调用(process monitor、process explorer)

 

基础问题回答

(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
  • 可以利用实验中的两种方法,windows计划任务或sysmon工具查看日志
    • 监控是否有不知名进程创建
    • 监控注册表项目
    • 是否有程序多次链接不知名ip
  • 查看数据包:使用wireshark捕包,进行数据流分析
  • 查看端口:使用nmap查看可疑端口
  • 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
  • 直接利用静态分析工具如:PEID、ExeinfoPE等工具看看有没壳在保护
  • 快摄拍照,对比进程运行前后有没有可疑端口、注册表或可疑的大量变化
  • 使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
  • 使用PE explorer查看PE文件头中包含代码信息
  • 利用wireshack等工具查看此程序有没有可以了的连接
指令说明
Sysmon相关
详情参见

任务一、系统运行监控

一、使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。
  • 使用schtacks指令监控系统
  • 命令创建计划任务netstat5208
    schtasks /create /TN netstat5208 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c: etstat5208.txt"
  • 命令解释:
    • TN netstat5208:说明计划任务名
    • sc MINUTE:表示已分钟为单位的计时方式
    • TR "cmd /c netstat -bn:cmd运行指令"netstat -bn",b会显示可执行文件名
  • 在C:盘下创建内容如下的批处理文件(可以先创建.txt文件然后修改后缀名为.bat)
 date /t >> c:
etstat5208.txt
 time /t >> c:
etstat5208.txt
 netstat -bn >> c:
etstat5208.txt
  • 修改计划任务

    • 在开始处右击打开计算机管理->任务计划程序,找到上述创建的任务

    • 打开任务,操作->编辑->程序脚本,替换为上述创建的批处理文件netstat5208.bat添加参数为空,具体如图:

  • 注意勾选使用最高权限运行否则在运行过程中可能出现由于权限问题产生的错误

  • 在计算机管理界面对该任务右键点击运行,可在netstat5208.bat目录下看到一个txt文本文件,打开就可看到每隔一分钟被输到这里的联网数据。

  • 等到自己觉得时间差不多了,就可以利用Excel来进行分析

    • 在Excel中打开数据->自文本->分隔符号,下一步中标记所有分隔符号。


    • 导入数据后选择我们需要分析的一行,插入->数据透视图->新表格。将图中标记和TCP拖动到轴和值中,然后就可以得到如图所示的统计图了。如图:

  • 在统计这段时间内我有玩之前实验的程序20175208_backdoor.exeshellupxed.exe相关程序就有相关比例,同时也有虚拟机vmware.exevmware-authd.exe,然后就是这段时间的某些软件chrome.execloudmusic.exeWeChat.exe的基础使用。

  • 还有一些win10自带的程序SearchUI.exe等,从这方面来看各种软件后台联网情况也能发现一推导致电脑出现问题的端倪,可以找到好多弹窗广告软件。

二、安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
  • 首先根据实验提供的链接,编写配置文件5208sysmoncfig.xml,可以像之前的批处理文件一样建好后更改后缀名为.xml,代码如下:
<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">chrome.exe</Image> 
    </ProcessCreate>

    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">chrome.exe</Image>
    </FileCreateTime>
    
    <NetworkConnect onmatch="exclude">
      <Image condition="end with">chrome.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根据自己使用的浏览器更改,我的就是谷歌浏览器chrome.exe
    • 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1表示本机IP。一般不会有啥问题所以网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1的网络连接和目的端口为137的连接服务
    • 远程线程创建记录了目标为explorer.exesvchost.exewinlogon.exepowershell.exe 的远程线程。
  • 启动sysmon:下载链接

    • 此时需要进入管理员命令提示符,然后进入你下载的软件目录下

    • 通过命令.Sysmon.exe -i C:5208sysmoncfig.xml

    • 至此就安装完成了

  • 进入事件查看器里查看日志

    • 进入事件查看器通过应用程序和服务日志/Microsoft/Windows/Sysmon/Operational找到日志具体位置

    • 利用Sysmon就可以具体分析你主机最近的程序使用,可以看到显示得有具体时间、运行的程序、使用的协议、源IP、目的IP等等

    • 然后利用这个测试了一下之前实验二创建的后门程序

    • 紧接着在后面就发现了联想电脑管家出来阻止的程序

    • 同时kail上dir也能看见SearchFilterHost.exe(桌面搜索引擎的索引程序)被调用

任务二、恶意软件分析

之后大部分操作都在win7和kail虚拟机中进行

一、静态分析工具

1.使用VirusTotal分析恶意软件
  • 同实验三将其中一个加壳的后门程序放入virusTotal中分析
  • 可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,TRiD文件类型、加壳情况、算法库支持

2.使用PEID进行外壳检测:下载地址
  • 安装完后如图:

  • 安装后将实验三的程序拖进去,可以看到其加壳的版本等

  • 点击>>可以查看详细信息

2.使用PE explorer进行外壳检测:下载地址
  • 下载安装完成后,打开实验二创建的后门程序,可以看到其头部信息


     

  • 查看静态数据目录、节头信息


  • 通过工具可以进行反汇编

  • 点击上方菜单的红箭头可以查看dll库

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

一、动态分析工具

1.抓包工具运用(wireshark)
  • 相关设置好后,反弹链接时进行捕包,其中找到了win7与kail之间三次握手的建立

  • 相关包中也有双方的IP地址与开放端口情况

  • 同时连接后可以看到捕获到大量的TCP传输

  • 输入其他命令如dir,Kali会不断给Windows传一大堆ACK包,有时还伴有各种数据包。说明两者之间产生了数据传输

2.快照比对(SysTracer):下载链接
  • 安装时进入选择第二个

  • 下一步后设置端口为后门的反弹端口5208

  • 完成后的界面如图:

  • 打开后门前先点击take snapshot(创建快照),接着Start

  • 后门连接前快照Snapshot #1

  • 开启后门程序回连创建第二个快照Snapshot #2

  • 然后kali中输入ls命令创建第三个快照Snapshot #3

  • 输入screenshot命令创建第四个快照Snapshot #4

  • 结束链接创建第五个快照Snapshot #5

  • 按住Ctrl任选两个截取的快照,点击compare就可以进行比较两者之间的区别

蓝色就是发生变化的选项

  • 某些比较例子:
    • 比较#1和#2可以看到增加5208端口及一些dll端口


    • 比较#2和#3也应该有大量增加的操作,不过我这个并不是很多。。。

    • 比较#3和#4可以看到关闭了一些东西但是也出现了一个新的调用SysTracer.exe有了改变

    • 最后#4和#5因为关闭了链接,所以对应端口和大量的dll文件都被删除,关闭或改变


3.Process Explorer工具使用:下载链接
  • 安装后也要进行回连,在软件中可以看到对后门程序是记录,双击可以看到对应属性

在其中也能找到前面静态分析时找到的dll文件:wsock32.dll和ws2_32.dll。

实验中遇到的问题:

1.在安装sysmon时出现了如图的问题:

 解决方法:在属性中找到兼容性,在权限中勾选【以管理员身份运行此程序】,之后确定,保存即可。

详情请见:https://jingyan.baidu.com/article/49711c6179390dfa451b7c69.html

2.wireshark显示无法找到端口。

解决办法:以管理员身份启动cmd,输入命令net start npf即可,之后再以管理员身份运行wireshark

如果在运行命令net start npf时,出现:

服务名无效。
请键入 NET HELPMSG 2185 以获得更多的帮助。

则需要安装winpcap,安装完即可运行命令。

下载地址:http://forspeed.onlinedown.net/down/WinPcap_4_1_3.zip

详情请见:https://www.cnblogs.com/HelloGreen/p/11742466.html

实验结果

实验总结与反思

    • 这次实验看到了很多的分析工具,总体来说感觉理论性知识偏多,需要学习的内容也比较多。了解到了恶意代码的分析方法主要分为静态分析方法和动态分析方法。对所学的东西也有了更实际的体验。
    • 深以为想要有更好的防御还是要有更深入的学习、多动手在保护自己电脑的同时也能加强自己能力,拒绝非法程序,增强安全意识。
    • 通过本次实验的学习,感觉前几个实验是以攻击者的角度进行的,本次实验是以分析者的角度来完成,对恶意代码有了更深入的理解。
原文地址:https://www.cnblogs.com/kaoru/p/12722908.html