71
君君 Hash 君 君君君君君君君君君 Hash 君君君君君君 1

Your hash is

Embed Size (px)

Citation preview

Page 1: Your hash is

君の Hash は。まだ会ったことない Hash を探している

1

Page 2: Your hash is

自己紹介

小河 哲之Twitter : abend三井物産セキュアディレクションアルコール担当

Burp Suite Japan User GroupISOG-WG1Prosit

2

Page 3: Your hash is

はじめに

Windows の認証に関するセキュリティについて本資料は記載しています。本資料の内容を管理下以外の環境に対して実施しないでください。設定内容については内容を保証するものではないため、各自の責任で実施してください。

3

Page 4: Your hash is

hash元のデータから算出された値。 hash から元の値を算出することができない。

hello → 066DDFD4EF0E9CD7C256FE77191EF43Chelloo → 48B2F3EF9B18C7C58AF7C47ED7DB88D2

元の値が変われば、 hash も変わる。

では、 hash がどのように使われているのか。

4

Page 5: Your hash is

Windows の認証

アカウント名、パスワードまたは証明書で認証を行い、ログオンする。認証の中核を担うのが LSA(Local Security Authority) 。

5

Page 6: Your hash is

Windows の認証

Login UI etc...

LSA LSA Server Service

Netlogon SAM

DC etc...6

Page 7: Your hash is

SAMSAM(Security Account Manager) はデータベースファイルに保存されているアカウント情報にアクセスし、認証時利用されるプロセス。

reg save hklm\sam c:\samfile管理者権限で実行する必要がある。

7

Page 8: Your hash is

SAMSAM ファイルなどから各アカウントのパスワードの hash 情報を取得可能。

Administrator:500:aad3b435b51404eeaad3b435b51404ee:22315d6ed1a7d5f8a7c98c40e9fa2dec:::Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::pentest:1001:aad3b435b51404eeaad3b435b51404ee:22315d6ed1a7d5f8a7c98c40e9fa2dec:::

※ 緑字は LM Hash 、赤字は NTLM Hash※ 「 31d6c ・・・」は null を MD4 の hash

8

Page 9: Your hash is

LM Hash脆弱な hash 関数で、簡単にパスワードを特定することが可能。 Vista 以降は利用しないようになっている。

・ 14byte に制限・大文字小文字区別なし・ 7byte ごとに暗号化

9

Page 10: Your hash is

NTLM Hashパスワードを Unicode として MD4 でhash した 128bit の値。 LM Hash と比較するとセキュリティの強度は高くなっている。

10

Page 11: Your hash is

Windows のクレデンシャル

LM Hash 、 NTLM Hash は salt を使用していないため、同じパスワードを使用している場合、同じ hash 値になる。

password → 8846F7EAEE8FB117AD06BDD830B7586C※NTLM Hash

11

Page 12: Your hash is

hash の解析

hash 値から元のパスワードを特定するには、辞書や総当たりでできる。ただ、時間がかかってしまう可能性もある。

ascii95 文字、パスワード 7桁、 10million/sec 計算できる場合95^7/10^7=81days

12

Page 13: Your hash is

Pass the Hash(PtH)元のパスワードを特定しなくても、 hash 値そのものを利用するための方法として、 Pass the Hash がある。

13

Page 14: Your hash is

Pass the Hash(PtH)同じパスワードを使ってさえすればいいので、パスワードの長さや複雑さは関係なくなる。

14

Page 15: Your hash is

君の Hashは ?

( ペンテスターとして ) まだ会ったことない Hash を探している

15

Page 16: Your hash is

Pass the Hash(PtH)

Host1admin : ?????

Host2admin : ?????

同じパスワードを使用している場合、取得した hash 値を用いて認証突破が可能。

パスワードが分からなくても認証突破できてしまう。

hash値

hash値

16

Page 17: Your hash is

確かなことが一つだけある。

私たちは会えば、ぜったいすぐにわかる。

17

Page 18: Your hash is

Pass the Hash(PtH)そのため、 hash 値を取得さえできてしまえば、権限によっては完全にコントロールできてしまう可能性がある。

