2019-2020-2 20175221『网络对抗技术』Exp4:恶意代码分析

Posted zxja

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-2020-2 20175221『网络对抗技术』Exp4:恶意代码分析相关的知识,希望对你有一定的参考价值。

2019-2020-2 20175221『网络对抗技术』Exp4:恶意代码分析 

  • 原理与实践说明
    •  1.实践目标
    •  2.实践内容概述
    •    3.基础问题回答
  • 实践过程记录
    • 系统运行监控
    • 恶意软件分析
  • 实验总结与体会


 

原理与实践说明

  • 实践目标

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

  • 系统运行监控
    • 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果。
    • 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
  • 分析该软件在(1)启动回连,(2)安装到目标机(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
    • 读取、添加、删除了哪些注册表项
    • 读取、添加、删除了哪些文件
    • 连接了哪些外部IP,传输了什么数据

基础问题回答

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

  • 我想监控:

  • 注册表、进程、端口使用情况,CPU占用情况,网络连接

  • 监控方法:

  • 可以定时让主机执行netstat,对捕获到的信息进行批量分析
  • 可以利用Sysmon,修改配置文件,监控觉得可疑的端口、软件和事件。
  • 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。

  • 可以利用Wireshark进行抓包分析,监视与主机进行的通信过程。
  • 可以利用Systracer拍摄快照,比对前后区别,分析注册表、系统用户、系统文件的变化情况。

 

实践过程记录

一、系统运行监控

  • 根据netstat的结果分析程序连接

  • 使用 schtasks /create /TN netstat5221 /sc MINUTE /MO 5 /TR "cmd /c netstat -bn > c: etstatlog.txt" 命令创建计划任务netstat5221
  • 技术图片
  • 其中,TN是TaskName的缩写,创建的任务名是netstat5221;sc是计时方式,这里我们以分钟计时--MINUTE;TR是Task Run,要运行的指令是 netstat -bn,b表示显示可执行文件名,n表示以数字来显示IP和端口。
  • 随后在C盘创建一个 netstat5221.txt ,内容如下:
  • 技术图片
  • 完成后将txt文件类型改为bat文件类型
  • 技术图片
  • 随后打开任务计划程序,可以观察到刚刚创建的任务
  • 技术图片
  • 双击打开它对其进行一些修改:
  • 在编辑操作,将要运行的程序设为刚刚创建的 netstat5221.bat
  • 技术图片
  • 在条件里边,将充电才工作的选项取消,否则不给电脑充电,任务就没法运行。netstat5221.txt也不会更新
  • 技术图片
  • 完成以上操作后,就可以把电脑放在那里让其自动运行了。大约一段时间后(我让它工作是12小时),就可以在netstat5221.txt文件中查看到本机在该时间段内的联网记录。(这里有很多方法可以看自己的任务是不是自动执行了,比如有没有在你设定的时间间隔内一闪而过一个命令行;或者是看联网记录的txt大小有没有变化等)
  • 技术图片
  • 为了更生动形象,我们将生成的记录用Excel详细档下来,并对其进行统计分析:(下面的步骤与我做出的统计图会有些许出入,因为后边我又多试了Excel的其他类型表示,但大体设置方向是对的)
  • 选中要分析的列,插入数据透视图
  • 技术图片
  • 筛选掉一些无意义的字段,将周五置入下边两个区域中
  • 技术图片
  • 之后选择想要的类型表显示就可以了
  • 技术图片
  • 这里我对联网数超过100的进行了一下研究,首先是最多的 LegacyCsLoaderService.exe  ,以前都没听说过这个
  • 技术图片
  • 大概意思是 LegacyCsLoaderService.exe 是任务管理器中的一个进程,但其不是必须的核心文件,而且通常会导致问题,可以通过控制面板将其删除或添加。该文件进行过数字签名,但依旧得提防它,是一个可用程序还是特洛伊木马,还得自己来判断。。。
  • QQ,Vmware就跳过,看一下最左边两个:
  • 360tray.exe是360安全卫士木马防火墙模块
  • 技术图片
  • 360se.exe是360浏览器的主程序
  • 技术图片
  • SogouExplorer.exe就简单了,就是搜狗浏览器
  • 观察剩余的几个,并没有发现什么可疑的。便开始整理数据,以便今后有需要研究再来查表:
  • 联网次数
  • 技术图片
  • 外网地址
  • 技术图片
  • 使用sysmon工具监控系统

  • sysmon是微软Sysinternals套件中的一个工具,使用sysmon工具前首先要配置文件。这里我选择:进程创建ProcessCreate、进程创建时间FileCreatTime、网络连接NetworkConnect、远程线程创建CreateRemoteThread
  • 随后是配置文件,需要先了解配置文件应该怎么写:
  • ① 进程创建ProcessCreate的过滤事件选项有:

  • UtcTime, ProcessGuid, ProcessId, Image, CommandLine, CurrentDirectory, User, LogonGuid, LogonId, TerminalSessionId, IntegrityLevel, Hashes, ParentProcessGuid, ParentProcessId, ParentImage, ParentCommandLine
  •  这里我用到了Image、SourceIp、SourcePort。

  • ② 进程创建时间FileCreatTime的过滤事件选项有:
  • UtcTime, ProcessGuid, ProcessId, Image, TargetFilename, CreationUtcTime, PreviousCreationUtcTime
  •  这里我用到了Image。

  • ③ 网络连接NetworkConnect的过滤事件选项有:

  • UtcTime, ProcessGuid, ProcessId, Image, User, Protocol, Initiated, SourceIsIpv6, SourceIp, SourceHostname, SourcePort, SourcePortName, DestinationIsIpv6, DestinationIp, DestinationHostname, DestinationPort, DestinationPortName
  • 这里我用到了Image、SourceIp、SourcePort。

  • ④ 远程线程创建CreateRemoteThread的过滤事件选项有:

  • UtcTime, SourceProcessGuid, SourceProcessId, SourceImage, TargetProcessGuid, TargetProcessId, TargetImage, NewThreadId, StartAddress, StartModule, StartFunction
  • 这里我用到了TargetImage、SourceImage。

  • 更多可参考使用轻量级工具Sysmon监视你的系统,配置自己的文件
  • 随后创建自己的配置文件:
  • 技术图片
  • 随后准备sysmon,着手监视工作
  • 在启动前先看一下其参数配置:
  • 技术图片
  • 可以看到,使用 i 参数帮助我们安装,安装成功界面如下:
  • 技术图片
  • 随后使用 c 参数使刚创建的配置文件生效:
  • 技术图片
  • 计算机管理->事件查看器->应用程序和服务日志->Microsoft->Windows->Sysmon->Operational。在这里,我们可以看到按照配置文件的要求记录的新事件
  • 技术图片
  • 随后利用在之前实验中生成的后门程序,启动 kali 回连主机
  • 技术图片
  • 查看日志,可以看到后门程序的相应信息(包括连接协议、Kali的IP、使用的端口号、使用者及使用的软件名等)
  • 技术图片
  • 除此之外,还发现了一些其他有趣的日志:
  • 技术图片
  • svchost.exe是微软视窗操作系统里的一个系统进程,管理通过Dll文件启动服务的其它进程。一些病毒木马伪装成系统dll文件通过Svchost调用它,试图隐藏自己。

 

二、恶意软件分析

  • 分析该软件在:启动回连;安装到目标机;其他任意操作时(如进程迁移或抓屏),该后门软件:读取、添加、删除了哪些注册表项;读取、添加、删除了哪些文件;连接了哪些外部IP,传输了什么数据(抓包分析)
  • 静态分析

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

  • 将程序丢入VirusTotal,查看其详细信息
  • 技术图片
  • 可以看到这个恶意代码的SHA-1摘要值、MD5摘要值、文件类型、文件大小等等,报毒数是(34/72),算是比较高的了
  • (2)PEiD分析

  • PEiD是检查加壳的恶意代码,几乎可以侦测出所有的
  • 先检查一下啥壳都没加的:什么都没找到
  • 技术图片
  • 再检测一下使用了upx的:
  • 技术图片
  • PEiD成功检测出了加壳的相关信息。
  • (3)PE Explorer分析

  • PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,可直接浏览、修改软件资源,包括菜单、对话框、字符串表等;还可以快速对W32DASM软件反编译,编辑PEditor 软件的PE文件头,可以更容易的分析源代码,修复损坏了的资源,可以处理 PE 格式的文件有:EXE、DLL、DRV、BPL、DPL、SYS、CPL、OCX、SCR 等 32 位可执行程序。

  • 通过使用PE Explorer分析恶意代码所链接到的dll库。打开之前的后门程序:
  • 技术图片
  • 在“查看→引入”可以查看引入的dll库,分析:
    • KERNEL32.dll:是Windows 9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
    • msvcrt.dll:是微软在windows操作系统中提供的C语言运行库执行文件(Microsoft Visual C Runtime Library),其中提供了printf,malloc,strcpy等C语言库函数的具体运行实现,并且为使用C/C++(Vc)编译的程序提供了初始化(如获取命令行参数)以及退出等功能。
    • ntdll.dll:ntdll.dll是重要的Windows NT内核级文件。描述了windows本地NTAPI的接口。当Windows启动时,ntdll.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
  • 技术图片
  • 技术图片
  • 将之前生成的其他几个恶意代码都放进去查了一下,发现所有后门程序都会引用KERNEL32.dll这个库。那么可以猜想这是后门程序必须有的一个链接库,可能会被杀软们当成另一种“特征码”来看待。
  • 动态分析

  • 快照比对(SysTracer、Filesnap、Regsnap工具等)
    抓包分析(WireShark工具等)
    行为监控(Filemon、Regmon、ProcessExplorer工具等)
    沙盒(NormanSandbox、CWSandbox工具等)
    动态跟踪调试(Ollydbg、IDAPro工具等)
  • (1)Threatbook沙盒检测
  • 沙盒检测结果(7/25)查杀概率为28%
  • 技术图片
  • 行为检测中查看异常
  • 技术图片
  • 可以看到,反检测技术、反逆向工程、PE文件节数量异常,都成为了该文件是危险文件的标志!
  • (2)快照比对SysTracer分析
  • 下载SysTracer工具
  • 点击右侧的take snapshot,存储快照:
    • 快照一:未移植后门程序,保存为Snapshot #1
    • 快照二:移植后门程序,保存为Snapshot #2
    • 快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
    • 快照四:在kali中使用dir指令,保存为Snapshot #4
    • 快照五:在kali中使用record_mic指令,保存为Snapshot #5
  • 技术图片
  • 通过右下角的 compare 或者 View Differences Lists 比对各快照,可以选择 Only Difference 只查看不同的项
  • 对比快照一快照二:增加了后门程序 20175221_backdoor.exe ,许多键值和文件都有被修改,亦或是增加、删除!
  • 技术图片
  • 对比快照二快照三(回连前与回连后):
  • 可以看到新增的后门进程,以及源IP、目的IP、端口号、连接的协议
  • 技术图片
  • 该后门程序还生成了很多文件、目录和键值,同时也有很多未授权的地方是看不了的!
  • 技术图片
  • 对比快照三快照四:kali上执行dir指令,但是变化不大
  • 对比快照四快照五:kali上执行record_mic指令
  • 注册表项中有以下变化:
  • 技术图片
  • 新建了很多连接,其中有与后门程序相关的 Apache HTTP Server
  • 技术图片
  • (3)WireShark抓包分析
  • 回连前打开WireShark,选择本地连接WLAN,开始抓包
  • 回连后关闭抓包,分析抓到的包:可以看到kali与win10连接的过程中产生了大量TCP包,并且找到了三次握手
  • 技术图片
  • 查看详细内容,看到端口、源IP、目的IP、通信协议等等
  • 技术图片

实验收获与感想

  • 这次实验做下来,感觉并没有遇到什么困难。主要训练的还是分析恶意代码的能力,当怀疑自己的PC中了恶意代码,那么该如何去侦测;亦或是发现了木马病毒,该如何去消灭它,这些技巧我觉得在个人生活中还是挺实用的。
  • 也才知道原来分析方法有动态和静态,这也衍生出了许多以前没使用过的工具:SysTracer、PE Explorer、PEiD等等,也终于不用只会说wireshark了,算是除了抓包以外又学会了一些保护电脑的方法

以上是关于2019-2020-2 20175221『网络对抗技术』Exp4:恶意代码分析的主要内容,如果未能解决你的问题,请参考以下文章

2019-2020-2 20175221『网络对抗技术』Exp8:Web基础

2019-2020-2 20175221『网络对抗技术』Exp8:Web基础

2019-2020-2 20175221『网络对抗技术』Exp5:信息收集与漏洞扫描

2019-2020-2 网络对抗技术 20175208 Exp7 网络欺诈防范

2019-2020-2 网络对抗技术 20175208 Exp7 网络欺诈防范

2019-2020-2 20175216 《网络对抗技术》Exp7 网络欺诈防范