《网络对抗》Exp4 恶意代码分析
1 回答问题
(1)如果在工作中怀疑一台主机上有恶意代码,但只是猜想,所有想监控下系统一天天的到底在干些什么。请设计下你想监控的操作有哪些,用什么方法来监控。
- 如何检测(windows下)
1.可以查看网络连接,看是否有不正常的连接
2.查看资源监视器,看是否有可疑进程
3.查看事件查看器是否有一场情况
4.前三项可以用任务计划+systeminternal组件自动每分钟写入文件,然后分析IP和程序
5.使用像systracer这样的可以前后对比的工具查看
- 设计的监控操作
1.网络连接ip分析
2.注册表修改
3.事件查看器中的警告
4.程序文件变化
(2)如果已经确定是某个程序或进程有问题,你有什么工具可以进一步得到它的哪些信息。
1.strings 查看进程是否有一些可以字符串
2.peid 查看是否加壳
3.查看反汇编 objdump
4.动态调试 IDApro和Ollydbg
2 实验总结与体会
恰好这学期也选修恶意代码,所以已经下载了很多工具可以直接用的上。我大概是按照实验指导中,静态方法一个个的试,但发现有些方法的效果重叠了,比如二进制结构体分析和反汇编、反编译,就是明白代码流程,虽然工具很多,但有些具体分析需要花更多的时间,以后可以再深入。动态方法也有些就跟静态的重合了,不知是功能本身重叠还是软件已经实现了多个功能。我的动态部分真是做的不行,首先做动态分析得先看懂汇编代码,这个没有系统得学,看懂部分还是云里雾里的,再就是我的环境崩了,一个是sandboxie plus不能运行出错,实验中kali虚拟机也崩,卡在那里一动不动,主机系统重启一直显示正在重启页面,感觉好像把电脑弄崩溃了。关于实验就是让我们了解得掌握在一个系统中对恶意代码检测,如何利用一些工具分析,这个思路是最重要的。
3 实践过程记录
3.1 系统监控
3.1.1 使用netstat
netstat 是Windows自带的一个监控 TCP/IP 网络非常有用的命令, 可以查看路由, 实际的网络状态, 以及每个网络接口的状态信息, 可以让用户知道目前有哪些网路连接正在运行。
- 直接运行
- 使用schtask(前面实验2使用过,就是设置任务计划)
schtasks /create /TN netstat /sc MINUTE /TR "cmd /c netstat -bn > D:\netstatlog.txt" /st 23:11
设置一个名为netstat的任务计划,每分钟从命令行中运行netstat,并将结果存入D盘下的netstatlog.txt,设置任务开始时间23:11
失败
改进后(如何改进,见遇到的问题4.1)
schtasks /create /TN netstat /sc MINUTE /TR "cmd /c netstat -bn >> D:\netstatlog.txt" /st 23:11
设置成功,且文件内容正常
多次手动运行,导入Excel中进行分析
出现次数最多的是120.253.253.102:443
看是移动的IP,应该是连着手机热点的缘故
看进程访问
访问最多的是firefox,应该是正在用火狐浏览器的缘故吧
3.1.2 使用sysmon监视系统
sysmon是由Windows Sysinternals出品的一款Sysinternals系列中的工具。它以系统服务和设备驱动程序的方法安装在系统上,并保持常驻性。sysmon用来监视和记录系统活动,并记录到windows事件日志,可以提供有关进程创建,网络链接和文件创建时间更改的详细信息。
-
先设置sysmon配置文件(直接参考实验指导中给的和学长的博客)
-
启动sysmon
## 先进入软件的目录 Sysmon.exe -i sysmoncfx.xml
-
查看日志:开始-搜索 事件查看器>先点中 显示/隐藏控制台数 (见下图圈出来的部分)>事件查看器本地>应用程序和服务日志>Microsoft>Windows>Sysmon>Operational
- 看一下记录(比如第一条)
这应该是腾讯管家下的某个软件
目的IP是:112.65.212.162
显示的是上海的IP
换一个比较全的
显示IP为联通的跟淘宝有关,这可能是把手机的也监听了
3.2 恶意代码分析
通过监控找到可疑程序后,就需要对找到的程序进行分析
分析过程中,恶意代码分析环境应该完全隔离,防止对原系统造成损坏
看见实验指导中有sandboxix plus,然后下载试试
将程序在sandboxie中启动,然后程序修改的所有数据都会存在一个虚拟目录中,不会修改系统中的数据
恶意代码部分:
## 使用veil生成
## 将生成的exe移到Windows下
## 在kali里运行msfconsole反弹连接
3.2恶意代码分析-静态分析
3.2.1 恶意代码扫描
可以用在线网站做扫描
3.2.2 文件格式识别-Peid
显示Unknown,这是识别不出壳或者没加壳程序,且能看到连接器版本,子系统是GUI
3.2.3 字符串提取
- kali下运行strings
-
windows下运行systeminternals里的string
## 进入systeminternals目录 strings.exe [可执行文件]
在两个系统上都差不多,然后就需要分析strings命令的结果了
3.2.4 二进制结构分析
- kali下直接运行objdump
看来只用objdump是不行的,是需要结合其他工具一起看的
结构就是如此,好像我在找用grep找到的函数时发现了两个包含main的函数
- Windows运行(objdump也是Windows的built-in)
3.2.5 反汇编(Windows下使用)-IDA
将exp4_met.exe导入IDA出错,静态分析应该是以二进制方式导入,但报错,其他还有以exe和MZDOZ exe导入,这样应该是动态的类似
3.3恶意代码分析-动态分析
3.3.1 快照比对-systracer
很多感叹号,而且没内容,说的是systracer没注册(补充,这也可能是没有权限的问题)
3.3.2 在使用systracer的同时,使用wireshark抓包
在虚拟机崩掉时,连接可能断掉了,之后再尝试吧
强制重启后
截图到了wireshark
前面有tcp的三次握手过程,后面发了很多包,应该就是msf中执行其他功能所需要的文件
看第三张图后面,然后虚拟机又崩溃,连接断了
多次重启后,虚拟机无法重启,然后恢复快照,重新装veil,然后一systracer中获取快照,虚拟机又不动了,想到前面是wireshark抓包然后连接,然后获取快照而虚拟机出问题,懂了是systracer的缘故
3.3.3 动态行为监控-Process Explorer(system internal中套件)
- 开始运行
NAVID web helper下有个像控制台的程序,比较奇怪,而且没运行什么
- 连接+分析
可执行权限中只有一个默认的SeChangeNotifyPrivilege开启,
看到就是一个提权的函数,很可能是后门程序运行中的,用来然过一些限制的
这之间的Cycles一直在变以及后面的图,这应该是一直在交互数据
这是集成了前面用到的strings命令,可以显示内存以及文件中的字符串
这个后面程序有三个进程,一个是本身,另两个是ntdll.dll文件相关
看着dll文件的描述,好像是用来独占内存的某一块,这是防止被杀的手段吧
4 遇到的问题
4.1 使用任务计划设置netstat需要设置权限
以管理员身份运行cmd,并在schtasks添加一个选项/rl highest(运行级别:以最高权限运行)
另外命令中是>输出重定向写入文件,但是>代表是新建文件,需要改成>>追加到文件中
4.2 导入excel后,程序名在另一行(但看IP是不影响的,但稍微有些强迫症吧)
利用好筛选功能,先删除空白行以及多余的标题行,然后最后一列添加字符串合并函数CONCATENATE(),将下一行的前三个字符串以及再下一行的第一个字符串合并,然后把得到的结果复制到新的一列,只保留值,然后删除前面的公式列,这样就把内容整体统一了。
4.3 sandboxie plus无法正常运行
一次运行后,突然就如此,百度搜索找到的都是服务相应服务Sbiesvc没启动,检查后没问题,正常无法卸载,覆盖安装后仍是原样