Hostadmin : ?????

hash値 コマンド

コマンドが動き出す

18

Page 19: Your hash is

動き出した奇跡の物語

19

Page 20: Your hash is

hash の持ち主

SAM ファイルから存在するアカウントと hash の一覧を取得しても、そのアカウントの権限によってはできることが限られてしまう。そのため、影響を考える場合、 net user などを用いて該当のアカウントの権限を確認する必要がある。

20

Page 21: Your hash is

ねぇ、あなたは誰なの?

21

Page 22: Your hash is

UACユーザーアカウント制御 (User Account Control) は Windows Vista以降に導入されたセキュリティ機能。

22

Page 23: Your hash is

UACレジストリやシステム変更を行う際にダイアログによる確認が行われる。悪意のあるプログラム実行を抑制するために有効なセキュリティ機能。

23

Page 24: Your hash is

UAC管理者権限を有するアカウントでもUAC が有効な場合は、コマンド実行ができない。

Administrators グループに属するアカウントの hash UAC

hash値 コマンド

24

Page 25: Your hash is

UACNTLM 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

Page 26: Your hash is

Builtin AdministratorBuiltin Administrator( 初期状態で存在する管理者 ) は、デフォルトで UAC の影響を受けない。

Administrators グループに属するアカウントとは異なり、 UAC に関係なくコマンド実行が可能。

26

Page 27: Your hash is

Builtin AdministratorBuiltin Administrator は UAC に関係なくコマンド実行が成功している。【 whoami を実行】HASH PASS: Substituting user supplied NTLM HASH...E_md4hash wrapper called.HASH PASS: Substituting user supplied NTLM HASH...virsnow\administratorE_md4hash wrapper called.HASH PASS: Substituting user supplied NTLM HASH...E_md4hash wrapper called.HASH PASS: Substituting user supplied NTLM HASH...

27

Page 28: Your hash is

大事な Hash忘れたくない Hash忘れちゃだめな Hash誰なんだ ... ?名前は ...

28

Page 29: Your hash is

Administrator 29

Page 30: Your hash is

前前前世から探してた

30

Page 31: Your hash is

インストール直後はビルトインのAdministrator が有効であるため、 NTLM Hash が取得された場合にPtH攻撃は成功する。

31

Windows Server 2016

Page 32: Your hash is

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-DLVVSFQ046UOS 名 : Microsoft Windows Server 2016 Standard EvaluationOS バージョン : 10.0.14393 N/A ビルド 14393OS 製造元 : Microsoft CorporationOS 構成 : スタンドアロン サーバーOS ビルドの種類 : Multiprocessor Free

32

Windows Server 2016

Page 33: Your hash is

Builtin AdministratorBuiltin Administrator は、クライアント OS ではデフォルトで無効化されているが UAC の影響を受けないため、アカウントを有効化するべきではない。 Windows Server ではデフォルトで有効になっているため、別の管理者権限を有するアカウントで管理した方がいい。

33

Page 34: Your hash is

Windows10 のセキュリティ

Windows10 などでは、 SAM ファイルを抽出しても NTLM Hash が NULL になっていて、本来のパスワードの hashが分からない。

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::pentest:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

※ 環境: Windows10 Pro  一部抜粋34

Page 35: Your hash is

Pwdump v7.1 では、抽出できているように見えるが、 hash 値が間違えている。 Windows Server 2016 でも同様。【 Pwdump 】 Administrator:500:2310D26235F3D51F20A9404C1CEFF55E:16267D64C86E8DE5591298683ACD2F5E:::

【正解の NTLM Hash 】e19ccf75ee54e06b06a5907af13cef42

35

Windows10 のセキュリティ

Page 36: Your hash is

メモリ上の情報

Windows にログオンしているアカウントや資格情報に登録されているクレデンシャル情報がメモリ上に保持されている。

メモリを解析することでパスワードそのものを入手可能。

36

Page 37: Your hash is

PtH によるメモリ調査

