20145326蔡馨熠《网络对抗》——恶意代码分析
1.实验后回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所以想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。。
-
需要监控什么?
- 系统中各种程序、文件的行为。
- 还需要注意是否会出现权限更改的行为。
- 注册表。
- 是否有可疑进程。
- 如果有网络连接的情况,需要注意这个过程中的IP地址与端口。
-
用什么来监控?
- 最先想到的肯定是使用wireshark抓包了,再进行进一步分析。
- Sysinternals是一个工具集,其中有许多实用的工具,功能非常丰富强大,比如我们可以用TCPview来查看系统中的TCP连接的进程,还能用sysmon来监视和记录系统活动,并记录到windows的事件日志里。
- 可以用PE explorer查看PE文件编译的一些基本信息,导入导出表等,还可以看到该文件的编译时间、链接器等基本信息。
- Dependency Walker是一款专门分析函数依赖的工具软件,我们可以借助它来分析是否有关于注册表的异常行为等。
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
- 先用像“VirScan”这样的扫描工具来扫描一个大概情况,然后再借助相关工具分析可疑的程序。
- 使用TCPview查看系统中的使用TCP连接的进程,看是否有异常,结合wireshark抓包分析。
- 使用Dependency Walker来分析是否有关于注册表的异常行为等。
- 使用systracer进行快照对比。
- 使用PEiD查看可疑软件是否加壳。
- 使用PE explorer或PE Browser professional来反汇编可疑的软件,进行分析。也可以使用WinHex来进行字段分析,看是否有可疑行为。
2.实验总结与体会
-
这段时间真的是学到不少东西,从最开始做一个基本的后门程序,到逐步实现免杀,再到现在的恶意代码分析。真的感觉很爽!很有成就感!老师最开始主要讲的是如何攻击靶机,男孩子当然比较感兴趣,哈哈哈,现在又教我们如何进行恶意代码的分析,我最开始觉得没意思,觉得很无聊,但是仔细一想,还是很有必要掌握这块知识的。你们想想,我们不能保证不受到来自外界的攻击吧,而且在日常生活中,我们都是以“防”为主,不会说是主动去“攻击”别人吧,几乎不会,概率太小了。所以要学会基本的恶意代码分析,保护自己主机的安全。而且,我们换个角度看,你都知道一般的防范措施了,那某一天你如果要攻击别人,是不是更得心应手,成功率更高啊。哈哈哈!!恶意代码的免杀和恶意代码的分析可以说是相辅相成的。
-
在大多数情况下进行恶意代码分析的时候,我们只有恶意代码的可执行文件本身,而这些文件本身不具有可读性。为了理解这些文件背后的含义,我们需要使用各种工具和分析的技巧。
-
恶意代码分析有两类基本方法:
- 静态分析:是一种在没有运行恶意代码时对其进行分析的技术,可以结合相关工具直接的观察。
- 动态分析:相比较静态分析而言,需要运行恶意代码,通过其产生的动态行为与数据进行分析,从而确定其具体行为,也需要结合相关工具。
3.实践过程记录
恶意代码的静态分析
VirScan
- 我先用VirScan扫描一下我上次实验用到的后门程序。
- 点一下“文件行为分析”,我们可以详细地察看这个程序是否有敏感行为,根据扫描结果得知,该文件有网络连接的行为,自行删除注册表键值的行为。
- 利用相关软件,协助分析。《计算机病毒》课程的庞岩梅老师之前给我们讲过相关知识,也介绍过一些软件,这里可以活学活用。毕竟学科之间是有联系的啊~
PE explorer
- 首先是PE explorer这款软件。我们可以用它查看PE文件编译的一些基本信息,导入导出表等,还可以看到该文件的编译时间、链接器等基本信息。在“导入表”中,可以查看该文件调用的dll文件库。
- WSOCK32.dll和WS2_32.dll,这两个dll文件,是用来创建套接字的,如果这个程序没有网络连接的功能,那么在其动态链接库中就不可能有这两个dll文件。ADVAPI32.dll是一个高级API应用程序接口服务库的一部分,包含的函数与注册表的操控以及事件日志都有关。另外2个dll文件不做过多介绍,属于一般程序在win下都会调用的dll库。
PEiD
- PEiD是一款著名的查壳工具,其功能强大,几乎可以侦测出所有的壳。 一般正常的软件是不会加壳的吧,而恶意代码为了伪装自己,其中一种常用方式就是加壳,通过加壳来达到不被杀软察觉的目的。
- 显示的是“什么都没找到 [调试] ”,我晕,什么情况。点“Set Info”看看。后来发现其实不是这样的,正常的编译肯定会显示编译器的,既然没找到,说明不能识别该编译器,一点进去发现,这个恶意代码加了UPX压缩壳!
Dependency Walker
- Dependency Walker是一款专门分析函数依赖的工具软件,可以查看PE模块的导入模块,还可以查看PE模块的导入和导出函数。我们从中可以发现,该可执行文件可以对注册表的确进行了删除操作!! 并且确实有网络连接的功能!!!
PE Browser Professional
- PE Browser Professional可以对恶意代码进行反汇编。使我们更直观的观察恶意代码,我们可以结合Debug日志、各个寄存器的值、进程信息来深入研究。
恶意代码的动态分析
- 相比较静态分析而言,需要运行恶意代码,通过其产生的动态行为与数据进行分析,从而确定其具体行为,也需要结合相关工具。
SysTracer
- Sysinternals是一个工具集,其中有许多实用的工具,功能非常丰富强大。
-
操作步骤:
- 准备一台kali攻击机,一台Win7靶机,SysTracer2.10分析软件;
- 打开攻击机进入msfconsle,开始监听;win7下对注册表、文件、应用情况进行快照,保存为Snapshot #1;
- win7下打开木马程序,回连kali,win7下再次快照,保存为Snapshot #2;
-
- kali通过msf发送文件给win7靶机,win7下再次快照,保存为Snapshot #3;
-
- kali中对win7靶机进行屏幕截图(也可以是其他操作),win7下再次快照,保存为Snapshot #4。
-
- 我们可以通过“compare”操作来比较每次快照文件的区别。
- 我们先对比一下Snapshot #1和Snapshot #2.可以看到注册表里面出现了新的表项,开放了新的端口。
- 再对比一下Snapshot #2和Snapshot #3.可以发现注册表有了增减,开放端口也有了变动,恶意代码的踪迹越来越明显了。
- 最后对比一下Snapshot #3和Snapshot #4.可以发现启动回连时注册表发生变化了,截屏时注册表也发生了一些变化。
使用WireShark抓包分析
- 我对回连过程进行了WireShark抓包,可以看到靶机与攻击机三次握手建立连接,含有大量的TCP连接数据包。
- 抓包结果中绝大部分数据包是主机与靶机之间的TCP通信包,还有一些是DNS包和ARP包。
- 还可以看到传输截屏数据的数据包,就是这些长度较大的PUSH ACK包。厉害吧~~~!
TCPview
- 使用TCPview可以查看系统中的TCP连接的进程。
安装并使用Sysmon
-
首先有个问题,那就是安装sysmon工具的时候需要管理员权限,所以在安装前,我们需要使用管理员权限来打开cmd.exe,打开方法就是右键cmd程序在菜单中选择管理员权限。安装的时候不能盲目参考老师给的教程,比如版本号应该改为3.10!而不是3.20!!!
-
快速安装
- 配置xml文件,并使用sysmon -c查看配置;
- 然后我们可以在“Applications and Services Logs/Microsoft/Windows/Sysmon/Operational”下找到事件日志,从而进行分析。
设置任务计划
- 首先我们进入计算机-管理-任务计划,创建一个任务计划,命名为netstat5326。触发器我们选择每天每隔5分钟执行一次。
- 我在F盘下创建了一个文件夹:5326cxy,在这个文件夹下写一个脚本。也就是说在5326cxy文件夹下创建一个netstat5326.txt。随后将后缀改为“.bat”。
- 看任务计划中的操作选项栏,启动程序设为我们的netstat5326.bat,参数为>>f:5326cxy etstat5326.txt,这样我们的网络记录信息netstat5326.txt就会保存在C盘5326cxy文件夹下。
- 这个时候就创建完成了,设置管理员权限并运行这个任务。