沙箱技能一贯是系统安全领域的寻衅,不存在说哪一种方案是足够安全的。沙箱技能方案常日是须要结合多种系统安全技能来实现,采取防御纵深(Defencein Depth)的设计原则,筑建多道防御樊篱,尽可能地将安全风险将为最低。下面我们紧张谈论如何利用Linux kernel所供应的安全功能来建立有效的沙箱技能。
Linux安全模型干系的内容:
进程是最小的权限边界,其根本缘故原由是MMU能担保进程地址空间的隔离。Linux Kernel还供应了与进程降权(drop privilege)干系的一些功能:

顶级剖析创建管道的开始。它充当整体剖析的主管。在这部分管道中,二进制文件被预先剖析,以便为其他剖析模块(例如文件格式细节或CPU架构)供应必要的元数据。
静态剖析利用许多静态剖析工具之一搜索干系的静态模式。考虑的工具紧张是readelf、objdump、pyelf、radare2和RetDecfileinfo。
动态剖析跟踪运行二进制、新创建的进程、文件系统操作和系统调用。管道该当易于扩展,以便用户可以定义自己的剖析模块。自定义模块的示例是Virus Total模块,它调用免费的Virus Total API来获取恶意软件扫描结果。各个模块的输出组合成终极的JSON输出。然后可以进一步处理该终极输出。进一步的处理可以在网络图形用户界面中手动进行,也可以通过YARA的自定义模块进行。
3、实行剖析在目标架构上运行和剖析示例的第一步是准备仿真环境。物联网恶意软件正在为广泛传播的架构而构建。这导致选择开源项目QEMU作为仿照准备好的系统的唯一可行选项。QEMU支持多种架构,包括MIPS、ARM、SPARC、AArch64、PowerPC。目标系统由自建Linux内核和准备好的文件系统和剖析工具组成。为了交叉编译镜像,利用了buildroot项目。Buildroot是一个通用工具,有助于为嵌入式系统开拓Linux。
3.1动态剖析实现动态剖析的关键是省略用户级工具ptrace syscall并准备内核级跟踪。SystemTap当选为终极办理方案,由于它供应了大略的类C措辞来定义探测器,并且恶意软件剖析师可以更轻松地变动或添加动态剖析功能。当前的实现利用探针来创建进程树、跟踪系统调用并标记打开或删除的文件。
构建过程如下:
将SystemTap(.stp)脚本翻译成C措辞。针对已经准备好的内核,将C代码交叉编译为目标架构的内核模块。将构建的内核模块插入目标文件系统。3.2网络剖析网络剖析模块加载tcpdumppcap文件并供应逐包剖析。在最初的原型中,我利用了Python库——Scapy和dpkt。事实证明,这两种方法在剖析时都很慢,乃至在加载更大的pcap文件时也碰着了问题。因此,我准备了与Python绑定的C++库来解析pcap数据。
网络剖析仪中实现的第一个主要功能是端点检讨。Analyzer利用免费的Geolite国家、城市和ASN(自治系统编号)数据库。然后在多个黑名单中搜索IP地址。
其他通用指标包括端口统计信息、每个端点传输的数据量、TCPSYN、TCPFIN数据包。末了,analyzer供应L7剖析。目前输出的L7信息包括解析的DNS查询、HTTP要求、IRC和telnet数据。
还把稳到网络非常。这些非常是例如命中列入黑名单的IP地址、发送格式缺点的数据包或明显的IP和端口扫描。
4、剖析构建及结果基于Docker容器化,各个沙箱元素的连接构建。单个沙箱包括:
Flask API-WebAPI具有用于创建新任务(完全文件剖析或仅pcap剖析)、查看任务状态、结果和下载剖析干系文件(例如捕获的pcaps)的端点。RabbitMQ-它用作利用AMQP协议的代理。它存储和掌握着进入沙箱的任务行列步队。MariaDB-开源MySQL替代方案。它存储剖析任务结果。Nginx-在履行的系统架构中,nginx代理将传入要求通报给uwsgi做事器(运行Web API)。Sandbox workers-运行剖析管道的事情者节点。Docker容器利用与主机相同的内核,因此它们的开销最小。配置文件——Dockerfiles——由指令组成。Dockerfile指令描述了构建终极docker镜像的过程。这些docker镜像带有它们的所有依赖项,并且该当在所有安装了docker的系统上正常运行。我准备了最适宜运行多容器运用程序的docker-compose文件。可以大略地运行:
docker-compose up –scale worker=10
启动完全的系统并扩展沙箱事情职员的数量以知足所有要求。
在剖析的恶意软件中看到的行为包括:
IP扫描——我们数据集中最常见的行为。由于当前大多数物联网恶意软件都会创建僵尸网络,因此其目标(机器人)通过在其他设备中创造漏洞来传播。LiSa区分本地网络和Internet扫描,并在发生此类事宜时触发非常。常日的目标端口是端口23(SSH)。端口扫描——恶意软件扫描本地网络中的许多端口以查找打开的端口。HTTP要求–检测到多个非常HTTP要求并将其标记为非常。HTTP要求可能包含垃圾或目标端点以获取数据(例如GET/version)。格式缺点的DNS数据包——这些数据包在标头值中包含大量数字(问题、答案、权限和其他资源记录的数量)。IRC–恶意软件连接到IRC做事器并等待来自CC做事器的命令。针对特定国家——样本仅与特定国家的数百个主机联系。这些国家是越南、中国、孟加拉国、泰国和印度。变动了进程名称——利用带有要求PRSETNAME的Syscallprctl来隐蔽恶意软件进程。列入黑名单的端点——在黑名单中创造了几个端点的IP地址。以指定运用程序为目标——示例以Wordpress运用程序及其端点/wp-login.php为目标。Ptrace–Ptrace系统调用被检测为一种反调试技能。进程创建——检测到的常日用于守护运用程序的分叉进程。5、结论首先,广泛的网络剖析、非常检测和利用Python绑定实现C++库,战胜了常用的包Scapy和dpkt。其次是SystemTap监控环境及其交叉编译工具链的准备。利用内核级剖析可以扩展到完全的系统监控办理方案。