【レポート】

Black Hat Japan 2005 - Unicode文字によるDirectory Traversal攻撃

1 文字コードでフォレンジックに関係しそうな領域はそれほど広くないはずだが…… - 伊原氏

  • <<
  • <

1/2

BlackHat Japan Briefings(以下BlackHat)では、セキュリティ関連の様々な話題に関するセッションが開かれたが、中には「よくもまあこんな方法を考えた」というようなものも数多い。本稿ではそんなセッションの中からいくつかをピックアップしてご紹介する。

見えない文字の混入によるフォレンジック回避策

最初にご紹介するのは、ネットエージェントの伊原秀明氏による「国内のフォレンジック」。一般に英語圏では文字コードというとほとんどASCIIコードのみを意識していればいいのに対し、日本語ではJIS(ISO-2022-JP)やEUC-JP、シフトJISなど多様な文字コードを意識しなければならない上、最近ではUnicodeに対応したソフトもかなり増えてきており、それを利用してフォレンジックを回避するような方法も開発されてきているという。そこで伊原氏はそれらのフォレンジック回避手法と、それに対する対策の一端を披露した。

伊原秀明氏

まず伊原氏が取り上げたのは、文字列の中へ画面上に表示されないゴミデータを混ぜることでフォレンジックを回避する手法。例えば文字列の中に改行コードが混じるだけでも一般的な検索では文字列がヒットしなくなってしまうが、伊原氏はそこからさらに一歩進んで、Unicodeで定義されている様々な制御文字を利用する方法を紹介し、U+FEFF(ZERO WIDTH NO-BREAK SPACE)をファイル名に埋め込むことで、エクスプローラ上での見た目は全く同じファイル名に見えるが、バイナリ的には異なるファイル名のファイルを作ることが可能になる様子などを実演した。

このように「a」と「bc.txt」の間に実際にはUnicodeの制御文字が混じっているが……

Internet Explorer上では見た目同じように表示されてしまう

さらにIEの表示をコピー&ペーストしてファイル名に入力すると、見た目には同じファイル名(だが実際は異なる)のファイルが作成できてしまう

コマンドプロンプトで参照すると、片方のファイル名に何か文字が混ざっているのがわかる

これを回避するためには、正規表現を利用したgrepなどにより、検索対象とする文字列の間に何かゴミが挟まった場合でもヒットするようなパターンを指定するのが一般的だと伊原氏は語ったが、一方でこの手法は大量の誤検知を生んでしまう上、検索に必要な時間も大幅に増加してしまう。そこで伊原氏が紹介したのが「文字列抽出」。これは、通常の文章では考えられないタイミングで登場する記号類や、明らかにゴミと考えられる制御文字などを取り除くようなツールを用いて、ターゲットとなるファイルに含まれる文字列のみを抽出するという手法だ。

伊原氏はフォレンジック用のツールとして広く使われている「The Sleuth Kit」に含まれる「strings」コマンドや、それを日本語・Unicodeに対応させた「istrings」、FTK(Forensic Toolkit)の日本語対応版である「FTK Asia」といった、文字列抽出に対応したツール群を紹介し、それらを利用することでフォレンジックに必要な情報を検索する時間を大幅に短縮することができる様子を紹介した。

Unicodeを利用したDirectory Traversal攻撃も可能

ここまでは単なるフォレンジック回避策だが、この「Unicode文字の活用」という考え方を発展させると、何といわゆる「Directory Traversal攻撃」(相対パス指定を利用して、当初想定されていないようなディレクトリにアクセスしてしまう攻撃)への応用が可能になってしまうという。

通常日本語版のWindowsでは「\」マークはディレクトリの区切り文字に使われているため、「\」マークが含まれたファイル名を入力してもWindowsのシステム側で拒絶されてしまうが、伊原氏はWindows XP上でUnicode文字のU+00A5(Unicode上の「\」マーク)を用いて、実際にファイル名に「\」マークが含まれたファイルを作成できる様子を披露。さらにその「\」マークが含まれるファイルをエディタ(デモでは秀丸エディタを使用)で開いて、ファイル名に含まれる「\」が今度はパス名として解釈され、そのファイルが本来存在するディレクトリとは全然別のディレクトリのファイルが開かれる様子をデモした(ちなみに同様の作業をnotepadで行った場合には問題は発生しない)。

しかもこの問題は日本語版に限った話ではない。伊原氏は続いて英語版のWindows XPを開き、英語版で通常ディレクトリの区切り文字に使われている「\」(バックスラッシュ)の代わりとして、U+FF3C(全角のバックスラッシュ)やU+2216(数学記号)といった、見た目がバックスラッシュに似ている記号を含むファイル名のファイルをコマンドプロンプトで表示させ、「どうもOS内部でこれらの記号がU+005C(通常のバックスラッシュ)に変換されて処理されているのではないかという疑いがある」と語った。この他にも伊原氏は「韓国語版のWindowsでは、ディレクトリの区切り文字にウォンの通貨記号を用いているため、同様に文字が変換される問題が発生する可能性がある」と指摘した。

Unicodeを使うことで、このように「\」マークを含むファイル名を作成可能

そのファイルを秀丸で開くと、ファイル名の中の「\」と「..」がパスとして扱われ、Windowsディレクトリ内部にファイルがあると解釈されてしまった

英語版Windows XPでの例。U+2216、U+FF3Cが半角のバックスラッシュに変換されている

  • <<
  • <

1/2

インデックス

目次
(1) 文字コードでフォレンジックに関係しそうな領域はそれほど広くないはずだが…… - 伊原氏
(2) 多くのSIP関連製品は未だに1999年レベルのセキュリティに留まっている - Ejovi Nuwere氏


転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

求人情報