购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 Kali Linux的开源工具

目前Kali Linux包括的工具中绝大部分是可以免费使用的。GitHub中公开了一个Kali Linux开源工具的中文翻译项目,该项目针对Kali Linux官网的工具清单中包含的说明文档(工具清单地址为https://tools.kali.org/tools-listing)进行了翻译,该GitHub项目地址为https://github.com/Jack-Liang/kalitools。Kali Linux官网工具列表如图2-25所示。

图2-25 Kali Linux官网工具列表

课外拓展

我国发布的《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》中提到“支持数字技术开源社区等创新联合体发展,完善开源知识产权和法律体系,鼓励企业开放软件源代码、硬件设计和应用服务”。开源被明确列入了国家发展规划,并特别指出了开源硬件。

开源模式不仅是一种商业模式,也是一种生态构建方法,还是一种复杂系统开发方法,更蕴含着一种精神。

开源是一种共享共治的精神。过去20年,中国发展处理器生态有两条路线。

1)海光/兆芯、海思/飞腾基于成熟的x86、ARM生态发展自主可控技术。

2)龙芯、申威基于自主可控的指令集和核心模块拓展自己的生态圈。

开源是一种新的路线,是共享经济模式在信息技术领域的体现,是构建信息技术生态的共治道路。其核心理念与5G通信技术的发展模式相同,即全世界共同制定标准规范,各国企业根据标准规范自主实现产品。投入多、贡献大,则主导权大。

开源是一种打破垄断、开放创新的精神。形成垄断是企业的天性,而后阻碍创新,这被历史一次次证明。开源以最大限度地开放孕育最多彩的创新,释放人们的创造力。以处理器设计为例,开源模式孕育了一系列创新技术,让敏捷设计方法成为可能:如何分解处理器模块实现众包模式协同开发,如何保障开源下处理器的安全性与可靠性,如何构建基于开源IP与开源EDA工具链的全新设计流程。基于开源模式,也许有一天可以实现全球几万人共同开发一个处理器。

开源是一种鼓励奉献的精神。科研人员将其科研成果开源,让更多人更容易地站到巨人的肩膀上发挥他们的创造力,推动全人类的技术进步。如果说“两弹一星”精神是科研人员对国家的奉献精神,那么开源精神则是科研人员对产业的奉献精神。

2.3.1 Metasploit框架

Metasploit是一个免费的、开源的渗透测试框架,是目前实现渗透测试的最有效的安全审计工具之一。它由H.D.Moore在2003年发布,后来被Rapid 7收购。当前的稳定版本是使用Ruby语言编写的,但同时也囊括了使用Perl语言编写的脚本,以及使用C语言、汇编语言和Python语言编写的各种组件。Metasploit提供了非常全面的漏洞渗透测试代码库,集成了优秀的模块开发环境,拥有强大的信息收集和Web安全测试等功能。

Metasploit共有4个版本,分别为Metasploit Pro版、Metasploit Express版、Metasploit Community版和Metasploit Framework版。Metasploit Framework版是一个可以完全在命令行中运行的版本,适合开发人员和安全研究人员使用。本小节将对Kali 2022.1版本中自带的Metasploit 6.0框架展开介绍。

1.Metasploit文件系统架构

通过查看Metasploit文件系统的架构,读者可以更容易地理解它。因此,首先需要熟悉Metasploit的文件系统和库。在Kali Linux中,Metasploit默认安装在/usr/share/metasploit-framework目录下,文件系统架构如图2-26所示。

图2-26 Metasploit文件系统架构

Metasploit常用目录解释如下:

1)data目录下包含了Metasploit中存储某些漏洞所需的二进制文件、密码清单等可编辑文件。

2)documentation目录下包含了开发者手册等框架可用的文档。

3)lib目录下包含了框架代码库的“核心”。

4)modules目录下包含了7个实用的功能模块。

5)plugins目录下包含了Metasploit的许多插件。

6)scripts目录下包含了Meterpreter以及Shell等脚本。

7)tools目录下包含了Exploit等各种命令行形式的实用工具。

2.Metasploit的模块

Metasploit共有7个功能模块,分别是辅助模块、编码模块、规避模块、漏洞利用模块、空指令模块、攻击载荷模块和后渗透模块,如图2-27所示。

图2-27 Metasploit的7个功能模块

各功能模块的作用如下:

1)辅助(Auxiliary)模块用于辅助渗透测试。Metasploit v6.0包含了模糊测试、端口扫描、嗅探、信息收集、暴力破解以及网络协议欺骗等1123个实用功能模块。

2)编码(Encoders)模块用于混淆加密Payload代码,绕过杀毒软件或防火墙等安全保护机制的检测。Metasploit v6.0包含了针对CMD、PHP等的45种编码方式。

