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套件中的一个工具。可以监控几乎所有的重要操作。
- 基本操作可以描述为三步:
- 确定要监控的目标
- 写好配置文件
- 启动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 #1
和Snapshot #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
- 解决方案:原因是权限不够,用管理员身份运行就可以了
实验心得
- 此次实验可以让我了解平时不使用电脑时,电脑都进行了哪些行为,通过联网记录,注册表,文件的变化,可以分析出电脑的异常行为,从而推测自己的电脑是不是背地里被人进行攻击和控制。
- 本次实验也让我对自己的电脑也有了更进一步的认识,我们应该增强自己的安全意识,要定期检查电脑,不要过度依赖于杀软。