浅谈大型互联网企业入侵检测及防御策略

前言

如何知道本身所在的企业是否被入侵了?是没人来“黑”,仍是因自身感知能力不足,暂时还没法发现?其实,入侵检测是每个大型互联网企业都要面对的严峻挑战。价值越高的公司,面临入侵的威胁也越大,即使是Yahoo这样的互联网鼻祖,在落幕(被收购)时仍遭遇全量数据失窃的事情。安全无小事,一旦互联网公司被成功“入侵”,其后果将不堪想象。算法

基于“攻防对抗”的考量,本文不会说起具体的入侵检测模型、算法和策略,那些但愿直接照搬“入侵策略”的同窗可能会感到失望。可是咱们会将一部分运营思路分享出来,请各位同行指点,如能对后来者起到帮助的做用,那就更好了,也欢迎你们跟咱们交流探讨。数据库

入侵的定义

典型的入侵场景:后端

黑客在很远的地方,经过网络远程控制目标的笔记本电脑/手机/服务器/网络设备,进而随意地读取目标的隐私数据,又或者使用目标系统上的功能,包括但不限于使用手机的麦克风监听目标,使用摄像头偷窥监控目标,使用目标设备的计算能力挖矿,使用目标设备的网络能力发动DDoS攻击等等。亦或是破解了一个服务的密码,进去查看敏感资料、控制门禁/红绿灯。以上这些都属于经典的入侵场景。安全

咱们能够给入侵下一个定义:就是黑客在未经受权的状况下,控制、使用我方资源(包括但不限于读写数据、执行命令、控制资源等)达到各类目的。从广义上讲,黑客利用SQL注入漏洞窃取数据,或者拿到了目标域名在ISP中的账号密码,以篡改DNS指向一个黑页,又或者找到了目标的社交账号,在微博/QQ/邮箱上,对虚拟资产进行非受权的控制,都属于入侵的范畴。服务器

针对企业的入侵检测

企业入侵检测的范围,多数状况下比较狭义:通常特指黑客对PC、系统、服务器、网络(包括办公网、生产网)控制的行为。微信

黑客对PC、服务器等主机资产的控制,最多见的方法是经过Shell去执行指令,得到Shell的这个动做叫作GetShell。网络

好比经过Web服务的上传漏洞,拿到WebShell,或者利用RCE漏洞直接执行命令/代码(RCE环境变相的提供了一个Shell)。另外,经过某种方式先植入“木马后门”,后续直接利用木马集成的SHELL功能对目标远程控制,这个也比较典型。架构

所以,入侵检测能够重点关注GetShell这个动做,以及GetShell成功以后的恶意行为(为了扩大战果,黑客多半会利用Shell进行探测、翻找窃取、横向移动攻击其它内部目标,这些区别于好人的特性也能够做为重要的特征)。框架

有一些同行(包括商业产品),喜欢报告GetShell以前的一些“外部扫描、攻击探测和尝试行为”,并美其名曰“态势感知”,告诉企业有人正在“试图攻击”。在笔者看来,实战价值并不大。包括美团在内的不少企业,基本上无时无刻都在遭受“不明身份”的攻击,知道了有人在“尝试”攻击,若是并不能有效地去行动,没法有效地对行动进行告警,除了耗费心力以外,并无太大的实际价值。运维

当咱们习惯“攻击”是常态以后,就会在这样的常态下去解决问题,可使用什么加固策略,哪些能够实现常态化的运营,若是有什么策略没法常态化运营,好比须要不少人加班临时突击守着,那这个策略多半在不久以后就会逐渐消逝掉。跟咱们作不作这个策略,并无本质上的区别。

相似于SQL注入、XSS等一些不直接GetShell的Web攻击,暂时不在狭义的“入侵检测”考虑范围,建议能够划入“漏洞”、“威胁感知”等领域,另行再作探讨。固然,利用SQL注入、XSS等入口,进行了GetShell操做的,咱们仍抓GetShell这个关键点,没必要在意漏洞入口在何处。

“入侵”和“内鬼”

与入侵接近的一种场景是“内鬼”。入侵自己是手段,GetShell只是起点,黑客GetShell的目标是为了以后对资源的控制和数据的窃取。而“内鬼”自然拥有合法的权限,能够合法接触敏感资产,可是基于工做之外的目的,他们对这些资源进行非法的处置,包括拷贝副本、转移外泄、篡改数据牟利等。

