內網穿透好工具——ProxyChains
1.1 ProxyChains簡介
ProxyChains是一款Linux系統下的代理工具,強制由任一程序發起的TCP連接請求必須通過諸如 SOCKS4, SOCKS5 或HTTP(S) 代理。支持的認證方式包括:SOCKS4/5的用戶/密碼認證,HTTP的基本認證。允許TCP和DNS通過代理隧道,并且可配置多個代理。由于很多優秀的程序位于GitHub社區,使用國內服務器部署GitHub上面的程序時,經常會在拉取安裝包時下載超時失敗,或是訪問國外網站非常慢,例如用git、wget等等,這個時候就可以通過proxychain工具來使用socks或http代理進行網絡加速訪問。ProxyChains早期版本在https://proxychains.sourceforge.net/可以下載,后續基于該版本開發了一些新的代碼,例如https://github.com/haad/proxychains及https://github.com/rofl0r/proxychains-ng。
1、ProxyChains的工作原理
ProxyChains的工作原理是在用戶執行的網絡請求前插入一個代理層。當用戶在終端執行一個程序時,該程序的網絡請求會首先被ProxyChains捕獲。然后,ProxyChains會根據配置文件中指定的代理服務器信息,將這些請求轉發給代理服務器。代理服務器會對請求進行處理,并將處理后的結果返回給ProxyChains,最終由ProxyChains將結果傳遞給原始程序。這樣,用戶就可以通過ProxyChains來控制終端應用程序的網絡訪問行為。
其工作原理可以分為以下幾個關鍵部分:
(1) 動態鏈接庫劫持 (LD_PRELOAD)
ProxyChains 使用動態鏈接庫劫持技術(LD_PRELOAD)來攔截和重定向應用程序的網絡請求。具體來說,它通過在應用程序啟動時加載一個特殊的動態鏈接庫(通常是 libproxychains.so),這個庫會攔截標準的網絡函數調用(如 connect, send, recv 等),并將其重定向到代理服務器。
(2) 配置文件
ProxyChains 的配置文件(通常是 /etc/proxychains.conf)定義了代理服務器的列表和其他相關設置。配置文件中可以指定一個或多個代理服務器,以及它們的類型(如 SOCKS4, SOCKS5, HTTP 等)和認證信息。
例如,一個典型的配置文件可能如下所示:
# /etc/proxychains.conf
[ProxyList]
socks5 127.0.0.1 1080
http 192.168.1.1 8080
(3)攔截和重定向
當應用程序發起網絡請求時,ProxyChains 的動態鏈接庫會攔截這些請求,并根據配置文件中的設置將請求發送到指定的代理服務器。具體步驟如下:
●攔截請求:當應用程序調用 connect 函數嘗試建立網絡連接時,ProxyChains 的動態鏈接庫會攔截這個調用。
●查找代理:動態鏈接庫會讀取配置文件中的代理列表,確定應該使用哪個代理服務器。
●建立代理連接:動態鏈接庫會通過選定的代理服務器建立連接。如果是多個代理服務器,它會按照配置文件中的優先級順序依次嘗試。
●轉發請求:一旦與代理服務器建立連接,動態鏈接庫會將應用程序的網絡請求通過代理服務器轉發到目標服務器。
●接收響應:代理服務器將目標服務器的響應返回給動態鏈接庫,動態鏈接庫再將響應傳遞回應用程序。
示例
假設有一個配置文件 /etc/proxychains.conf,內容如下:
[ProxyList]
socks5 127.0.0.1 1080
http 192.168.1.1 8080
[ProxyDNSServers]
1.1.1.1
8.8.8.8
[IgnoreHosts]
127.0.0.1
localhost
當您使用 proxychains 前綴運行命令時,例如:
proxychains wgethttp://example.com
ProxyChains 的工作流程如下:
●攔截 connect 調用:動態鏈接庫攔截 wget 發起的 connect 調用。
●查找代理:讀取配置文件,確定使用第一個代理服務器 127.0.0.1:1080。
●建立代理連接:通過 127.0.0.1:1080 建立連接。
●轉發請求:將 wget 的請求通過 127.0.0.1:1080 轉發到 example.com。
●接收響應:從 example.com 接收到的響應通過 127.0.0.1:1080 返回給動態鏈接庫,再傳遞給 wget。
2.ProxyChains的適用場景
需要通過代理上網,或者需要突破諸如設置了端口限制的防火墻;或者要使用telnet,ssh,wget,vnc,apt,ftp,nmap等應用;事實上,甚至可以通過ProxyChains設置反向代理來讓你能夠從外部訪問你的內部局域網。突破防火墻限制訪問互聯網。
3.特點
(1)多協議及認證方式支持
支持多種代理協議,包括SOCKS4、SOCKS5和HTTP(S)。支持的認證方式包括:SOCKS4/5的用戶/密碼認證,HTTP的基本認證。
(2)透明代理
可以攔截并修改終端應用程序的網絡請求,使得這些請求通過代理服務器進行轉發,而無需修改應用程序本身的設置。
(3)防止DNS泄漏
通過代理服務器處理DNS請求,確保DNS查詢不會泄露用戶的實際IP地址,從而增強隱私保護。
(4)多代理支持
可以配置多個代理服務器,并指定優先級順序,當某個代理失效時,自動切換到下一個可用的代理。
(5)自定義忽略列表:
允許用戶指定某些域名或IP地址不通過代理服務器訪問,這對于訪問本地資源或內部網絡服務非常有用。
1.2ProxyChains安裝及使用
1.Linux及手工安裝
(1)Debian/Ubuntu系統安裝
apt update apt install proxychains -y
apt install proxychains4 -y
(2)Centos系統安裝
yum install -y proxychains-ng
(3)手動安裝
git clonehttps://github.com/rofl0r/proxychains-ng.git
yum install gcc
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
make install
make install-config
cd .. && rm -rf proxychains-ng
which proxychains
2.ProxyChain配置使用
(1)提前準備好一個可用的socks或http代理。
(2)安裝后默認配置文件在 /etc/proxychains.conf 或 /etc/proxychains4.conf ,通過vi或nano編輯該文件,拉到最下面填入自己的代理信息,如果沒設置用戶密碼認證則省略,添加后保存退出。
socks5 連接IP地址 連接端口 用戶名 密碼
3.測試及使用proxychains
proxychains4 curl google.com
proxychains4 bash
4.配置別名
(1)編輯profile文件,增加別名配置:
vi /etc/profile
alias pc=proxychains4
(2)查看profile
source /etc/profile
(3)測試使用
pc curl google.com
1.3 免費代理IP驗證
1.獲取socks5代理IP地址
(1)通過一些免費提供socks5代理的網頁獲取
https://www.lumiproxy.com/zh-hans/free-proxy/
(2)通過資產測繪工具獲取
https://quake.360.net/中搜索service: "socks5"可以獲取提供socks5服務的IP地址,如圖1所示。
圖1 獲取socks5 IP地址
2.編寫check_proxies.sh腳本
#!/bin/bash
# 代理列表
proxies=(
"socks5://184.95.235.194:1080"
"socks5://23.19.244.109:1080"
"socks5://172.104.209.44:1080"
"socks5://45.43.11.72:1080"
"socks5://38.113.171.88:57775"
"socks5://100.1.53.24:5678"
"socks5://38.83.108.88:5678"
"socks5://8.39.228.25:39593"
)
# 測試URL(可選擇一個通常能正常響應的URL)
test_url="http://example.com"
# 掃描每個代理
for proxy in "${proxies[@]}"; do
echo "正在測試代理: $proxy"
if curl -s --proxy "$proxy" --connect-timeout 5 "$test_url" > /dev/null;
then
echo "代理可用: $proxy"
else
echo "代理不可用: $proxy"
fi
done
3.執行測試獲取可用的socks5代理IP及端口
chmod+x check_proxies.sh
./check_proxies.sh
執行效果如圖2所示,可以看到代理可用的地址為172.104.209.44
圖2 對socks5代理進行校驗
2.查看及編輯proxychains4
cat /etc/proxychains4.conf
sudo vi /etc/proxychains4.conf
socks5 172.104.209.44 1080
如圖3所示,加入socks5的代理地址及端口,如果socks5有用戶名及密碼驗證,則需要添加用戶名及密碼信息。
圖3 編輯proxychains配置文件
3.檢驗proxychains
對proxychains進行訪問測試,例如執行“proxychains curlhttp://ifconfig.me”,如圖4所示,顯示代理可以使用。
圖4 檢驗proxychains
4.實際使用
(1)更新git
proxychains4 git
clonehttps://github.com/your_username/your_repository.git
(2)內網穿透使用
proxychains4 msfconsole //啟動msfconsole
利用msf下的smb_login模塊進行掃描,配置信息如下,執行后結果如圖5所示。
use auxiliary/scanner/smb/smb_login
show options
set smbuser administrator
set smbpass 11111111
set rhosts 192.168.22.16
圖5 內網穿透進行smb口令掃描
(3)其他一些內網滲透使用參考命令
查看共享文件:
proxychains smbclient -L //192.168.22.16 -U .\administrator%11111111
proxychains smbclient -L //192.168.22.16/d$ -U .\administrator%11111111
使用wmiexec模塊:
auxiliary/scanner/smb/impacket/wmiexec