APT防御的他山石—思科内部安全团队解读APT
近日FireEye上市大热,360公司也要推出APT防御产品。在APT的战火已经烧到天朝之际,且看看思科自家的安全防御团队CSIRT(response to cyber security incidents for Cisco-owned businesses)在2011年时对APT的认识与理解,其中对APT的防御的总体思路,与当下Mandiant、FireEye等炙手可热的APT公司的策略不谋而合。当时概念时至今日仍然一针见血。
在久远的那个年代,人们想窃取企业的秘密是需要“物理接触”潜入偷取数据,想想“潜伏”连续剧里头,“余则成”用个迷你的照相机拍下国军的XXX名单。然而,互联网时代已经颠覆了这个久远年代的概念。要曝光组织的敏感秘密,已经不再需要物理接触了。今天,这个战线已经沿及到所有的计算机终端、桌面电脑、移动手机、web服务器和网络设备——所有整个相连的网络。这个互联网时代已经把坏人以及他们的目标以新的方式和不可预见的趋势绑在一起了。而使事情糟糕的是,通常这个网络生态系统并不如以前物理环境那么好的被保护起来。
无产品可防APT
谈到APT,首先,这里需要先弄清楚APT的神秘何在。如果任何人想向你的组织推销一个软件或者硬件去解决APT,那么他们根本不懂得APT,或者不真正的懂得计算机是怎么工作的、或者他们在说谎来推销——也很可能三者都是。如果是有一种方法可通过部署个ASIC的硬件、或者软件的signature去识别、检测APT,那不是高级持续威胁(Advanced Persistent Threat),那只是个EDPTD(Easy to Detect Persistent Threat for Dummies)容易被识别的蠢货持续攻击,或者只是个烦人的持续攻击而已。很不幸的是,很多安全销售人员正乘着这种攻击的极端性和复杂性,去销售不奏效的的APT防御产品。
如何防?
当时2011年最好的阐述APT的文档莫过于当时的“Google Hack”和“Aurora”,这些APT中使用了多个未知的,无法识别的的0day,并且在企业里,隐藏在众多的传统恶意软件里面。当这些神秘的APT曝光于公众后,众多CSIRT的成员都在议论,可以做点什么。其中有一种声音“我们总是把受感染的机器拿去重装一下,以降低风险和影响。而现在,我们更关心的是此举可能已经销毁了唯一的线索,或者更深入挖掘系统问题的证据。而这个系统问题除非被修复,要不仍然会一次又一次出现。到底一台需要深入调查取证和监控的受APT攻击主机跟一台扔去重装的普通感染机器有什么不同?怎么可以区分出来?”这个答案至关重要,但是可笑的是像很多好的和重要的问题一样,是没有一个简单的答案可以回答的。正如前文所述,是不存在通过一个魔法般的软件可以解决这个难题,而且通常非常难区分普通的恶意软件和更高级的攻击。而APT就像其他很棘手的问题一样,解决方案可能很复杂,但是解决方法论却很简单——识别出你可见的项目,并执行之。( identify what your available options are and then execute)
重点人群,重点跟踪
为了阐明这个方法论,接下来将有一系列的例子,在思科平均起来有12万台windows机器连接到桌面网络,里面肯定有一定比例的机器饱受恶意软件的折磨。当然CSIRT团队是无法对所有受感染的机器都进行深入的取证分析,网络记录及分析。然而不代表不能对其中一部分做分析。3年前(2008年)CSIRT就定制了一些程序,对一些筛选过的员工进行深入的网络分析和系统取证工作,而这些员工都是被认为可能成为APT攻击目标的。CSIRT团队看到这些人当中有一些访问过更多有趣的数据。对这些人群,CSIRT团队进行完全的跟踪,和更多高级的监控和调查工作。而这已经成功发现和阻止了一些APT性质的活动。但是是否发现和阻止了所有的这些活动?很不幸的答案是“没有”。CSIRT团队有了很有价值的数据,以及记录了这些高级和持续性的威胁。遗憾的是CSIRT团队中断了部分的尝试,但并没有完全阻止到这些攻击。
另一个例子,当今很多APT攻击都是用PDF来展开。这个攻击手法有很高的成功率,如果你有能力,可以抓取和储存起所有通过email进入你们公司的PDF文件,当然要连同这些email通信的SMTP头信息。定期的,自动化的进行额外的检查,这种检查需要比常规的防病毒方案更进一步,以帮助检查恶意PDF。(例如PDF是adobe的零日漏洞利用,内含恶意链接自动访问恶意链接)。即使常规的防病毒无法检测盒阻止这些威胁,这些“威胁”往往可以在漏洞利用的关键字作修改,或者运行多个杀毒引擎进行扫描免杀。而这里只是两个简单的例子。
大绝招
其实,大多数公司能够检测发现和响应这些或者其他一些高深的攻击,是全凭有效的部署了一系列很好被理解的计算机安全事件响应“柱子”。
首先,你必须要有能力“生产”、收集和查询日志,越多越好,起码要包括从安全角度认为重要的那些日志。例如,主机日志、proxy日志、认证日志、属性日志等。
其次,你需要DPI(deep packet inspection)深度包检测来覆盖你网络中重要的关键节点。
第三,你需要有能力快速的查询你网络的中的连接或者流量情况,可以通过netflow或者类似netflow之类的服务来覆盖所有网络的关键节点。