内鬼的行为不在“入侵检测”的范畴,通常从内部风险控制的视角进行管理和审计,好比职责分离、双人审计等。也有数据防泄密产品(DLP)对其进行辅助,这里不展开细说。

有时候,黑客知道员工A有权限接触目标资产,便定向攻击A,再利用A的权限把数据窃取走,也定性为“入侵”。毕竟A不是主观恶意的“内鬼”。若是不能在黑客攻击A的那一刻捕获,或者没法区分黑客控制的A窃取数据和正常员工A的访问数据,那这个入侵检测也是失败的。

入侵检测的本质

前文已经讲过,入侵就是黑客能够不通过咱们的赞成,来操做咱们的资产,在手段上并无任何的限制。那么如何找出入侵行为和合法正常行为的区别,将其跟合法行为进行分开,就是“入侵发现”。在算法模型上,这算是一个标记问题(入侵、非入侵)。

惋惜的是,入侵这种动做的“黑”样本特别稀少,想经过大量的带标签的数据,有监督的训练入侵检测模型,找出入侵的规律比较难。所以,入侵检测策略开发人员,每每须要投入大量的时间,去提炼更精准的表达模型,或者花更多的精力去构造“相似入侵”的模拟数据。

一个经典的例子是,为了检测出WebShell,安全从业人员能够去GitHub上搜索一些公开的WebShell样本,数量大约不到1000个。而对于机器学习动辄百万级的训练需求,这些数据远远不够。何况GitHub上的这些样本集,从技术手法上来看,有单一技术手法生成的大量相似样本,也有一些对抗的手法样本缺失。所以,这样的训练,试图让AI去经过“大量的样本”掌握WebShell的特征并区分出它们,原则上不太可能完美地去实现。

此时,针对已知样本作技术分类,提炼更精准的表达模型,被称为传统的特征工程。而传统的特征工程每每被视为效率低下的重复劳动,但效果每每比较稳定,毕竟加一个技术特征就能够稳定发现一类WebShell。而构造大量的恶意样本,虽然有机器学习、AI等光环加持,但在实际环境中每每难以得到成功:自动生成的样本很难描述WebShell原本的含义,多半描述的是自动生成的算法特征。

另外一个方面,入侵的区别是看行为自己是否“受权”,而受权与否自己是没有任何显著的区分特征的。所以,作入侵对抗的时候,若是可以经过某种加固,将合法的访问收敛到有限的通道,而且给该通道作出强有力的区分,也就能大大的下降入侵检测的成本。例如,对访问来源进行严格的认证,不管是天然人,仍是程序API,都要求持有合法票据,而派发票据时,针对不一样状况作多纬度的认证和受权,再用IAM针对这些票据记录和监控它们能够访问的范围,还能产生更底层的Log作异常访问模型感知。

这个全生命周期的风控模型,也是Google的BeyondCorp无边界网络得以实施的前提和基础。

所以,入侵检测的主要思路也就有2种:

  • 根据黑特征进行模式匹配(例如WebShell关键字匹配)。
  • 根据业务历史行为(生成基线模型),对入侵行为作异常对比(非白既黑),若是业务的历史行为不够收敛,就用加固的手段对其进行收敛,再挑出不合规的小众异常行为。

入侵检测与攻击向量

根据目标不一样,可能暴露给黑客的攻击面会不一样,黑客可能采用的入侵手法也就彻底不一样。好比,入侵咱们的PC/笔记本电脑,还有入侵部署在机房/云上的服务器,攻击和防护的方法都有挺大的区别。

针对一个明确的“目标”,它被访问的渠道多是有限集,被攻击的必经路径也有限。“攻击方法”+“目标的攻击面”的组合,被称为“攻击向量”。

所以,谈入侵检测模型效果时,须要先明确攻击向量,针对不一样的攻击路径,采集对应的日志(数据),才可能作对应的检测模型。好比,基于SSH登陆后的Shell命令数据集,是不能用于检测WebShell的行为。而基于网络流量采集的数据,也不可能感知黑客是否在SSH后的Shell环境中执行了什么命令。

