Syswall是一项新开发,旨在创建动态防火墙的相似性以过滤应用程序对系统调用的访问。 项目代码以Rust语言编写,未指定许可证。
这项新发展 它看起来像strace实用程序的交互式版本,可让您跟踪该程序进行的每个系统调用。 关键区别在于,除了显示有关系统调用及其执行结果的信息之外。
关于Syswall
系统墙 支持互动模式 在此过程中,在进行系统调用之前已停止受监视的进程 并且提示用户继续或忽略该操作 (例如,您可以监视打开每个文件或网络连接过程的尝试)。
Syswall还可以收集有关所进行的系统调用的统计信息,并基于该统计信息生成报告。
syswall的目标如下:
至 提供strace的改进版本 这样可以更轻松地确定实际正在执行的软件。
通过允许使用详细的交互式方法来允许和拒绝系统调用,从而提供用于测试和试验软件的环境。
每个进程可以有一个配置文件
对于每个过程,e可以将配置文件与明确允许或禁止的系统调用列表连接。
对于受支持的呼叫,syswall允许用户执行以下操作:
- 一次允许系统调用
- 始终允许该特定的系统调用
- 一次阻止系统调用(硬或软)
- 始终阻止该特定的系统调用(硬或软)
- 阻塞时,程序可以执行一个阻塞(硬或软)。
在交互式会话期间,无论在何处访问程序,都可以在运行时允许或阻止特定的系统调用以及对此系统调用的任何调用。
在“硬”和“软”模式下支持阻止。
锁的类型
在第一种情况下,不执行系统调用,并且将访问错误代码发送到进程。 在第二种情况下,也不会执行系统调用,但是该过程会收到一个虚拟的成功返回码,以模拟系统调用的成功执行。
例如,目前仅支持与文件操作有关的系统调用分析。
硬块会阻止系统调用执行,并向子进程返回权限被拒绝的错误。 另一方面,软锁可以阻止syscall,但会尝试将适当的响应返回给子进程,以假装syscall实际上已执行。
在这种情况下,仅当确认请求引用了专门拨打或先前丢失的系统调用时,才会显示确认请求。
保存并加载过程配置。
执行期间所做的选择可以保存到JSON文件中。 可以在另一个运行期间加载此文件,以便使用上述选项。
这是一项正在进行中的工作-仅会保留允许/阻止的响应。
信息
子进程完成后,syswall将发布有关子进程的系统调用的简短报告。 当前,它包含所有打开或锁定的文件,但在将来的版本中将进行扩展。
该项目仍处于功能原型的阶段,并未实现所有设想的可能性。
还有更多的发展空间
该项目的待办事项列表很大,将来计划增加对其他类别的系统调用的支持,考虑到传递给系统调用的参数进行验证的能力,即将过程状态保存到文件中以供以后在不同程序启动期间进行活动比较(例如,比较文件列表和网络连接)的方法忽略加载动态库并支持典型的设置集(例如,锁定所有套接字,但允许文件访问)。