Exp4:恶意代码分析

发布时间 2023-04-06 23:35:53作者: 遥鱼

一.实验信息

  • 课程名称:网络对抗技术
  • 实验序号:4
  • 实验名称:恶意代码分析
  • 实验人:20201207徐艺铭

二.实验内容

2.1 实践内容(5分)

2.1.1 系统运行监控(2分)

  • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。(1分)
  • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。(1分)
  • 参考:schtask与sysmon应用指导
  • 实际日志的分析还需要发挥下自己的创造力,结合以前学过的知识如linux的文本处理指令等进行。分析的难点在于从大量数据中理出规律、找出问题。这都依赖对结果过滤、统计、分类等进一步处理,这就得大家会什么用什么了。

2.1.2 恶意软件分析(3分)

  • 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
  • 该后门软件
    (1)读取、添加、删除了哪些注册表项(1分)
    (2)读取、添加、删除了哪些文件(1分)
    (3)连接了哪些外部IP,传输了什么数据(抓包分析)(1分)
  • 该实验重点在“分析”,不是“如何使用某软件”。组长、课题负责人要求写细一点,其他人可以重点放在分析上。

2.2 报告内容(1分)

2.2.1实验后回答问题

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

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

2.2.2实验总结与体会

2.2.3实践过程记录

2.3报告评分( 2分)

  • 报告整体观感:有带链接的目录,各级标题层次分明,易于阅读(1分)
  • 文字表述:报告文字内容非常全面,表述清晰准确 加1分。
  • 报告逻辑混乱表述不清或文字有明显抄袭可能不加分

三.实验知识

  • TCP三次握手四次挥手
  • bat文件生成:新建一个txt文本文件,将需要的命令行输入进去,保存退出后,将文件扩展改为.xml即可。

四.实验过程

4.1 系统运行监控(任务计划)

  • 将如下命令写成bat脚本(bat文件制作方法已放入实验知识介绍)

date /t >> d:\netstatlog1207.txt
time /t >> d:\netstatlog1207.txt
netstat -bn >> d:\netstatlog1207.txt

  • 新建一个netstatlog1207.txt文件(按照如上命令,我将txt文件放入d盘目录下)
  • win+R打开cmd
  • 输入如下命令schtasks /create /TN netstat1207 /sc MINUTE /MO 2 /TR "d:\netstatlog1207.bat
  • 意为创建一个新任务,新任务的名字叫做netstat1207,该任务创建完成后每隔2分钟运行一次d盘目录下的netstatlog1207.bat

  • 任务创建成功后还需要在windows搜索栏找到任务计划程序,打开后找到我们刚创建好的计划任务,按下图修改属性。

  • 修改后打开刚刚创建好的netstatlog1207.txt文件,看到里面已经多了很多记录

  • 这些记录都是各种应用联网的时间和ip,如图有wps firefox wechat steam ToDesk等等
  • 将我收集了几个小时的txt文件导入excel分析(别忘记做完这部分实验后停止任务,不然一直弹终端很烦)
  • 新建excel,数据→导入数据→选择数据源→netstatlog1207.txt,按下图流程设置

  • 选中要分析的数据列,点插入——>数据透视图——>默认项确定

  • 将'周三'拖入下方窗口

  • 得到数据分析图

  • 可以看到tcp协议出现的次数最多,firefox、wps和SearchHost等等都是联网大户

4.2 Sysmon工具监控

4.2.1安装Sysmon

Sysmon安装包
Sysmon配置文件

  • 确定监控目标
  • 编写配置文件:创建一个txt文件,写好配置文件后将文件后缀改为.xml(需要按照个人需求修改第一行的版本号,比如我的版本为4.83,后面的浏览器根据自己电脑的实际情况修改,比如我使用的是firefox.exe,有些同学可能用chrome.exe等等)
  <!-- Capture all hashes -->
  <HashAlgorithms>*</HashAlgorithms>
  <EventFiltering>
    <!-- Log all drivers except if the signature -->
    <!-- contains Microsoft or Windows -->
    <ProcessCreate onmatch="exclude">     
      <Image condition="end with">firefox.exe</Image> 
      <Image condition="end with"MicrosoftEdge.exe</Image> 
    </ProcessCreate>
 
    <FileCreateTime onmatch="exclude" >
      <Image condition="end with">firefox.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>