3)规避(Evasion)模块用于规避微软的限制或杀毒软件的查杀。Metasploit v6.0包含了7种规避方式。

4)漏洞利用(Exploits)模块用于对渗透测试目标的安全漏洞实施攻击,是一段可直接运行的程序。Metasploit v6.0包含了针对Linux、Windows、Android等的2071个漏洞利用程序。

5)空指令(Nops)模块用于产生对程序运行状态不会造成任何实质影响的空操作或者无关操作指令。Metasploit v6.0包含了针对PHP、x86等的10类空指令。

6)攻击载荷(Payloads)模块用于在渗透测试后在目标系统中获得所需的访问权限和操作权限,通常是在漏洞利用代码成功执行后运行。Metasploit v6.0包含了针对Windows、Linux、Java、CMD等的592个Payloads。

7)后渗透(Post)模块一般用于内网渗透。Metasploit v6.0包含了针对Windows、Linux、Android等的352种方式。

3.Metasploit的渗透测试流程支持

在了解了Metasploit的文件系统、库和功能模块后,回顾前面介绍的PTES的7个渗透测试阶段,Metasploit提供了情报搜集、漏洞分析、渗透攻击、后渗透攻击及报告阶段的诸多自动化工具。可以说,Metasploit制定了一套标准的渗透测试框架,用户通过它可以轻易地获取、开发并实施漏洞攻击。它本身自带的数百个已知软件的漏洞攻击工具也极大地降低了渗透测试的门槛,使得任何人都可以成为黑客,每个人都可以用它们来攻击那些未打过补丁的漏洞。宏观而言,Metasploit间接促进了网络空间安全的快速完善以及发展。

Metasploit框架提供了多种用户使用接口,包括MSFconsole控制台终端、MSFcli命令行、MSFgui图形化界面、Armitage图形化界面以及MSFapi远程调用接口等,这些接口有不同的优缺点。

MSFconsole控制台终端是非常实用的一种使用接口,是集各种强大功能于一体的漏洞利用框架;MSFcli命令行侧重于脚本执行,可以在命令行Shell执行,但在2015年6月,MSFcli被删除,想要使用类似功能可通过MSFconsole的-x选项实现;Armitage图形化界面是GUI图形界面,主要优点是让渗透测试的操作变得更加容易。

MSFconsole是目前Metasploit框架最流行的接口之一,它提供了一个一体化的集中式控制台,可让用户有效地访问Metasploit框架中几乎所有可用的选项。

MSFconsole为框架提供了基于控制台的接口,是访问Metasploit中大多数模块的唯一支持方式,因此它包含了很多功能,是非常稳定的Metasploit框架接口。此外,它还完全支持ruby readline、制表符和命令补全,甚至在MSFconsole中执行外部命令也是被允许的。

用户只需在命令行输入msfconsole并按〈Enter〉键就可以启动Metasploit,Metasploit界面如图2-28所示。

图2-28 Metasploit界面

MSFconsole有大量的可用模块,用户很难记住特定模块的确切名称和路径。因此,MSFconsole与大多数其他Shell一样,用户输入所知道的内容并按〈Tab〉键,将获取到可用的选项列表,当选项列表中只有一个选项时会自动完成字符串补全,示例如图2-29所示。该功能依赖于ruby readline扩展,控制台中的几乎每个命令都支持选项的补全,用户使用起来十分方便。

初次使用MSFconsole时,可以输入help命令,获取各命令的说明。MSFconsole的命令分为7类。

图2-29 MSFconsole命令补全功能示例

1)Core Commands(核心命令),如图2-30所示。

图2-30 Core Commands(核心命令)

2)Module Commands(模块命令),如图2-31所示。

图2-31 Module Commands(模块命令)

3)Job Commands(进程管理命令),如图2-32所示。

图2-32 Job Commands(进程管理命令)

4)Resource Script Commands(资源脚本命令),如图2-33所示。

图2-33 Resource Script Commands(资源脚本命令)

5)Database Backend Commands(数据库后端命令),如图2-34所示。

图2-34 Database Backend Commands(数据库后端命令)

6)Credentials Backend Commands(认证后端命令),如图2-35所示。

图2-35 Credentials Backend Commands(认证后端命令)

7)Developer Commands(开发者命令),如图2-36所示。

图2-36 Developer Commands(开发者命令)

2.3.2 Burp Suite框架

Burp Suite是一种用于Web应用安全渗透测试的集成平台,拥有诸多工具。这些工具能够共享并处理同一个HTTP消息,完成渗透测试。与Metasploit类似,Burp Suite的这些工具使它几乎支持了包括漏洞分析、渗透攻击等Web应用安全渗透测试的整个过程。Burp Suite使用Java语言编写,因此天然地具备了跨平台的能力,在Windows和Linux等操作系统中都可使用。

