Windowsでは、パスワードはLMハッシュ、またはNTLMハッシュで保存されています。
(それ以外の格納方法があるかどうかはまだ調べ中。)
今回は、Windowsのハッシュに関する検証をするにあたり、これらの知識の再確認です。
ちなみに、この辺り特に詳しいわけではないので、基本的にいろんな記事を寄せ集めたリンクです。
参考になるサイトのメモ・・・が今回の記事のメインです。
Windowsのパスワードハッシュについてざっくりまとめると以下のような理解・・・なのですが、間違ってるかもしれないので悪しからず。
(気がつけば直します)
- LMハッシュは初期のもので、パスワードの大文字小文字の区別がなく、かつ最長でも14文字(結構前から基本的には使ってない)
- NTLMハッシュは大文字、小文字を区別する。
- NTLMハッシュの暗号化にはRC4が用いられていた。
- 2016年7月(Windows 10 v1607)以降、ハッシュの暗号化にはAESが用いられるようになった
- ハッシュにはソルトが使われていない
- 一部の認証では、平文のパスワードではなく、ハッシュ値のままで認証を通すpass-the-hashができる
参考にしたリンクを以下に記載します。
(今後もいい記事があったら増やしたい。)
Retrieving NTLM Hashes and what changed in Windows 10
https://www.insecurity.be/blog/2018/01/21/retrieving-ntlm-hashes-and-what-changed-technical-writeup/
パスワードってどこにあるの?その1
https://www.mbsd.jp/blog/20190514.html
それぞれ、パスワードのハッシュを求める方法が書かれています。
複雑な手順ではありますが、手順が分かってしまえば再現可能というわけです。
そのため、前回記事の「SANS SIFTのVolatilityの更新」で触れたhashdumpの機能でNTLMハッシュを取得することができる、ということです。
また、そもそものLM、NTLMの説明は、Wikiに十分書かれています。
LMハッシュ
https://ja.wikipedia.org/wiki/LMハッシュ
NT LAN Manager
https://ja.wikipedia.org/wiki/NT_LAN_Manager
そして、よく問題になる、Windowsのpass-the-hashの問題。
Pass-the-Hashの仕組み
https://binary-pulsar.hatenablog.jp/entry/2018/12/06/090000