• 沒有找到結果。

Immunity CANVAS

在文檔中 第 3 部分 攻击 101 (頁 163-179)

渗透测试与工具

6.1 Python 技巧

6.2.2 Immunity CANVAS

笔者将考察的下一个自动化渗透测试框架是 CANVAS,来自 Immunity Security。安全 大师 Dave Aitel 编写了 CANVAS,这是个商业软件工具;此外他还贡献了许多其他功能强 大的免费软件。

第 2 部分

CANVAS 的方法与 IMPACT 稍有不同,强调了渗透测试的不同方面。第一个也是最引 人注目的不同点是,CANVAS 是完全用 Python 编写的,这使得它既能运行在 Windows 上,

也能运行在 Linux 上。其 GUI 界面使用了 GTK 库,其外观类似于 IMPACT(参见图 6.5)。

由于这是个完全基于 Python 的 GUI 界面,因此它可以移植到许多平台,在最新版本的 Windows 和 Linux 上都运行良好。CANVAS 包含一个雄厚的模块库,有接近 80 个专业人 士编写的攻击。

6.5 CANVAS GUI 界面

CANVAS 不像 IMPACT(只有 Windows 版本)那样精良,因为它考虑的是不同群体的 需求。例如,其中没有包括任何渗透测试向导,但却包括了完整的框架源代码;如果用户 需要,可以用脚本编写出类似的功能。它也不支持“轴心”的概念,但其基于 Python 的动 态 shellcode 产生器(Mosdef)也包含在其中并基于 GPL 发布;它不支持应用程序工作区 和 IMPACT 支持的其他一些工作流程特性,但它没有 IMPACT 的 IP 限制。

关键在于,它可能不怎么漂亮,但确实是一个可靠的框架,有经验的渗透测试人员会 觉得其效率不比其他工具差(甚至更高)。为说明这一点,我们现在开始讨论 CANVAS。

在图 6.5 中可以看到,CANVAS 的基本界面包含了一系列模块、日志和状态,而在屏 幕的底部是个有趣的滑块。滑块滑动区最左侧的标签为“As Reliable As Possible”,而最右 侧的标签为“As Covert As Possible”。CANVAS 实际的工作方式会因设置值的大小而不同。

滑块右移,攻击以更多的分步进行,这可能减慢操作的速度,但同时有可能愚弄监听的 IDS 系统。(相当巧妙!)以下是某个攻击中的一个例子,描述了隐秘度(即界面中的滑块位置)

对网络数据包发送速率的改变:

if covertness>5:

#print "Covert msrpcbind"

for d in data:

s.send(d)

time.sleep(0.2) else:

s.send(data)

读者可以看到,工具的实现逻辑会检查操作者是否希望比较隐秘,如果是这样的话,

则会把消息分解后发送,不同的部分之间会有短暂的间隔。如果不打算隐秘,则会一次性 地发送所有的数据。读者刚才阅读了有关 IMPACT 的内容,我们接下来继续比较 CANVAS 和 IMPACT。

虽然对渗透测试的新手来说,IMPACT 的快速渗透测试(先前讨论过)是个不错的特 性,但在现实中,速度太快有时候会妨碍获得结果。CANVAS 不会有此类问题,因为在进 行攻击之前,它并不需要经过信息收集阶段。即使模块无法发现主机的存在,用户仍然可 以根据自己的认知发起对相应机器的攻击,因为 CANVAS 确实可以搜索用户指定的主机,

并报告可能的漏洞。图 6.6 是此类扫描的结果的例子。

6.6 扫描期间发现的漏洞

类似于本章中讨论过的其他工具,CANVAS 并不只是报告扫描发现的漏洞,它也可以 进行攻击。只需点击发现的某个漏洞,输入打算攻击的 IP,再点击 OK 按钮即可。CANVAS 将发送一个攻击,同时负责在目标主机上建立一个监听器。类似于 IMPACT 的 level0 agent,

该监听器可以用来传送文件、启动进程、在受攻击的进程的上下文中执行命令。相应的图 形界面,可以参考图 6.7。

第 2 部分

6.7 在攻陷的计算机上安装监听器能够帮助用户完成的任务

读者可以从命令行启动 CANVAS 的一些攻击,但要得到图 6.7 所示的全部功能,则需 要与 shellcode 安装的代理监听器建立连接。

CANVAS 还有其他的巧妙之处(例如超快的无状态扫描器,类似于 scanrand),但令人 印象深刻的特性是,该工具对用户自行编写攻击的支持。使用 CANVAS 的内建函数以及动 态 shellcode 产生器,即可根据发现的漏洞产生出集成的 CANVAS 模块,可完全支持图 6.7 所示的代理监听器功能。读者现在可能还意识不到该功能的强大,但在以后几章里将会更 多地学习如何建立 shellcode。

