2020-2021-2 网络对抗技术 20181235 Exp4 恶意代码分析
一、实践目标
-
是监控你自己系统的运行状态,看有没有可疑的程序在运行。
-
是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件;分析工具尽量使用原生指令或sysinternals,systracer套件。
-
假定将来工作中你觉得自己的主机有问题,就可以用实验中的这个思路,先整个系统监控看能不能找到可疑对象,再对可疑对象进行进一步分析,好确认其具体的行为与性质。
工具下载链接:https://gitee.com/wildlinux/NetSec/attach_files
二、实践内容(5分)
1、系统运行监控(2分)
(1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。(1分)
(1)使用schtasks指令监控系统(1分)
①命令创建计划任务netstat1235
schtasks /create /TN netstat1235 /sc MINUTE /MO 5 /TR "cmd /c netstat -bn c:
etstatlog.txt"
-
TN
是TaskName的缩写,我们创建的计划任务名是netstat1235; -
sc
表示计时方式,我们以分钟计时填MINUTE; -
TR=Task Run,要运行的指令是 netstat -bn;
- b表示显示可执行文件名;
- n表示以数字来显示IP和端口;
-
>
表示输出重定向,将输出存放在c: etstatlog.txt文件中
②在C盘中创建一个netstat1235.bat
脚本文件,写入以下内容(可以在桌面先创建txt文档然后输入下面的内容,然后重命名为.bat)
date /t >c:
etstat1235.txt
time /t >c:
etstat1235.txt
netstat -bn >c:
etstat1235.txt
③打开任务计划程序,可以看到新创建的这个任务
Win+R
输入compmgmt.msc
打开“计算机管理”
④ 双击这个任务,点击操作并编辑,将“程序或脚本”改为我们创建的netstat1235.bat批处理文件,确定即可。
⑤5、 任务还有其他属性,如在"条件"选项卡,可以更改相关设置。如电源选项中默认操作为“只有在计算机使用交流电源时才启动此任务”,那么使用电池电源时就会停止任务。这点需要格外注意,如果没有修改默认操作,任务无论如何都无法执行可能只是因为拔掉了电源。为了我们统计足够多的数据,最好把这个取消掉。(选中使用最高权限运行)
⑥执行此脚本一定时间,就可以在netstat5205.txt文件中查看到本机在该时间段内的联网记录:
⑦当记录的数据足够丰富时,停止任务,将所得数据在wps中进行分析,此过程要一直保持开机联网状态才能持续监控
由统计数据可知,联网最多的程序是[pycharm64.exe],排名第二的是[chrome.exe],排名第三的是[vmware-hostd.exe],我们还能够找到微信、NVIDIA、还有虚拟机这些连网的进程。我们还是要注意这些,时不时的关注一下这些自启动程序,会很大程度避免入侵。
(2)安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。(1分)
①下载老师给的安装包并解压sysinternals
②右键Sysmon64.exe,在属性
详细信息查看产品版本
③确定要监控的目标:在这里我选择进程创建
、进程创建时间
、网络连接
、远程线程创建
④写配置文件
⑤相关事件过滤器选项在使用轻量级工具Sysmon监视你的系统可看到,进程创建ProcessCreate
,进程创建时间FileCreateTime
,网络连接NetworkConnect
,远程线程创建CreateRemoteThread
⑥开始写与自己想要监控的事件相对应的配置文件,命名为sysmon20181235.xml
,内容如下(注意版本号):
<Sysmon schemaversion="13.02">
<!-- Capture all hashes -->
<HashAlgorithms>*</HashAlgorithms>
<EventFiltering>
<!-- Log all drivers except if the signature -->
<!-- contains Microsoft or Windows -->
<DriverLoad onmatch="exclude">
<Signature condition="contains">Microsoft</Signature>
<Signature condition="contains">Windows</Signature>
</DriverLoad>
<ProcessTerminate onmatch="include" >
<Image condition="end with">MsMpEng.exe</Image>
<Image condition="end with">shell.exe</Image>
</ProcessTerminate>
<!-- Log network connection if the destination port equal 443 -->
<!-- or 80, and process isn't InternetExplorer -->
<!--NetworkConnect onmatch="include">
<DestinationPort>443</DestinationPort>
<DestinationPort>80</DestinationPort >
</NetworkConnect -->
<FileCreateTime onmatch="exclude" >
<Image condition="end with">msedge.exe</Image>
</FileCreateTime>
<ImageLoad onmatch="include">
<Signed condition="is">false</Signed>
</ImageLoad>
<!-- Log access rights for lsass.exe or winlogon.exe is not PROCESS_QUERY_INFORMATION -->
<ProcessAccess onmatch="exclude">
<GrantedAccess condition="is">0x1400</GrantedAccess>
</ProcessAccess>
<ProcessAccess onmatch="include">
<TargetImage condition="end with">lsass.exe</TargetImage>
<TargetImage condition="end with">winlogon.exe</TargetImage>
<TargetImage condition="end with">shell.exe</TargetImage>
</ProcessAccess>
<NetworkConnect onmatch="exclude">
<Image condition="end with">msedge.exe</Image>
<SourcePort condition="is">137</SourcePort>
<SourcePortName condition="is">80</SourcePortName>
<DestinationPortName condition="is">443</DestinationPortName>
</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>
<TargetImage condition="end with">shell.exe</TargetImage>
</CreateRemoteThread>
</EventFiltering>
</Sysmon>
exclude
相当于白名单,不用记录。include
相当于黑名单Image condition
根据自己使用的浏览器更改,如谷歌浏览器是chrome.exe
,IE浏览器是iexplore.exe
- 网络连接过滤掉了浏览器的网络连接、源IP为
127.0.0.1
的网络连接和目的端口为137
的连接服务,且查看目的端口为80(http)
和443(https)
的网络连接。(137
端口的主要作用是在局域网中提供计算机的名字或IP地址查询服务,一般安装了NetBIOS协议后,该端口会自动处于开放状态。127.0.0.1
表示本机IP。)- 远程线程创建记录了目标为
explorer.exe
、svchost.exe
、winlogon.exe
和powershell.exe
的远程线程。explorer.exe
是Windows程序管理器或者文件资源管理器svchost.exe
是一个属于微软Windows操作系统的系统程序,是从动态链接库 (DLL) 中运行的服务的通用主机进程名称。winlogon.exe
是Windows NT 用户登陆程序,用于管理用户登录和退出。powershell.exe
是专为系统管理员设计的新 Windows 命令行外壳程序。该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
③在sysmon所在目录下创建配置文件sysmon1235.xml可以先创建txt文件,之后再转换格式)
④打开cmd,进入到sysmon所在的文件夹中,输入sysmon.exe -i sysmon1235.xml
sysmon -accepteula -i sysmon1235.xml
⑤右键Windows标志,找到事件查看器,在应用程序和服务日志-Microsoft
-Windows
-Sysmon
-Operational
可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等
2、恶意软件分析(3分)
(1)、静态分析
- 文件扫描(VirusTotal、VirusScan工具等)
- 文件格式识别(peid、file、FileAnalyzer工具等)
- 字符串提取(Strings工具等)
- 反汇编(GDB、IDAPro、VC工具等)
- 反编译(REC、DCC、JAD工具等)
- 逻辑结构分析(Ollydbg、IDAPro工具等)
- 加壳脱壳(UPX、VMUnPacker工具等)
① 使用VirusTotal分析恶意软件
使用VirusTotal检查恶意代码,可以查看MD5、SHA-1、文件类型、文件大小、加壳方式等相关信息
② PEiD检查恶意代码
使用PEiD检查恶意代码20181235.exe是否加壳
使用PEiD检查恶意代码20181235_upx.exe是否加壳
可以看出后面这个我们是加了壳的。
③ 使用PE Explorer分析恶意软件
PE Explorer是一个强大的程序资源编辑工具,可以直接查看、修改软件的资源,包括菜单、对话框、字符串表等;另外,还具备有 W32DASM 软件的反编译能力和 PEditor 软件的PE文件头编辑功能,该软件支持插件,你可以通过不断的增加插件加强该软件的功能,还有很多实用的功能。
主要看文件引用的dll库,可以通过视图->引入进行查看
-
KERNEL32.dll:控制着系统的内存管理、数据的输入输出操作和中断处理。
-
msvcrt.dll:是微软编译软件的函数库。
-
libgcc_s_dw2-1.dll
(2)、动态分析
①使用systracer分析恶意软件
- 下载systracer,安装并进行捕包分析systracer
快照一:移植后门程序,保存为
Snapshot #1
快照二:在kali中执行dir
指令,保存为Snapshot #2
快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
快照四:执行不一样的后面程序保存为Snapshot #4
快照五:执行不一样的后面程序保存为Snapshot #5
可以看到新增的后门进程,而且可以详细看到其的目的IP和端口号、源IP和端口号以及连接的协议
增加了一些ddl后缀文件,也删除了一些ddl后缀文件:
②使用wireshark对流量进行抓包分析
可以看到Wireshark上捕获到大量的TCP传输,输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输):
③ProcessExplorer
可以详细查看该进程使用的CPU,虚拟内存空间、物理内存空间、I/O等
从这里我们可以看出他调用了许多dll文件
三、报告内容
1、实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 可以用任务管理器查看自启动项,在自启动项进行过滤查看。
- 可以利用wireshark对流量进行抓包分析,分析是否对一个ip发送大量的消息。
- 利用Windows计划任务netstat,定期查看并分析网络连接情况。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 利用Wireshark抓包,进行分析有没有异常的或可疑的连接,对大量连接进行具体分析。
- 还可以利用Systracer来拍摄快照,进行对比分析改变的注册表及文件信息。
- 使用systracer工具分析恶意软件,查看其对注册表和文件的修改
2、实验总结与体会
这次实验在看老师操作时感觉不是很难,但在实际操作和软件的安装时有许多问题,许多软件安装中出现问题,windows自带的杀毒软件还一直自动开启,还有自身原因,看不懂不是汉化软件的操作提升。在下软件时,还是尽量从官网去下载,许多软件安装网站可能将后门留在软件中。
3、实践过程记录
如果在软件使用中出现:
我们可以在http://www.dllzj.com/libgcc_s_dw2-1.dll/这个网站中找到我们缺失的DLL文件:
他下面他会讲如何使安装这个dll文件,还会给出这个软件常出现的位置: