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事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
- 2.2.1 安装sysmon
[sysmon安装包](https://www.cnblogs.com/GanNy/p/16105799.html)
sysmon配置文件
①确定监控目标
②进程创建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, 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 网卡设置
五、实验感悟
本次实验操作主要是对恶意代码进行检测,虽然网络防守实验不如上次网络攻击实验有趣,但网络防守端更考验技术水平,通过本次实验,我们解除了上次实验的忧虑,学习了怎么查看系统的状态以及分析恶意代码的存在。植入后门或许并不难,所以对于系统的状态以及后门的分析就尤为重要了,比起后门攻击,分析虽然略显枯燥,但是分析的确很有必要。