当读者艰苦地手工建立一些执行简单任务的 shellcode 时,与之相对的,考虑一下把新 发现漏洞与 CANVAS 的代理监听器集成所用的下述 Python 代码:

createWin32Shellcode(badstring,localhost,localport) 或

createSparcShellcode(self.badstring,localhost,localport) 或

myshellcode=shellcodeGenerator.linux_X86()

即使看到了上面的例子,读者可能还是得等到本书后文才能了解该特性的伟大之处,

而 CANVAS 提供的用来建立 shellcode 的例程甚至可以保证,用户指定的一些“坏”字符 串不会出现在结果 shellcode 中。在阅读第 10 章之后返回此处即可知,不仅获得可工作的 shellcode 是多么简单,得到支持上传/下载、能够在远程主机上执行任意命令的 shellcode 同样简单。

对攻击开发 CANVAS 的了解越深入,可能就越喜欢它。由于$995 的购买价格中包含 了 CANVAS 的源代码,读者可以看看 Dave Aitel 和 ImmunitySec 的奇才们是如何建立这些 CANVAS 模块的。此外,优秀的附加特性(在某个实用工具文件中)包括了 NetBIOS 名称 进行编码、与运行在 DCE RPC 协议上的服务进行交互、处理 UUID、处理并建立 SMB 会 话、进行 NTLM 认证、转储 MS RPC 端点映射器等的所有服务信息。(如果读者不了解上 面陈述的某些名词,也无需担心。在本书后文中,读者将用这些知识,建立可工作的攻击。) 在建立 Windows 攻击时,若预先定义了这些实用函数,可以节省大量的工作。当然,对其 他的操作系统,也存在对应的文件,实现了类似的实用函数。

对于渗透测试和攻击开发而言,CANVAS 都是真正伟大的产品。虽然其 GUI 界面不像 IMPACT 那么精良,但基于 Python 和 GTK 的界面使得该工具能够在 Windows 或 Linux 上 运行。CANVAS 自带的攻击库会定期更新,以便与最新发现的漏洞同步。而其动态 shellcode 生成和对建立攻击的支持,对于严谨的安全从业者来说,是个真正顶级的工具。

参考文献

[1] CANVAS Homepage www.immunitysec.com/products-canvas.shtml

[2] The Daily Dave Information Security Mailing List, Hosted by Immunity Security http://lists.immunitysec.com/mailman/listinfo/dailydave

6.2.3 Metasploit

Metasploit 是笔者在本章考察的最后一个自动化渗透测试工具。该框架出现在 2003 年 下半年,最初的版本包括了第一个免费的、能够可靠地对 Windows XP、Windows 2000、

Windows NT 工作的 MS03-026 攻击。Metasploit 的侧重点与 CANVAS 和 IMPACT 有所不同,

它对攻击的测试和开发进行了大量优化,但对攻击网络和提升特权不是那么注重。实际上,

该框架并未包含漏洞或主机扫描器,而是需要用户自行获得。它提供的是一个令人印象深 刻的攻击开发和执行环境,包括了 30 个预先打包好的攻击和 33 个可以立即运行的数据载 荷。Metasploit 独特的混合匹配环境,使得用户可以将任意攻击与 5~7 种不同的数据载荷进 行配对,而且这些都是免费的。Metasploit 以 GPL 和 Artistic License 两种版权模型发布,

允许大量使用和重新发布。不能简单地认定价格反映了框架的质量。Metasploit 的攻击开发 特性独一无二,笔者将深入讨论该特性。

获取Metasploit

Metasploit 可以从 www.metasploit.org 下载。读者可以看到对应于 Unix 和 Windows 的 软件包。Windows 版本需要 Cygwin(Windows 上的一种类 Unix 环境),该软件已经包含在

第 2 部分

Metasploit 安装程序中。在 Windows 上安装,只需启动下载的 exe 文件并根据提示安装程 序即可。在 Unix 上,只要解压下载的 tarball 文件(在本书写作时,2.2 是最新版本):

tar -xzvf framework-2.x.tar.gz

还有一些可选的组件,可以从“extras”目录下安装,但现在笔者将转到对软件包的实 际使用上。在使之工作起来之后,我们再考虑优化的问题。

使用Metasploit

Metasploit 有 3 种操作模式。第一种(日常情况下)模式是 msfconsole。这种控制台模 式可以保存执行状态,这使得用户可以重复运行同一个攻击,而无需每次都指定所有的选 项。这也是对攻击、数据载荷、选项的一种有效的使用。第二种模式称之为 msfcli,用户 可以用单个长命令访问每一个特性。该模式对脚本的使用很有帮助,因为做任何事情都无 需通过菜单定位,只要知道准确的命令即可。第三种模式是 msfweb,这是一个嵌入式的 Web 服务器,在 55555 端口上监听(默认情况),这使得用户在建立攻击之后,可以从 Web 浏览器发送携带攻击的数据载荷。msfweb 不要求必须在本地计算机上运行。(考虑一下,

这意味着什么?!)

