-
一、实践原理说明
-
1.实践目标
- 1.1 是监控你自己系统的运行状态,看有没有可疑的程序在运行。
- 1.2 是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
- 1.3 假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
-
2.实践内容
- 任务一:系统运行监控
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
- 参考:schtask与sysmon应用指导
- 任务二:恶意软件分析
- 分析该软件在:(1)启动回连,(2)安装到目标机,(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据(抓包分析)
- 分析该软件在:(1)启动回连,(2)安装到目标机,(3)及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。该后门软件
- 任务一:系统运行监控
-
3.实践原理
- 恶意代码
- 使计算机按照攻击者的意图运行以达到恶意目的的指令集合。
- 指令集合:二进制执行文件,脚本语言代码,宏代码,寄生在文件、启动扇区的指令流。
- 恶意代码目的:技术炫耀/恶作剧,远程控制,窃取私密信息,盗用资源,拒绝服务/破坏......
- 恶意代码类型
- 计算机病毒,蠕虫,恶意移动代码,后门,特洛伊木马,僵尸程序,Rootkit等…
- 计算机病毒是最早出现的恶意代码,媒体/工业界的概念混淆,经常以计算机病毒(Computer Virus)等价于恶意代码
- 系统监控
- 把系统看做一个黑盒子
- 从网络进出口,监控对外数据收发
- 把系统看做白盒子
- 谁(进程)
- 读写了什么(文件)
- 收发了什么(网络)
- 隐通道
- 内存发送Wifi信号
- DNS包发送数据
- 把系统看做一个黑盒子
- 分析环境
- 静态分析:
- 恶意代码扫描、文件格式识别、字符串提取、二进制结构分析、反汇编反编译、代码结构与逻辑分析、加壳识别和代码脱壳
- 动态分析:
- 快照比对、动态行为监控、网络监控、沙盒、动态跟踪测试
- 静态分析:
- 恶意代码
-
-
二、实践过程记录
-
任务一:系统运行监控——使用schtasks指令监控系统
- Step1:在C盘根目录下先建立一个 netstatlog.dat 文件。
- 我们先在桌面创建 netstatlog.txt 文件,输入以下内容:
-
date /t >> c:\netstat20201223.txt time /t >> c:\netstat20201223.txt netstat -bn >> c:\netstat20201223.txt
- 然后将文件后缀改为 .dat ,使用管理员权限将文件从桌面复制到C盘当中
- 1.打开桌面上的“这台电脑”(只要开启文件资源管理器都可以),在查看选项卡勾选“文件扩展名”选项显示文件后缀。
- 2.右键点击要修改后缀名的文件,选择“重命名”。
- 3.选中点(.)后面的文本,修改为新的后缀名
- Step2:在cmd下输入
schtasks /create /TN netstat1223 /sc MINUTE /MO 2 /TR "c:\netstat1223.bat"
命令创建任务计划 netstat1223- 由于之前文件名出错了,现在重新建一个
- **Step3:打开任务计划程序 **
- 双击
netstat1223
任务计划,点击操作
—>编辑
,将程序或脚本
改为之前创建的netstat.bat
批处理文件——>点击确定
- 注意:这里还需要设置以最高权限运行。点击
常规
——>选中以最高权限运行
,如下图所示:
- 双击
- Step3:在任务中还可以设置其他的东西
- 在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务” ,那么使用电池电源时就会停止任务。为了我们统计足够多的数据,这个选项取消掉。
- 在 设置 中还可以选择任务运行时间,我们设置为3天。
- 在"条件"选项卡中可以看到,电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务” ,那么使用电池电源时就会停止任务。为了我们统计足够多的数据,这个选项取消掉。
- Step4:一段时间之后,我们就可以在 netstat1223.txt 文件中看到我们电脑的联网记录了。
- Step5:在Excel表格中分析记录的数据
- 一段时间之后,我们停止执行这个任务,来分析一下数据。
- 创建新表格,点击数据,导入数据,选择直接打开数据文件,并在选择数据源中选择文本文件。
- 按照步骤,选择其他编码、分隔符号,并如下图勾选。
- 选择B列,点击上方菜单栏中的插入,选择数据透视图。
- 在新工作表中,点击数据透视图,在跳出的右侧边栏的字段列表中,筛选出我们需要的字段进行分析,并将字段拖放到下方的轴和值中。
- 以下是我得到的图表
- 分析:今天(3月29日周三)我用的最多的APP是SearchAPP.exe,即Cortana运行的搜索栏的进程,用于搜索文件、启动应用程序、关闭计算机和做其他事情,是Windows的搜索功能。其次使用最多的是msedge.exe,这是是Microsoft Edge 浏览器的一部分。剩下使用较多的是WPS,用于生成数据透视图和进行一些其他的工作。此外,此图表还记录了我的微信使用活动和logseq(即我的笔记制作软件)的使用活动。
- Step1:在C盘根目录下先建立一个 netstatlog.dat 文件。
-
任务二:系统运行监控——使用sysmon工具监控系统
- sysmon是微软Sysinternals套件中的一个工具,它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
- 可选择的事件过滤器有 ProcessCreate 进程创建、FileCreateTime 进程创建时间、NetworkConnect网络链接、ProcessTermina 进程结束、DriverLoad 驱动加载、ImageLoad 镜像加载、CreateRemoteTh 远程线程创建、RawAccessRead 驱动器读取、ProcessAccess进程访问、FileCreate 文件创建、RegistryEvent 注册表事件、FileCreateStre 文件流创建等。
-
下载并解压SysinternalsSuite.zip,在SysinternalsSuite目录中创建配置文件sysmon20181314.xml,该配置文件中可以加入事件过滤器,具体的过滤事件选项如下
-
进程创建ProcessCreate的过滤事件选项有:
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, Ta
-
- Step1:
-
下载并解压
SysinternalsSuite.zip
,在SysinternalsSuite
目录中创建配置文件sysmon20201223.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> ``` **参数解释:**
onmatch
选项可以设置两种exclude
:相当于白名单,不用记录。include
相当于黑名单。
sysmon
工具中可以选择一些事件过滤器,包括:ProcessCreate
:进程创建。FileCreatTime
:进程创建时间。这里排除(不记录)浏览器进程的创建时间。NetworkConnect
:网络连接。过滤掉(不记录)浏览器的网络连接,源IP地址为127.0.0.1
、源端口为137的连接服务。包含(记录)目的端口为80(http)
和443(https)
的网络连接。137端口
:提供局域网中ID或IP查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1
:环回地址,表示本机。
CreateRemote
:远程线程创建。记录的线程如下:explorer.exe
:Windows程序管理器或者文件资源管理器svchost.exe
:一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。winlogon.exe
:Windows NT
用户登陆程序,用于管理用户登录和退出。powershell.exe
:专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
-
- Step2:启动sysmon(要以管理员的身份运行命令行)
- 点开开始菜单,再点击所有应用(程序),在Windows系统,找到并右键单击,菜单中选择“以管理员身份运行”。
- 输入命令
Sysmon64.exe -i sysmon20201223.xml
,安装sysmon,结果如下:
- Step3:查看事件查看器中的日志记录
Win+R
输入eventvwr.msc
打开事件查看器依次点击 应用程序和服务日志/Microsoft/Windows/Sysmon/Operational- 这就是Sysmon按照我们的配置文件要求记录的日志,包括:事件、事件ID、任务类别、详细信息等,双击一条记录,就可以看到了。
- 运行我们在实验二中生成的后门程序
20201223_door.exe
,并启动回连到kali虚拟机中。我们可以在事件查看器中找到此条日志 - 我在msf监听环境下,输入了
shell
指令,获得了Windows的cmd
:
-
任务三:恶意软件分析
-
(一)静态分析
-
1.恶意代码扫描——使用 VirusTotal 分析恶意软件
- Step1:把生成的文件放在VirusTotal里进行分析
- Step2:可以查看文件的详细属性
- 可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。
- 还可以看到此软件的头部、各个节的相关信息,以及引入的动态链接库
- Step1:把生成的文件放在VirusTotal里进行分析
-
2.文件格式识别——使用PEiD分析
- 工具下载链接
- PEiD(PE Identifier)是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳,其数量已超过470 种PE 文档 的加壳类型和签名。
- 扫描模式
- 正常扫描模式:可在PE文档的入口点扫描所有记录的签名;
- 深度扫描模式:可深入扫描所有记录的签名,这种模式要比上一种的扫描范围更广、更深入;
- 核心扫描模式:可完整地扫描整个PE文档,建议将此模式作为最后的选择。PEiD内置有差错控制的技术,所以一般能确保扫描结果的准确性。前两种扫描模式几乎在瞬间就可得到结果,最后一种有点慢,原因显而易见。
- 查看实验二中生成的后门文件
- 这是未加壳的文件
- 发现显示:
yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h)*
- 上网查了资料以后,总结如下:
- 用PEiD检测壳为:
yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h)*
- 有两种情况:
- 1)其他壳伪装成yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h)
- 2)没有加壳,作者加了花指令,伪装成yoda's Protector v1.02 (.dll,.ocx) -> Ashkbiz Danehkar (h)
- 用PEiD检测壳为:
- 此处应该是没有加壳的,也就是第二种情况。
- 将原来的后门文件用
upx 20201223_backdoor.exe -o 20201223door_upx.exe
进行压缩,随后拖到桌面上检测:- 这是加了压缩壳的文件
-
3.使用PE Explorer分析恶意软件
- PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。
- Step1:下载安装PE Explorer
- Step2:打开我们上次实验的程序
- 点击view ——>Headers Info,可以看到头部信息:
- Step3:view ——>Data Directories
,
查看程序静态数据目录 - Step4: view ——>Section Headers
,
查看节头信息 - Step5:view——Import,查看看文件引用的dll库
- 可见,在上次生成的后门程序中我们引用了 kernel32.dll 文件
- kernel32.dll是Windows 9x/Me中非常重要的32位动态链接库文件,属于内核级文件。它控制着系统的内存管理、数据的输入输出操作和中断处理,当Windows启动时,kernel32.dll就驻留在内存中特定的写保护区域,使别的程序无法占用这个内存区域。
-
(二)动态分析
-
1.快照对比——使用systracer工具
- Step1:下载安装systracer工具
- Step2:抓捕快照
- 点击右侧的
take snapshot
,拍摄快照。点击start开始,不用点击stop,当拍摄完毕会自动停止。 - 实验中我抓捕了五个快照如下:
Snapshot #1
:未移植后门程序Snapshot #2
:运行后门程序并在kali中实现回连Snapshot #3
:在kali中使用dir
指令Snapshot #4
:在kali中使用screenshot
指令Snapshot #5
:在kali中执行getuid
指令- 对比快照1和快照2
- 选中要对比的两个快照,点击右下角
compare
,在view mode
中选择only differences
方便查看。- 点击
View Differences Lists
——>选中Only differences
——>选中Opened Ports
- 点击
application
,在opened ports
中能看到后门 20201223_backdoor.exe ,连接的本地地址和目标地址以及端口号 - 在
opened handles
中,增加了一些文件,也删除了一些文件,以及键值的变化 - 在
loaded dll
中,查看启动后门程序后增加和删除的dll文件 - 在
running processes
中,点击 20201223_backdoor.exe 显示为SysTracer no registered
- 点击
- 对比快照2和快照3
- 对根键中的内容进行修改,对注册表中的配置信息进行了修改
- 在opened ports中看到主机端口与虚拟机ip及相关端口间的交互
- 点击
Register
,可以看到快照3对根键中的内容进行了修改,对注册表中的配置信息进行了修改
- 对比快照3和快照4
- 我们发现多出来了svchost程序
svchost.exe
是微软Windows操作系统中的系统文件,微软官方对它的解释是:svchost.exe 是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。
- 对比快照4和快照5
- 文件发生变化
- 文件发生变化
- 点击右侧的
-
2.使用wireshark抓包分析恶意软件
- 在kali中输入
dir
,发现wireshark又捕获到了许多PSH+ACK包,可以判断有数据在传输
- 在kali中输入
-
-
三、实验后回答问题
-
3.1 如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 使用schtasks指令监控系统
- 建立一个脚本文件
- 添加任务计划程序,隔一段时间就记录下想要知道的内容
- 一段时间后进行分析
- 使用sysmon工具监控系统
- 配置好自己的xml文件
- 设置好黑名单和白名单
- 一段时间后查看记录日志
- 使用PE Explorer分析恶意软件
- 查看哪些文件修改了我们主机的那些信息
- 使用systracer工具
- 抓捕一些快照
- 对比分析
-
3.2 如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 1.可以进行静态分析:
- 使用virustotal
- 查看恶意软件的一些信息
- 使用使用PEiD分析
- 查看文件是否加壳
- 进行脱壳
- 使用PE Explorer分析恶意软件
- 使用virustotal
- 2.也可以进行动态分析:
- 使用systracer工具
- 抓捕一些快照
- 查看系统中注册表信息、文件、应用的改变
- 使用Wireshark工具
- 进行抓包分析
- 查看可疑通信
- 使用ProcessExplorer工具
- 动态监视应用程序
- 查看哪些程序使用和改变了系统文件
- 使用systracer工具
-
四、实验总结与体会
- 本次实验的重点是借用软件工具,通过工具来具体分析恶意代码,通过对后门文件的多方面分析检测,查看是否主机中有可疑对象和可疑行为,这对平时主机的使用和保护都有着重大的实际作用。在本次实验中,我们通过静态分析和动态分析,通过恶意代码扫描、文件格式识别、字符串提取、二进制结构分析、反汇编反编译、快照比对、动态行为监控、动态跟踪测试等方法多方面了解了恶意代码的检测和监控,但在Wireshark软件的使用过程中,发现不管是用WLAN还是VMnet8模式捕捉数据包,都无法正确捕捉到内容,使用了同学和学长学姐的方法后仍不成功,这个问题将会继续尝试。