Exp4 恶意代码分析

实践目标

  • 监控你自己系统的运行状态,看有没有可疑的程序在运行。
  • 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
  • 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。

实验后问题回答

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

    答:设置计划任务,每隔一定的时间对主机的联网记录进行记录,将记录移动到excel中分析数据,尝试找到统计规律,将多次访问的ip地址拉到站长之家尝试ip查询。也可以使用sysmon工具,通过编辑配置文件,记录相关的日志文件。

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

    答:采用静态分析的话,可以把程序进程拖动到virustotal扫描参看报错类型。还可以将程序拖动到peid检测加装包情况。若采用动态分析,可以使用systracer工具进行快照对比查看运行改变的注册表、文件等信息,还可以使用Process Explorer工具,监测恶意代码运行时操作情况,还可以使用Wireshark进行抓包分析,监视通信过程。

预备知识

恶意代码概念

  • 是通过存储介质和网络进行传播,从一台计算机系统到另一台计算机系统,未经授权破坏计算机系统完整性的程序或代码
  • 最常见的恶意代码有病毒、木马、蠕虫、后门、僵尸网络、Rootkit等
  • 恶意代码都有以下共同特征:
  • 恶意的目的
  • 本身是计算机程序
  • 通过执行发生作用

更多详情请参见恶意代码

Schtasks的使用

C:\schtasks /create /TN netstat /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c:\netstatlog.txt"
  • TN(TaskName)任务名,这里为netatat
  • sc(ScheduleType)计时方式,这里为MINUTE,表示以分钟为单位
  • MO(Modifier)指定任务在其计划类型内运行的频率,这里为5,结合上面的sc,表示每5分钟执行一次
  • TR(TaskRun)要运行的指令,这里为cmd /c netstat -bn > c:\netstatlog.txt

更多详情请参见Schtasks官方网站

Sysmon的使用

  • Sysmon是微软Sysinternals套件中的一个工具。可以监控几乎所有的重要操作。
  • 基本操作可以描述为三步:
  1. 确定要监控的目标
  2. 写好配置文件
  3. 启动sysmon

然后就可以在事件查看器里找到日志了

  • Sysmon.exe -i <configfile>:Sysmon安装
  • Sysmon.exe -c <configfile>:Sysmon配置
  • Sysmon.exe -u [force]:Sysmon卸载

更多详情请参见Sysmon官方网站

实验内容

系统运行监控

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

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

  • 在C盘要目录下建一个文件c:\netstat1209.bat,内容如下:

date /t >> c:\netstat1209.txt
time /t >> c:\netstat1209.txt
netstat -bn >> c:\netstat1209.txt

  • 打开计算机管理-任务计划程序,可以看到我们新创建的任务:

  • 双击netstat12009,点击操作->编辑,将程序或脚本改为我们创建的netstat1209.bat批处理文件,参数可选项为空,常规中勾选使用最高权限运行
    -

  • 对该任务右键点击运行,可在netstat1209.bat目录下看到netstat1209.txt,打开就可看到每隔一分钟被输到这里的联网数据。

  • 一段时间后,打开Excel表格,选择数据->导入数据->选择数据源,点击确定。

  • 选择插入->数据透视图,选择我们要分析的那一列,并默认位置新表格,点击确定

  • 从图中可知:
  • 使用最多的是wps.exe,因为我正在做表格/(ㄒoㄒ)/~~
  • wechat.exe、wpscenter.exe这些均为正常的
  • WpnService相当于一个软件检测版本更新一样有更新就会自动检测到自动更新,也是正常的
  • 值得注意的是出现了SearchUI.exe和svchost.exe猜测我的电脑里应该是出现了恶意代码。。。

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

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

2、 可选择的事件过滤器

  • ProcessCreate 进程创建
  • FileCreateTime 进程创建时间
  • NetworkConnect 网络链接
  • ProcessTermina 进程结束
  • DriverLoad 驱动加载
  • ImageLoad 镜像加载
  • CreateRemoteTh 远程线程创建
  • RawAccessRead 驱动器读取
  • ProcessAccess 进程访问
  • FileCreate 文件创建
  • RegistryEvent 注册表事件
  • FileCreateStre 文件流创建

