Your hash is.

197 views

Published on

君のHashは。

Published in: Engineering
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
197
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
2
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Your hash is.

  1. 1. 君のHashは。 まだ会ったことないHashを探している 1
  2. 2. 自己紹介 小河 哲之 Twitter:abend 三井物産セキュアディレクション アルコール担当 Burp Suite Japan User Group ISOG-WG1 Prosit 2
  3. 3. はじめに Windowsの認証に関するセキュリティ について本資料は記載しています。本資 料の内容を管理下以外の環境に対して実 施しないでください。設定内容について は内容を保証するものではないため、各 自の責任で実施してください。 3
  4. 4. hash 元のデータから算出された値。hashか ら元の値を算出することができない。 hello → 066DDFD4EF0E9CD7C256FE77191EF43C helloo → 48B2F3EF9B18C7C58AF7C47ED7DB88D2 元の値が変われば、hashも変わる。 では、hashがどのように使われている のか。 4
  5. 5. Windowsの認証 アカウント名、パスワードまたは証明書 で認証を行い、ログオンする。認証の中 核を担うのがLSA(Local Security Authority)。 5
  6. 6. Windowsの認証 Login UI etc... LSA LSA Server Service Netlogon SAM DC etc... 6
  7. 7. SAM SAM(Security Account Manager)は データベースファイルに保存されている アカウント情報にアクセスし、認証時利 用されるプロセス。  reg save hklmsam c:samfile 管理者権限で実行する必要がある。 7
  8. 8. 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
  9. 9. LM Hash 脆弱なhash関数で、簡単にパスワード を特定することが可能。 Vista以降は利 用しないようになっている。 ・14byteに制限 ・大文字小文字区別なし ・7byteごとに暗号化 9
  10. 10. NTLM Hash パスワードをUnicodeとしてMD4で hashした128bitの値。LM Hashと比較 するとセキュリティの強度は高くなって いる。 10
  11. 11. Windowsのクレデンシャル LM Hash、NTLM Hashはsaltを使用し ていないため、同じパスワードを使用し ている場合、同じhash値になる。 password → 8846F7EAEE8FB117AD06BDD830B7586C ※NTLM Hash 11
  12. 12. hashの解析 hash値から元のパスワードを特定する には、辞書や総当たりでできる。ただ、 時間がかかってしまう可能性もある。 ascii95文字、パスワード7桁、 10million/sec計算できる場合 95^7/10^7=81days 12
  13. 13. Pass the Hash(PtH) 元のパスワードを特定しなくても、 hash値そのものを利用するための方法 として、Pass the Hashがある。 13
  14. 14. Pass the Hash(PtH) 同じパスワードを使ってさえすればいい ので、パスワードの長さや複雑さは関係 なくなる。 14
  15. 15. 君のHashは? (ペンテスターとして)まだ会ったことないHashを探している 15
  16. 16. Pass the Hash(PtH) Host1 admin : ????? Host2 admin : ????? 同じパスワードを使用している場合、取 得したhash値を用いて認証突破が可能。 パスワードが 分からなくて も認証突破で きてしまう。 hash値 hash値 16
  17. 17. 確かなことが一つだけある。 私たちは会えば、ぜったい すぐにわかる。 17
  18. 18. Pass the Hash(PtH) そのため、hash値を取得さえできてし まえば、権限によっては完全にコント ロールできてしまう可能性がある。 Host admin : ?????hash値 コマンド コマンドが動き 出す 18
  19. 19. 動き出した奇跡の物語 19
  20. 20. hashの持ち主 SAMファイルから存在するアカウントと hashの一覧を取得しても、そのアカウ ントの権限によってはできることが限ら れてしまう。そのため、影響を考える場 合、net userなどを用いて該当のアカウ ントの権限を確認する必要がある。 20
  21. 21. ねぇ、あなたは誰なの? 21
  22. 22. UAC ユーザーアカウント制御(User Account Control)はWindows Vista以降に導入さ れたセキュリティ機能。 22
  23. 23. UAC レジストリやシステム変更を行う際にダ イアログによる確認が行われる。悪意の あるプログラム実行を抑制するために有 効なセキュリティ機能。 23
  24. 24. UAC 管理者権限を有するアカウントでもUAC が有効な場合は、コマンド実行ができな い。 Administratorsグループ に属するアカウントのhash UAC hash値 コマンド 24
  25. 25. 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
  26. 26. Builtin Administrator Builtin Administrator(初期状態で存在 する管理者)は、デフォルトでUACの影 響を受けない。 Administratorsグループに属するアカウ ントとは異なり、UACに関係なくコマン ド実行が可能。 26
  27. 27. 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
  28. 28. 大事なHash 忘れたくないHash 忘れちゃだめなHash 誰なんだ...? 名前は... 28
  29. 29. Administrator 29
  30. 30. 前前前世から探してた 30
  31. 31. インストール直後はビルトインの Administratorが有効であるため、 NTLM Hashが取得された場合にPtH攻 撃は成功する。 31 Windows Server 2016
  32. 32. 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
  33. 33. Builtin Administrator Builtin Administratorは、クライアント OSではデフォルトで無効化されている がUACの影響を受けないため、アカウン トを有効化するべきではない。 Windows Serverではデフォルトで有効 になっているため、別の管理者権限を有 するアカウントで管理した方がいい。 33
  34. 34. Windows10のセキュリティ Windows10などでは、SAMファイルを 抽出してもNTLM HashがNULLになって いて、本来のパスワードのhashが分か らない。 Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6 cfe0d16ae931b73c59d7e0c089c0::: pentest:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0 d16ae931b73c59d7e0c089c0::: ※環境:Windows10 Pro 一部抜粋 34
  35. 35. Pwdump v7.1では、抽出できているよ うに見えるが、hash値が間違えている。 Windows Server 2016でも同様。 【Pwdump】 Administrator:500:2310D26235F3D51F20A9404C1CEFF55E:162 67D64C86E8DE5591298683ACD2F5E::: 【正解のNTLM Hash】 e19ccf75ee54e06b06a5907af13cef42 35 Windows10のセキュリティ
  36. 36. メモリ上の情報 Windowsにログオンしているアカウン トや資格情報に登録されているクレデン シャル情報がメモリ上に保持されている。 メモリを解析することでパスワードその ものを入手可能。 36
  37. 37. PtHによるメモリ調査 PtHして攻撃ツールを実行し、対象ホス トのメモリ上の情報を収集することが可 能。 Host admin : ?????hash値 攻撃ツール 37 情報の収集 クレデンシャル情報
  38. 38. メモリ上の情報 メモリ上にはパスワードそのものが存在 している。 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
  39. 39. メモリ上の情報 HKLMSYSTEMCurrentControlSet ControlSecurityProvidersWDigest にUseLogonCredential (DWORD)で0 をセットすると、メモリ上のwdigestの パスワードを持たなくなる。 wdigest : * Username : Administrator * Domain : VirSnow * Password : (null) 39
  40. 40. メモリ上の情報 Windows10の場合、UseLogonCreden tialをセットしなくてもメモリ上にはパ スワードそのものは持たない。 だが、しかし・・・ 40
  41. 41. 言おうと思ったんだ。 お前が世界のどこにいて も必ず会いに行くって。 41
  42. 42. 資格情報マネージャー ユーザ名、パスワードなどの資格情報を 一元管理するための機能。リモートの ファイル共有へのアクセスに使用される ドメインユーザのパスワードなどが保存 されている。 42
  43. 43. Windows資格情報 43
  44. 44. Windowsの認証 44
  45. 45. Windows資格情報 サイトなどのクレデンシャル情報を登録 し、一括管理することが可能。 45
  46. 46. 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. 47. やっと会えたね。 47
  48. 48. タスクスケジューラ dailyなどの条件に合わせて、指定する タスクを実行するための機能。 48
  49. 49. タスクスケジューラ 「ユーザがログオンしているかどうかに かかわらず実行する」を選択した場合に 実行するユーザを指定する。 49
  50. 50. タスクスケジューラ ここで登録されたクレデンシャルも資格 情報マネージャーの汎用資格情報に自動 的に登録される。そのため、メモリを解 析するとパスワードの取得が可能。 50
  51. 51. タスクスケジューラ 「パスワードを保存しない」をチェック している場合でもメモリからパスワード の取得が可能。 51
  52. 52. タスクスケジューラ タスクがアクセスできるのはローカルコ ンピュータ リソースだけかもしれない が、パスワードの取得は可能。 [00000005] * Username : VIRSNOWtest2 * Domain : VIRSNOWtest2 * Password : P@ssw0rd!! 52
  53. 53. この奇跡の出逢いに 日本中が涙した 53
  54. 54. Windows 10での資格情報 Windows 10 ProでもWindows 7同様 にタスクスケジューラで設定したクレデ ンシャルは資格情報マネージャーに登録 され、メモリ上で持っている。 54
  55. 55. どうすればいいのか 資格情報マネージャーから削除するとメ モリ上からも消されるため、パスワード の取得はできなくなる。 タスクスケジューラで該当タスクを消し ても、資格情報マネージャーから削除さ れない。 55
  56. 56. Anti Virus製品 メモリ上のクレデンシャル情報を抽出す るためのツールは、たいていのAnti Virus製品で検知されるため、Anti Virus製品の機能を停止するか、バイパ スする必要がある。 56
  57. 57. Anti Virus製品 攻撃ツールをメモリ上に展開し、実行す ることでAnti Virusをバイパスする。 57 Host admin : ?????hash値 コマンド クレデンシャル情報 攻撃ツール メモリ上に展開 攻撃ツール 情報の収集 メモリ
  58. 58. 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. 59. それはまるで 夢の景色のように ただひたすらに 美しい眺めだった 59
  60. 60. Anti Virus製品 Anti Virus製品も当然必要だが、それだ けで守ることが困難であるため、URL フィルターなどほかの対策もあわせて行 う必要がある。 60
  61. 61. Windows 10以降だと 何らかの方法でNTML Hashが取得され た場合でも、メモリ上のパスワードを取 得するツールを実行してもエラーになる。 ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005) ※環境:Windows Server 2012R2 一部抜粋 61
  62. 62. Credentialを守っている仕組み LSA Protection Mode 、Credential Guardがあります。 LSA Protection Mode →Windows8.1、Windows Server 2012R2など Credential Guard →Windows10 Enterprise、Windows Server 2016 62
  63. 63. LSA Protection Mode 保護されていないプロセスによるメモリ の読み取りやコード インジェクション を防止するための仕組み。 hklmsystemCurrentControlSetCo ntrolLsaRunAsLPPに1をセットする と有効化される。 63
  64. 64. LSA Protection Mode Windows 10などでは、SAMファイルを 抽出することが困難であるが、認証に関 連するプロセス(lsass.exe)をダンプし、 それを解析することでNTLM Hashを容 易に抽出できる。 64
  65. 65. LSA Protection Mode Windows 10などでLSA Protection Modeを有効化している場合、lsass.exe にアクセス(ダンプ)できなくなる。 Error opening lsass.exe (788): ????????????? (0x00000005, 5) 65
  66. 66. LSA Protection Mode そのため、LSA Protection Modeが有効 になっている場合に、NTLM Hashを取 得することが困難である。 66
  67. 67. Credential Guard Windows10 EnterpriseやWindows Server 2016で利用可能なクレデンシャ ル情報を保護する仕組み。仮想化ベース のセキュリティでHyper-V Hypervisor の有効化など複数の設定を行わないと利 用できない。 67
  68. 68. Credential Guard クレデンシャル情報が仮想環境に切り離 され、特定のプロセス以外からはアクセ スできない。 未検証で、クレデンシャル情報の抽出方 法が存在するのか、分からない。 68
  69. 69. まとめ • どんなに複雑でもPass the Hashには関係 ない。 • UACはちゃんと有効化しようね。 • Builtin Administraotrは無効化しよう。 • 無駄な認証情報は残さない。 • Anti Virus製品だけではなく、URLフィル タなど多層防御が重要だと思う。 • Windows 10とか結構いいと思う。 • LSA Protection Modeは有効化しよう。 69
  70. 70. 君のHashは... 70
  71. 71. 参考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

×