SIP机制
因为最新的OSX有SIP机制,安装的时候命令加上user
pip install –user 命令
即可!
二、初识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:
这种安全模式削减了之前root权限,同时通过沙箱默认保护系统,提供不能被根自动入侵的配置机制,我们可以通过命令行工具,查看被保护的目录,如图:
从图中可以看出标志有restricted的为系统限制目录,这些目录是在系统启动的时候,通过OSX新的安全模型被定义的,之后不管用户是否使用root权限都无法对这些目录进行操作,查看目录中的文件信息,也可以看到文件同样被标记为restricted,如下图:
SIP同时也保护驱动程序,我们之前使用第三方驱动的时候,可以通过kext-dev-mode=1来加载第三方驱动程序,SIP强制要求我们把第三方驱动程序放到/Library/Extensions目录下,并且停用了kext-dev-modeboot-arg这个启动项,我们可以查看这个目录下的kext,发现没有restricted,但是系统目录下的kext是被restricted的,具体有哪些目录和文件或驱动被保护,从/System/Library/Sandbox目录中,我们可以看到rootless.conf,这是rootless的配置文件,主要用于说明哪些目录,程序,以及符号链接被保护,如下图所示:
这个文件说明了OSX系统中被SIP保护的整体配置信息,其实SIP机制就是苹果通过分层的安全机制,在底层设置一个rootless配置文件,然后在系统中,对配置文件中的信息增加一个限制标志项,这种标志信息不可复制,系统默认配置的,存在这个标志的信息,苹果统一通过底层沙箱进行保护,不用去额外权限大小,这样也削减了root在OSX中的权限大小