基于此,若是有企业不提具体的场景,就说作好了APT感知模型,显然就是在“吹嘘”了。

因此,入侵检测得先把各种攻击向量罗列出来,每个细分场景分别采集数据(HIDS+NIDS+WAF+RASP+应用层日志+系统日志+PC……),再结合公司的实际数据特性,做出适应公司实际状况的对应检测模型。不一样公司的技术栈、数据规模、暴露的攻击面,都会对模型产生重大的影响。好比不少安全工做者特别擅长PHP下的WebShell检测,可是到了一个Java系的公司......

常见的入侵手法与应对

若是对黑客的常见入侵手法理解不足,就很难有的放矢,有时候甚至会陷入“政治正确”的陷阱里。好比渗透测试团队说,咱们作了A动做,大家居然没有发现,因此大家不行。而实际状况是,该场景可能不是一个完备的入侵链条,就算不发现该动做,对入侵检测效果可能也没有什么影响。每个攻击向量对公司形成的危害,发生的几率如何进行排序,解决它耗费的成本和带来的收益如何,都须要有专业经验来作支撑与决策。

如今简单介绍一下,黑客入侵教程里的经典流程(完整过程能够参考杀伤链模型):

入侵一个目标以前,黑客对该目标可能还不够了解,因此第一件事每每是“踩点”,也就是搜集信息,加深了解。好比,黑客须要知道,目标有哪些资产(域名、IP、服务),它们各自的状态如何,是否存在已知的漏洞,管理他们的人有谁(以及如何合法的管理的),存在哪些已知的泄漏信息(好比社工库里的密码等)......

一旦踩点完成,熟练的黑客就会针对各类资产的特性,酝酿和逐个验证“攻击向量”的可行性,下文列举了常见的攻击方式和防护建议。

高危服务入侵

全部的公共服务都是“高危服务”,由于该协议或者实现该协议的开源组件,可能存在已知的攻击方法(高级的攻击者甚至拥有对应的0day),只要你的价值足够高,黑客有足够的动力和资源去挖掘,那么当你把高危服务开启到互联网,面向全部人都打开的那一刻,就至关于为黑客打开了“大门”。

好比SSH、RDP这些运维管理相关的服务,是设计给管理员用的,只要知道密码/秘钥,任何人都能登陆到服务器端,进而完成入侵。而黑客可能经过猜解密码(结合社工库的信息泄露、网盘检索或者暴力破解),得到凭据。事实上这类攻击因为过于常见,黑客早就作成了全自动化的全互联网扫描的蠕虫类工具,云上购买的一个主机若是设置了一个弱口令,每每在几分钟内就会感染蠕虫病毒,就是由于这类自动化的攻击者实在是太多了。

或许,你的密码设置得很是强壮,可是这并非你能够把该服务继续暴露在互联网的理由,咱们应该把这些端口限制好,只容许本身的IP(或者内部的堡垒主机)访问,完全断掉黑客经过它入侵咱们的可能。

与此相似的,MySQL、Redis、FTP、SMTP、MSSQL、Rsync等等,凡是本身用来管理服务器或者数据库、文件的服务,都不该该针对互联网无限制的开放。不然,蠕虫化的攻击工具会在短短几分钟内攻破咱们的服务,甚至直接加密咱们的数据,甚至要求咱们支付比特币,进行敲诈勒索。

还有一些高危服务存在RCE漏洞(远程命令执行),只要端口开放,黑客就能利用现成的exploit,直接GetShell,完成入侵。

防护建议: 针对每个高危服务作入侵检测的成本较高,由于高危服务的具体所指很是的多,不必定存在通用的特征。因此,经过加固方式,收敛攻击入口性价比更高。禁止全部高危端口对互联网开放可能,这样可以减小90%以上的入侵几率。

Web入侵

随着高危端口的加固,黑客知识库里的攻击手法不少都会失效了。可是Web服务是现代互联网公司的主要服务形式,不可能都关掉。因而,基于PHP、Java、ASP、ASP.NET、Node、C写的CGI等等动态的Web服务漏洞,就变成了黑客入侵的最主要入口。