关于配置文件的解释

  • onmatch选项只能设置为include或者exclude,exclude相当于白名单,不用记录;include相当于黑名单
  • 第一行的sysmon版本号要跟使用的sysmon一致(当前版本是4.81)
  • Image condition根据自己使用的浏览器更改,如谷歌浏览器是“chrome.exe”,IE浏览器是“iexplore.exe”,火狐浏览器是“firefox.exe”,QQ浏览器是“QQBrowser.exe”,写在exclude中就是不记录由谷歌浏
  • 进程创建时间类似,也是不创建浏览器创建进程的时间
  • 网络连接过滤掉了浏览器的网络连接、源IP为127.0.0.1(localhost)的网络连接和目的端口为137的连接服务,且查看目的端口为80(http)和443(https)的网络连接。
  • 137端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态
  • 127.0.0.1表示回环地址
  • 远程线程创建记录了目标为explorer.exe、svchost.exe、winlogon.exe和powershell.exe 的远程线程
  • explorer.exe是Windows程序管理器或者文件资源管理器
  • svchost.exe是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称
  • winlogon.exe是Windows NT 用户登陆程序,用于管理用户登录和退出
  • powershell.exe是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用

4.2.2 启动Sysmon

  • cd 进入包含Sysmon.exe的文件夹
  • 使用如下命令

  • 这里我报错了,提示我使用超级用户权限

  • 按下图方式以管理员身份打开powershell(右键选择管理员身份)

  • 打开后重新输入指令运行成功

  • win+R输入下图内容

  • 打开 计算机管理->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational 查看日志

  • 这时使用exp2中制作的后门程序,在kali机中连接,看看sysmon会记录些什么

  • 当kali机成功连接并下达shell指令获得windows主机终端权限时,刷新一下日志,根据时间查找到记录,这就是Sysmon记录下来的关于kali机的行为

4.3 恶意软件分析

4.3.1 使用wireshark分析TCP包

主机IP:192.168.73.1
Kali IP:192.168.73.128

  • 主机和Kali机均选好要抓包的网络后开始抓包
  • 使用ip.addr=[目标ip]进行过滤
    Kali利用后门与主机建立TCP连接(三次握手)[标志包为SYN和ACK]

Kali与主机断开连接[标志包为RST和FIN]


Kali单向企图连接主机[RST包 果然被拒绝了]

建立连接后Kali向主机传输后门程序

  • Kali主动传后门的过程中,是由Kali向主机发送SYN包,三次握手后开始频繁使用[PSH,ACK]和[ACK]包传输数据,一般出现PSH包意味着有数据的传输。
  • 这里分析一下抓到的包:第一行Frame8主要是要发送的数据块;使用以太网,标明了源Mac地址和目的Mac地址,由于我这里是一台机器上利用VMware来进行通信,所以图片中标明了VMware;第三行指本次传输中使用了IPV4协议,标明目的ip和源ip;第四行使用了TCP协议进行通信,源端口号和目的端口都有标明;最后一行为data包,不是所有抓到的包都有,有这一行意味着这个包携带了多大字节的数据量。

4.3.2 使用TCPView工具分析进程

  • 当前进程

  • 过滤了一下端口
  • 直接被逮到

4.3.3 使用Process Explorer分析恶意进程

  • 发现进程中命令来源是未知,而正常主机打开powershell的来源是C盘目录下

  • 后门进程的举动太可疑,直接打开了cmd.exe,所以也是在进程中被瞬间逮到

  • 查看线程

  • 把两个线程杀掉

  • Kali机中瞬间断开连接,显示died

五.基础问题回答

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

首先要监控的是网络,可以就用schtasks设置任务,然后筛选出可疑的网络行为。但凡攻击者想进行远程操作,建立了连接,就一定会被记录到。
然后检测进程和线程,一些像实验中出现的未知来源开启终端这样的高度危险行为,几乎可以肯定是遭受了攻击,同时如果攻击者想要利用我们电脑中某些后门程序进行操作,势必会在实验所使用的这几种软件中有所记录,更严重的会占用大量CPU。
还有要检测文件的创建和删除。一些后门程序很可能以一个系统文件的名字来企图蒙混过关,要关注一些所谓的“系统程序”文件是否在C盘应该出现的文件夹下,注意甄别。

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

六.实验总结体会

  • 本次实验依旧是一个相对开放的实验,我们更多的是对自己的电脑进行分析,利用Sysmon监控和wireshark抓包来分析包括网络连接端口占用有无异常,利用一些工具查看自己正在运行的进程的相关情况,找到可疑行为分析恶意软件。
  • 在此次实验中,由于conhost.exe和svchost.exe一直在我查看进程的过程中出现,我就去网上搜索了一下这两个进程,发现这两个进程作为系统进程,也常常是后门程序企图渗入的目标,如果发现不是在C盘SYstom文件夹下运行是,十之八九就是伪装的恶意程序,需要尽快将文件删除
  • 而由于我在Kali机中使用shell命令直接获取windows主机权限的行为太过明显,也是直接在procexp中脱颖而出很快被发现查杀
  • 但是我想,如果将后门程序包装一下,同时攻击意图不那么明显,悄无声息地运行很可能骗过我这样的小白,所以在之后的时间里,需要学习更多恶意软件恶意代码的特征,不断擦亮双眼,提高防范意识的同时,也提高辨别能力!