Dnsreply3


概要

Dnsreply3はプロミスキャスモードでネットワーク上のパケットをモニタし、特定のDNS名前解決リクエストを見つけると、発信元に対して偽のDNSリプライを送信する、コマンドラインプログラムです。Windows 2000、Windows XP Professional、およびWindows Server 2003で動作します。このソフトウェアはWindows OSの「QueryIpMatching」機能を検証する目的で作成しました。

使い方

    dnsreply3.exe local-ip target-name victim-ip forged-ip [dns-ip]

      local-ip    ... モニタするNICのローカルIPアドレス
      target-name ... 偽IPアドレスを割り当てたいFQDN
      victim-ip   ... このIPアドレスからのDNSリクエストに対してリプライする
      forged-ip   ... target-nameに割り当てる偽IPアドレス
      dns-ip      ... DNSサーバのIPアドレスを変えたい場合(QueryIpMatching検査用)

      (注:Administrator権限で実行して下さい)

説明

例えば、
    dnsreply3 192.168.1.1 www.microsoft.com 192.168.1.100 10.1.1.1
のように192.168.1.1のホスト上で起動しておくと、同一ネットワークセグメント上にある192.168.1.100からwww.microsoft.comの名前解決要求がDNSサーバに送られた際、そのパケットをキャプチャして、DNSサーバからの返答を装い「www.microsoft.comのIPアドレスは10.1.1.1だよ〜ん」というリプライを192.168.1.100に送ります。

dns-ipを指定すると、偽造するリプライパケットのソースIPをそのIPアドレスに設定します。QueryIpMatchingが有効かどうかを検査するには、まずdns-ipを指定しないで実行し、確かに偽造リプライパケットを受け入れることを確認した後に、dns-ipに適当なIPを指定してみればいいと思います。dns-ipを指定してもなお、偽造リプライパケットを受け入れる(つまりリクエストしたDNSサーバとは異なるIPアドレスからのリプライを受け入れる)ようであれば、QueryIpMatching機能は有効になっていないことになります。

本物のDNSサーバからのリプライの方が先に来た場合、失敗します。:) なるべく遠いDNSサーバを使うか、もしくはDNSサーバからのリプライをどこかでフィルタすれば確実です。

ちなみにwinsockのraw socketを使っていますので、winpcap等は不要です。また、とりあえず動くっていう程度のコーディングですので、パラメータのチェックなどはろくにやっていません。バッファオーバーフローを起こす可能性もあります。

注意事項

本ソフトウェアは自由にコピー、使用、改変、および部分利用していただいて結構です。ただし再配布はご遠慮願います。また本ソフトウェアは実験環境における使用を前提に、技術検証目的で作成したのものですので、ご使用にあたっては十分にご注意ください。なお、他人の管理下にあるコンピュータの動作を妨害する行為は違法となります(念のため)。

ダウンロード


このページに関するお問い合わせは、shio@st.rim.or.jp までお願いします。