好比,利用上传功能直接上传一个WebShell,利用文件包含功能,直接引用执行一个远程的WebShell(或者代码),而后利用代码执行的功能,直接看成Shell的入口执行任意命令,解析一些图片、视频的服务,上传一个恶意的样本,触发解析库的漏洞......

Web服务下的应用安全是一个专门的领域(道哥还专门写了本《白帽子讲Web安全》),具体的攻防场景和对抗已经发展得很是成熟了。固然,因为它们都是由Web服务作为入口,因此入侵行为也会存在某种意义上的共性。相对而言,咱们比较容易可以找到黑客GetShell和正常业务行为的一些区别。

针对Web服务的入侵痕迹检测,能够考虑采集WAF日志、Access Log、Auditd记录的系统调用,或者Shell指令,以及网络层面Response相关的数据,提炼出被攻击成功的特征,建议咱们将主要的精力放在这些方面。

0day入侵

经过泄漏的工具包来看,早些年NSA是拥有直接攻击Apache、Nginx这些服务的0day武器的。这意味着对手极可能彻底不用在意咱们的代码和服务写成什么样,拿0day一打,神不知鬼不觉就GetShell了。

可是对于入侵检测而言,这并不可怕:由于不管对手利用什么漏洞当入口,它所使用的Shellcode和以后的行为自己依然有共性。Apache存在0day漏洞被攻击,仍是一个PHP页面存在低级的代码漏洞被利用,从入侵的行为上来看,说不定是彻底同样的,入侵检测模型还能够通用。

因此,把精力聚焦在有黑客GetShell入口和以后的行为上,可能比关注漏洞入口更有价值。固然,具体的漏洞利用仍是要实际跟进,而后验证其行为是否符合预期。

办公终端入侵

绝大多数APT报告里,黑客是先对人(办公终端)下手,好比发个邮件,哄骗咱们打开后,控制咱们的PC,再进行长期的观察/翻阅,拿到咱们的合法凭据后,再到内网漫游。因此这些报告,多数集中在描述黑客用的木马行为以及家族代码类似度上。而反APT的产品、解决方案,多数也是在办公终端的系统调用层面,用相似的方法,检验“免杀木马”的行为。

所以,EDR类的产品+邮件安全网关+办公网出口的行为审计+APT产品的沙箱等,联合起来,能够采集到对应的数据,并做出类似的入侵检测感知模型。而最重要的一点,是黑客喜欢关注内部的重要基础设施,包括但不限于AD域控、邮件服务器、密码管理系统、权限管理系统等,一旦拿下,就至关于成为了内网的“上帝”,能够随心所欲。因此对公司来讲,重要基础设施要有针对性的攻防加固讨论,微软针对AD的攻防甚至还发过专门的加固白皮书。

入侵检测基本原则

不能把每一条告警都完全跟进的模型,等同于无效模型。入侵发生后,再辩解以前其实有告警,只是太多了没跟过来/没查完全,这是“马后炮”,等同于不具有发现能力,因此对于日均告警成千上万的产品,安全运营人员每每表示很无奈。

咱们必须屏蔽一些重复发生的类似告警,以集中精力把每个告警都闭环掉。这会产生白名单,也就是漏报,所以模型的漏报是不可避免的。

因为任何模型都会存在漏报,因此咱们必须在多个纬度上作多个模型,造成关联和纵深。假设WebShell静态文本分析被黑客变形绕过了,在RASP(运行时环境)的恶意调用还能够进行监控,这样能够选择接受单个模型的漏报,但在总体上仍然具有发现能力。

既然每个单一场景的模型都有误报漏报,咱们作什么场景,不作什么场景,就须要考虑“性价比”。好比某些变形的WebShell能够写成跟业务代码很是类似,人的肉眼几乎没法识别,再追求必定要在文本分析上进行对抗,就是性价比不好的决策。若是经过RASP的检测方案,其性价比更高一些,也更具可行性一些。

咱们不太容易知道黑客全部的攻击手法,也不太可能针对每一种手法都建设策略(考虑到资源老是稀缺的)。因此针对重点业务,须要能够经过加固的方式(还须要常态化监控加固的有效性),让黑客能攻击的路径极度收敛,仅在关键环节进行对抗。起码能针对核心业务具有兜底的保护能力。

基于上述几个原则,咱们能够知道一个事实,或许咱们永远不可能在单点上作到100%发现入侵,可是咱们能够经过一些组合方式,让攻击者很难绕过全部的点。

