君のHashは。
まだ会ったことないHashを探している
1
自己紹介
小河 哲之
Twitter:abend
三井物産セキュアディレクション
アルコール担当
Burp Suite Japan User Group
ISOG-WG1
Prosit
2
はじめに
Windowsの認証に関するセキュリティ
について本資料は記載しています。本資
料の内容を管理下以外の環境に対して実
施しないでください。設定内容について
は内容を保証するものではないため、各
自の責任で実施してください。
3
hash
元のデータから算出された値。hashか
ら元の値を算出することができない。
hello → 066DDFD4EF0E9CD7C256FE77191EF43C
helloo → 48B2F3EF9B18C7C58AF7C47ED7DB88D2
元の値が変われば、hashも変わる。
では、hashがどのように使われている
のか。
4
Windowsの認証
アカウント名、パスワードまたは証明書
で認証を行い、ログオンする。認証の中
核を担うのがLSA(Local Security
Authority)。
5
Windowsの認証
Login UI etc...
LSA LSA Server Service
Netlogon SAM
DC etc...
6
SAM
SAM(Security Account Manager)は
データベースファイルに保存されている
アカウント情報にアクセスし、認証時利
用されるプロセス。
 reg save hklmsam c:samfile
管理者権限で実行する必要がある。
7
SAM
SAMファイルなどから各アカウントのパ
スワードのhash情報を取得可能。
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2
2315d6ed1a7d5f8a7c98c40e9fa2dec:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0
d16ae931b73c59d7e0c089c0:::
pentest:1001:aad3b435b51404eeaad3b435b51404ee:22315
d6ed1a7d5f8a7c98c40e9fa2dec:::
※緑字はLM Hash、赤字はNTLM Hash
※「31d6c・・・」はnullをMD4のhash
8
LM Hash
脆弱なhash関数で、簡単にパスワード
を特定することが可能。 Vista以降は利
用しないようになっている。
・14byteに制限
・大文字小文字区別なし
・7byteごとに暗号化
9
NTLM Hash
パスワードをUnicodeとしてMD4で
hashした128bitの値。LM Hashと比較
するとセキュリティの強度は高くなって
いる。
10
Windowsのクレデンシャル
LM Hash、NTLM Hashはsaltを使用し
ていないため、同じパスワードを使用し
ている場合、同じhash値になる。
password → 8846F7EAEE8FB117AD06BDD830B7586C
※NTLM Hash
11
hashの解析
hash値から元のパスワードを特定する
には、辞書や総当たりでできる。ただ、
時間がかかってしまう可能性もある。
ascii95文字、パスワード7桁、
10million/sec計算できる場合
95^7/10^7=81days
12
Pass the Hash(PtH)
元のパスワードを特定しなくても、
hash値そのものを利用するための方法
として、Pass the Hashがある。
13
Pass the Hash(PtH)
同じパスワードを使ってさえすればいい
ので、パスワードの長さや複雑さは関係
なくなる。
14
君のHashは?
(ペンテスターとして)まだ会ったことないHashを探している
15
Pass the Hash(PtH)
Host1
admin : ?????
Host2
admin : ?????
同じパスワードを使用している場合、取
得したhash値を用いて認証突破が可能。
パスワードが
分からなくて
も認証突破で
きてしまう。
hash値
hash値
16
確かなことが一つだけある。
私たちは会えば、ぜったい
すぐにわかる。
17
Pass the Hash(PtH)
そのため、hash値を取得さえできてし
まえば、権限によっては完全にコント
ロールできてしまう可能性がある。
Host
admin : ?????hash値 コマンド
コマンドが動き
出す
18
動き出した奇跡の物語
19
hashの持ち主
SAMファイルから存在するアカウントと
hashの一覧を取得しても、そのアカウ
ントの権限によってはできることが限ら
れてしまう。そのため、影響を考える場
合、net userなどを用いて該当のアカウ
ントの権限を確認する必要がある。
20
ねぇ、あなたは誰なの?
21
UAC
ユーザーアカウント制御(User Account
Control)はWindows Vista以降に導入さ
れたセキュリティ機能。
22
UAC
レジストリやシステム変更を行う際にダ
イアログによる確認が行われる。悪意の
あるプログラム実行を抑制するために有
効なセキュリティ機能。
23
UAC
管理者権限を有するアカウントでもUAC
が有効な場合は、コマンド実行ができな
い。
Administratorsグループ
に属するアカウントのhash
UAC
hash値 コマンド
24
UAC
NTLM Hashが入手できていたとしても、
外部からコマンドを実行しようとすると
ACCESS DENIEDとなり、実行できない。
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
ERROR: CreateService failed. NT_STATUS_ACCESS_DENIED.
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
25
Builtin Administrator
Builtin Administrator(初期状態で存在
する管理者)は、デフォルトでUACの影
響を受けない。
Administratorsグループに属するアカウ
ントとは異なり、UACに関係なくコマン
ド実行が可能。
26
Builtin Administrator
Builtin AdministratorはUACに関係なく
コマンド実行が成功している。
【whoamiを実行】
HASH PASS: Substituting user supplied NTLM HASH...
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
virsnowadministrator
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
27
大事なHash
忘れたくないHash
忘れちゃだめなHash
誰なんだ...?
名前は...
28
Administrator
29
前前前世から探してた
30
インストール直後はビルトインの
Administratorが有効であるため、
NTLM Hashが取得された場合にPtH攻
撃は成功する。
31
Windows Server 2016
systeminfoの実行結果を一部抜粋。
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
ホスト名: WIN-DLVVSFQ046U
OS 名: Microsoft Windows Server 2016 Standard
Evaluation
OS バージョン: 10.0.14393 N/A ビルド 14393
OS 製造元: Microsoft Corporation
OS 構成: スタンドアロン サーバー
OS ビルドの種類: Multiprocessor Free
32
Windows Server 2016
Builtin Administrator
Builtin Administratorは、クライアント
OSではデフォルトで無効化されている
がUACの影響を受けないため、アカウン
トを有効化するべきではない。
Windows Serverではデフォルトで有効
になっているため、別の管理者権限を有
するアカウントで管理した方がいい。
33
Windows10のセキュリティ
Windows10などでは、SAMファイルを
抽出してもNTLM HashがNULLになって
いて、本来のパスワードのhashが分か
らない。
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6
cfe0d16ae931b73c59d7e0c089c0:::
pentest:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0
d16ae931b73c59d7e0c089c0:::
※環境:Windows10 Pro 一部抜粋
34
Pwdump v7.1では、抽出できているよ
うに見えるが、hash値が間違えている。
Windows Server 2016でも同様。
【Pwdump】
Administrator:500:2310D26235F3D51F20A9404C1CEFF55E:162
67D64C86E8DE5591298683ACD2F5E:::
【正解のNTLM Hash】
e19ccf75ee54e06b06a5907af13cef42
35
Windows10のセキュリティ
メモリ上の情報
Windowsにログオンしているアカウン
トや資格情報に登録されているクレデン
シャル情報がメモリ上に保持されている。
メモリを解析することでパスワードその
ものを入手可能。
36
PtHによるメモリ調査
PtHして攻撃ツールを実行し、対象ホス
トのメモリ上の情報を収集することが可
能。
Host
admin : ?????hash値 攻撃ツール
37
情報の収集
クレデンシャル情報
メモリ上の情報
メモリ上にはパスワードそのものが存在
している。
msv :
[00010000] CredentialKeys
* NTLM : 217e50203a5aba59cefa863c724bf61b
* SHA1 : ba380c17a7b2e0233a89896e6b4d412ced541c40
[00000003] Primary
* Username : Administrator
* Domain : VirSnow
* NTLM : 217e50203a5aba59cefa863c724bf61b
* SHA1 : ba380c17a7b2e0233a89896e6b4d412ced541c40
tspkg :
wdigest :
* Username : Administrator
* Domain : VirSnow
* Password : P@ssw0rd!
38
メモリ上の情報
HKLMSYSTEMCurrentControlSet
ControlSecurityProvidersWDigest
にUseLogonCredential (DWORD)で0
をセットすると、メモリ上のwdigestの
パスワードを持たなくなる。
wdigest :
* Username : Administrator
* Domain : VirSnow
* Password : (null) 39
メモリ上の情報
Windows10の場合、UseLogonCreden
tialをセットしなくてもメモリ上にはパ
スワードそのものは持たない。
だが、しかし・・・
40
言おうと思ったんだ。
お前が世界のどこにいて
も必ず会いに行くって。
41
資格情報マネージャー
ユーザ名、パスワードなどの資格情報を
一元管理するための機能。リモートの
ファイル共有へのアクセスに使用される
ドメインユーザのパスワードなどが保存
されている。
42
Windows資格情報
43
Windowsの認証
44
Windows資格情報
サイトなどのクレデンシャル情報を登録
し、一括管理することが可能。
45
Windows資格情報
credman :
[00000000]
* Username : xxx
* Domain : http://xxx.com
* Password : xxx
[00000001]
* Username : admin
* Domain : test.com
* Password : admin
[00000002]
* Username : VIRSNOWabend
* Domain : VIRSNOWabend
* Password : P@ssw0rd!
メモリ上からパスワードの抽出が可能。
46
やっと会えたね。
47
タスクスケジューラ
dailyなどの条件に合わせて、指定する
タスクを実行するための機能。
48
タスクスケジューラ
「ユーザがログオンしているかどうかに
かかわらず実行する」を選択した場合に
実行するユーザを指定する。
49
タスクスケジューラ
ここで登録されたクレデンシャルも資格
情報マネージャーの汎用資格情報に自動
的に登録される。そのため、メモリを解
析するとパスワードの取得が可能。
50
タスクスケジューラ
「パスワードを保存しない」をチェック
している場合でもメモリからパスワード
の取得が可能。
51
タスクスケジューラ
タスクがアクセスできるのはローカルコ
ンピュータ リソースだけかもしれない
が、パスワードの取得は可能。
[00000005]
* Username : VIRSNOWtest2
* Domain : VIRSNOWtest2
* Password : P@ssw0rd!!
52
この奇跡の出逢いに
日本中が涙した
53
Windows 10での資格情報
Windows 10 ProでもWindows 7同様
にタスクスケジューラで設定したクレデ
ンシャルは資格情報マネージャーに登録
され、メモリ上で持っている。
54
どうすればいいのか
資格情報マネージャーから削除するとメ
モリ上からも消されるため、パスワード
の取得はできなくなる。
タスクスケジューラで該当タスクを消し
ても、資格情報マネージャーから削除さ
れない。
55
Anti Virus製品
メモリ上のクレデンシャル情報を抽出す
るためのツールは、たいていのAnti
Virus製品で検知されるため、Anti
Virus製品の機能を停止するか、バイパ
スする必要がある。
56
Anti Virus製品
攻撃ツールをメモリ上に展開し、実行す
ることでAnti Virusをバイパスする。
57
Host
admin : ?????hash値 コマンド
クレデンシャル情報
攻撃ツール
メモリ上に展開
攻撃ツール
情報の収集
メモリ
Anti Virus製品
攻撃ツール自体は検知されるが、バイパ
スする方法だと検知されずに実行可能。
HASH PASS: Substituting user supplied NTLM HASH...
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
E_md4hash wrapper called.
HASH PASS: Substituting user supplied NTLM HASH...
****** 一部省略 *******
Authentication Id : 0 ; 342630 (00000000:00053a66)
Session : Interactive from 1
User Name : Administrator
Domain : VirSnow
SID : S-1-5-21-724436814-143641613-1275184040-500
msv :
[00010000] CredentialKeys
* NTLM : 217e50203a5aba59cefa863c724bf61b
* SHA1 : ba380c17a7b2e0233a89896e6b4d412ced541c40
58
それはまるで
夢の景色のように
ただひたすらに
美しい眺めだった
59
Anti Virus製品
Anti Virus製品も当然必要だが、それだ
けで守ることが困難であるため、URL
フィルターなどほかの対策もあわせて行
う必要がある。
60
Windows 10以降だと
何らかの方法でNTML Hashが取得され
た場合でも、メモリ上のパスワードを取
得するツールを実行してもエラーになる。
ERROR kuhl_m_sekurlsa_acquireLSA ;
Handle on memory (0x00000005)
※環境:Windows Server 2012R2 一部抜粋
61
Credentialを守っている仕組み
LSA Protection Mode 、Credential
Guardがあります。
LSA Protection Mode
→Windows8.1、Windows Server 2012R2など
Credential Guard
→Windows10 Enterprise、Windows Server
2016
62
LSA Protection Mode
保護されていないプロセスによるメモリ
の読み取りやコード インジェクション
を防止するための仕組み。
hklmsystemCurrentControlSetCo
ntrolLsaRunAsLPPに1をセットする
と有効化される。
63
LSA Protection Mode
Windows 10などでは、SAMファイルを
抽出することが困難であるが、認証に関
連するプロセス(lsass.exe)をダンプし、
それを解析することでNTLM Hashを容
易に抽出できる。
64
LSA Protection Mode
Windows 10などでLSA Protection
Modeを有効化している場合、lsass.exe
にアクセス(ダンプ)できなくなる。
Error opening lsass.exe (788):
????????????? (0x00000005, 5)
65
LSA Protection Mode
そのため、LSA Protection Modeが有効
になっている場合に、NTLM Hashを取
得することが困難である。
66
Credential Guard
Windows10 EnterpriseやWindows
Server 2016で利用可能なクレデンシャ
ル情報を保護する仕組み。仮想化ベース
のセキュリティでHyper-V Hypervisor
の有効化など複数の設定を行わないと利
用できない。
67
Credential Guard
クレデンシャル情報が仮想環境に切り離
され、特定のプロセス以外からはアクセ
スできない。
未検証で、クレデンシャル情報の抽出方
法が存在するのか、分からない。
68
まとめ
• どんなに複雑でもPass the Hashには関係
ない。
• UACはちゃんと有効化しようね。
• Builtin Administraotrは無効化しよう。
• 無駄な認証情報は残さない。
• Anti Virus製品だけではなく、URLフィル
タなど多層防御が重要だと思う。
• Windows 10とか結構いいと思う。
• LSA Protection Modeは有効化しよう。
69
君のHashは...
70
参考URL
https://msdn.microsoft.com/library/dn751049(v=ws.11).aspx
https://technet.microsoft.com/ja-jp/library/cc753382(v=ws.10).aspx
https://support.microsoft.com/ja-jp/kb/299656
https://asecuritysite.com/encryption/lmhash
http://openwall.info/wiki/john/NTLM
https://support.microsoft.com/ja-jp/help/2871997/microsoft-security-advisory-update-
to-improve-credentials-protection-and-management-may-13,-2014
https://msdn.microsoft.com/ja-jp/library/ee498328(v=winembedded.70).aspx
http://www.atmarkit.co.jp/ait/articles/1305/31/news049.html
http://blog.jpcert.or.jp/2016/10/verification-of-ad9d.html
https://msdn.microsoft.com/ja-jp/library/dn408187(v=ws.11).aspx
https://technet.microsoft.com/ja-jp/library/mt483740(v=vs.85).aspx
https://technet.microsoft.com/ja-jp/library/2009.07.uac.aspx
https://technet.microsoft.com/en-us/library/95eeb6ff-6c74-4f3a-b216-132010386d01
71