PtH して攻撃ツールを実行し、対象ホストのメモリ上の情報を収集することが可能。

Host

admin : ?????hash

値 攻撃ツール

37

情報の収集クレデンシャル情報

Page 38: Your hash is

メモリ上の情報

メモリ上にはパスワードそのものが存在している。    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

Page 39: Your hash is

メモリ上の情報

HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigestに UseLogonCredential (DWORD) で0 をセットすると、メモリ上の wdi-gest のパスワードを持たなくなる。

wdigest : * Username : Administrator * Domain : VirSnow * Password : (null) 39

Page 40: Your hash is

メモリ上の情報

Windows10 の場合、 UseLogonCredential をセットしなくてもメモリ上にはパスワードそのものは持たない。

だが、しかし・・・

40

Page 41: Your hash is

言おうと思ったんだ。

お前が世界のどこにいても必ず会いに行くって。

41

Page 42: Your hash is

資格情報マネージャー

ユーザ名、パスワードなどの資格情報を一元管理するための機能。リモートのファイル共有へのアクセスに使用されるドメインユーザのパスワードなどが保存されている。

42

Page 43: Your hash is

Windows 資格情報

43

Page 44: Your hash is

Windows の認証

44

Page 45: Your hash is

Windows 資格情報

サイトなどのクレデンシャル情報を登録し、一括管理することが可能。

45

Page 46: Your hash is

Windows 資格情報

credman : [00000000] * Username : xxx * Domain : http://xxx.com * Password : xxx [00000001] * Username : admin * Domain : test.com * Password : admin [00000002] * Username : VIRSNOW\abend * Domain : VIRSNOW\abend * Password : P@ssw0rd!

メモリ上からパスワードの抽出が可能。

46

Page 47: Your hash is

やっと会えたね。

47

Page 48: Your hash is

タスクスケジューラ

daily などの条件に合わせて、指定するタスクを実行するための機能。

48

Page 49: Your hash is

タスクスケジューラ

「ユーザがログオンしているかどうかにかかわらず実行する」を選択した場合に実行するユーザを指定する。

49

Page 50: Your hash is

タスクスケジューラ

ここで登録されたクレデンシャルも資格情報マネージャーの汎用資格情報に自動的に登録される。そのため、メモリを解析するとパスワードの取得が可能。

50

Page 51: Your hash is

タスクスケジューラ

「パスワードを保存しない」をチェックしている場合でもメモリからパスワードの取得が可能。

51

Page 52: Your hash is

タスクスケジューラ

タスクがアクセスできるのはローカルコンピュータ リソースだけかもしれないが、パスワードの取得は可能。

[00000005]* Username : VIRSNOW\test2* Domain : VIRSNOW\test2* Password : P@ssw0rd!!

52

Page 53: Your hash is

この奇跡の出逢いに日本中が涙した

53

Page 54: Your hash is

Windows 10 での資格情報

Windows 10 Pro でも Windows 7 同様にタスクスケジューラで設定したクレデンシャルは資格情報マネージャーに登録され、メモリ上で持っている。

54

Page 55: Your hash is

どうすればいいのか

資格情報マネージャーから削除するとメモリ上からも消されるため、パスワードの取得はできなくなる。

タスクスケジューラで該当タスクを消しても、資格情報マネージャーから削除されない。

55

Page 56: Your hash is

Anti Virus製品メモリ上のクレデンシャル情報を抽出するためのツールは、たいていの Anti Virus製品で検知されるため、 Anti Virus製品の機能を停止するか、バイパスする必要がある。

56

Page 57: Your hash is

Anti Virus製品攻撃ツールをメモリ上に展開し、実行することで Anti Virus をバイパスする。

57

Hostadmin : ?????

hash値 コマンド

クレデンシャル情報

攻撃ツール

メモリ上に展開

攻撃ツール

情報の収集

メモリ

Page 58: Your hash is

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 1User Name : AdministratorDomain : VirSnowSID : S-1-5-21-724436814-143641613-1275184040-500 msv : [00010000] CredentialKeys * NTLM : 217e50203a5aba59cefa863c724bf61b * SHA1 : ba380c17a7b2e0233a89896e6b4d412ced541c40