当老板或者蓝军挑战,某个单点的检测能力有缺失时,若是为了“政治正确”,在这个单点上进行无止境的投入,试图把单点作到100%能发现的能力,不少时候可能只是在试图制造一个“永动机”,纯粹浪费人力、资源,而不产生实际的收益。将节省下来的资源,高性价比的布置更多的纵深防护链条,效果显然会更好。

入侵检测产品的主流形态

入侵检测终究是要基于数据去建模,好比针对WebShell的检测,首先要识别Web目录,再对Web目录下的文件进行文本分析,这须要作一个采集器。基于Shell命令的入侵检测模型,须要获取全部Shell命令,这可能要Hook系统调用或者劫持Shell。基于网络IP信誉、流量payload进行检测,或者基于邮件网关对内容的检查,可能要植入网络边界中,对流量进行旁路采集。

也有一些集大成者,基于多个Sensor,将各方日志进行采集后,汇总在一个SOC或者SIEM,再交由大数据平台进行综合分析。所以,业界的入侵检测相关的产品大体上就分红了如下的形态:

  • 主机Agent类:黑客攻击了主机后,在主机上进行的动做,可能会产生日志、进程、命令、网络等痕迹,那么在主机上部署一个采集器(也内含一部分检测规则),就叫作基于主机的入侵检测系统,简称HIDS。

    • 典型的产品:OSSEC、青藤云、安骑士、安全狗,Google最近也发布了一个Alpha版本的相似产品 Cloud Security Command Center。固然,一些APT厂商,每每也有在主机上的Sensor/Agent,好比FireEye等。
  • 网络检测类:因为多数攻击向量是会经过网络对目标投放一些payload,或者控制目标的协议自己具有强特征,所以在网络层面具有识别的优点。

    • 典型的产品:Snort到商业的各类NIDS/NIPS,对应到APT级别,则还有相似于FireEye的NX之类的产品。
  • 日志集中存储分析类:这一类产品容许主机、网络设备、应用都输出各自的日志,集中到一个统一的后台,在这个后台,对各种日志进行综合的分析,判断是否能够关联的把一个入侵行为的多个路径刻画出来。例如A主机的的Web访问日志里显示遭到了扫描和攻击尝试,继而主机层面多了一个陌生的进程和网络链接,最后A主机对内网其它主机进行了横向渗透尝试。

    • 典型的产品:LogRhythm、Splunk等SIEM类产品。
  • APT沙箱:沙箱类产品更接近于一个云端版的高级杀毒软件,经过模拟执行观测行为,以对抗未知样本弱特征的特色。只不过它须要一个模拟运行的过程,性能开销较大,早期被认为是“性价比不高”的解决方案,但因为恶意文件在行为上的隐藏要难于特征上的对抗,所以如今也成为了APT产品的核心组件。经过网络流量、终端采集、服务器可疑样本提取、邮件附件提炼等拿到的未知样本,均可以提交到沙箱里跑一下行为,判断是否恶意。

    • 典型产品:FireEye、Palo Alto、Symantec、微步。
  • 终端入侵检测产品:移动端目前尚未实际的产品,也不太有必要。PC端首先必备的是杀毒软件,若是可以检测到恶意程序,必定程度上可以避免入侵。可是若是碰到免杀的高级0day和木马,杀毒软件可能会被绕过。借鉴服务器上HIDS的思路,也诞生了EDR的概念,主机除了有本地逻辑以外,更重要的是会采集更多的数据到后端,在后端进行综合分析和联动。也有人说下一代杀毒软件里都会带上EDR的能力,只不过目前销售仍是分开在卖。

    • 典型产品:杀毒软件有Bit九、SEP、赛门铁克、卡巴斯基、McAfee ;EDR产品不枚举了,腾讯的iOA、阿里的阿里郎,必定程度上都是能够充当相似的角色;

入侵检测效果评价指标

首先,主动发现的入侵案例/全部入侵 = 主动发现率。这个指标必定是最直观的。比较麻烦的是分母,不少真实发生的入侵,若是外部不反馈,咱们又没检测到,它就不会出如今分母里,因此有效发现率老是虚高的,谁能保证当前全部的入侵都发现了呢?(可是实际上,只要入侵次数足够多,无论是SRC收到的情报,仍是“暗网”上报出来的一个大新闻,把客观上已经知悉的入侵列入分母,总仍是能计算出一个主动发现率的。)

