企业网络常见入侵类型


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

【一】典型的入侵场景

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

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


【二】“入侵”和“内鬼”

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

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

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


【三】入侵检测与攻击向量

    根据目标不同,可能暴露给黑客的攻击面会不同,黑客可能采用的入侵手法也就完全不同。比如,入侵我们的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的攻防甚至还发过专门的加固白皮书。


上一篇 下一篇

评论

登录后可发表评论