% ./msfconsole

+ -- --=[ msfconsole v2.2 [30 exploits - 33 payloads]

msf >

可以从下述命令开始:

show <exploits | payloads>

info <exploit | payload> <name>

use <exploit-name>

其余的命令,可以键入 help 后查看。

msf > show exploits

Metasploit Framework Loaded Exploits

====================================

Credits Metasploit Framework Credits

afp_loginext AppleFileServer LoginExt PathName Buffer Overflow apache_chunked_win32 Apache Win32 Chunked Encoding

blackice_pam_icq ISS PAM.dll ICQ Parser Buffer Overflow

distcc_exec DistCC Daemon Command Execution exchange2000_xexch50 Exchange 2000 MS03-46 Heap Overflow frontpage_fp30reg_chunked Frontpage fp30reg.dll Chunked Encoding ia_webmail IA WebMail 3.x Buffer Overflow

iis50_nsiislog_post IIS 5.0 nsiislog.dll POST Overflow iis50_printer_overflow IIS 5.0 Printer Buffer Overflow iis50_webdav_ntdll IIS 5.0 WebDAV ntdll.dll Overflow imail_ldap IMail LDAP Service Buffer Overflow lsass_ms04_011 Microsoft LSASS MSO4-011 Overflow mercantec_softcart Mercantec SoftCart CGI overflow msrpc_dcom_ms03_026 Microsoft RPC DCOM MSO3-026 mssql2000_resolution MSSQL 2000 Resolution Overflow poptop_negative_read Poptop Negative Read Overflow realserver_describe_linux RealServer Describe Buffer Overflow samba_nttrans Samba Fragment Reassembly Overflow samba_trans2open Samba trans2open Overflow

sambar6_search_results Sambar 6 Search Results Buffer Overflow servu_mdtm_overflow Serv-U FTPD MDTM Overflow

smb_sniffer SMB Password Capture Service solaris_sadmind_exec Solaris sadmind Command Execution squid_ntlm_authenticate Squid NTLM Authenticate Overflow svnserve_date Subversion Date Svnserve

ut2004_secure_linux Unreal Tournament 2004 "secure" Overflow (Linux) ut2004_secure_win32 Unreal Tournament 2004 "secure" Overflow (Win32) warftpd_165_pass War-FTPD 1.65 PASS Overflow

windows_ssl_pct Windows SSL PCT Overflow

msf > show payloads

Metasploit Framework Loaded Payloads

====================================

bsdix86_bind BSDI Bind Shell

bsdix86_findsock BSDI SrcPort Findsock Shell bsdix86_reverse BSDI Reverse Shell

bsdx86_bind BSD Bind Shell

bsdx86_findsock BSD Srcport Findsock Shell bsdx86_reverse BSD Reverse Shell

cmd_generic Arbitrary Command

cmd_sol_bind Solaris Inetd Bind Shell Command

cmd_unix_reverse Unix Telnet Piping Reverse Shell Command

cmd_unix_reverse_nss Unix Spaceless Telnet Piping Reverse Shell Command linx86_bind Linux Bind Shell

linx86_findrecv Linux Recv Tag Findsock Shell linx86_findsock Linux SrcPort Findsock Shell linx86_reverse Linux Reverse Shell

第 2 部分

linx86_reverse_impurity Linux Reverse Impurity Upload/Execute

osx_bind MacOS X Bind Shell

osx_reverse MacOS X Reverse Shell solx86_bind Solaris Bind Shell

solx86_findsock Solaris SrcPort Findsock Shell solx86_reverse Solaris Reverse Shell

win32_adduser Windows Execute net user /ADD win32_bind Windows Bind Shell

win32_bind_dllinject Windows Bind DLL Inject win32_bind_stg Windows Staged Bind Shell

win32_bind_stg_upexec Windows Staged Bind Upload/Execute win32_bind_vncinject Windows Bind VNC Server DLL Inject win32_exec Windows Execute Command

win32_reverse Windows Reverse Shell win32_reverse_dllinject Windows Reverse DLL Inject win32_reverse_stg Windows Staged Reverse Shell win32_reverse_stg_ie Windows Reverse InlineEgg Stager win32_reverse_stg_upexec Windows Staged Reverse Upload/Execute win32_reverse_vncinject Windows Reverse VNC Server DLL Inject

msf >

msf > use windows_ssl_pct msf windows_ssl_pct >

请注意,提示符迅速发生了变化。现在是处于攻击模式,所有设置好用来运行

请注意,提示符迅速发生了变化。现在是处于攻击模式,所有设置好用来运行

在文檔中 第 3 部分 攻击 101 (頁 163-179)