您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 软件测试技术 > 功能测试 > 正文

玩微信“跳一跳”我竟然领悟了渗透攻击与测试的诀窍!

发表于:2018-09-05 作者:陈峻 来源:51CTO技术栈

注:最近我和小伙伴们都爱上了小游戏“跳一跳”,不过我在玩的时候却突然从它联想到了渗透攻击与测试。在此,我将来探究一下它们之间的“联系”。

现如今,各类初创型公司都在迅速迭代和发展之中。对于支撑业务的 IT 系统,信息安全部门需要经常通过各种工具和手段来进行自查、分析和管控。

然而,我们时常会被建议去进行各种针对某些特定服务和应用的专项渗透测试,却往往缺乏一个全面的攻击视图和测试流程。

有过渗透经验的小伙伴都知道,攻击者通常就像在玩“跳一跳”小游戏那样,一步一步地跳进了我们的系统内部。

下面让我从一张逻辑图出发,基于企业渗透攻击与测试的典型框架,来和大家一起探究“跳一跳”在这里的新“玩法”。

“黑盒”式攻击
上一步的位置,决定着下一步的跳法

“网鱼”式搜集:不积跬步,无以至千里

俗话说:“不怕贼偷就怕贼惦记”。攻击者一般会对你的系统进行被动和主动收集两种方式。

侧面收集,也称“外围信息搜集”,我们可以理解为“隔山打牛”,也就是在不触碰目标系统的情况下,“曲线而婉约”地通过公共查询或搜索引擎的手段来获取外围信息。

如网站域名、IP 地址(如使用 dig 命令)、也可配合使用 GoogleHacking 和在 Google 地址后面追加各种参数来 Find Subdomains、Find Vhosts、以及使用 ICMP Ping 和 Whois Lookup 等工具。

相信你一定也能复制出基于 Baidu 和 Bing 的信息搜集脚本。

上述 Whois 工具最为普遍,它可用来查询那些由区域互联网注册机构所持有的,已在互联网上注册了的服务器资源信息 (IP 地址或域名等)。

通过运行该工具,可以获得的信息包括:所有者公司的名称、地址(一般是国家或区域)、特定的真实 IP 地址及其所隶属的 IP 范围、联系电话号码、电子邮件、管理员姓名以及域名服务器等。

Whois 一般是以命令行的字符呈现的,如果你要基于网页的形式,则可以使用 Netcraft.com 网站,其操作非常简单,只要输入要查询的网站地址便可。

有时候,攻击者的目标是邮件服务器,那么他们会运用 NSLookup 工具,来进一步收集到服务器更多的信息。

正面收集,则需要和目标系统进行直接互动和简单“过招”,比如说对其端口进行扫描等,不过这样有时候会被目标系统的 IDS 或 IPS 发现。

攻击者可以通过诸如 https://pentest-tools.com 之类的在线工具实施,或使用带有参数的 Nmap 来进行活跃主机的判断、操作系统的识别(如大家所熟知的:Windows 大小写不敏感而 Linux 则敏感)、服务类型和端口的扫描等。

当然他们偶尔也会用到 Metasploit 辅助模块中的 SYN。而如果锁定的目标系统是在其 DMZ 区里,则可使用 Back Track 5 的 Autoscan 图像界面来扫描。

在扫描到系统的常见服务和端口后,他们就可以进行弱口令的猜测和传输明文的嗅探了。他们甚至可以运用工具来获取服务器远程访问的权限。

常言道:“没有笨黑客、只有懒黑客”。只要他们够执着,什么 C 段网站、服务器系统版本、容器版本(如 IIS、Apache、Nginx、Lighttpd、Tomcat 等)、程序版本、数据库类型、二级域名、甚至是使用的防火墙等蛛丝马迹,都可以通过各种工具的联合使用来发掘到。

“捕鲸”式搜集:只要耐心,机会总是会有的

作为“职业”素养,攻击者经常会到各种社会工程学库里去查找是否有与目标系统相关的泄露密码。

一旦获取了某些泄露的密码,能生成专用字典,他们就可以尝试着去登录到目标的管理后台。

攻击者也会利用目标系统域名邮箱作为关键词,放入各大搜索引擎进行进一步的信息搜集。

利用搜到的关联信息,他们可以找出使用类似命名规则的其他网站的邮箱地址,进而得到常用的社交网站和 APP 的账号。

基于那些社交账号,他们进阶式地搜索出相关微博、微信中包含此类关键字的内容,最终以信息链的方式发现目标系统管理员的密码设置习惯。

接下来,攻击者可以进一步通过查找网上已经曝光出的各种程序漏洞来尝试性判断目标网站的 CMS(Content Management System,即内容管理系统)。

Web 应用渗透:没有捷径,每一步你都要走稳走好

因为门户网站大多都有前端防火墙的保护,所以攻击者要想绕过的话,就只能通过浏览器 HTTP/S(防火墙一般都被配置为允许 HTTP/S 的流入)的方式来进行攻击。

常见的 Web 应用渗透攻击包括:SQL 注入、XSS 跨站脚本、CSRF 跨站伪造请求、文件包含攻击(利用浏览器获取远程文件)和命令执行(远程执行命令)等。

除了上述提到的 pentest-tools.com 所提供的在线 Web 应用扫描和 Metasploit 相应模块之外,常用的免费工具还有扫描神器--W3AF。

它可以通过其自身 WebSpider 插件的发现模块、暴力破解模块、审计模块和攻击模块的组合来进行渗透。