More Related Content

PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PDF
Multibranch pipelineでいろいろ学んだこと
PPTX
std::pin の勘所
PDF
Docker Compose 徹底解説
PDF
インフラエンジニアのためのRancherを使ったDocker運用入門
PDF
カスタムメモリマネージャと高速なメモリアロケータについて
PDF
Dockerを支える技術
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
Multibranch pipelineでいろいろ学んだこと
std::pin の勘所
Docker Compose 徹底解説
インフラエンジニアのためのRancherを使ったDocker運用入門
カスタムメモリマネージャと高速なメモリアロケータについて
Dockerを支える技術

What's hot (20)

PDF
ソーシャルゲームのためのデータベース設計
PDF
Goでかんたんソースコードの静的解析
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PDF
Docker入門: コンテナ型仮想化技術の仕組みと使い方
PPTX
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
PDF
OpenID ConnectとAndroidアプリのログインサイクル
PDF
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PDF
Cloud Foundry V2を、もうちょっと深掘りしよう
PPTX
標的型攻撃からどのように身を守るのか
PPTX
マイクロサービスにおける 結果整合性との戦い
PDF
Git & ブランチモデルで学ぶ バージョン管理入門
PDF
ADRという考えを取り入れてみて
PPTX
initとプロセス再起動
PPTX
世界一わかりやすいClean Architecture
PDF
Doma SQLテンプレートのしくみ
PDF
オトナのTDD(テスト駆動開発)入門
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
PDF
超実践 Cloud Spanner 設計講座
PPTX
30分で分かる!OSの作り方
PDF
Docker composeで開発環境をメンバに配布せよ
ソーシャルゲームのためのデータベース設計
Goでかんたんソースコードの静的解析
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Docker入門: コンテナ型仮想化技術の仕組みと使い方
もう知らずにはいられないGitOpsをArgoCDで学ぶ【WESEEK Tech Conf #3】
OpenID ConnectとAndroidアプリのログインサイクル
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
Cloud Foundry V2を、もうちょっと深掘りしよう
標的型攻撃からどのように身を守るのか
マイクロサービスにおける 結果整合性との戦い
Git & ブランチモデルで学ぶ バージョン管理入門
ADRという考えを取り入れてみて
initとプロセス再起動
世界一わかりやすいClean Architecture
Doma SQLテンプレートのしくみ
オトナのTDD(テスト駆動開発)入門
コンテナの作り方「Dockerは裏方で何をしているのか?」
超実践 Cloud Spanner 設計講座
30分で分かる!OSの作り方
Docker composeで開発環境をメンバに配布せよ
Ad