另外,真实的入侵实际上是一个低频行为,大型的互联网企业若是一年到头成百上千的被入侵,确定也不正常。所以,若是好久没出现真实入侵案例,这个指标长期不变化,也没法刻画入侵检测能力是否在提高。

因此,咱们通常还会引入两个指标来观测:

  • 蓝军对抗主动发现率
  • 已知场景覆盖率

蓝军主动高频对抗和演习,能够弥补真实入侵事件低频的不足,可是因为蓝军掌握的攻击手法每每也是有限的,他们屡次演习后,手法和场景可能会被罗列完毕。假设某一个场景建设方还没有补齐能力,蓝军一样的姿式演习100遍,增长100个未发现的演习案例,对建设方而言并无更多的帮助。因此,把已知攻击手法的建成覆盖率拿出来,也是一个比较好的评价指标。

入侵检测团队把精力聚焦在已知攻击手法的优先级评估和快速覆盖上,对建设到什么程度是知足须要的,要有本身的专业判断(参考入侵检测原则里的“性价比”原则)。

而宣布建成了一个场景的入侵发现能力,是要有基本的验收原则的:

  • 该场景日均工单 < X单,峰值 < Y单;当前全部场景日平均<XX,峰值 <YY,超出该指标的策略不予接收,由于过多的告警会致使有效信息被淹没,反而致使此前具有的能力被干扰,不如视为该场景还没有具有对抗能力。
  • 同一个事件只告警首次,屡次出现自动聚合。
  • 具有误报自学习能力。
  • 告警具有可读性(有清晰的风险阐述、关键信息、处理指引、辅助信息或者索引,便于定性),不鼓励Key-Value模式的告警,建议使用天然语言描述核心逻辑和响应流程。
  • 有清晰的说明文档,自测报告(就像交付了一个研发产品,产品文档和自测过程是质量的保障)。
  • 有蓝军针对该场景实战验收报告。
  • 不建议调用微信、短信等接口发告警(告警和事件的区别是,事件能够闭环,告警只是提醒),统一的告警事件框架能够有效的管理事件确保闭环,还能提供长期的基础运营数据,好比止损效率、误报量/率。

策略人员的文档应当说明当前模型对哪些状况具有感知能力,哪些前提下会没法告警(考验一我的对该场景和本身模型的理解能力)。经过前述判断,能够对策略的成熟度造成自评分,0-100自由大体估算。单个场景每每很难达到100分,但那并无关系,由于从80分提高到100分的边际成本可能变的很高。不建议追求极致,而是全盘审视,是否快速投入到下一个场景中去。

若是某个不到满分的场景常常出现真实对抗,又没有交叉的其它策略进行弥补,那自评结论可能须要重审并提升验收的标准。至少解决工做中实际遇到的Case要优先考虑。

影响入侵检测的关键要素

讨论影响入侵检测的要素时,咱们能够简单看看,曾经发生过哪些错误致使防守方不能主动发现入侵:

  • 依赖的数据丢失,好比HIDS在当事机器上,没部署安装/Agent挂了/数据上报过程丢失了/Bug了,或者后台传输链条中丢失数据。
  • 策略脚本Bug,没启动(事实上咱们已经失去了这个策略感知能力了)。
  • 还没建设对应的策略(不少时候入侵发生了才发现这个场景咱们还没来得及建设对应的策略)。
  • 策略的灵敏度/成熟度不够(好比扫描的阈值没达到,WebShell用了变形的对抗手法)。
  • 模型依赖的部分基础数据错误,作出了错误的判断。
  • 成功告警了,可是负责应急同窗错误的判断/没有跟进/辅助信息不足以定性,没有行动起来。

因此实际上,要让一个入侵事件被捕获,咱们须要入侵检测系统长时间、高质量、高可用的运行。这是一件很是专业的工做,超出了绝大多数安全工程师能力和意愿的范畴。因此建议指派专门的运营人员对如下目标负责:

  • 数据采集的完整性(全链路的对帐)。
  • 每个策略时刻工做正常(自动化拨测监控)。
  • 基础数据的准确性。
  • 工单运营支撑平台及追溯辅助工具的便捷性。

