SIP机制

因为最新的OSX有SIP机制,安装的时候命令加上user
pip install –user 命令
即可!

关闭SIP

  • 重启电脑,按住Command+R(直到出现苹果标志)进入Recovery Mode(恢复模式)

  • 左上角菜单里找到实用工具 -> 终端

  • 输入$ csrutil disable回车

  • 重启Mac即可

  • 如果想重新启动SIP机制重复上述步骤改用$ csrutil enable即可
    查看SIP状态:

    $ csrutil status

  • 1

  • 1
    System Integrity Protection status: enabled.

 

二、初识SIP

刚升级完系统之后,我在进行一个操作的时候,遇到了一些问题,主要就是提示系统权限不足,但当我提升到sudo以后,还是提示:Operation not permitted,当时我就挺郁闷,啥情况,我sudo失败了?后面google了一下,才发现,原来OSX EI Capitan中增加了一个SIP功能,不管你是不是su,都会阻止你在系统目录下进行操作……

当时唯一的想法就是,这个东西能关不?怎么关?还是Google……找到了如下的方法:

(1)重启OSX系统,然后按住Command+R

(2)出现界面之后,选择Utilities menu中Terminal

(3)在Terminal中输入csrutil disable关闭SIP(csrutil enable打开SIP)

(4)重启reboot OSX
这个方法在我之前介绍《OSX内核调试技术分享》这篇文章中也提到过(链接),其实网上关闭SIP也都是这个,千篇一律吧(网上的文章一大抄,呵呵),如果大家对OSX安全不感兴趣,只想解结这个问题,那到这里就可以了,但作为一个安全研究员,对各种安全系统研究是我们的兴趣和职责所在,如果你对SIP感兴趣,可以继续望下看!

三、SIP工作原理

SIP全名System Integrity Protection(系统完整性保护),它是为了保护系统进程,文件,文档不被其它进程修改,不管是否为root user,SIP技术主要分为文件系统保护,运行时保护,内核扩展签名,文件系统保护主要是通过沙盒机制限制root权限,运行时保护,主要就是保护关键进程无法被进程代码注入,挂调试器以及内核调试等,内核扩展签名,所有的第三方kext必须被安装到/Library/Extensions,并强制使用签名。

Apple提供的官方文档中,我们可以找到OSX SIP的工作原理(下载地址)。文档中说明了苹果的新OSX系统,采用了如下的OSX Security Model:

sip1.png

这种安全模式削减了之前root权限,同时通过沙箱默认保护系统,提供不能被根自动入侵的配置机制,我们可以通过命令行工具,查看被保护的目录,如图:

sip2.jpg

从图中可以看出标志有restricted的为系统限制目录,这些目录是在系统启动的时候,通过OSX新的安全模型被定义的,之后不管用户是否使用root权限都无法对这些目录进行操作,查看目录中的文件信息,也可以看到文件同样被标记为restricted,如下图:

sip2.5.jpg

SIP同时也保护驱动程序,我们之前使用第三方驱动的时候,可以通过kext-dev-mode=1来加载第三方驱动程序,SIP强制要求我们把第三方驱动程序放到/Library/Extensions目录下,并且停用了kext-dev-modeboot-arg这个启动项,我们可以查看这个目录下的kext,发现没有restricted,但是系统目录下的kext是被restricted的,具体有哪些目录和文件或驱动被保护,从/System/Library/Sandbox目录中,我们可以看到rootless.conf,这是rootless的配置文件,主要用于说明哪些目录,程序,以及符号链接被保护,如下图所示:

sip3.jpg

这个文件说明了OSX系统中被SIP保护的整体配置信息,其实SIP机制就是苹果通过分层的安全机制,在底层设置一个rootless配置文件,然后在系统中,对配置文件中的信息增加一个限制标志项,这种标志信息不可复制,系统默认配置的,存在这个标志的信息,苹果统一通过底层沙箱进行保护,不用去额外权限大小,这样也削减了root在OSX中的权限大小


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

本站由 @shyiuanchen 创建,使用 Stellar 作为主题。