リモートデスクトップにPass-the-Hashしてみました。
Kali Linuxのblogを見て試してみました。
Pass-the-Hashって何?という方もいらっしゃると思いますので(かなり)簡単に説明します。
WIndowsはログオン(最近はサインインと言うようですね。)パスワードは平文ではなく、ハッシュ関数を用いてハッシュ化して保存されています。
ntsujiというユーザ名でntsujiというパスワード設定した場合は以下のように保存されました。
ntsuji:1001:NO PASSWORD*********************:622BB9FF06C09173842E03C47E49F33F:::
「622BB9FF06C09173842E03C47E49F33F」の部分が「ntsuji」というパスワードをハッシュ化したものです。
通常ログオンする際には、「ntsuji」と設定したパスワードを入力しなければログオンできません。
これはリモートデスクトップでも同じことです。
しかし、このハッシュ化された文字列を用いてログオンする手法があります。
それがPass-the-Hashです。
それの何が便利なの?ということなのですが、何も便利ではありません。
通常使っている分には。
しかし、攻撃者からするととても便利な手法なのです。
例えば、1台のコンピュータへの侵入に成功し、そのコンピュータからパスワードハッシュを入手したとします。その情報を使って他のコンピュータに侵入を試みるには、通常のログオン同様、ハッシュ化されたパスワードではなく、元のパスワード、つまり、平文のパスワードが必要になるわけです。
そのためには一旦、そのパスワードハッシュを平文の戻す作業が必要となり、一手間多くかかってしまいます。パスワードの強度次第では平文に戻すための作業にかける時間が膨大になる、もしくは、現実的な時間では戻せない場合もあります。そこで、Pass-the-Hashを用いることでパスワードハッシュさえあれば、それを使って侵入を試みるということが実現可能となるわけです。
もちろん、手元にあるパスワードハッシュが他のホストで使用されているものと異なる場合は侵入には成功しません。逆にいうとパスワードの使い回しが行なわれていれば一網打尽にできてしまうということになります。
ここまで書いて思い出したのですが過去に@ITの「セキュリティ・ダークナイト」でも触れていましたのでそちらも参考にしていただければ幸いです。
そろそろ本題です。
今までは、リモートデスクトップではPass-the-Hashを行なうことはできませんでした。
しかし、RDP 8.1からは、Restricted Admin Modeがサポートされたことにより可能となったようです。
ということで試してみました。
利用するツールは「FreeRDP」なのですが、公式のものにパッチを適用するか、こちらを利用する必要があります。
Kali Linuxを利用している場合は
apt-get update
apt-get install freerdp-x11
とすればPass-the-Hashに対応した「FreeRDP」を利用することができます。
シンタックスは以下の通りです。
xfreerdp /u:ユーザ名 /pth:パスワードハッシュ /v:ターゲットのアドレス
特に問題なくパスワードハッシュを用いてリモートでスクトップを利用することが可能でした。
ちなみに、RDP 8.1は、Windows 8.1、Windows 2012 R2からですので、それ以前のOSではこの手法は使用できません。
念の為、Windows 8とWindows 7にも試してみました。
また、ターゲットとする権限は「Administrators」に属している必要があり「Remote Desktop Users」ではこの手法は利用できないようです。以下は、Windows 8.1上に作成した「Remote Desktop Users」に属する「rdp-user」へPass-the-Hashを行なった結果です。
RDP 8.1 で「Administrators」に属さないないユーザではもPass-the-Hashによるログオンができないということがお分かりいただけたかと思います。
【2014/01/30追記】
Restricted Admin modeについて北河拓士さんからコメントをいただきました。
以下はその内容をまとめたものです。
Restricted Admin modeの導入の理由としては、既に侵入されてしまっているマシンに対して、ヘルプデスクがメンテナンスを行なうためにリモートデスクトップでDomain Adminsに属するユーザででログオンした際「mimikatz」などを利用してメモリ上からそのDomain Adminsに属するユーザのパスワードを平文で取得されないように制限を付けるというメリットのためです。
Restricted Admin modeについての説明をした資料はこちら[PDF]が詳しいかと思います。
セキュリティ強化を行なうために導入された機能が新たな攻撃方法の成功を生んでしまうことはなんとも皮肉なことかもしれませんが、攻撃者が既にハッシュを持っているという状態で行なう攻撃ですとリモートデスクトップとは別の経路でPass-the-Hashも可能です。それらを考慮すると以前よりもセキュリティ機能としては+αされたと言えるのではないかと思います。
Restricted Admin modeが導入されている環境下での「mimikatz」実行結果に関してのエントリーはまた別の機会に。