可能有些同窗会想,影响入侵检测的关键要素,难道不是模型的有效性么?怎么全是这些乱七八糟的东西?

实际上,大型互联网企业的入侵检测系统日均数据量可能到达数百T,甚至更多。涉及到数十个业务模块,成百上千台机器。从数字规模上来讲,不亚于一些中小型企业的整个数据中心。这样复杂的一个系统,要长期维持在高可用标准,自己就须要有SRE、QA等辅助角色的专业化支持。若是仅依靠个别安全工程师,很难让其研究安全攻防的时候,又兼顾到基础数据质量、服务的可用性和稳定性、发布时候的变动规范性、各种运营指标和运维故障的及时响应。最终的结果就是能力范围内能够发现的入侵,老是有各类意外“刚好”发现不了。

因此,笔者认为,以多数安全团队运营质量之差,其实根本轮不到拼策略(技术)。固然,一旦有资源投入去跟进这些辅助工做以后,入侵检测就真的须要拼策略了。

此时,攻击手法有那么多,凭什么先选择这个场景建设?凭什么认为建设到某程度就足够知足当下的须要了?凭什么选择发现某些样本,而放弃另外一些样本的对抗?

这些看似主观性的东西,很是考验专业判断力。并且在领导面前很容易背上“责任心不足”的帽子,好比为困难找借口而不是为目标找方法,这个手法黑客攻击了好屡次,凭什么不解决,那个手法凭什么说在视野范围内,可是要明年再解决?

如何发现APT?

所谓APT,就是高级持续威胁。既然是高级的,就意味着木马很大多是免杀的(不能靠杀毒软件或者普通的特征发现),利用的漏洞也是高级的(加固到牙齿可能也挡不住敌人进来的步伐),攻击手法一样很高级(攻击场景可能咱们都没有见过)。

因此,实际上APT的意思,就约等于同于不能被发现的入侵。然而,业界总还有APT检测产品,解决方案的厂商在混饭吃,他们是怎么作的呢?

  • 木马免杀的,他们用沙箱+人工分析,哪怕效率低一些,仍是试图作出定性,并快速的把IOC(威胁情报)同步给其它客户,发现1例,全球客户都具有一样的感知能力。

  • 流量加密变形对抗的,他们用异常检测的模型,把一些不认识的可疑的IP关系、payload给识别出来。固然,识别出来以后,也要运营人员跟进得仔细,才能定性。

  • 攻击手法高级的,他们仍是会假定黑客就用鱼叉、水坑之类的已知手法去执行,而后在邮箱附件、PC终端等环节采集日志,对用户行为进行分析,UEBA试图寻找出用户异于日常的动做。

那么,咱们呢?笔者也没有什么好的办法,能够发现传说中的“免杀”的木马,可是咱们能够针对已知的黑客攻击框架(好比Metasploit、Cobalt Strike)生成的样本、行为进行一些特征的提取。咱们能够假设已经有黑客控制了某一台机器,可是它试图进行横向扩散的时候,咱们有一些模型能够识别这个主机的横向移动行为。

笔者认为,世界上不存在100%能发现APT的方法。可是咱们能够等待实施APT的团队犯错,只要咱们的纵深足够的多,信息足够不对称,想要彻底不触碰咱们全部的铃铛,绝对存在必定的困难。

甚至,攻击者若是须要当心翼翼的避开全部的检测逻辑,可能也会给对手一种心理上的震慑,这种震慑可能会延缓对手接近目标的速度,拉长时间。而在这个时间里,只要他犯错,就轮到咱们出场了。

前面全部的高标准,包括高覆盖、低误报,强制每个告警跟进到底,“掘地三尺”的态度,都是在等待这一刻。抓到一个值得敬佩的对手,那种成就感,仍是很值得回味的。

因此,但愿全部从事入侵检测的安全同行们都能坚持住,即便听过无数次“狼来了”,下一次看到告警,依然能够用最高的敬畏心去迎接对手(告警虐我千百遍,我待告警如初恋)。

AI在入侵检测领域的正确姿式