Burp Suite共有两个版本,一个是社区版(Community Edition),另一个是专业版(Professional)。专业版提供了Web漏洞扫描功能以及一些高级工具,社区版仅提供基本的工具。Kali Linux自带的是Burp Suite社区版。

在Kali Linux中打开Burp Suite的方式为单击桌面左上角的Kali图标,打开Kali自带的工具栏,在“03-Web程序”分类中找到burpsuite并单击即可,如图2-37所示。

图2-37 启动Burp Suite

Burp Suite首页如图2-38所示。

Burp Suite实现渗透测试的基本原理是将软件搭配浏览器一起使用,实现HTTP代理,这在本质上是一种“中间人攻击”。因此,要使用Burp Suite,首先需要设置浏览器代理。

浏览器代理就是给浏览器指定一个代理服务器,让浏览器的所有请求都经过这个代理服务器。Burp Suite默认分配的代理地址是本机回环地址127.0.0.1,端口是8080,用户可在Proxy模块下的Options选项卡中看到,如图2-39所示。因此,需要将浏览器的代理服务器地址设置为127.0.0.1,将端口设置为8080。

图2-38 Burp Suite首页

图2-39 Burp Suite基本配置

Kali Linux中自带的浏览器是火狐浏览器(Firefox),它的代理设置入口为页面右上角的 按钮,单击Preferences选项卡,找到NetworkSettings子项,单击Setting按钮,在Connection Settings对话框中启动手动设置代理Manual proxy configuration,设置代理地址和端口,单击OK按钮,即可完成代理设置,如图2-40所示。

当然,新版本的Burp Suite自带浏览器,不用设置代理即可抓包。单击Open Browser按钮即可打开,如图2-41所示。

Burp Suite的模块有Dashboard模块(仪表盘任务模块)、Target模块(目标请求与响应记录模块)、Proxy模块(代理模块)、Intruder模块(入侵自动化攻击模块)、Repeater模块(请求重放模块)、Sequencer模块(序列器模块)、Decoder模块(编码解码模块)、Comparer模块(对比模块)、Logger模块(记录模块)、Extender模块(插件扩展api模块)、Project options模块(项目选项模块)和User options模块(用户选项模块)等。这里对其中常用的Target模块(目标请求与响应记录模块)、Proxy模块(代理模块)、Intruder模块(入侵自动化攻击模块)、Repeater模块(请求重放模块)进行详细介绍。

图2-40 Firefox代理设置

图2-41 Burp Suite自带浏览器

1.Target模块

Target模块即目标请求与响应记录模块,能够对访问的目标进行记录,用于设置扫描域、生成站点地图(Site map)、生成安全分析。

在Target模块的Site map中生成站点地图,如图2-42所示。

图2-42 生成站点地图

在Target模块的Issue definitions中生成安全分析,如图2-43所示。

图2-43 生成安全分析

2.Proxy

Proxy模块即代理模块,是Burp Suite人工渗透测试功能的核心。用户通过设置代理,可实现拦截、查看、修改所有在客户端和服务器端之间传输的数据,完成渗透测试。

使用Proxy模块时,在启动Burp Suite软件后,要首先单击Proxy模块的Intercept is off按钮,保证Burp Suite能拦截客户端和服务器间的数据包,这样才能实现渗透测试。在Proxy模块中,Intercept选项卡显示HTTP的请求和响应消息,用户可以在该选项卡中设置拦截规则来确定拦截的请求和响应内容,对数据包进行丢弃、放行等操作;HTTP history选项卡显示了所有请求产生的细节,包括目标服务器和端口、HTTP方法、请求URL、请求中是否包含参数或是否被人工修改、响应状态码、响应包字节大小等;WebSockets history选项卡用于记录WebSocket的消息,WebSocket是HTML5中的通信功能,它定义了一个全双工的通信信道,可以减少流量、降低网络延迟;Options选项卡用于设置代理监听地址、请求和响应的中断、响应的自动修改等功能。Proxy模块如图2-44所示。

选择Intercept选项卡时,对拦截消息的处理方式有以下几种:

1)Forward。表示让消息继续传输至服务器端。

2)Drop。表示丢弃该消息,不再对其进行任何处理。

3)Intercept is on。表示将消息拦截功能打开,拦截所有通过Burp Proxy的请求消息。

4)Action。该选项对消息有4类处理方式:一是将消息传递给Repeater等其他Burp Suite模块,二是对消息请求方法和编码的修改等,三是对请求消息设置不再拦截此IP地址的流量、不再拦截此主机的流量等,四是对消息的复制、剪切等常用操作。

5)Open Browser。表示用内置浏览器打开该消息。

选择Intercept选项卡时,会显示拦截消息的内容,如图2-44所示,由于此处为GET请求方式,因此只有Header部分,没有Body部分。

图2-44 Proxy模块