Similar to Your hash is. (7)

PDF
Sec013 その資格情報、簡
PDF
Active Directory 侵害と推奨対策
PDF
Active directory のセキュリティ対策 130119
PDF
ARC-006_サイバー セキュリティ、IT Pro、開発、経営 それぞれの視点
PDF
[SC15] Windows Hello で実現するハイブリッド 生体認証
PDF
PowerShell 5.0 & Security
PDF
Webアプリでパスワード保護はどこまでやればいいか
Sec013 その資格情報、簡
Active Directory 侵害と推奨対策
Active directory のセキュリティ対策 130119
ARC-006_サイバー セキュリティ、IT Pro、開発、経営 それぞれの視点
[SC15] Windows Hello で実現するハイブリッド 生体認証
PowerShell 5.0 & Security
Webアプリでパスワード保護はどこまでやればいいか
Ad

More from abend_cve_9999_0001 (20)

PPTX
Bypassing anti virus using powershell
PPTX
ポートスキャンを擬人化してみた
PPTX
Bypassing Windows Security Functions(ja)
PPTX
Bypassing Windows Security Functions(en)
PPTX
Burp Suite Japanユーザグループ紹介
PPTX
バックアップファイルの管理
PPTX
Nmapの真実(続)
PPTX
Nmap 9 truth "Nothing to say any more"
PPTX
Nmap 9つの真実
PPTX
Nmapの真実
PPTX
Burpで指定文字列を検索
PPTX
The vulnerabilities never bothered me anyway
PDF
フリーでできるセキュリティチェック OpenVAS CLI編
PPTX
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
PPTX
フリーでできるWebセキュリティ(burp編)
PPTX
Burp番外編~バープ、チョトニホンゴデキル~
PPTX
おちこんだりもしたけど、私は元気です。
PPTX
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
PPTX
ハニーポットで見る攻撃手法(特に結論はありません)
PPTX
Cybozu.com security challengeに参加したよ
Bypassing anti virus using powershell
ポートスキャンを擬人化してみた
Bypassing Windows Security Functions(ja)
Bypassing Windows Security Functions(en)
Burp Suite Japanユーザグループ紹介
バックアップファイルの管理
Nmapの真実(続)
Nmap 9 truth "Nothing to say any more"
Nmap 9つの真実
Nmapの真実
Burpで指定文字列を検索
The vulnerabilities never bothered me anyway
フリーでできるセキュリティチェック OpenVAS CLI編
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
フリーでできるWebセキュリティ(burp編)
Burp番外編~バープ、チョトニホンゴデキル~
おちこんだりもしたけど、私は元気です。
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
ハニーポットで見る攻撃手法(特に結論はありません)
Cybozu.com security challengeに参加したよ

Your hash is.