58

Page 59: Your hash is

それはまるで夢の景色のようにただひたすらに美しい眺めだった

59

Page 60: Your hash is

Anti Virus製品Anti Virus製品も当然必要だが、それだけで守ることが困難であるため、 URL フィルターなどほかの対策もあわせて行う必要がある。

60

Page 61: Your hash is

Windows 10 以降だと

何らかの方法で NTML Hash が取得された場合でも、メモリ上のパスワードを取得するツールを実行してもエラーになる。

ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)

※ 環境: Windows Server 2012R2  一部抜粋

61

Page 62: Your hash is

Credential を守っている仕組み

LSA Protection Mode 、 Credential Guard があります。

LSA Protection Mode→Windows8.1 、 Windows Server 2012R2 など

Credential Guard→Windows10 Enterprise 、 Windows Server 2016

62

Page 63: Your hash is

LSA Protection Mode保護されていないプロセスによるメモリの読み取りやコード インジェクションを防止するための仕組み。

hklm\system\CurrentControlSet\Control\Lsa\RunAsLPP に 1 をセットすると有効化される。

63

Page 64: Your hash is

LSA Protection ModeWindows 10 などでは、 SAM ファイルを抽出することが困難であるが、認証に関連するプロセス (lsass.exe) をダンプし、それを解析することで NTLM Hash を容易に抽出できる。

64

Page 65: Your hash is

LSA Protection ModeWindows 10 などで LSA Protection Mode を有効化している場合、 lsass.exe にアクセス ( ダンプ ) できなくなる。

Error opening lsass.exe (788):????????????? (0x00000005, 5)

65

Page 66: Your hash is

LSA Protection Modeそのため、 LSA Protection Mode が有効になっている場合に、 NTLM Hashを取得することが困難である。

66

Page 67: Your hash is

Credential GuardWindows10 Enterprise や Windows Server 2016 で利用可能なクレデンシャル情報を保護する仕組み。仮想化ベースのセキュリティで Hyper-V Hypervisor の有効化など複数の設定を行わないと利用できない。

67

Page 68: Your hash is

Credential Guardクレデンシャル情報が仮想環境に切り離され、特定のプロセス以外からはアクセスできない。

未検証で、クレデンシャル情報の抽出方法が存在するのか、分からない。

68

Page 69: Your hash is

まとめ

• どんなに複雑でも Pass the Hash には関係ない。

• UAC はちゃんと有効化しようね。• Builtin Administraotr は無効化しよう。• 無駄な認証情報は残さない。• Anti Virus製品だけではなく、 URL フィ

ルタなど多層防御が重要だと思う。• Windows 10 とか結構いいと思う。• LSA Protection Mode は有効化しよう。

69

Page 70: Your hash is

君の Hashは ...

70

Page 71: Your hash is

参考 URLhttps://msdn.microsoft.com/library/dn751049(v=ws.11).aspxhttps://technet.microsoft.com/ja-jp/library/cc753382(v=ws.10).aspxhttps://support.microsoft.com/ja-jp/kb/299656https://asecuritysite.com/encryption/lmhashhttp://openwall.info/wiki/john/NTLMhttps://support.microsoft.com/ja-jp/help/2871997/microsoft-security-advisory-update-to-improve-credentials-protection-and-management-may-13,-2014https://msdn.microsoft.com/ja-jp/library/ee498328(v=winembedded.70).aspxhttp://www.atmarkit.co.jp/ait/articles/1305/31/news049.htmlhttp://blog.jpcert.or.jp/2016/10/verification-of-ad9d.htmlhttps://msdn.microsoft.com/ja-jp/library/dn408187(v=ws.11).aspxhttps://technet.microsoft.com/ja-jp/library/mt483740(v=vs.85).aspxhttps://technet.microsoft.com/ja-jp/library/2009.07.uac.aspxhttps://technet.microsoft.com/en-us/library/95eeb6ff-6c74-4f3a-b216-132010386d01

71