Proxifier 指定應用程式通過代理伺服器

前陣子在玩Burp的時候發現一個困難
因為並非所有程式都是通過系統設定的Proxy來連線
像是用Indy的HTTP寫的程式,就不會遵守系統設定
雖然可以透過直接指定ProxyServer來連線
但是如要發行Release版本又得將設定取消再編譯一次
inddy.png

由於Indy不是用WinINet
所以在使用Fiddler這類基於代理伺服器的Packet analyzer時
會發現並不是所有程式都那麼「聽話」的把資訊出來

After you start Fiddler, the program registers itself as the system proxy for Microsoft Windows Internet Services (WinInet), the HTTP layer used by Internet Explorer, Microsoft Office, and many otherproducts.

Indy還好,如果是自己寫的還可以自己修改設定
但別人的程式呢?就會遇到麻煩了
除了最終手段用Wireshark來分析之外,Proxifier會是一個解決方案

Proxifier讓你可以透過自訂規則,決定哪些程式要使用代理或者直接連線
還可以指定目的地是哪些網址或埠口時才作用
也能為不同的規則設定不同的Proxy Servers
甚至還有Proxy Chain功能,透過設定多個代理伺服器來實現Tor的運作
prox.png

底下就拿之前寫的RCLottery來做示範
首先先確定Burp的Proxy Listeners設定正確

接著到Proxifier的Proxy ServersAdd剛才的Proxy
http.png

再到Proxification RulesAdd我們要測試的程式規則
並確定為Enable狀態

接著就是開啟被測試的程式,並且執行網路操作
成功擷取到了!
Result.png

Proxifier的另一個應用,就是指定程式通過Tor代理
一般會去網路連線設定中修改Proxy,指定Socks代理伺服器
不過基於上面相同的原因,並不是所有程式都會遵照系統設定
此時Proxifier可以讓我們更彈性的指定要使用Tor的程式

在電腦中安裝好Tor Browser並執行後,會監聽9150 port
Proxy Servers中加入這個設定
Tor.png

並在Proxification Rules中指定程式通過使用Proxy SOCKS5 127.0.0.1來連線
如此一來,Tor網路就不侷限於在Tor Browser使用了!

最後,其實有一套軟體可以解決非WinINet的分析問題
HTTP Analyzer v7有著強大的分析工具但無法修改request和response
它是在TCP層運作、藉由Driver實作R0 Hook(感謝Inndy Lin)
如此一來所有程式的連線只要是標準HTTP都能被記錄下再做分析

Ref:
Burp: http://portswigger.net/index.html
Fiddler: http://www.telerik.com/fiddler
The Fiddler Proxy: http://docs.telerik.com/fiddler/knowledgebase/proxy#the-fiddler-proxy
Wireshark: https://www.wireshark.org/
Proxifier: http://www.proxifier.com/
Tor Project: https://www.torproject.org/
HTTP Analyzer v7: http://www.ieinspector.com/httpanalyzer/index.html