最近这两年,若是不谈AI的话,貌似故事就不会完整。只不过,随着AI概念的火爆,不少人已经把传统的数据挖掘、统计分析等思想,好比分类、预测、聚类、关联之类的算法,都一概套在AI的帽子里。

其实AI是一种现代的方法,在不少地方有很是实际的产出了。以WebShell的文本分析为例,咱们可能须要花很长很长的时间,才能把上千个样本里隐含的几十种样本技术类型拆分开,又花更长的时间去一一建设模型(是的,在这样的场景下,特征工程真的是一个须要更长时间的工做)。

而使用AI,作好数据打标的工做,训练、调参,很快就能拿到一个实验室环境不那么过拟合的模型出来,迅速投产到生产环境上。熟练一点可能1-2个月就能作完了。

在这种场景下,AI这种现代的方法,的确能几大的提升效率。但问题是,前文也提到过了,黑客的攻击黑样本、WebShell的样本,每每极其稀缺,它不多是完备的可以描述黑客入侵的完整特征的。所以,AI产出的结果,不管是误报率仍是漏报率,都会受训练方法和输入样本的影响较大,咱们能够借助AI,但绝对不能彻底交给AI。

安全领域一个比较常见的现象是,将场景转变成标记问题,要难过于经过数学模型把标记的解给求出来。此时每每须要安全专家先行,算法专家再跟上,而不能直接让算法专家“孤军奋战”。

针对一个具体的攻击场景,怎么样采集对应的入侵数据,思考这个入侵动做和正常行为的区别,这个特征的提取过程,每每决定了模型最终的效果。特征决定了效果的上限,而算法模型只能决定了有多接近这个上限。

此前,笔者曾见过一个案例,AI团队产出了一个实验室环境效果极佳,误报率达到1/1000000的WebShell模型,可是投放到生产环境里初期日均告警6000单,彻底没法运营,同时还存在很多漏报的状况。这些状况随着安全团队和AI工程师共同的努力,后来逐渐地解决。可是并未能成功的取代原有的特征工程模型。

目前业界有许多产品、文章在实践AI,但遗憾的是,这些文章和产品大多“浅尝辄止”,没有在真实的环境中实践运营效果。一旦咱们用前面的标准去要求它,就会发现,AI虽然是个好东西,可是绝对只是个“半成品”。真正的运营,每每须要传统的特征工程和AI并行,也须要持续地进行迭代。

将来必然是AI的天下,可是有多少智能,前面可能就要铺垫多少人工。愿与同行们一块儿在这个路上继续探索下去,多多交流分享。

关于美团安全

美团安所有的大多数核心开发人员,拥有多年互联网以及安全领域实践经验,不少同窗参与过大型互联网公司的安全体系建设,其中也不乏全球化安全运营人才,具有百万级IDC规模攻防对抗的经验。安所有也不乏CVE“挖掘圣手”,有受邀在Black Hat等国际顶级会议发言的讲者,固然还有不少漂亮的运营妹子。

目前,美团安所有涉及的技术包括渗透测试、Web防御、二进制安全、内核安全、分布式开发、大数据分析、安全算法等等,同时还有全球合规与隐私保护等策略制定。咱们正在建设一套百万级IDC规模、数十万终端接入的移动办公网络自适应安全体系,这套体系构建于零信任架构之上,横跨多种云基础设施,包括网络层、虚拟化/容器层、Server 软件层(内核态/用户态)、语言虚拟机层(JVM/JS V8)、Web应用层、数据访问层等,并可以基于大数据+机器学习技术构建全自动的安全事件感知系统,努力打形成业界最前沿的内置式安全架构和纵深防护体系。

随着美团的高速发展,业务复杂度不断提高,安所有门面临更多的机遇和挑战。咱们但愿将更多表明业界最佳实践的安全项目落地,同时为更多的安全从业者提供一个广阔的发展平台,并提供更多在安全新兴领域不断探索的机会。

【安利个小广告】

美团安所有正在招募Web&二进制攻防、后台&系统开发、机器学习&算法等各路小伙伴。若是你想加入咱们,欢迎简历请发至邮箱zhaoyan17@meituan.com

具体职位信息可参考这里

美团安全应急响应中心MTSRC主页:security.meituan.com

相关文章
相关标签/搜索