另外,攻击者还可能会使用开源渗透工具—SQLMAP,来获得不同数据库的指纹信息,并从数据库中提取他们感兴趣的用户名/密码等数据。

服务端渗透攻击:只有步步为营,才能长驱直入

从典型的企业网络架构来说,当攻击者成功拿下 Web 应用服务器之时,也就意味着进入了 DMZ 区域。接下来,他们会通过路由交换,向着具有各种功能的服务器长驱直入。

一般而言,攻击者在此所用到的渗透攻击,是对于如下三种网络服务的探测与利用:

  • Windows/Unix/Linux 自带的系统网络服务,如 Windows 系统下的 NetBIOS 服务(UDP-137/138 端口和 TCP-139 端口)、SMB 服务(共享打印机)以及 MSRPC 服务(网络调用远程主机上的服务进程中的过程)和 RDP 服务(远程桌面服务)。

  • 针对 Windows 系统上微软应用产品的网络服务,如 IIS 服务、SQL Server 服务等。

  • 第三方的网络服务,如提供 HTTP 服务的 Apache、IBM WebSphere、Weblogic 等;提供数据库服务的 Oracle、MySQL 等;提供 FTP 服务的 Serv-U 和 FileZilla 等。

客户端渗透攻击:步子太大会栽下去,太小则跨不过去

虽然在客户端上作祟相对于攻击服务器端来说,可能并非是攻击者的主要目的。但是往往他们会抱有“既来之、则破之”的心态,进行顺手破坏。

不过客户端不像服务器那样会开放过多的端口和服务,而且一般默认开启了个人防火墙并安装了反病毒软件,因此攻击者不大可能通过发送恶意数据包给目标客户端,让客户端自动执行触发,从而获得权限。

他们在此通常需要通过构造畸形数据,使得用户在使用含有漏洞缺陷的应用程序处理数据时发生错误,进而执行内嵌于数据中的恶意代码。

例如:针对浏览器的 Javascript 攻击、第三方插件的攻击、Office 软件的攻击、Adobe 阅读器的攻击等,并最终获得目录结构和敏感文件等信息。

而在技术实现上,他们甚至会用到针对 DEP 和 ASLR 的堆喷射、ROP、JIT Spraying 等。

无线网络渗透攻击:不求跳得快,只求站得稳

如今移动互联已经在企业中非常普及了,通过无线网络这一无形的入口,企业的服务和数据迅速突破了有形的系统架构。与此同时,攻击者也会与时俱进,另辟蹊径来开展无线渗透攻击。

总的说来,他们的主要步骤和套路是:

  • 在可以接受 WiFi 信号的位置,利用 Aircrack-ng 之类的套件,破解 WEP 和 WPA/WPA2 的加密密码,以获得 AP 的接入口令。

  • 进入 AP 后利用已知漏洞获得 AP 的管理权。

  • 利用 AP 的管理权引导流量,制造钓鱼攻击来劫持用户流量。

  • 渗透进入用户移动手持设备,如笔记本、Pad、智能手机等。

“白盒”式测试

过犹不及,每一步跳跃都要掌握好力度

上面我们模拟的是一个对于目标系统完全陌生的攻击者,在进行“黑盒”式攻击时所涉及到的方面和步骤。

而企业的专业技术人员也应该定期与审计师协作,基于对系统架构与企业环境有所了解的情况下,进行所谓的“白盒”式测试。

那么,我们下面来看看这些“白帽子”的渗透测试又有哪些细微的不同之处呢?

内部攻击测试

运用普通的外界电脑(模拟带入内网的访客)和企业内部的标准电脑两种方式,使用各种工具对选定内网 IP 地址范围进行扫描和尝试性的攻击。

外部攻击测试

通过互联网的远程方式,运用各种工具对企业公网范围的IP地址进行扫描(或称:战争拨号),并做尝试性的攻击。

Web 应用安全评估

选定足够数量的 Web 应用页面,通过远程方式进行用户帐号、目录结构以及脚本注入/执行等相关测试。

社会工程与安全意识

  • 普通目标邮件的钓鱼与捕鲸

  • 目标电话(冒名诈骗)诱骗

  • 邮件链接(鱼叉式)与自动下载(drive-by download)

设备/设施的物理访问

运用尾随或当面说服等伎俩进入机房后,展开如上所列的内部攻击测试。

在上述五点中,其准确性容易失真的当属“社会工程学与安全意识”测试。由于测试本身可能事先已被知晓、或是采集的“样本”不够丰富、甚至测试的时间不够充沛,都可能产生员工安全意识强的假象。

总结
上面便是我“跳”出来的一些玩法心得,它们恰好能“投射”到我们日常渗透测试的各个方面。
综上所述,通过全面的渗透流程能够帮助我们发现系统环境中客观存在的漏洞,而人员的安全意识与习惯则决定了漏洞被利用的可能性。
因此就算企业通过了上述两类攻击和测试,也只是一个短暂的平衡态。但是倘若我们根本不去做任何“自攻”的话,则会让整个企业系统如同那只“薛定谔的猫”一样,在日常运营中持续处于风险与安全叠加的状态。
由此可见,我们要定期在企业内部和外部执行系统性的渗透攻击与测试,以免各种攻击者在我们的世界里任性地跳来跳去、愉快地独自玩耍。

关于作者

陈峻(Julian Chen) ,有着十多年的 IT 项目、企业运维和风险管控的从业经验,日常工作深入系统安全各个环节。曾被(ISC)2 评为第九届亚太区信息安全领袖成就表彰计划的“信息安全践行者”和 Future-S 中国 IT 治理和管理的 2015 年度践行人物。