一、实验内容:
1、系统运行监控
- 使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述一下分析结果。目标就是找出所有连网的程序,连了哪里,大约干了什么(不抓包的情况下只能猜),你觉得它这么干合适不。如果想进一步分析的,可以有针对性的抓包。
- 安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。
2、恶意软件分析
- 启动回连
- 安装到目标机
- 及其他任意操作时(如进程迁移或抓屏,重要是你感兴趣)。
- 读取、添加、删除了哪些注册表项
- 读取、添加、删除了哪些文件
- 连接了哪些外部IP,传输了什么数据(抓包分析)。
二、实验要求:
- 报告整体观感:有带链接的目录,各级标题层次分明,易于阅读
- 文字表述:报告文字内容非常全面,表述清晰准确
三、实验步骤:
一、系统运行监控:
1.使用schtasks指令监控系统(使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里。运行一段时间并分析该文件,综述分析结果)
- 使用 schtasks /create /TN netstat1328 /sc MINUTE /MO 1 /TR "cmd /c netstat -bn > c:\netstatlog.txt" 命令创建计划任务
netstat1328
-
TN
是TaskName的缩写,我们创建的计划任务名是netstat1328;sc
表示计时方式,我们以分钟计时填MINUTE;TR
=Task Run,要运行的指令是 netstatbn
,b
表示显示可执行文件名,n
表示以数字来显示IP和端口;>
表示输出重定向,将输出存放在c:\netstatlog.txt
文件中
-
在C盘中创建一个
netstat5318.bat
脚本文件,写入以下内容
date /t >> c:\netstat5318.txt
time /t >> c:\netstat5318.txt
netstat -bn >> c:\netstat5318.txt
-
打开任务计划程序,可以看到新创建的这个任务:如下图所示
- 更改这个任务的设置,如下图所示。
- 注意此时要更改一下最高权限。
- 过几分钟,然后去C盘下打开文件就有数据的捕捉了。
- 然后就根据网上的教程把txt文件导入到Excel表里。(这个部分不太重要直接上成果吧)
- 然后继续根据网上的教程,来继续统计不同软件使用的数据(见下表,根据从大到小的使用情况来排列,微信的使用最多。)
2.使用sysmon工具监控系统(安装配置sysinternals里的sysmon工具,设置合理的配置文件,监控自己主机的重点事可疑行为。)
-
sysmon是微软Sysinternals套件中的一个工具,使用sysmon工具前首先要配置文件。
-
可选择的事件过滤器有 ProcessCreate 进程创建、FileCreateTime 进程创建时间、NetworkConnect 网络链接、ProcessTermina 进程结束、DriverLoad 驱动加载、ImageLoad 镜像加载、CreateRemoteTh 远程线程创建、RawAccessRead 驱动器读取、ProcessAccess 进程访问、FileCreate 文件创建、RegistryEvent 注册表事件、FileCreateStre 文件流创建等。
-
我创建的配置文件
sysmon20165318.xml
内容如下:
<Sysmon schemaversion="4.12"> <!-- 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">firefox.exe</Image> </ProcessCreate><ProcessCreate onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>> <ParentImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>cmd.exe</ParentImage> </ProcessCreate> <FileCreateTime onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">exclude</span><span style="color: #800000;">"</span> > <Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>chrome.exe</Image> <Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>firefox.exe</Image> </FileCreateTime> <NetworkConnect onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">exclude</span><span style="color: #800000;">"</span>> <Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>chrome.exe</Image> <Image condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>firefox.exe</Image> <SourcePort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>><span style="color: #800080;">137</span></SourcePort> <SourceIp condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>><span style="color: #800080;">127.0</span>.<span style="color: #800080;">0.1</span></SourceIp> </NetworkConnect> <NetworkConnect onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>> <DestinationPort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>><span style="color: #800080;">80</span></DestinationPort> <DestinationPort condition=<span style="color: #800000;">"</span><span style="color: #800000;">is</span><span style="color: #800000;">"</span>><span style="color: #800080;">443</span></DestinationPort> </NetworkConnect> <CreateRemoteThread onmatch=<span style="color: #800000;">"</span><span style="color: #800000;">include</span><span style="color: #800000;">"</span>> <TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>explorer.exe</TargetImage> <TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>svchost.exe</TargetImage> <TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>firefox.exe</TargetImage> <TargetImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>winlogon.exe</TargetImage> <SourceImage condition=<span style="color: #800000;">"</span><span style="color: #800000;">end with</span><span style="color: #800000;">"</span>>powershell.exe</SourceImage> </CreateRemoteThread>
</EventFiltering>
</Sysmon>
- 安装sysmon:执行命令
sysmon.exe -i C:\20181328.xml
,成功安装结果如下:
注意:一定要打开管理员权限!打开方式“右键wingdows->点击windows powershwll(管理员)”
- 左下角右键Windows标志,找到
事件查看器
,在应用程序和服务日志
-Microsoft
-Windows
-Sysmon
-Operational
可以看到按照配置文件的要求记录的新事件,以及事件ID、任务类别、详细信息等等
- 然后就自己创建个任务来试探一下,看看抓不抓得到。(拿以前kali测试的时候做的那个后门监听一下,然后就真的抓到啦,测试成功,好用!)
二、恶意软件分析
- 静态分析(列举一些静态分析的方法)
- 文件扫描(VirusTotal)
- 文件格式识别(peid、file、FileAnalyzer工具等)
- 字符串提取(Strings工具等)
- 反汇编(GDB、IDAPro、VC工具等)
- 反编译(REC、DCC、JAD工具等)
- 逻辑结构分析(Ollydbg、IDAPro工具等)
- 加壳脱壳(UPX、VMUnPacker工具等)
-
使用VirusTotal分析恶意软件
-
把生成的恶意代码放在VirusTotal进行分析,基本情况如下:
-
-
- 查看这个恶意代码的基本属性:
可以看出它的SHA-1、MD5摘要值、文件类型、文件大小,以及TRiD文件类型识别结果。(注:TRiD通过读取文件头,根据特征码进行文件类型匹配。
-
使用PE Explorer分析恶意软件
- PE Explorer是功能超强的可视化Delphi、C++、VB程序解析器,能快速对32位可执行程序进行反编译,并修改其中资源。该软件支持插件,你可以通过增加插件加强该软件的功能,原公司在该工具中捆绑了UPX的脱壳插件、扫描器和反汇编器,可以查看程序头部信息(默认界面)、程序静态数据目录、程序结头信息、对程序反汇编等等
- 这里主要看文件引用的dll库,可以通过视图-引入进行查看,如下图所示:
-
kernel32.dll:
属于内核级文件,它控制着系统的内存管理、数据的输入输出操作和中断处理,是必需的。通过分析生成的后门程序都会使用KERNEL32.dll
,所以如果有陌生软件使用KERNEL32.dll
则应当提高警惕。
- 动态分析(列举一些动态分析的方法)
- 快照比对(SysTracer、Filesnap、Regsnap工具等)
- 抓包分析(WireShark工具等)
- 行为监控(Filemon、Regmon、ProcessExplorer工具等)
- 沙盒(NormanSandbox、CWSandbox工具等)
- 动态跟踪调试(Ollydbg、IDAPro工具等)
-
使用systracer分析恶意软件
-
下载SysTracer工具
-
点击右侧的take snapshot,存储快照
-
快照一:未移植后门程序,保存为Snapshot #1
-
快照二:移植后门程序,保存为Snapshot #2
-
快照三:运行后门程序并在kali中实现回连,保存为Snapshot #3
-
快照四:在kali中使用
dir
指令,保存为Snapshot #4 -
快照五:在kali中使用
record_mic
指令,保存为Snapshot #5
-
-
- 对比快照一和快照二:增加了我的后门程序
20165318_backdoor.exe
-
- 对比快照二和快照三(后门程序运行前后)
点击application
,在opened ports
中我们能看到后门连接的相关信息
- 对比快照二和快照三(后门程序运行前后)
-
- 对比快照四和快照五(kali机输入record_mic)可以发现注册表有变化
- 使用wireshark来抓包分析恶意代码
-
- win10执行后门程序20181328backdoor
.exe
进行回连,输入过滤条件ip.addr == 192.168.43.227
,可以看到Wireshark上捕获到大量的TCP传输),输入其他命令,Kali会不断给Windows传一大堆ACK包,有时还伴有PSH+ACK包。(PSH就表示有 DATA数据传输)
- win10执行后门程序20181328backdoor
四、基础问题回答
如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 使用windows自带的schtasks指令设置一个计划任务,发现网络连接异常
- 使用Sysmon,编写配置文件,记录有关的系统日志
- 使用Process Explorer工具,监视进程执行情况。
- 使用Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 使用systracer工具分析恶意软件,查看其对注册表和文件的修改。
- 使用Wireshark进行抓包分析,监视其与主机进行的通信过程。
- 使用Process Explorer工具或Process Monitor工具,监视文件系统、注册表、进程/线程的活动。
五、实验感想
这次实验非常的复杂,而且大多数给我的反馈我也看不懂。我分析了一堆查找了资料之后,感觉生成病毒软件是在是一个非常复杂的活儿。我应该无法凭借一己之力制作出来,我觉得还是要多研究怎么防范。谢谢老师~