在Windwos中,權(quán)限大概分為四種,分別是Users、Administrator、System、TrustedInstaller。在這四種權(quán)限中,我們經(jīng)常接收到的是前三種,下面我們對(duì)這幾種權(quán)限進(jìn)行分析:
Users:普通用戶權(quán)限,是系統(tǒng)中最安全的權(quán)限(因?yàn)榉峙浣o該組的默認(rèn)權(quán)限不允許成員修改操作系統(tǒng)的設(shè)置或用戶資料)。
Administrator:管理員權(quán)限,可以利用Windows的機(jī)制將自己提升為System權(quán)限,以便操作SAM文件等。
System:系統(tǒng)權(quán)限,可以對(duì)SAM等敏感文件進(jìn)行讀取,往往需要將Administrator權(quán)限提升到System權(quán)限才可以對(duì)散列值進(jìn)行Dump操作。
TrustedInstaller:Windows中的最高權(quán)限,對(duì)系統(tǒng)文件,即使擁有System權(quán)限也無(wú)法修改,只有擁有TrustedInstaller權(quán)限才可以修改系統(tǒng)文件。
低級(jí)別權(quán)限將使得滲透測(cè)試受到很多限制,因此,在滲透測(cè)試中,熟悉提權(quán)操作對(duì)滲透測(cè)試工作有很大的幫助,提升權(quán)限的方式分為以下兩類:
縱向提權(quán):低權(quán)限角色獲得高權(quán)限角色的權(quán)限。例如,一個(gè)Webshell權(quán)限通過(guò)提權(quán),擁有了管理員權(quán)限,這種權(quán)限就是縱向提權(quán),也稱為權(quán)限升級(jí)。
橫向提權(quán):獲得同級(jí)別角色的權(quán)限。例如,在系統(tǒng)A中獲得了系統(tǒng)B的權(quán)限,就稱為橫向提權(quán)。
常見(jiàn)的權(quán)限提升方法有系統(tǒng)內(nèi)核溢出漏洞提權(quán)、數(shù)據(jù)庫(kù)提權(quán)、錯(cuò)誤的系統(tǒng)配置提權(quán)、組策略首選項(xiàng)提權(quán)、Web中間件漏洞提權(quán)、DLL劫持提權(quán)、濫用高權(quán)限令牌提權(quán)、第三方軟件/服務(wù)提權(quán)等,下文我們將對(duì)一些常見(jiàn)的提權(quán)方法及防范進(jìn)行分析。
2|0系統(tǒng)內(nèi)核溢出漏洞提權(quán)分析及防范
2|1系統(tǒng)內(nèi)核溢出漏洞提權(quán)分析
系統(tǒng)內(nèi)核溢出漏洞提權(quán)是一種通用的提權(quán)方法,攻擊者可以使用該方法繞過(guò)系統(tǒng)的所有安全限制。攻擊者利用該漏洞的關(guān)鍵是目標(biāo)系統(tǒng)沒(méi)有及時(shí)安裝補(bǔ)丁——即使微軟已經(jīng)針對(duì)某個(gè)漏洞發(fā)布了補(bǔ)丁,但如果系統(tǒng)沒(méi)有立即安裝補(bǔ)丁,就會(huì)讓攻擊者有機(jī)可乘。然而,這種提權(quán)方法也存在一定的局限性——如果目標(biāo)系統(tǒng)的更新工作較為迅速和完善,那么攻擊者想要通過(guò)這種方法提權(quán),就必須找到該系統(tǒng)存在的0day漏洞。
2|2知識(shí)點(diǎn)
"WMIC"是"Windows Management Instrumentation Command-line"的縮寫(xiě),WMIC是Windows平臺(tái)上最有用的命令行工具,使用WMIC,不僅可以管理本地計(jì)算機(jī),還可以管理同一域內(nèi)的計(jì)算機(jī)(需要一定的權(quán)限),而且在被管理的計(jì)算機(jī)上不必事先安全WMIC。
WMIC在信息收集和后滲透測(cè)試階段是非常實(shí)用的,可以調(diào)取和查看目標(biāo)機(jī)器的進(jìn)程、服務(wù)、用戶、用戶組、網(wǎng)絡(luò)連接、硬盤(pán)信息、網(wǎng)絡(luò)共享資源、已安裝的補(bǔ)丁、啟動(dòng)項(xiàng)、已安裝的軟件、操作系統(tǒng)的相關(guān)信息和時(shí)區(qū)等。
2|3系統(tǒng)內(nèi)核溢出漏洞提權(quán)防范
在關(guān)于此提權(quán)方式的分析中已經(jīng)提到過(guò)了,防范的最好方法就是按時(shí)打官方發(fā)布的最新補(bǔ)丁O(∩_∩)O
3|0Windows操作系統(tǒng)配置錯(cuò)誤利用分析及防范
在Windows操作系統(tǒng)中,攻擊者通常會(huì)對(duì)系統(tǒng)內(nèi)核溢出漏洞來(lái)提權(quán),但是如果無(wú)法通過(guò)系統(tǒng)內(nèi)核溢出漏洞提取所在服務(wù)器權(quán)限的情況,就會(huì)利用系統(tǒng)中的配置錯(cuò)誤來(lái)提權(quán),Windows操作系統(tǒng)中常見(jiàn)的配置錯(cuò)誤包括管理員憑據(jù)配置錯(cuò)誤、服務(wù)配置錯(cuò)誤、故意削弱的安全措施、用戶權(quán)限過(guò)高等...
3|1系統(tǒng)權(quán)限配置錯(cuò)誤
Windows系統(tǒng)服務(wù)文件在操作系統(tǒng)啟動(dòng)時(shí)加載和執(zhí)行,并在后臺(tái)調(diào)用可執(zhí)行文件。因此,如果一個(gè)低權(quán)限的用戶對(duì)此類服務(wù)調(diào)用的可執(zhí)行文件擁有寫(xiě)權(quán)限,就可以將該文件替換成任意可執(zhí)行文件,并隨著系統(tǒng)服務(wù)的啟動(dòng)獲得系統(tǒng)權(quán)限。Windows服務(wù)是以System權(quán)限運(yùn)行對(duì)的,因此,其文件夾、文件和注冊(cè)表鍵值都是受強(qiáng)訪問(wèn)控制機(jī)制保護(hù)的。但是,在某些情況下,操作系統(tǒng)中仍然存在一些沒(méi)有得到有效保護(hù)的服務(wù)。
系統(tǒng)服務(wù)權(quán)限配置錯(cuò)誤(可寫(xiě)目錄漏洞)有如下兩種可能:
3|2注冊(cè)表鍵AlwaysInstallElevated
注冊(cè)表鍵AlwaysInstallElevated是一個(gè)策略設(shè)置項(xiàng)。Windows允許低權(quán)限用戶以System權(quán)限運(yùn)行安裝文件。如果啟用此策略設(shè)置項(xiàng),那么任何權(quán)限對(duì)的用戶都能以NT AUTHORITY/SYSTEM權(quán)限來(lái)安裝惡意的MSI(Microsoft Windows Installer)文件。
PathAlwaysInstallElevated漏洞產(chǎn)生的原因
該漏洞產(chǎn)生的原因是用戶開(kāi)啟了Windows Installer特權(quán)安裝功能。
Windows Installer知識(shí)點(diǎn)介紹
Windows Installer 是Windows操作系統(tǒng)的組件之一,專門(mén)用來(lái)管理和配置軟件服務(wù)。Windows Installer除了是一個(gè)安裝程序,還用于管理軟件的安裝、管理軟件的安裝、管理軟件的添加和刪除、監(jiān)視文件的還原、通過(guò)回滾進(jìn)行災(zāi)難恢復(fù)等。
Windows Installer分為客戶端安裝服務(wù)(Msiexec.exe)和MSI文件兩部分,它們是一起工作的。Windows Installer 通過(guò) Msiexec.exe安裝 MSI文件包含的程序。MSI文件是 Windows Installer的數(shù)據(jù)包。它實(shí)際上是一個(gè)數(shù)據(jù)庫(kù),包含安裝和卸載軟件時(shí)需要使用的大量指令和數(shù)據(jù)。Msiexec.exe用于安裝MSI文件,一般運(yùn)行Microsoft Update安裝更新或者安裝一些軟件的時(shí)候使用,占用內(nèi)存較多。簡(jiǎn)單的說(shuō),雙擊MSI文件就會(huì)運(yùn)行Msiexec.exe。
防范PathAlwaysInstallElevated漏洞的方法
禁用注冊(cè)表鍵AlwaysInstallElevated。
3|3可信任服務(wù)路徑漏洞
可信任服務(wù)路徑漏洞分析
可信任服務(wù)路徑(包含空格且沒(méi)有引號(hào)的路徑)漏洞利用了Windows 文件路徑解析的特性,并涉及服務(wù)路徑的文件/文件夾權(quán)限(存在缺陷的服務(wù)程序利用了屬于可執(zhí)行文件的文件/文件夾的權(quán)限)。如果一個(gè)服務(wù)調(diào)用的可執(zhí)行性文件沒(méi)有正確的處理所引用的完整路徑名,這個(gè)漏洞就會(huì)被攻擊者利用上傳任意可執(zhí)行文件,也就是說(shuō),如果一個(gè)服務(wù)的可執(zhí)行文件的路徑?jīng)]有被雙引號(hào)引起來(lái)且包含空格,那么這個(gè)服務(wù)是有漏洞的。
該漏洞存在如下兩種可能性:
可信任服務(wù)路徑漏洞防范
可信任服務(wù)路徑漏洞是由開(kāi)發(fā)者沒(méi)有將文件路徑用引號(hào)引起來(lái)導(dǎo)致的。將文件路徑用引號(hào)引起來(lái),就不會(huì)出現(xiàn)這種問(wèn)題了。
3|4自動(dòng)安裝配置文件
網(wǎng)絡(luò)管理員在內(nèi)網(wǎng)中給多臺(tái)機(jī)器配置同一個(gè)環(huán)境時(shí),通常不會(huì)逐臺(tái)配置,而會(huì)會(huì)用腳本批量部署的方法。這一過(guò)程中,會(huì)使用安裝配置文件。這些文件包含所有的安裝配置信息,其中的一些還可能包括本地管理員的賬號(hào)和密碼等消息。在進(jìn)行滲透測(cè)試中,可以找到此類相關(guān)的文件進(jìn)行分析。
3|5計(jì)劃任務(wù)
可以使用命令 :schtasks /query /fo LIST /v ,查看計(jì)算機(jī)的計(jì)劃任務(wù),如果攻擊者對(duì)以高權(quán)限運(yùn)行的任務(wù)所在的目錄具有寫(xiě)權(quán)限,就可以使用惡意程序性覆蓋原來(lái)的程序,這樣,在計(jì)劃任務(wù)下次執(zhí)行時(shí),就會(huì)以高權(quán)限來(lái)運(yùn)行惡意程序。
4|0組策略首選項(xiàng)提權(quán)分析及防范
4|1組策略首選項(xiàng)提權(quán)簡(jiǎn)介
SYSVOL是活動(dòng)目錄里面的一個(gè)用于存儲(chǔ)域公共文件服務(wù)器副本的共享文件夾,在域中的所有域控制器之間進(jìn)行復(fù)制。SYSVOL文件夾是安裝活動(dòng)目錄時(shí)自動(dòng)創(chuàng)建的,主要用來(lái)存放登錄腳本、組策略數(shù)據(jù)及其他域控制器需要的域信息等。SYSVOL在所有經(jīng)過(guò)身份驗(yàn)證的域用戶或者域信任用戶具有讀權(quán)限的活動(dòng)目錄的域范圍內(nèi)共享。
在一般的域環(huán)境中,所有機(jī)器都是腳本化批量部署的,數(shù)據(jù)量通常很大。為了方便地對(duì)所有的機(jī)器進(jìn)行操作,網(wǎng)絡(luò)管理員往往會(huì)使用域策略進(jìn)行統(tǒng)一的配置和管理。大多數(shù)組織在創(chuàng)建域環(huán)境后,會(huì)要求加入域的計(jì)算機(jī)使用域用戶密碼進(jìn)行登錄驗(yàn)證。為了保證本地管理員密碼的安全性,這些組織的網(wǎng)絡(luò)管理員往往會(huì)修改本地管理員密碼。
盡管如此,安全問(wèn)題依舊存在。通過(guò)組策略統(tǒng)一修改的密碼,雖然強(qiáng)度有所提高,但是所有機(jī)器的本地管理員密碼都是相同的。攻擊者獲得了一臺(tái)機(jī)器的本地管理員密碼,就相當(dāng)于獲得了整個(gè)域中的所有機(jī)器的本地管理員密碼。
4|2針對(duì)組策略首選項(xiàng)提權(quán)的防御措施
在用于管理組策略的計(jì)算機(jī)上安裝KB2962486補(bǔ)丁,防止新的憑據(jù)被放置在組策略首選項(xiàng)中。
此外,需要對(duì)訪問(wèn)權(quán)限進(jìn)行設(shè)置,具體建議如下:
設(shè)置共享文件夾SYSVOL的訪問(wèn)權(quán)限
將包含組策略密碼的xml文件從SYSVOL目錄中刪除
不要把密碼放在所有域用戶都有權(quán)訪問(wèn)的文件中
如果需要更改域中機(jī)器的本地管理員密碼,建議使用LAPS
5|0繞過(guò)UAC提權(quán)分析及防范
5|1UAC簡(jiǎn)介
UAC(User Account Control,用戶賬戶控制)是微軟為提高系統(tǒng)安全性在Windows Vista中引入的技術(shù)。UAC要求用戶在執(zhí)行可能影響計(jì)算機(jī)運(yùn)行的操作或者在進(jìn)行可能影響其他用戶的設(shè)置之前,擁有相應(yīng)的權(quán)限或者管理員密碼。UAC在操作系統(tǒng)啟動(dòng)前對(duì)用戶身份進(jìn)行驗(yàn)證,以避免惡意軟件和間諜軟件在未經(jīng)許可的情況下在計(jì)算機(jī)上進(jìn)行安裝操作或者對(duì)計(jì)算機(jī)設(shè)置進(jìn)行修改。
在Windows Vista及更高的版本的操作系統(tǒng)中,微軟設(shè)置了安全控制策略,分為高、中、低三個(gè)等級(jí)。高等級(jí)的進(jìn)程有管理員權(quán)限;中等級(jí)的進(jìn)程有普通用戶權(quán)限;低等級(jí)的進(jìn)程,權(quán)限是有限的,以保證系統(tǒng)在收到安全威脅時(shí)造成的損害最小。
UAC有如下四種設(shè)置要求:
始終通知:這是最嚴(yán)格的要求,每當(dāng)有程序使用高級(jí)別的權(quán)限時(shí)都會(huì)提示本地用戶。
僅在程序試圖更改我的計(jì)算機(jī)時(shí)通知我:這是UAC的默設(shè)置。當(dāng)本地的Windows程序要使用高級(jí)別的權(quán)限時(shí),不會(huì)通知用戶。但是,當(dāng)?shù)谌匠绦蛞褂酶呒?jí)別權(quán)限時(shí),會(huì)提示本地用戶。
僅在程序試圖更改我的計(jì)算機(jī)時(shí)通知我(不降低桌面亮度):與上一條設(shè)置的要求相同,但是在提示時(shí)用戶不簡(jiǎn)單桌面的亮度。
從不提示:當(dāng)用戶為系統(tǒng)管理員時(shí),所有程序都會(huì)以最高權(quán)限運(yùn)行。
5|2繞過(guò)針對(duì)UAC提權(quán)的防御措施
在企業(yè)環(huán)境中,防止繞過(guò)UAC的最好辦法是不讓內(nèi)網(wǎng)機(jī)器的使用者擁有本地管理員權(quán)限,從而降低系統(tǒng)遭受攻擊的可能性。
在家庭網(wǎng)絡(luò)環(huán)境中,建議使用非管理員權(quán)限進(jìn)行日常辦公與娛樂(lè)活動(dòng)。使用本地管理員權(quán)限登錄的用戶,要將UAC設(shè)置為"始終通知"或者刪除該用戶的本地管理員權(quán)限。
此外,可以使用微軟的EMET或者M(jìn)alwareBytes來(lái)更好地防范0day漏洞。
6|0令牌竊取分析與防范
6|1令牌竊取提權(quán)簡(jiǎn)介
令牌(TOKEN)是指系統(tǒng)中的臨時(shí)秘鑰,相當(dāng)于用戶和密碼,用于決定是否允許那個(gè)錢(qián)請(qǐng)求及判斷當(dāng)前請(qǐng)求是屬于那個(gè)用戶的。獲得了令牌,就可以在不提供密碼或其他憑證的情況下訪問(wèn)網(wǎng)絡(luò)和系統(tǒng)資源,這些令牌將持續(xù)存在域于系統(tǒng)中(除非系統(tǒng)重新啟動(dòng))。
令牌最大的特點(diǎn)是隨機(jī)性和不可預(yù)測(cè)性。一般的攻擊者或軟件都無(wú)法將令牌猜測(cè)出來(lái)。訪問(wèn)令牌(Access Token)代表訪問(wèn)控制操作主題的系統(tǒng)對(duì)象。密保令牌(Security Token)也叫作認(rèn)證令牌或者硬件令牌,是一種用于實(shí)現(xiàn)計(jì)算機(jī)身份校驗(yàn)的物理設(shè)備。會(huì)話令牌(Session Token)是交會(huì)話中唯一的身份標(biāo)識(shí)符。
偽造令牌攻擊的核心是Kerberos協(xié)議。Kerberos協(xié)議是一種網(wǎng)絡(luò)認(rèn)證協(xié)議,其設(shè)計(jì)的目的是通過(guò)密鑰系統(tǒng)為客戶機(jī)/服務(wù)器應(yīng)用程序提供強(qiáng)大的認(rèn)證服務(wù)。
客戶端登錄服務(wù)器后,攻擊者就能通過(guò)入侵服務(wù)器來(lái)竊取客戶端的令牌。
6|2令牌竊取提權(quán)的防御措施
針對(duì)令牌竊取提權(quán)的防御措施如下:
及時(shí)安裝微軟推送的補(bǔ)丁
對(duì)于來(lái)路不明的或者危險(xiǎn)的軟件,既不要在系統(tǒng)中使用,也不要在虛擬機(jī)中使用
對(duì)令牌的時(shí)效性進(jìn)行限制,以防止散列值被破解后泄露有效的令牌信息
對(duì)于令牌,應(yīng)采取加密存儲(chǔ)及多長(zhǎng)驗(yàn)證保護(hù)
使用加密鏈路SSL/TLS傳輸令牌,以防止被中間人竊聽(tīng)
7|0無(wú)憑證條件下的權(quán)限獲取分析及防范
7|1LLMNR和NetBIOS欺騙攻擊的基本概念
LLMNR
本地鏈路多播名稱解析(LLMNR)是一種域名系統(tǒng)數(shù)據(jù)包格式。當(dāng)局域網(wǎng)中的DNS服務(wù)器不可用時(shí),DNS客戶端會(huì)使用LLMNR解析本地網(wǎng)段中機(jī)器的名稱,直到DNS服務(wù)器恢復(fù)為止。從Windows Vista 版本開(kāi)始支持LLMNR,LLMNR支持IPv6.。
NetBIOS
NetBIOS是一種網(wǎng)絡(luò)協(xié)議,一般用在由十幾臺(tái)計(jì)算機(jī)組成的局域網(wǎng)中(根據(jù)NetBIOS協(xié)議廣播獲得計(jì)算機(jī)名稱,并將其解析為相應(yīng)的IP地址)。在Windows NT以后版本的所有操作系統(tǒng)中均可使用NetBIOS。NetBIOS不支持IPv6。
Net-NTLM Hash
NTLM Hash是指Windows 操作系統(tǒng)的Secutiry Account Manager 中保存的用戶密碼的散列值。NTLM Hash通常保存在Windows的SAM文件或者NTDS.DIT數(shù)據(jù)庫(kù)中,用于對(duì)訪問(wèn)資源的用戶進(jìn)行身份驗(yàn)證。
Net-NTLM Hash是指在網(wǎng)絡(luò)環(huán)境中經(jīng)過(guò)NTML認(rèn)證的散列值。使用Responder抓取的通常就是Net-NTLM Hash。
LLMNR和NetBIOS欺騙攻擊分析
假設(shè)目標(biāo)網(wǎng)絡(luò)的DNS服務(wù)器發(fā)生故障而無(wú)法提供服務(wù)時(shí),會(huì)退回LLMNR和NBT-NS進(jìn)行計(jì)算機(jī)名稱解析。
Responder是監(jiān)聽(tīng)LLMNR和NBT-NS協(xié)議的工具之一,能抓取網(wǎng)絡(luò)中所有的LLMNR和NBT-NS請(qǐng)求并進(jìn)行響應(yīng),獲取最初的賬戶憑證。
在滲透測(cè)試中,使用Responder并啟動(dòng)回應(yīng)請(qǐng)求功能,Responder會(huì)自動(dòng)回應(yīng)客戶端的請(qǐng)求并聲明自己就是被輸入了錯(cuò)誤計(jì)算機(jī)名的那臺(tái)機(jī)器,然后嘗試建立SMB連接。客戶端會(huì)發(fā)送自己的Net-NTLM Hash進(jìn)行身份驗(yàn)證,此時(shí)將得到目標(biāo)機(jī)器的Net-NTLM Hash。