简介:

360隔离沙箱是360安全中心于2011年5月14日发布的安全产品,目前内置与360安全卫士的功能大全中。在360隔离沙箱内运行程序完全隔离不怕中毒。快速建立隔离环境,轻量便捷。自动识别与手动模式结合。

Windows Subsystem for Linux(简称WSL)是一个为在Windows 10上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。

沙箱逃逸是利用特殊的环境或者特殊技巧导致沙箱失去原本的效果,产生绕过沙箱隔离的问题。

360安全应急响应中心回复:” 因为64位非强力模式下rpc通信本来都是已知问题,而强力模式只支持win7,更新的版本因为patchguard不支持强力模式了,其实可以不算是漏洞”。文章重点在于分享思路,并不是针对360以及360安全产品。

0x1常见沙箱逃逸方法概述

对于沙箱逃逸常见方法分为:

0x2 360隔离沙箱逃逸方法

方法属于针对沙箱分析环境的特点对抗。360隔离沙箱对于底层接口进行监测和记录,并且使用了路径重定向技术。除此之外,在360隔离沙箱中通过界面是不允许执行CMD等系统关键程序。

在WINDOWS 10 系统中安装WSL,安装之后能够在CMD中使用bash命令,进入BASH SHELL。由于WSL提供了一个微软开发的Linux兼容内核接口(不包含Linux代码),来自Ubuntu的用户模式二进制文件在其上运行,并且之中的操作效果等同于WINDOWS下操作。由于360隔离沙箱不支持Linux兼容内核接口,所以导致隔离沙箱失效。

0x3 360隔离沙箱逃逸演练

对于逃逸的思路,肯定是有所了解了。下面对于逃逸进行演练,演练目标在隔离沙箱中启动CMD程序,并且使用其在真实的系统中写入文件。

1、 安装360安全卫士,添加插件360隔离沙箱。如图1所示。


图片1.png


2、 在隔离沙箱程序打开CMD,发现已经被禁止打开CMD程序,如图2所示。

图片2.png


3、 建立test.py文件,其中代码如下:

# import os

# os.system("cmd /c bash")

在隔离沙箱中运行test.py的文件,能够使用cmd打开bash shell。如图3所示。

图片3.png

如果将这个脚本打包为EXE文件再执行也是可以的。文章中就不进行演示了,使用pyinstaller模块,执行pyinstaller –F <文件名>.py。能够非常方便的进行打包成exe文件。


4、 执行 echo “topsec” > “test.txt”, 将一段字符串写入到文件,如图4所示。

图片4.png

0x4 360隔离沙箱逃逸总结

      这种逃逸方法源于沙箱分析环境的特点对抗,环境出现了变化沙箱并不能很好的支持。对于利用方法进行扩展可以执行 cmd /c 'bash –c sh code',通过这方法,能够执行sh 代码,更加深入的进行利用。沙箱逃逸的方法还有很多,文章描述的只是其中一种思路,思路可以扩展到其他不同的环境之中

沙箱总结

沙箱的实现方法是基于loader虚拟机的实现,所谓的虚拟机就是一个PE加载器,加载的PE被控制在一个可控的环境中。

360隔离沙箱使用的是驱动级防护,目前对于在360隔离沙箱中写文件会被重定向到当前硬盘的X:\360SANDBOX\SHADOW目录中。

360沙盒的注册表监控过滤分为对注册表的增删改查的操作。对注册表的操作主要通过hook相关过滤函数,hook的目的就是沙盒内的应用程序运行时对系统的注册表没有任何影响。

360文件系统的监控操作通过minifilter来过滤.360Box对minifilter文件系统的回调函数包括

Filter_irp_system_Control_pre  \\新加载卷的过滤安装

Filter_irp_system_controk_post

Filter_irp_system_create_pre \\ 对新建文件的预处理过滤

Filter_irp_system_create_post \\新建文件的后处理过滤

Irp_set_information_pre  \\对复制、删除、剪切、重命名文件的过滤

对power和create、open的irp的派遣函数()

   这个过滤是在DriverEntry函数中

 DriverObject->MajorFunction[16] = (PDRIVER_DISPATCH)filter_irp_power;\\过滤irp

 DriverObject->MajorFunction[0]= filter_irp_create_close;

 DriverObject->MajorFunction[2] = filter_irp_create_close;

 DriverObject->MajorFunction[14] =(PDRIVER_DISPATCH)filter_irp_query_security;   

进入360隔离沙箱后,360隔离沙箱将一些操作重定向到隔离沙箱内,比如说写文件、修改注册表等操作,这个只是沙箱一部分。

在隔离沙箱产品中进行对比发现SandBoxie并不存在此类问题。我在SandBoxie无法执行BASH命令,可能原因在于通过加载自身的驱动来保护底层数据,然而360隔离沙箱并不支持相关的驱动。



源链接

Hacking more

...