ResponderとかいうWindowsの認証偽装ソフト

ResponderはNTLMの偽装をしている。はて?

Responderの使い方を書いている日本語情報はちらほら。仕組みはさっぱり。Twitterでは少し見かけた。

でもよく分かんないので、仕方が無いからHTBのWalkthroughを熟読。

NTLMとは

Windwosの認証の一種。最近はKerberosっていうあんまり隙の無い認証をメインに使ってる。けど、過去機種との互換性を引きずっていて、NTLMとかNetNTLMv2とか、時代遅れの認証をまだ搭載してる。

 

要点はこんな感じ。

・Windows認証(NTLMとかNetNTLMv2)は、Challenge/Response型のSSO認証を行っている。

・よくハッシュ!ハッシュ!っていうけど、実際にハッシュを使ってるのはNTLM。NetNTLMv2はちょっと違うけど攻撃するときにやる事は一緒だからあんま気にしなくてもいい。

・ちなみにこのNTLMのハッシュはNThashっていう。

 

ワークグループ(ドメイン)に属するWindowsの認証(Challenge/Response)の流れは以下

  1. クライアント側がサーバーに接続試行
  2. サーバーが認証情報を要求
  3. クライアント側がuser IDをサーバーに送信
  4. サーバー側がChallenge文をクライアントに送信
  5. クライアント側がChallenge文+passwordをハッシュ化してサーバーに送信(Response)
  6. サーバー側は受け取ったハッシュ情報(たぶんChallenge文を添えて)を認証サーバーに送信
  7. 認証サーバーは受け取ったハッシュ情報を自分の認証DBと比較。許可すれば接続許可。

たぶんこんな感じ。

 

じゃあResponderとは?

このSSO認証はログイン時とかに限らず各種サーバーに接続する時にも裏で行われてる。ドメイン環境内とかでは、一度OSにログインすればその認証情報を使用して他ドメイン内のサーバーと通信している。

 

この認証情報をどこかで盗聴したい。そこで使われるのがResponder

 

ただしResponderは盗聴ツールというよりは偽装サーバー。

HTTPとかFTPとかSMBとかのサーバーを偽装し、指定したインターフェイスで接続を待ち受ける。接続があればNTLMとかのChallenge/Response認証を接続元のクライアントに吹っ掛ける。

 

情報がハッシュ化されている事に油断しているWindowsとかは、意外に簡単に認証情報をこの偽装サーバーに教える。そのハッシュ化されている認証情報を抜き取るのがResponderの役割。

 

数文字のパスワードだけならハッシュ化された文字列や記号の特定は前出のTwitterが言っているように難しくないが、Challenge文が入っているので特定が難しい。というのがNTLMの油断。

 

Responderは自分がChallenge文を送りつけていてChallengeの内容を知っているので、そのChallenge文+推測パスワードをNThashとかでハッシュ化し、特定を試みる事ができる(ハッシュクラッキング)。

 

ただしResponderは認証情報を抜き取るのがメインで、ハッシュクラッキングはJohn the Ripperとかいう別ツールで行う。

 

たぶんこんな感じ。以上。