<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/112

            0x00 相關背景介紹

            隨著人們的生活越來越離不開網絡,也越來越離不開移動手機,一般的公共廠商都已經將wifi作為基礎服務進行提供,譬如在星巴克、麥當勞等公共場所邊點杯熱飲邊“蹭網”,已經是一個基本的習慣了,甚至一些大型的電信提供商已經嘗試將wifi作為一個基礎的接入。如今公共的wifi很多,尤其是免費的,手機上還有幫助尋找免費wifi的各類app。很多人為了省流量,看到免費的wifi,總會去連接一下嘗試網上沖浪。不過,在這些免費的wifi以及大家使用wifi的習慣,加上手機及app的默認行為,就可以導致一些嚴重安全問題。

            0x01 成因

            隨著智能手機的普及,手機上各類app越來越豐富,app避免不了與服務端的通信,因此,在這些不安全的公共無線流量里,你手機里的app可能會泄露你的各種機密信息,而我們的手機如果開啟了WiFi功能,就會自動掃描附近的無線網絡信號: 20130521173819_43368.png 當我們的手機在成功連接了一個WiFi之后,就會用ssid和密碼等相關信息保存在本地的一個配置文件里。 烏云上也有白帽子報告過安卓明文存儲WiFi配置文件 WooYun: Android手機明文存儲使用過的Wifi密碼 當發現有無線網絡信號存在的時候,手機就會基于這個配置文件嘗試去匹配這個廣播出來的ssid,一旦發現匹配上了,就會按照配置文件里面的信息去連接這個WiFI,如果連接不成功,發現還有可以匹配的SSID,手機就會嘗試去連接下一個。無論是安卓還是IOS上的這個設計,雖然顯的非常的人性化,但是它真的很不安全。很多時候,安全和便利就是矛盾的,魚和熊掌的關系,可以設想,在未來移動互聯時代,我們的手持設備在越來越便利,越來越人性化的同時,必然還會有更多的安全問題存在。手機里的一些APP在網絡連通了之后,會主動向服務端發出一些請求,而在這些請求里很有可能就包含有攻擊者感興趣的敏感信息。這些敏感信息一般包括,用戶名,密碼,cookie,身份標識等等,而APP在一個不安全的網絡環境里發出請求,這些敏感信息就有可能暴露在攻擊者的面前。 一個典型的應用場景就是,你上午在公司辦公,那么連接上了公司OA的wifi,然后中午出去用餐就可能鏈接到星巴克的wifi,而當你打車去客戶的途中很可能在一個紅綠燈的地方你就自動鏈接上了附近的麥當勞wifi,最要命的是這些全部是在你不知情的情況下完成的。

            0x02 數據劫持

            在一個可控的網絡環境里,劫持數據有很多方法。比較有名的網絡層抓包工具有wireshark,tcpdump,都是很好的網絡協議分析工具。我們現在手機上的大多數APP應用層都是使用的HTTP協議,因此我們很多的在web安全測試里面用到的分析工具如fiddler,burp,httpanalyzer,Charles等也都是可以用來分析或者劫持APP的通信流。 20130521173854_54299.png 20130521173916_79085.png 20130521174119_86988.jpg 這些都是劫持的很常見的HTTP流量,里面不乏很多敏感信息。

            0x03 攻擊構想

            如果我們手機里的app默認會進行很多敏感的請求,譬如微博會自動去登陸和獲取最新的微博;如果我們的手機默認會鏈接周圍已經被保存sid的wifi;那么我們為什么不能做一個在地鐵上使用的可以抓取周圍的人的微博認證信息的wifi呢?通過內置最常見的sid和信息,我們可以使得周圍的人會自動鏈接上我們的wifi,通過抓取相應的數據取得里面的敏感信息我們理論上是可以劫持他的微博的

            0x04 環境搭建

            無論是白帽子試驗還是攻擊者搭建一個釣魚環境,便攜性都是這類攻擊中需要首先考慮到的。硬件方面便攜的路由器是一個不錯的選擇。比如下面tp-link的這款wr-703n,非常小巧。也具備一定的定制性,雖然配置一般,但是定制一個靈活小巧的系統還是非常方便的。 20130521174149_89942.png 軟件方面,可以選擇的嵌入式系統很多,比較常見的有DD-WRT、OpenWRT和AirSnarf等。這里推薦OpenWRT,網上關于OpenWRT的文檔非常 全面,可定制性也比較強。它是一個比較精簡的linux發行版,系統要求非常低,所以非常適合我們的要求。下面是它的官網wiki。 20130521174204_27344.png 刷完openwrt官方固件,為了便于管理可以添加個web端的管理界面,在openwrt里,比較成熟的就是luci。可以利用opkg直接安裝,opkg是一個輕量快速的套件管理系統,目前已成為opensourse界嵌入式系統標準。常用于路由、交換機等嵌入式設備中,用來管理軟件包的安裝升級與下載。
            opkg update 
            
            opkg install luci 
            
            /etc/init.d/uhttpd enable 
            
            /etc/init.d/uhttpd start 
            
            在瀏覽器訪問路由器的網關地址即可看到luci界面了,就可以在瀏覽器直觀的配置路由器了。為了配置多ssid,我們可以在openwrt上開啟vlan來模擬多個虛擬子網如vlan1和vlan2
            config switch eth1  
            option reset 1  
            option enable_vlan 1
            
            config switch_vlan  
            option vlan 1  
            option device eth1  
            option ports '0 1 2 5t'
            
            config switch_vlan  
            option vlan 2  
            option device eth1  
            option ports '3 5t'
            
            兩個vlan網絡接口分別為eth1.0和eth1.1,0、1、2口為一個子網,3口單獨一個子網。現在把eth1.0和eth1.1兩個網絡接口組成一個網橋lan:
            config interface lan  
            option type bridge  
            option ifname 'eth1.0 eth1.1'  
            option proto none  
            
            lan默認不設置ip,如果想遠程訪問OpenWrt,則必須按情況設置static或dhcp。 關閉防火墻,因為網橋用不著:
            /etc/init.d/firewall disable
            
            重啟網絡后可以用ifconfig看到很多網絡接口,只要監聽br-lan就行了:
            br-lan Link encap:Ethernet HWaddr ××××××××××××××××××  
            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1  
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
            collisions:0 txqueuelen:0  
            RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
            
            eth1 Link encap:Ethernet HWaddr \*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\**  
            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1  
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
            collisions:0 txqueuelen:1000  
            RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)  
            Interrupt:14
            
            eth1.0 Link encap:Ethernet HWaddr \*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\*  
            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1  
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
            collisions:0 txqueuelen:0  
            RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
            
            eth1.1 Link encap:Ethernet HWaddr \*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\\*\*\*|\*  
            UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1  
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
            collisions:0 txqueuelen:0  
            RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
            
            lo Link encap:Local Loopback  
            inet addr:127.0.0.1 Mask:255.0.0.0  
            UP LOOPBACK RUNNING MTU:16436 Metric:1  
            RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
            TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
            collisions:0 txqueuelen:0  
            RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
            
            在OpenWrt里安裝Tcpdump:
            opkg install tcpdump
            
            運行Tcpdump監聽POP郵箱密碼:
            tcpdump -X -i br-lan port 110
            
            /udisk/tcpdump -XvvennSs 0 -i br-lan tcp[20:2]=0x4745 or tcp[20:2]=0x4854 -w ./udisk/test.cap 
            
            將結果dump到本地,0x4745 為"GET"前兩個字母"GE",0x4854 為"HTTP"前兩個字母"HT"。 注意:tcpdump 對截獲的數據并沒有進行徹底解碼,數據包內的大部分內容是使用十六進制的形式直接打印輸出的。顯然這不利于分析網絡故障,通常的解決辦法是先使用帶-w參數的tcpdump 截獲數據并保存到文件中,然后再使用其他程序(如Wireshark)進行解碼分析。當然也應該定義過濾規則,以避免捕獲的數據包填滿整個硬盤。 下圖是test.cap在wireshark中的展現。 http://static.wooyun.org/20141017/2014101711485816247.png 可以看到所有報文例如http協議的內容可以很方便的查看到。如果你的通信報文沒加ssl的話,配置下你的tcpdump,應該能捕獲到很多密碼明文了:)

            0x05 修復方案

            對于這一類的公共無線安全問題,目前還沒有比較統一的解決方案,但是我們可以做到在一個我們不信任的網絡環境里,我們不要隨便開啟我們的WiFi功能,而且要定期清理手機里保存的各類公共WiFi配置,以防止被利用。

            0x06 相關其他安全問題

            關于HTTPS流量的劫持問題,目前比較常用的方法是通過中間人替換證書,將一個連接分割成兩部分這樣的方式。但是這樣在這個攻擊里面會有個問題就是,怎么替換客戶端的證書,如果客戶端開啟了證書驗證功能的話?歡迎大家討論。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线