当选择HTTP history选项卡时,会展示历史HTTP请求细节,包括了请求主机信息、请求方法、请求URL、参数、响应状态码、响应字节长度、MIME类型、请求资源扩展名、请求页面标题、注释、SSL/TLS启用情况、请求的目标IP地址、Cookie、请求发生的时间以及监听的端口,如图2-45所示。单击任意想要查看的请求,即可在下方展示请求的详细内容。与Intercept选项卡一样,界面下方可以查看原始纯文本格式、参数、键值对形式的请求头和十六进制的请求包,也可以通过单击Action按钮将消息发送至其他模块或进行需要的编辑。此外,HTTP history选项卡还提供了批量操作请求以及过滤某些请求的过滤器功能。

图2-45 HTTP history选项卡

3.Intruder

Intruder模块即入侵自动化攻击模块,可实现自动对Web应用程序进行预定义的攻击,具有高度的可配置性。用户可使用Burp Suite实现用户名和密码枚举、提取Web应用程序的某些信息、SQL注入、目录遍历、应用层的拒绝服务攻击等,并能够实现自动化的攻击,这是因为Intruder允许用户在原始请求数据上修改各类请求的参数,监听并捕获这些请求的应答。在每次请求中,Intruder都可以利用一个或多个攻击载荷(Payload)在不同的位置进行重放攻击,然后分析并比对应答数据,最终获取需要的特征数据。

使用Intruder时,可在抓到的数据包上右击,选择Send to Intruder命令,进入Intruder模块,如图2-46所示。

图2-46 导入数据包到Intruder模块

当选择Positions选项卡时,可以看到自动攻击中HTTP请求模板的设置面板。用户可以在这个面板中设置利用攻击载荷的位置,请求信息中攻击载荷的使用位置用一对§符号包含,用户设置的Payload将在自动攻击过程中替换掉一对§包含的内容。用户可以在区域最上方的Attack type下拉列表中选择4种自动攻击的方式之一,如图2-47所示。

图2-47 Intruder模块

4种自动攻击方式如下:

1)Sniper:使用一组Payload集合,一次只针对一个Payload位置进行攻击,常用于测试请求参数是否存在漏洞。

2)Battering ram:使用一个Payload集合对每个标记位进行攻击。

3)Pitchfork:使用多组Payload集合在多个Payload标记上同时依次按组合顺序进行攻击。

4)Cluster bomb:使用多组Payload集合在多个Payload标记上按全排列的方式进行攻击。

当选择Payloads选项卡时,会展示4个与Payload相关的配置项,分别是Payload数量和类型设置、不同Payload类型的具体设置、Payload编码加密处理以及URL编码,如图2-48所示。

图2-48 Intruder模块的Payloads选项卡

Payload Sets:Payload数量和类型设置项中共有18种经常使用的Payload类型,包括字符串型Payload、文件型Payload、笛卡儿积形式组合的自定义迭代器Payload等。

Payload Options[Brute forcer]:Payload类型的具体配置会根据用户选择的Payload数量和类型设置项的改变而变更。以暴力破解攻击为例,当用户选择暴力破解字典型Payload时,可在具体配置中设置字典的字符集以及Payload的最大长度和最小长度,以便枚举生成字典,实现暴力破解攻击,设置界面如图2-49所示。

4.Repeater

Repeater模块即请求重放模块,可实现手动验证HTTP消息的功能,能让用户多次重放请求消息、响应消息。Repeater模块总是会结合其他模块一起使用,常用的功能是接收Proxy模块拦截的请求消息,在多次手动修改请求消息的Cookie等参数后,对服务器端的响应消息进行分析,对目标的逻辑越权等漏洞进行验证,实现Web渗透测试。

图2-49 Payload Sets和Payload Options[Brute forcer]设置界面

Repeater模块如图2-50所示。在请求消息区域,可以对请求消息进行编号,同时可修改多个请求。用户在修改完请求消息后,单击Send按钮,可将该消息发送至服务器,并接收服务器的响应消息,展示请求与响应消息的详细信息。

图2-50 Repeater模块

本章小结

本章介绍了渗透测试常用的系统Kali Linux,以及其中常用的渗透测试工具框架Metasploit和Burp Suite的基本功能和使用方法。对于Kali Linux系统,主要介绍了其安装步骤及基本配置。对于Metasploit工具,主要介绍了Metasploit的文件系统架构、7个功能模块和对渗透测试流程的支持。对于Burp Suite工具,主要介绍了其框架的基础知识及其常用的4个功能模块——Target、Proxy、Intruder和Repeater的使用方法。后续内容中,将使用这些工具进行渗透测试。 pbFt0ietS/Cm2kiEsc/J7N9VM5HvciOX8UwSJJiebTTzwlEWusPhlD2g6fdG3kKP

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开