Windows10の新しいハッシュの暗号化の解析問題の確認メモ(その2) | reverse-eg-mal-memoのブログ

reverse-eg-mal-memoのブログ

サイバーセキュリティに関して、あれこれとメモするという、チラシの裏的存在。
medium(英語):https://sachiel-archangel.medium.com/

Windowsでは、一部の認証でNTLMハッシュを使用しているものがありますが、その中でもハッシュ値を渡すだけで認証が通ってしまう pass-the-hash ができることが知られています。

前回、メモリイメージからVolatilityで取得したNTLMハッシュのパスワード解析には失敗しましたが、 pass-the-hash はどうでしょうか?

試しにやってみました。

 

path-the-hash に関する解説は以下のページを参考にしました。

 

Pass-the-Hashの仕組み
https://binary-pulsar.hatenablog.jp/entry/2018/12/06/090000

 

PSExec Pass the Hash
https://www.offensive-security.com/metasploit-unleashed/psexec-pass-hash/
 

Metasploit の機能 exploit 機能で pass-the-hash ができるようなので、試しにやってみました。

 

 

 

Windows10のメモリから得たハッシュを使用した場合

 

まず、Windows10(バージョン1709、ビルド16299.492)のメモリイメージから Volatility の hashdump で得たハッシュ値を利用します。

ハッシュ値を再掲します。

 

 

 

このハッシュ値を用いて pass-the-hash ができるかを試します。

ターゲットは、メモリ取得元の Windows10(バージョン1709、ビルド16299.492、IP 192.168.86.128)とします。

使用するのは exploit/windows/smb/psexec エクスプロイトです。

以下のように設定します。

 

 

 

この設定で exploit した結果が以下の通りで、exploit には失敗してしまいました。

やはり、このハッシュ値はパスワードの正しいNTLMハッシュではないようです

 

 

 

 

Windows7のメモリから得たハッシュを使用した場合

 

では、パスワードのハッシュ解析ができたWindows7のメモリダンプから hasudump で得たハッシュ値を使う場合はどうでしょうか?

このハッシュ値は、Windows10の hashtest ユーザに設定したパスワードと同じパスワードを Windows7のユーザに設定し、hashdumpで得たものです。

NTLMのハッシュはソルトを使っていないため、ハッシュ値は一致し、使えるのでは?ということです。

 

Windows7から取得したハッシュ値を再掲します。

 

 

 

このハッシュ値を用いて pass-the-hash ができるかを試します。

ターゲットは、ハッシュの取得元となったWindowsではなく、Windows10(バージョン1709、ビルド16299.492、IP 192.168.86.128)で同じパスワードを使っているアカウントとします。

つまり、Windows10のhashtest と同じパスワードを、Windows7でハッシュ化した値を使う形になります。

これは、異なるマシンで、かつ異なるバージョンのOSだが、パスワードが同じ場合のハッシュ値が pass-the-hash に使えるか?という確認になります。

設定と実行結果は以下のとおりです。

 

 

 

 

Windows10(バージョン1709、ビルド16299.492)に対し、同じパスワードを使っているWindows7のアカウントのハッシュ値で exploit が成功しました。

このことから、以下のことが言えると思います。

 

  • Windows10(バージョン1709、ビルド16299.492)では、NTMLハッシュの暗号化方法は変わったものの、NTMLハッシュ値自体は従来と同じ
  • Volatirity の hashdump では、2016年7月以降のハッシュ値の暗号化にAES暗号化を用いたNTLMハッシュ値は正しく取得できない。(注:2019年8月現在でGithubから得たプラグインを使用して hasudump をした場合。)
  • NTLMハッシュが正しく取得できれば、2016年7月以降の環境でも pass-the-hashは引き続き有効
 
また、psexecの exploit が成功したターゲット上で、 Metapriter の hashdump を実行してみます。
結果は、以下のようにエラーとなりました。
 
 
 
Kali Linux 自体が完全に最新のものではなかったので、もしかすると修正が入っているかもしれませんが、hashdump が上手くいっていないように見えます。
ターゲットのアカウントはAdministratorですが、念のため getsystem での昇格も企図しています。
 
 
これらの結果から、Volatility、Metasploit ともに、2016年7月(Windows 10 v1607)以降の環境からはNTLMハッシュ値を正しく取れないものとみられます。
将来的には修正される可能性もありますが、2016年7月(Windows 10 v1607)以降の環境のハッシュの取得をする機会があるならば、結果が正しくない恐れがあることに留意する必要があるでしょう。