3、 我选择的是进程创建、进程创建时间、网络链接、远程线程创建

  • ProcessCreate

UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine

  • FileCreateTime

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

4、 创建配置文件sysmon20181209.xml可以先创建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">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>
  • 将写好的配置文件保存为 sysmon20181209.xml 放在c盘目录下

  • 管理员模式下安装Sysmon: sysmon.exe -i C:\sysmon20181209.xml

  • 查看我们记录的事件:控制面板→系统和安全→管理工具→事件查看器→应用程序和服务日志→Microsoft→Windows→Sysmon→Operational

恶意软件分析

静态分析

  • 文件扫描(VirusTotal、VirusScan工具等)
  • 文件格式识别(peid、file、FileAnalyzer工具等)
  • 字符串提取(Strings工具等)
  • 反汇编(GDB、IDAPro、VC工具等)
  • 反编译(REC、DCC、JAD工具等)
  • 逻辑结构分析(Ollydbg、IDAPro工具等)
  • 加壳脱壳(UPX、VMUnPacker工具等)

使用VirusTotal分析恶意软件

把生成的恶意代码放在VirusTotal进行分析,可以从中获取详细信息,包括大小、 MD5、SHA-1、SHA-256数值以及连接状况等:

使用PEiD分析恶意软件

PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470种PE文档的加壳类型和签名。
它的扫描模式有:

  • 正常扫描模式:可在PE文档的入口点扫描所有记录的签名
  • 深度扫描模式:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入
  • 核心扫描模式:可完整地扫描整个PE文档,PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性

将实验三中加壳后的文件使用PEiD进行扫描,首先扫描未加壳的程序

使用PE Explorer分析恶意软件

PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等,非常好用。
这里主要看文件引用的dll库,可以通过视图->引入进行查看,如下图所示:

动态分析:

快照比对(SysTracer、Filesnap、Regsnap工具等)
抓包分析(WireShark工具等)
行为监控(Filemon、Regmon、ProcessExplorer工具等)
沙盒(NormanSandbox、CWSandbox工具等)
动态跟踪调试(Ollydbg、IDAPro工具等)

使用systracer分析恶意软件

  • 进入安装选择第二个,next设置端口为1209(后门生成时利用的端口),安装完成后进入界面

捕获五个快照如下:

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

创建过程长短视当前系统体量而定,创建好后默认名称为Snapshot #1

开启后门程序回连kali(停在获取命令的那一刻),此时创建第二个快照Snapshot #2

然后kali中输入一个ls命令,此时创建第三个快照Snapshot #3

输入screenshot命令抓屏,此时创建第四个快照Snapshot #4

输入dir命令,此时创建第五Snapshot #5

对比Snapshot #1Snapshot #2 增加了一个运行着的后门 20181209 _backdoor.exe

端口变化 :

而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议

kali 地址 192.168.248.128

可以看到新增了一个DLL文件winbrand.dll

读取、添加、删除的文件

wireshark抓包分析
查看IP地址和网络连接

  • - kali中打开监控,win10执行后门程序20181209_backdoor.exe进行回连,输入过滤条件ip.addr == 192.168.248.128,可以看到Wireshark上捕获到大量的TCP传输

![image-20210411003809379](2021-4-10 实践目标 214105.assets/image-20210411003809379.png)

输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)

kali输入dir命令后

![image-20210411003950733](2021-4-10 实践目标 214105.assets/image-20210411003950733.png)

断开连接

实验中遇到的问题

  • 无法启动sysmon
  • 解决方案:原因是权限不够,用管理员身份运行就可以了

实验心得

  • 此次实验可以让我了解平时不使用电脑时,电脑都进行了哪些行为,通过联网记录,注册表,文件的变化,可以分析出电脑的异常行为,从而推测自己的电脑是不是背地里被人进行攻击和控制。
  • 本次实验也让我对自己的电脑也有了更进一步的认识,我们应该增强自己的安全意识,要定期检查电脑,不要过度依赖于杀软。
posted @ 2021-04-11 01:18  STong66  阅读(139)  评论(1编辑  收藏  举报