[レポート]こんにちは!私の名前は [What?]: DHCPを悪用してDNSレコードを偽装する – CODE BLUE 2023 #codeblue_jp

CODE BLUE 2023で行われた「こんにちは!私の名前は [What?]: DHCPを悪用してDNSレコードを偽装する」というセッションのレポートです。
2023.11.08

こんにちは、臼田です。

みなさん、セキュリティ対策してますか?(挨拶

今回はCODE BLUE 2023で行われた以下のセッションのレポートです。

こんにちは!私の名前は [What?]: DHCPを悪用してDNSレコードを偽装する

攻撃者はDNSスプーフィングが大好きです。疑うことを知らない被害者のトラフィックをリダイレクトする能力は、攻撃者にとって非常に魅力的であり、様々な壊滅的な結果(機密データの暴露、クレデンシャルの漏洩、さらにはリモート・コードの実行)につなげることができます。

すべてのシステム管理者が知っているように、「DNSは難しい」です。DNSは複雑なシステムであり、多くの”ピース”(機能)が動いています。その”ピース”(機能)の1つが、DHCPの動的DNS更新と呼ばれる、DHCPサーバーがクライアントに代わってDNSレコードを登録することができる機能であり、一見無害な機能です。この機能は、市場で最も一般的なDHCPサーバーの1つであるMicrosoft DHCPサーバーにも存在し、デフォルトで有効になっています。

本講演では、この機能を調査し、マイクロソフト環境において、この機能がもたらすアタックサーフェスについて説明します。認証されていない攻撃者がActive Directory DNSゾーン内の任意のDNSレコードを偽装可能にする新しい攻撃手法について詳しく説明します。またこれを悪用して認証を妨害し、リモートコード実行を行う方法を示します。このような攻撃を防ぐためのセキュリティ設定を検証し、攻撃がどのように成立しないかを示します。

最後に、セキュリティリスクを回避するためにDHCPを使用する際に従うべきベスト・プラクティスについて説明し、防御者やITチームが危険な誤設定を発見するために使用可能なツールを公開します。

Presented by : オリ・デイヴィッド - Ori David

レポート

  • 今日は私の研究について、Active Directory環境のアタックサーフェイスの話
  • これまでセキュリティコミュニティが見逃していた物の話
  • DNS記録を改ざんする話
  • そして対抗策も話す
  • @oridavid123
  • Akamaiで働いている
  • まずDNSがターゲットとなる理由
    • DNSは攻撃者の対象となる
    • 偽装したりトンネリングしたりする
    • FWをバイパスすることに使われる
    • DDoSの増幅もある
  • DNSは様々な機能がある
    • 今回のターゲットはActive Directory
    • ADでのDNSはコアな機能の1つ
    • ADI DNSが必要になる
    • Active Directory Integrated DNS zone
    • ホストが2つあってそれぞれDNSを持っている
    • これは手動で登録していない、自動で登録される
    • DNS Dynamic Updatesで追加される
    • PCが増えると名前をつけアドレスも紐付ける
    • 誰もがDNSレコードにアクセスできて、これが改ざんてきたら攻撃者は楽しくなる
    • Secure Dynamic Updates
      • Kerberos認証を使う
      • 面白いのは認証のところ
      • Identityを検証し、次にPermissionを確認
      • ACLがついている
      • マシンレコードを作成する場合、そのレコードの所有権をマシンがもらう
      • 他のクライアントが改ざんする場合には失敗される
      • 存在しないNameもクレデンシャルがあれば作れてしまう
      • 後で詳しく話す
    • DHCP & DNS
      • DHCPはクライアントが新しいネットワークに入ったときにIPアドレスを付与する
      • DHCPに新しいIPをリクエストし、設定を要求する
      • DHCP DNS Dynamic Update
        • DHCPでDNSレコードを要求する
      • 1. PCがDHCP Serverにリクエスト
      • 2. DHCP ServerはDNS UpdateをDNS Serverにリクエスト
      • 3. DHS Serverが新しいレコードを生成する
      • デモ
        • Windows Serverのレコードを確認
        • dhclientを使ってリクエストを送る
        • FQDNとほしいIPを入れてリクエスト
        • 必要なものが提供され、DNSのレコードが追加された
    • 面白い点
      • このプロセスは認証無しで行われた
        • プロセスが通った
        • ドメインの認証がなくてもできた
        • DHCP Serverが変わりに認証されている
      • この機能はデフォルトで有効
      • 非常に広く使われている
    • Akamaiから確認するとMicrosoft DHCPは40%も使われていた
  • DNS Dynamic Updatesで何ができるか
    • 認証無しでDNSレコードを作れる
    • 以前からある攻撃を見てみる
    • LLMNR/NBNS Spoofing
      • DNSが知らないクエリをする
      • 同一ネットワークにLLMNR Multicastをする
      • 攻撃者がIPをレスポンスする
      • LLMTRでは認証されていない
      • デメリットは同じLAN上にいる必要がある
    • ADI-DNS Spoofing
      • ドメインクレデンシャルを持っていれば新しいレコードを書き込める
      • 攻撃者はDNS Updateで新しい不正なレコードを作って書き込む
      • しかし認証が必要になる
  • 新しいDDSpoofingの説明
    • これらを組み合わせていく
    • DHCPサーバーの能力を活用する
    • 攻撃者は認証されていないリクエストをDHCPサーバーに送る
    • つまりクレデンシャルもいらないし同じサブネットにいなくていい
  • 更にいいものにする
    • 既存のDNSレコードも編集したい
    • 実際に試してみた
    • 既存のPCマシンがある状態
    • DHCPサーバーに任意の名前のリクエストを送る
    • DHCPサーバーは検証せずにDNSに送っている
    • しかし、DNSサーバーがACLにより拒否される
    • 上書きの方法を考えるためにACLに対してのアプローチを考える
    • 2つのACLの種類がある
      • 名前は独自の命名
      • クライアントレコード
      • マネージドレコード
        • DHCPで作るもの
      • オーナーシップが違う
      • DHCPサーバー経由で作ったものはDHCPサーバーがオーナーになる
  • DDOverwriteについて解説
    • うまくいく方法は3つある
    • Managed Record Overwrite
      • DHCPサーバーが確認をしない
      • DHCPサーバーは自分で作った全てを保持している
      • つまり何でも上書きできる
      • しかし、実際にはあまりマネージドレコードはそんなに使われていない
    • Overwriting Client Records
      • すべてのもので登録されている
      • しかし通常は上書き権限がない
      • どうすればいいか
    • DHCP Self-Overwrite
      • DHCPサーバーは自分のFQDNでも確認しない
      • DHCPから上書きしていく
    • どんなDHCP通信も取得できる
  • Domain Controllerも上書きできる
    • しかしそれでも一番致命的な問題にはならい
    • Enterprise domain controllerのACL
    • 任意のDCにアクセスさせることが出来た
  • DC
    • 57%も対象となるDCがあった
  • 対応策
    • Name Protectionを使う
    • DNS Credentialを使う
      • クライアントによる上書きができなくなる
      • これはいい方法
  • まとめ
    • DHCP DND Spoofing
    • Managed Recordは制限できない
    • DNS認証を使う
    • DNS Dynamic Update使わない方がい
    • このアプローチは他の場所でも使えるはず

感想

なかなか刺激的なアタックサーフェイスで、びっくりしました。

Active Directoryを利用しているなら確認したい内容ですね。