看雪小编注:本文是《2019 SDC 看雪安全开发者峰会》非虫演讲稿的速记稿,有关峰会详情:
https://bbs.pediy.com/thread-252759.htm
我们首先介绍一下什么是EDR、EDR是为了解决什么问题而产生的、EDR系统架构、macOS平台上系统安全机制、系统自带的安全限制,了解这些安全机制之后非常有利于我们在macOS平台上进行安全开发。
后面会介绍macOS终端上的agent实现技术方案,以及开发调试需要注意的点。
关于我,我从事安全有10多年,在2013年、2016年以及2019年这三个时间点出版三本软件安全相关的书籍,目前我就职于奇安信情报中心,它的前身是360情报中心,现在由于与360企业在公司数据与业务层面的分离原因,现在更名为奇安信威胁情报中心。
奇安信是国内非常专业的研究网络威胁情报的一个团队。大家可以关注我们团队的公众号【奇安信威胁情报中心】,每周会定时输出一些高质量的威胁分析与APT溯源相关的高级话题。
一、EDR概述
首先是安全产品,从最初的网络安全需求发展到现在,安全产品的种类已经非常多。大家看一下常见的安全产品有哪些,在早年对于业务安全需求比较多的情况下是WAF这个产品,它突出表现在对业务的API防护,比如说像常见的防注入、入侵检测。
这是主机安全上的IDS和IPS,IDS和IPS是目前讨论得比较多的一个安全产品,因为无论大小企业,都会用到这款产品。HIDS和NIPS最主要的区别是是否在主机端部署agent,agent是用来收集主机上的日志信息,用来后期的数据关联、数据分析。
早年的网络安全需求发展到现在,已经变成了非常大的网络安全市场,EDR也是一个转变的产品、是一个复合型的产品,它在终端上会分为终端的检测与响应,或者基于云安全平台的CWPP这个产品。
在奇安信这边,目前它的EDR产品有天擎EDR,主要方向是终端这一块。ATP产品是在国内比较知名的应该是微软提出的ATP产品,它被用来检测一些高级威胁。
大家看看这个安全能力象限,在企业安全建设过程中,安全能力体现产品开发思路以及产品在企业安全中扮演的角色,安全能力象限-检测、防护、预测、响应,这四个点代替了企业当中经常遇到的网络安全问题。
拿检测来说,检测恶意流量、攻击行为是IDS和SSP安全感知平台这些产品的功能需求,防护产品就是常见的杀软、WAF、防火墙这些产品,带NG这些产品名称是它是下一代的安全产品。
在预测方面,大数据的态势感知和威胁情报的平台可以对威胁进行预测,最后是响应中心。响应一般需要对安全数据进行运维,所以它需要一个安全运维平台和安全日志管理系统。
我们看看EDR的定义,EDR是2013年由Gartner提出的一个概念,它的早期只是一个概念,后面是以EDR的形式出现。EDR强调的是一种能力,我们刚才前面看到的安全象限,在EDR的能力中都会有所体现,它强调的是一种能力,而不仅仅是个工具。
EDR如何工作?它通过在主机端上部署agent,然后由agent采集数据,然后对大量数据进行分类、进行处理,然后对事件进行定义的这样一个过程。
二、EDR架构
这是国内比较知名的深信服公司,提出基于业务层面的一个架构图,它把EDR的架构分成了三部分:最底下是基础平台,主机代理agent是用于部署在客户主机上的,恶意文件分析引擎和web控制台和SOC进行联动。
核心引擎部分,常见的行为引擎是通过对一些规则的静态或动态分析,以及机器学习的算法,然后配合威胁情报以及一些大数据的处理、CEP等引擎。对所有采集到的数据进行处理;功能展现部分,是最终展示给用户或者管理人员的展示台。
我们今天重点讨论的点是主机代理在功能展现上的技术点该如何实现。
三、macOS平台上系统安全机制
我们看看苹果系统的架构,再讲讲它的安全机制,最后讨论它的安全机制。这张图是将苹果系统以组件形式划分为五类,从上到下是应用程序、媒体、核心服务、核心系统和内核这五层。我们重点关注的是第三层的安全层,以及内核这部分。
苹果系统有哪些机制?它在coreServices这个框架中提供了用户认证和代码签名的功能,在内核BSD提供了代码审计以及内核的授权认证。
在mach层提供MACF强制访问控制这个框架,这个框架是苹果非常重要的核心组件,它承载了苹果系统绝大多数的安全检测用途,我们在后面会重点讨论MACF。
最后是内核当中的网络编程NKE网络内核扩展,网络内核扩展是苹果系统提供类似Windows系统内核过滤驱动的组件,可用于对所有苹果电脑的网络流量进行监控、过滤以及修改。
四、macOS系统安全限制
基于这些安全组件,系统提供了一些安全限制。这些安全限制是苹果从用户态软件产品或者软件组件中给大家展示出的苹果的安全特性。
这个Authd的作用是当系统中低权限组件向高权限组件访问申请资源时,它会弹出授权用户的权限申请的对话框,这个对话框在底层是通过XPC向Authd申请这个权限。
这里有一个syspolicyd守护进程,它的作用是当所有应用程序启动安装时,它会用于管理这些用户执行的程序,对其实施一些系统的安全策略,它主要是实现了对gatekeeper以及用户授权的内核扩展的加载、以及APP的公正这三大块对底去的支持。
我们看一下gatekeeper,当新安装的软件从网络上下载后,它会经过gatekeeper向用户展示对话框,展示对话框中提供了APP下载的时间点以及下载的途径,只要用户点击“确定”之后才可以继续打开这个APP。它的实现在底层依赖于gatekeeper机制。
Gatekeeper在底层有quarantine机制,当你从网络上下载APP,这个APP会自带扩展属性,这个扩展属性是由quarantine守护进程来向应用程序写入,写入这个进程会在这当中有一个数据库来保存所有的quarantine,quarantine内核层面是通过内核扩展,然后使用这个框架获可常见的接口。
在syspolicyd这一块将所有的gatekeeper信息写入用户态的一个数据库中。
APP Translocation这个功能是强调在APP进行转移、移动复制这种场景下才会出现的。首先,当一个APP下载完后,它是带有Quarantine属性的,会对gatekeeper进行检测,但这时并不会触发APP Translocation。
APP Translocation是在10.12里引入的新特性,当一个APP通过U盘传到另外一台电脑上时,如果它带了Quarantine属性,它就有可能触发APP Translocation,U盘中直接执行微信程序会弹出一个框,这个框弹出之后我们可以看一下这个APP加载路径是这么一个随机受限制的目录,这就保证了通过U盘这些可移动的媒介去运行这个程序时不会对系统造成破坏。
用户授权的内核扩展是在10.13时引入的一个新特性,这个安全特性的作用是,当新安装的应用程序带着内核扩展,就我们熟悉的内核驱动,这么一个功能在早先的操作系统中是不需要确认就可以直接加载的,但是到了10.13时必须手动在设计页面点击“允许加载”它才会去加载,否则默认是不会被加载的。
在10.13的操作系统中实现这个功能是通过这个类,标红的这几个方法是用于检测加载时的信息,以及用户是否点击了“确认”,所有这些操作完的信息都会最终保存在SystemPolicy这个数据库,这个操作是由syspolicyd守护进程完成的。
这是APP公正,这个功能是在macOS 10.14.5引入,2019年4月7日后,所有开发者签发的APP都必须要加入APP公正这个过程,APP公正是开发者手动向苹果公司提出申请,由苹果公司对这个APP进行审核的过程。在底层这些所有的信息会写入一个数据库当中。
Rootless又称之为SIP,系统管理性防护这个功能,是防止用户获取最高权限的情况下对系统文件进行篡改的这么一个功能。即使在开启了SIP权限下,即使你拥有最高权限,也不能对苹果系统核心受保护的文件进行修改。
Rootless是从10.11引入的功能,所有受SIP防护的文件或目录,会有一个受限制的属性。
SIP是基于文件目录对软件进行防护的,比如说在调试过程中,开启SIP的情况下,对系统的应用程序,比如计算器是无法调试的,但是可以将计算器这个APP复制到不受限制的目录下,然后对它进行调试。
它的底层是由一个内核扩展来实现的,这个内核扩展的底层也是使用AMFI这个框架,挂了MACF的几个常见的回调函数。
我们看看这个沙盒sandbox,同样是在10.11有的功能,可能更早。沙盒是依赖于底层和用户态的这种自定义沙盒语言对系统进行防护的,可以在系统的/Library/Sandbox/Profiles/目录下找到所有和沙盒相关的文件,这些文件是由系统维护升级,用户是没办法进行修改的。沙盒是由sandbox.kext扩展,底层也是Hook了MACF的一些回调实现的。
这是XProtect,是苹果内置的一款可以理解为“杀软”的工具,它的工具实现依赖于一个签名文件,这个文件的路径是在/System/Library/CoreServices/CoreTypes.bundle下面,所有的签名会动态更新。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-7-23 22:41
被kanxue编辑
,原因: