• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            和Charles同樣強大的iOS免費抓包工具mitmproxy

            轉載自:http://mrpeak.cn/blog/mitmproxy/

            現階段給iOS設備進行網絡抓包的手段非常之多,除了我之前介紹的tcpdump,wireshark之外,還有Charles,以及和Charles同樣好用的mitmproxy,其實還有更多,比如更小眾的debookee。似乎知道Charles的同學更多一些,但其實Charles有的功能mitmproxy基本都有,mitmproxy還免費,而且對于terminal用戶來說使用起來更親近。

            如何使用mitmproxy?

            安裝mitmproxy

            我們可以通過brew或者pip來安裝mitmproxy,沒有安裝brew的同學可以先通過如下命令安裝brew:

            /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 

            完成之后,執行如下命令安裝mitmproxy

            brew install mitmproxy 
            使用mitmproxy抓包

            第一步,首先啟動mitmproxy,在terminal輸入:

            mitmproxy 

            第二步,再在iPhone上設置http代理:

            IP地址填你Mac系統當前的IP,端口默認8080。

            可以通過在terminal輸入ifconfig en0獲取Mac的IP地址:

            第三步,第一次使用mitmproxy的時候需要在iPhone上安裝CA證書,這一步和Charles一樣都需要做,原因后面解釋。打開iPhone Safari,輸入地址:mitm.it,在下圖中點擊Apple安裝證書。

            第三步只需要做一次。

            觀察mitmproxy流量

            接下來我們就可以使用mitmproxy查看所有通過iPhone端的http請求了,包括https請求,如何破解https流量的后面也會分析。

            mitmproxy初看起來可能不如Charles直觀,其實稍微把玩下就用起來很順了,mitmproxy是基于terminal交互的,主要分為兩個界面:請求列表界面和請求詳情界面。

            請求列表界面

            請求詳情界面

            大部分時候我們都是在這兩個界面之間切換,切換方式也非常簡單。可以在列表界面,用鼠標點擊某個請求進入詳情界面,但mitmproxy美妙之處在于可以用快捷鍵來完成界面的切換和功能的使用,而且快捷鍵與vim保持一致。

            所以我們可以:

            • 在列表界面,按用j,k或者上下方向鍵在列表上瀏覽。
            • 在列表界面,按回車進入詳情界面。
            • 在詳情界面,按q,返回列表界面。
            • 在詳情界面,按tab鍵或者h,l,在Request,Response,Detail三個tab之間切換。按j,k或者上下方向鍵可以滾動查看詳情。
            • 在列表界面,按G跳到最新一個請求。
            • 在列表界面,按g跳到第一個請求。
            • 在列表界面,按d刪除當前選中的請求,按D恢復剛才刪除的請求。

            上面上面的幾個快捷鍵就基本可以完成絕大部分的HTTP請求分析。

            攔截http請求

            mitmproxy也可以攔截請求,操作起來也很方便。

            我們現在列表界面輸入i,進入Intercept Filter模式。按esc可以退出intercept filter模式。

            在intercept filter模式輸入我們想要的filter就可以開始攔截了,比如我輸入baidu\.com,按回車,所有域名中帶baidu.com的請求就被攔截了,被攔截的請求會用橙色標記出來:

            請求攔截會后可以編輯后再發送,也可以直接放行,按a就直接放行了。

            編輯請求再發送

            在上面攔截請求之后,我們可以編輯之后再發送。首先當選中被攔截的請求按回車進入詳情頁面,在詳情頁面按tab鍵可以在三個tab(Request,response,detail)之間切換,按e之后進入詳情編輯模式:

            按e進入編輯模式之后,我們要進一步選擇編輯的request部分,如下圖箭頭所示選中一個按對應的字母就可以了:

            之后就可以使用方向鍵或者h,j,,k,l,選中自己想要編輯的字段,回車之后就可以輸入新內容,按esc退出當前編輯,按a可以再新建一個field,按d可以刪除當前field,按esc退回上一個界面,下圖為Request Header的edit界面:

            看著快捷鍵挺多,其實和vim非常相似,把玩個幾分鐘之后就可以熟練使用了,比Charles的圖形界面點擊起來要快捷很多。

            mitmproxy還有很多其他的功能,感興趣的可以去官網https://mitmproxy.org查看。

            用一句話總結mitmproxy:既免費又好用

            為何要安裝CA證書?

            同Charles一樣,mitmproxy也需要在iPhone設備上安裝CA證書。

            這是因為mitmproxy要攔截解析https請求的話,要實施中間人攻擊。正常情況下中間人攻擊無法通過客戶端的證書校驗,mitmproxy的做法是臨時實時的生成自己的證書,但這臨時的證書要被客戶端信任,就只能在iPhone設備上安裝一個被信任的CA來簽發臨時的證書。也就是說,你信任了安裝的mitmproxy的證書,也就信任了mitmproxy作為CA所簽發的所有證書。

            但是,這是一個非常危險的行為。

            安裝信任第三方CA證書是個危險的行為,無論是Charles還是mitmproxy,信任之后,第三方就可以無條件實施中間人攻擊了,你手機上很多App自以為安全的https連接通道都不再安全了,你的Safari通過https瀏覽的網頁內容也可能被竊聽了。

            所以,建議調試完之后在手機上刪除第三方CA證書。

            無論是Charles,還是mitmproxy,在調試完之后記得在【設置】-【通用】-【描述文件】中刪除證書。

            mitmproxy是如何實施中間人攻擊的?

            知其然還要知其所以然,學會用工具之后還要明白工具背后的原理,mitmproxy是如何實施中間人攻擊的呢?

            證書校驗中一個重要環節是hostname驗證。

            獲取正確的hostname

            mitmproxy作為https代理,捕捉到手機端的請求之后,會發送一個同樣的請求到server,并和server展開安全握手獲取server的Certificate,再從Certificate中獲取Common Name和Subject Alternative Name。簽一個和Common Name,Subject Alternative Name一致的證書就可以騙過客戶端了。所以即使客戶端請求是使用的IP地址,這種方式也是行得通的。

            如何防止中間人攻擊?

            iOS預防上述的中間人攻擊也很簡單,在客戶端App做ssl pinning就可以了。

            ssl pining分為certificate pinning和public key pinning兩種,目前主流的第三方HTTP framework(AFNetworking和Alamofire)都支持ssl pinning功能。

            做了證書或者公鑰綁定之后,Charles和mitmproxy的https流量都無法正常獲取了。

            另外我個人建議不光要做ssl pinning,任何經過https發送的內容App要再自己做一層加密,沒有絕對的安全,保不準哪天https流量就被人破解了。

            之前Path偷偷上傳用戶通訊錄的丑聞就是因為,Path既沒有做ssl pinning,也沒有對上傳的內容做加密,最后就只有程序員背鍋了,這種事情產品經理又怎么會了解呢。

            posted on 2017-12-02 19:34 楊粼波 閱讀(727) 評論(0)  編輯 收藏 引用

            国产一区二区精品久久凹凸 | 国产V亚洲V天堂无码久久久| 免费无码国产欧美久久18| 精品国产日韩久久亚洲| 亚洲va久久久噜噜噜久久天堂| 久久国产精品无码一区二区三区| 国产精品美女久久久久| 狠狠人妻久久久久久综合| 久久综合久久美利坚合众国| 韩国三级大全久久网站| 久久天天躁狠狠躁夜夜2020一| 久久无码av三级| 亚洲国产精品一区二区久久hs| 99久久无码一区人妻| 狼狼综合久久久久综合网| 久久久久亚洲?V成人无码| 精品永久久福利一区二区| 久久久久久久综合狠狠综合| 精品久久久久久中文字幕| 久久精品天天中文字幕人妻| 一级a性色生活片久久无少妇一级婬片免费放| 久久青青草原精品影院| 久久综合狠狠综合久久97色| 无码任你躁久久久久久老妇App| 2022年国产精品久久久久| 中文字幕无码精品亚洲资源网久久| 久久青青草原精品影院| 狠狠88综合久久久久综合网| 亚洲欧洲精品成人久久曰影片| 国产精品久久久久久久| 亚洲级αV无码毛片久久精品| 久久亚洲精品国产亚洲老地址| 99久久99久久精品国产片果冻| AAA级久久久精品无码片| 无码人妻久久一区二区三区免费| 久久久久人妻一区二区三区| 伊人久久综合无码成人网| 久久精品桃花综合| 一本久道久久综合狠狠爱| 日韩AV无码久久一区二区| 久久久久久亚洲精品成人|