KaliRouter安裝與使用全指南

譯者:WisFree

預估稿費:200RMB

投稿方式:發送郵件至linwei#360.cn,或登陸網頁版在線投稿

寫在前面的話

KaliRouter可以將你的Kali Linux設備變成一台路由器,你將不僅能夠記錄下所有的網路流量(Wireshark),而且還可以將HTTP和HTTPS流量發送至一個攔截代理,例如BurpSuite等等。

安裝

我們會將Kali Linux配置成一台代理型路由器,連接至這台「路由器」的客戶端(例如嵌入式設備和手機App)都可以正常進行網路通信,但是其中的某些數據包將會被我們的Kali Linux設備所攔截並使用Wireshark進行監控,並重定向至代理伺服器。Kali Linux設備以及BurpSuite都將以透明代理的形式運行,客戶端不會感受到它們的存在。整個運行架構如下圖所示:

在配置我們的Kali Linux之前,我們需要配置VMWare和網路介面。

1.t我們在VMWare中運行Kali Linux,並將網路改為橋接模式,這樣可以讓Kali Linux直接鏈接到網路之中,而被監控的設備(應用程序或手機)同樣可以正常連接至網路。

2.t我們需要連接兩個適配器(乙太網和WiFi),並給Kali分配USB適配器,我們選擇使用的是Ethernet LAN Network Adapter ASIX AX88179Atheros UB91C USB無線適配器。其實你可以使用任何一款Linux兼容的USB無線網卡,只要它支持混雜模式即可。

將Kali Linux配置成路由器

我們的Kali Linux設備會將USB網路介面的流量路由到Kali自己的網路連接,創建路由器的方法如下。

開始配置之前,我們需要先查看本機的網路介面。我們可以使用命令ifconfig查看插入USB適配器之前和之後的設備狀態。

$ ifconfig -an

我們的乙太網適配器一般會是eth1,而WiFi適配器一般是wlan0。

我們需要配置network-manager服務,告訴該服務我們會將適配器的MAC地址添加到/etc/NetworkManager/NetworkManager.conf文件的unmanaged-devices參數之中,並接管我們自己添加的介面。

[keyfile] unmanaged-devices=mac:d8:eb:97:b6:ce:12;mac:56:6b:a2:90:c4:b9n

接下來,重啟網路服務,這樣設備會進入「無管理」狀態。

$ /etc/init.d/networking restartn

乙太網配置

在創建監聽網路之前,我們需要選擇一個合適的網路地址和子網掩碼。我們這裡要選擇一個與Kali所在網路IP範圍(eth0)不同的地址空間,以此來確保受監控設備的IP地址不會跟我們的監控網路發生衝突。在我們的配置環境中,我們選擇的是172.16.0.0/12。

由於我們需要讓我們的無線網路和有線網路處於同一網路中,我們選擇使用bridge-utils工具在這兩者之間搭建一個橋樑。

$ apt-get install bridge-utilsn

接下來,刪除任何分配給有線網路介面(eth1)的IP地址。

$ ip addr flush dev eth1n

創建一個名為br0的橋接介面。

$ brctl addbr br0n

將我們的有線介面eth1添加到橋接介面br0。

$ brctl addif br0 eth1n

接下來,開啟橋接介面br0。

$ ip link set dev br0 upn

根據我們選擇的IP地址空間,給這個br0介面分配一個IP地址。因為它的功能是作為被監控設備的網關,所以我們選擇172.16.0.1。

$ ip addr add 172.16.0.1/12 dev br0n

Wi-Fi數據鏈路層

配置好乙太網介面之後,使用hostapd程序創建一個無線接入點。使用apt-get命令安裝hostapd(關於hostapd的使用和配置信息,請參考【這份文檔】):

$ apt-get install hostapdn

然後使用下列信息創建配置文件hostapd.conf:

# create a wireless network with this interface; change it if your wireless card is not wlan0 interface=wlan0 # change this if a different bridge interface was chosen bridge=br0 # the name of our wireless network ssid=Monitor-Network # Change the passphrase to something you like wpa_passphrase=Monitor-Network # the driver used driver=nl80211 auth_algs=3 # the wireless channel we listen on. channel=7 driver=nl80211 # the mode we use (g) hw_mode=g # we dont log logger_stdout=-1 logger_stdout_level=2 max_num_sta=5 rsn_pairwise=CCMP wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP CCMPn

創建完無線介面wlan0之後,我們要啟用無線接入點:

$ ip link set dev wlan0 upn

接下來,讓hostapd程序開啟監控網路:

$ hostapd ./hostapd.conf -Bn

網路配置

配置好無線和有線網路之後,我們要開啟內核選項以支持IP轉發功能,然後配置iptables將所有的網路數據包轉發至該介面。

$ sysctl -w net.ipv4.ip_forward=1 $ iptables -P FORWARD ACCEPT $ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEn

網路服務

我們使用dnsmasq來作為我們的DNS和DHCP伺服器。使用下列命令安裝dsnmasq:

$ apt-get install dnsmasqn

然後使用下列信息創建並配置dnsmasq.conf文件:

# listen to this interface; change it if a different bridge name was chosen interface=br0 # give IP addresses, lease is valid for 8 hours dhcp-range=172.16.0.10,172.31.255.254,8h # router dhcp-option=3,172.16.0.1 # dns server dhcp-option=6,172.16.0.1 # upstream DNS server server=8.8.8.8 log-queries log-dhcp # include addresses address=/attacker.com/172.16.0.1n

配置完成之後,我們需要重啟dnsmasq守護進程:

$ service dnsmasq restartn

嗅探並攔截流量

在我們的監控網路中所有設備的網路流量都是通過橋接介面br0傳遞的,我們可以直接通過wireshark來嗅探該介面的網路流量。我們這裡選擇使用tshark,它相當於是命令行界面的wireshark。接下來,我們將監聽介面br0,並將所有監聽到的流量數據寫入到一份文件中(output.pcap)。

$ tshark -i br0 -w ./output.pcap -Pn

一般來說,我們還需要攔截流量,因此我們還需要設置一些iptables規則來將HTTP/1.1和HTTPS流量重定向到我們的攔截代理(BurpSuite)。關於其他協議的設置方法,請參考這份【文檔】。

第一條規則將會攔截埠80和443的所有tcp包(HTTP和HTTPS),並將數據發送給BurpSuite。

$ iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to-destination burpip:burp_http_port $ iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to-destination burpip:burp_https_portn

第二條規則將確保響應信息在發送到客戶端之前先經過我們的Kali Linux。

$ iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/12 -d burpip -j MASQUERADEn

第三條規則其實並不是必須的,這條規則將確保Kali路由能夠正確地將數據包發送給BurpSuite。

$ iptables -A FORWARD -s 172.16.0.0/12 -d burpip -i br0 -o eth0 -p tcp --dport burp_http_port -j ACCEPT $ iptables -A FORWARD -s 172.16.0.0/12 -d burpip -i br0 -o eth0 -p tcp --dport burp_https_port -j ACCEPTn

接下來,我們要將BurpSuite配置成一個透明代理。打開BurpSuite,點擊Proxy標籤,然後選擇Options菜單,然後點擊Add按鈕。

對於HTTP流量,我們要給BurpSuite綁定80埠,然後勾選All interfaces選項。

接下來我們跳轉到Request handling標籤頁,然後勾選Support invisible proxying選項。這一步操作是必須的,勾選之後客戶端將不會感受到BurpSuite的存在。

對於HTTPS流量,我們需要給BurpSuite綁定埠443,然後勾選All interfaces。

然後點擊Request handling標籤,按照如下圖所示的方法進行設置。

自動化

為了方便起見,我們應該儘可能地實現自動化。你可以在我的GitHub主頁找到相關的配置文件以及腳本

首先,從github獲取Kalirouter的項目源碼:

$ git clone https://github.com/koenbuyens/kalirouter.gitn

安裝相關的依賴組件:

apt-get install dnsmasq hostapd bridge-utilsn

插入USB適配器,然後使用命令iptables -a找出適配器的名字和MAC地址。

告訴network-manager服務我們將通過添加適配器MAC地址來接管相關介面,並運行命令/etc/init.d/networking restart來重啟網路服務。/etc/NetworkManager/NetworkManager.conf文件的修改內容如下所示。

[keyfile] unmanaged-devices=mac:d8:eb:97:b6:ce:12;mac:56:6b:a2:90:c4:b9n

修改hostapd.conf文件,將其指向正確的無線網路介面(默認為wlan0)。

修改monitor.sh腳本中的介面變數,將其指向正確的介面。其中的WIRELESS_MONITOR_INTERFACE, WIRED_MONITOR_INTERFACE和 INTERNET_INTERFACE分別對應的是USB無線網卡、USB有線網卡和Kali的VMWare介面。默認為wlan0、eth1和eth0。

修改monitor.sh腳本中的代理變數,將其指向BurpSuite的IP地址以及埠,其中PROXYBOX, PROXYBOX_HTTP_PORT和 PROXYBOX_HTTPS_PORT分別對應的是IP地址、HTTP埠和HTTPS埠,默認為172.16.0.1、80和443。

運行下列命令執行腳本文件:

$ ./monitor.shn

輸出數據保存在dumps/output.pcap文件中,你可以通過按下Ctrl+C來停止監控網路流量。

攔截嵌入式設備、移動應用和Windows應用程序的通信數據

運行了我們的監控腳本之後,我們就可以開始監控目標設備的網路流量了。

嵌入式設備

我們用一台嵌入式設備連接到了我們的監控網路中,然後讓設備開始正常運行。如下圖所示,我們的嵌入式設備(10.0.0.38)正在通過UDP與一個內網移動應用進行通信(192.168.1.230)。

移動應用

在開始監控移動應用之前,我們必須先設置好相關的信任證書。

1.t通過點擊Proxy標籤頁中的Import/export CA certificate選項導出BurpSuite證書。

2.t通過選擇Certificate in DER format選項將證書導出為DER文件。

對於安卓端應用來說,我們先要添加信任證書。

1.t進入安卓系統的安全設置中。

2.t然後從SD卡安裝證書。

3.t選擇證書。

4.t命名證書。

導入證書之後,我們就可以開始監聽應用程序的網路數據了。

1.t讓移動設備連接到我們的監控網路之中,密碼是我們在hostapd配置文件中設置的密碼。

2.t然後運行應用程序,下面給出的例子是Amtrak應用程序。

3.t我們可以在BurpSuite中看到監聽到的安卓應用HTTPS流量。

4.t我們可以觀察到wireshark記錄下的所有的流量(圖例為Facebook App)。

Windows應用程序

1.讓我們的Windows設備連接到我們的監控網路之中。

2.t導入Windows證書,詳細步驟請參考這份【文檔】。

3.t開啟需要監控的應用程序,我們這裡直接選擇Web瀏覽器。

4.tBurpSuite和Wireshark都將接收到所有的網路流量。

總結

Kalirouter可以幫助我們將Kali Linux設備轉換成一個能夠攔截網路流量的代理路由器,對該項目感興趣的同學可以訪問Kalirouter的GitHub主頁獲取詳細信息【傳送門】。註:同學們還可以在樹莓派上使用Kalirouter。

參考資料

psattack.com/articles/2

cybergibbons.com/securi

ubuntuforums.org/showth

help.ubuntu.com/communi

wiki.archlinux.org/inde

wiki.archlinux.org/inde

wiki.debian.org/BridgeN

help.ubuntu.com/lts/ser

tldp.org/HOWTO/Transpar


推薦閱讀:

最經典的前端面試題之一,你能答出什麼幺蛾子?
HTML5的Websocket(理論篇 I)
談談 HTTP 緩存
APP精細化HTTP分析(二):響應性能分析與優化

TAG:HTTP | VMware威睿 | Linux |