首页 > 技术文章 > 《网络对抗》Exp4 恶意代码分析

tanjie200 2021-04-12 00:46 原文

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没启动,检查后没问题,正常无法卸载,覆盖安装后仍是原样

推荐阅读