情報通信工学の分野におけるポイズニングの調査

情報通信工学科 4 年
07EC006
新井 雅崇

目次

1. はじめに
1.1. 目的
1.2. 意義
2. ポイズニングの例
2.1. SEOポイズニング
2.1.1. 予備知識
2.1.2. SEOポイズニングとは
2.1.3. 特徴
2.1.4. 目的
2.1.5. 手法
2.2. DNSキャッシュポイズニング
2.2.1. 予備知識
2.2.2. DNSキャッシュポイズニングとは
2.2.3. 特徴
2.2.4. 目的
2.2.5. 手法
2.3. ARPポイズニング
2.7.1. 予備知識
2.7.2. ARPポイズニングとは
2.7.3. 特徴
2.7.4. 目的
2.7.5. 手法
2.4. ルートポイズニング
2.4.1. 予備知識
2.4.2. ルートポイズニングとは
2.4.3. 特徴
2.4.4. 目的
2.4.5. 手法
2.5. P2Pインデックスポイズニング
2.5.1. 予備知識
2.5.2. P2Pインデックスポイズニングとは
2.5.3. 特徴
2.5.4. 目的
2.5.5. 手法
3. ポイズニングの調査
3.1. 調査対象の共通点
3.2. ポイズニングの定義
3.3. ポイズニングのカテゴライズ
3.3.1. 悪意ある接続先へ誘導するポイズニング
3.3.2. 互換性を保持して機能を追加するポイズニング
3.4. 分類による応用
4. まとめ
4.1. 結果
4.2. 評価
4.3. 展望
5. 参考文献

1. はじめに

1.1. 目的

 情報処理において、悪意あるデータの混入によって、誤った処理結果が得られる場合がある。このような、悪意あるデータを与えることをポイズニングと呼ぶが、必ずしも、これが定義とは言い切れない。この論文では、ポイズニングの定義を決定すること並びに、ポイズニングをカテゴライズすることを目的に据えている。

1.2. 意義

 ポイズニングという用語が誤用されることを防ぐ。また、この技術を学ぶ際における理解の手助けにする。さらに、ポイズニングを避けたり、有益に利用する方法を見出す際の資料としたい。

2. ポイズニングの例

2.1. SEOポイズニング

2.1.1. 予備知識

2.1.1.1. SEO

 SEOとは、“Search Engine Optimization”の略称で、「検索エンジン最適化」と日本語に訳される。検索エンジン最適化とは、対象のウェブコンテンツが検索結果の上位に表示されるように、工夫することである。これは全文型の検索エンジンを対象にする。ウェブコンテンツは検索結果の上位に表示されるほど、検索エンジンの利用者の目につき易いために、訪問者が増えると言われている。[1]

2.1.1.2. 検索エンジン

 検索エンジンとは、インターネットで公開されている情報を検索することができるWebサイトである。検索エンジンには、キーワードによって検索する全文検索型と、カテゴリから検索するディレクトリ型の2種類に大別できる。[2]

2.1.2. SEOポイズニングとは

 SEOを悪意あるウェブコンテンツに適用することである。[3]

2.1.3 特徴

 特定のキーワードによる検索結果の上位に、悪意あるウェブコンテンツを表示させる。これにより、検索エンジンの利用者を悪意あるコンテンツへと誘導する。悪意あるコンテンツにはフィッシングサイト等が選ばれる。

2.1.4. 目的

 悪意あるコンテンツへの訪問者を増やして、それによる被害を拡大させること。

2.1.5. 手法

2.1.5.1. 人気のキーワードを選ぶ

 SEOの検索キーワードに多くの利用者が検索するであろう、人気のキーワードを選択する。これにより、悪意あるコンテンツを多くの人の目に入れることができる。実際には、クリスマスの時期に“christmas gift shopping”といった検索キーワードでSEOポイズニングが確認された。[4]

2.1.5.2. コンテンツの捏造

 話題のニュースに関連して捏造した情報を検索キーワードにする。なぜなら、捏造した内容であるために、検索結果の順位を競うウェブコンテンツがほとんど無いからである。そのために、位へ表示されることが期待できる。実際に、有名俳優の訃報のデマに便乗して、それを伝える記事やニュース映像を装ったSEOポイズニングが行われた。[5]

2.2. DNSキャッシュポイズニング

2.2.1. 予備知識

2.2.1.1. DNS

 DNSとは、“Domain Name System”の略称である。Domain Name Systemはホスト名とIPアドレスを対応させるシステムである。これは全世界のDNSサーバーが協調して動作する、分散型データベースである。[6]

2.2.1.2. DNSサーバー

 個々のドメインを管理するサーバー。個々のDNSサーバーは自身が管理するドメインとIPアドレスの対応表を持っており、外部からの問い合わせに応答する[7]。再帰問い合わせを受け付けた場合には、管理していないドメインに関しても、自身で新しく問い合わせを行いIPアドレスを応答する[8]。そして、その解決したIPアドレスを自身のキャッシュに蓄える機能がある。

2.2.2. DNSキャッシュポイズニングとは

 DNSキャッシュポイズニングとは、DNSサーバーのキャッシュに偽のIPアドレスを蓄えさせることである。[9]

2.2.3 特徴

 DNSサーバーには再帰問い合わせを行った場合に、その解決したIPアドレスを自身のキャッシュに蓄える機能がある。そして、再び同じドメインが問い合わせられると、そのキャッシュを基にIPアドレスを応答する。間違ったIPアドレスがキャッシュに蓄えられた場合には、正しくない接続先を応答されることになる。そのため、異なる接続先へ誘導することができる。

2.2.4. 目的

 ホスト名に偽のIPアドレスを対応させて、接続先を変更する。

2.2.5. 手法

2.2.5.1. Kashpureff型

 かつて、DNSサーバーが持っていた脆弱性を利用する手法である。BIND8.1.1より前のDNSサーバーは、送信元に構わず応答の内容を鵜呑みしていた。そのため、第三者のDNSサーバーよるIPアドレスの変更が可能であった。現在のDNSサーバーは応答を受け取った時に、問い合わせ先のDNSサーバーが管理するドメイン、又は、それより下層のドメイン以外の情報を無視するようになっている。そのため、現在この手法は利用できない。[10]

2.2.5.2. 偽装応答型

 ドメインを管理するDNSサーバーが応答を送信するより先に、偽の応答を送りつける手法である。受け取ったDNSサーバーは正式な応答として取扱い、その中に記載されたIPアドレスをキャッシュに蓄える。ただし、その偽の応答には問い合わせに含まれたものと同じID付加しないと正式な応答としては扱われない。また、ポートも正しく指定しなければならないが、現在はランダムに設定することが推奨されている[11]。そのため、IDを換えた偽の応答を大量に作成して、様々なポートへ送りつけなければこの手法はできない。

2.2.5.3. カミンスキーアタック

 偽装応答型の亜種である。通常の偽装応答型は、キャッシュが破棄されるまで問い合わせが発生しないために、連続して行うことができない。カミンスキーアタックは偽のIPアドレスを対応させたいURLと同ドメインでランダムなホスト名を作成して、問い合わせる。キャッシュが存在し得ないために、連続して行うことができる。応答には、問い合わせたランダムなホスト名のIPアドレスと共にURLのIPアドレスを追加しておく。[12]

2.3. ARPキャッシュポイズニング

2.3.1. 予備知識

2.3.1.1. ARP

 ARPとは、“Address Resolution Protocol”の略称である。Address Resolution ProtocolはIPアドレスとMACアドレスを対応させるためのプロトコルである。解決したいIPアドレスを付加したEthernetフレームをブロードキャストすると、そのIPアドレスを持つ端末がMACアドレスを含んだEthernetフレームを応答する。それを受け取った端末は自身が持つIPアドレスとMACアドレスの対応表であるARPテーブルに記録する。その後ARPテーブルはEthernetでの通信の際にMACアドレスを参照される。[13]

2.3.1.2. ARPポイズニングとは

 ARPポイズニングとは、ARPテーブルに間違ったMACアドレスを記録させることである。[14]

2.3.2. DNSキャッシュポイズニングとは

 DNSキャッシュポイズニングとは、DNSサーバーのキャッシュに偽のIPアドレスを蓄えさせることである。[9]

2.3.3 特徴

 IPアドレスを解決する際に、ARPはEthernetフレームの宛先にブロードキャストを表す“FF-FF-FF-FF-FF-FF”を設定して送信する。そのため、同ネットワーク上の送信者を除く全ての端末は応答をすることができる。ARPキャッシュポイズニングは解決したいIPアドレスを持つ端末の応答より先に、その端末を騙って応答することで行う。これにより、受け取った端末のARPテーブルには間違ったMACアドレスが蓄えられ、Ethernetフレームの送信先を変更することができる。

2.3.4. 目的

 Ethernet上を流れるEthernetフレームの奪取、盗聴、改変すること。

2.3.5. 手法

2.3.5.1. 中間者攻撃を行う場合

 2つの端末にARPインデックスポイズニングを行い、お互いの送信先を攻撃者の端末が持つMACアドレスに書き換えて行う。これにより、2つの端末間に入り込む中間者攻撃が可能となる。互いの通信を把握することができ、また、正しい端末へ通信内容を転送することで盗聴していることを気付き難くすることができる。

2.4. ルートポイズニング

2.4.1. 予備知識

2.4.1.1. RIP

 RIPとは、“Routing Information Protocol”の略称である。Routing Information Protocolはディスタンスベクタ型ルーティングプロトコルである。[15]

2.4.1.2. ディスタンスベクタ型ルーティングプロトコル

 ディスタンスベクタ型ルーティングプロトコルとは、隣接するルーターー同士でルーティングテーブルを交換して、経路情報を得るルーティングプロトコルである。そのネットワークへたどり着くまでに経由する他ネットワークの数をメトリックと呼ぶ。ルーターはメトリックが小さい経路情報を選択してルーティングテーブルに記憶する。到達不可能かは各ルーターが判断する。

2.4.2. ルートポイズニングとは

ルートポイズニングとは、ルーティングプロトコルを用いて他のルーターの経路情報に到達不可能を設定すること。

2.4.3 特徴

 ディスタンスベクタ型ルーティングプロトコルのメトリックには、到達不可能と同義になる値が存在する。その値をメトリックに設定した経路情報をルーターに送ることで、外部からルーティングテーブル上の経路情報に到達不可能を設定できる。

2.4.4. 目的

 外部から、望みのタイミングで経路情報を到達不可能を設定すること。

2.4.5. 手法

2.4.5.1. RIPの場合

 RIPの経路情報は180秒間更新が途切れるとメトリックに到達不可能を表す“16”が設定される。そして、送信できないと判断される。それは、ルートポイズニングはメトリックに“16”を設定した経路の情報を送信することで行う。これを行った場合、180秒待たずにルーターへその経路が利用できないと気がつかせることができる。この例はポイズニングを有効的に活用している。

2.5. P2Pインデックスポイズニング

2.5.1. 予備知識

2.5.1.1. P2P

 P2Pとは、“Peer to Peer”の略称である。Peer to Peerはサーバーを介さずに端末が相互に直接接続するネットワーク、または、そのような通信網を持ったソフトウェアのことである。[16]

2.5.1.2. Winny

 Winnyとは、P2Pファイル共有ソフトの一つである。P2Pファイル共有ソフトとは、P2Pネットワークにつながる端末の間でファイルを交換、共有するソフトである。[17]

2.5.2. P2Pインデックスポイズニングとは

 P2Pインデックスポイズニングとは、P2Pネットワークにつながる端末に偽のインデックス情報を送信すること。

2.5.3 特徴

 P2Pネットワークはインデックスを一元管理する存在が無い。そのために、不特定多数の端末から送られる情報を取捨選択しつつも、信頼せざるを得ないシステムになっている。嘘のインデックス情報をプロトコルに従って送りつけて、各端末が持つインデックス情報を変更、一部消去することができる。

2.5.4. 目的

 各端末が持つインデックス情報を変更、一部消去すること。

2.5.5. 手法

2.5.5.1. Winnyの場合

 参考文献[18]では、共有ファイルのダウンロードの妨害を目的にしている。Winnyでは、共有ファイル毎のインデック情報を「キー」、ネットワークにつながる各端末を「ノード」と呼ぶ。キーはノード同士でやりとりされ、それを基にダウンロードを行う。Winnyには同一ファイルのキーを新たに取得した場合には、そのキーの内容を更新する性質がある。キーには寿命が設定されているが、その寿命を“0”に設定したキーを送りつけることでP2Pインデックスポイズニングを行う。これにより、キーは上書き後破棄されるため、共有ファイルのダウンロードは不可能になる。

3. ポイズニングとは

3.1. 調査対象の共通点

 調査した全てのポイズニングの間で、共通する特徴には、次のようなものがある。

  1. 能動的、受動的に関わらず情報処理システムに作成したデータを与える
  2. 与えるデータは正常な形式に沿って作成する
  3. ポイズニングの後も対象は動作を続ける
  4. 既存の情報を追加、変更、一部消去を行っている

3.2. ポイズニングの定義

 前述の4つの共通点を踏まえて、ポイズニングの定義を次のように決定した。

「ポイズニングとは、システムに対して想定されていないデータを与えることで、異常な処理結果を出力させることである。ポイズニングはその対象とするシステムの挙動を把握して、異常な処理結果を引き起こすデータを規格に沿った形式で作成して行う。対象となったシステムはそのデータを通常のと同じく処理をして、正常に動作をしたまま、異常な結果を出力する」

3.3. ポイズニングのカテゴライズ

 調査した全てのポイズニングを利用目的の類似性に合わせて、次のようにカテゴライズした。

  1. 悪意ある接続先へ誘導するポイズニング
  2. 互換性を保持して機能を追加するポイズニング

3.3.1. 悪意ある接続先へ誘導するポイズニング

 このポイズニングは接続先に関する内容を処理するシステムに対して行う。間違ったアドレスを記録させることや偽の接続先を目立たせることで誘導する。次のものが当てはまる。

3.3.2. 互換性を保持して機能を追加するポイズニング

 既存のシステムへ新たな機能を追加するために用いるポイズニングである。ポイズニングは行う側だけの実装で可能なため、システム全体の変更をせずに、データを消す等の新たな機能を追加できる。次のものが当てはまる。

3.4. 分類による応用

 悪意ある接続先へ誘導するポイズニングは他の接続先を掲示するシステムに対して応用できると考えられる。例えばWEBサイトに表示されるランキングを操作してそれに関するコンテンツへ誘導するといった手法もこのポイズニングに含まれると考えられる。

 互換性を保持して機能を追加するポイズニングは他の変更が容易でないシステムに対して応用できると考えられる。利用者が多数であるため刷新が容易でない大型のシステムや端末が独自に動作するために代表者による変更が可能である領域が限られるP2Pネットワーク等が挙げられる。

4. まとめ

4.1. 結果

 調査したポイズニングから4つの共通点を見出し、それを踏まえて、ポイズニングの定義を決定した。そして、調査したポイズニングのカテゴライズを行い、ポイズニングを2項目に分類した。

4.2. 評価

 決定したポイズニングの定義は簡素にまとめられて考えられる。そして、導出の方法からも十分に信頼できる内容であると考えられる。そのため、ポイズニングの定義の決定の意義を十分に果たせるであろう。また、ポイズニングの元々のイメージである“中毒”や“汚染”等とも合致する内容となったので、その点からもとても満足のいく結果であった。

 しかし、調査対象の数が決して多いとは言えないのではないかとも考えられる。カテゴライズでも同様に、絶対数が少ないためか2つのカテゴリーしか作れなかった。また、現在のカテゴライズは項目が複数のカテゴリーに跨いだ場合を考慮していないため後に改正を必要とするかもしれない。

4.3. 展望

 今後の課題としては、調査対象にするポイズニングを追加することで、定義の信頼性を向上させると共に、カテゴリの種類や項目を充実させることが考えられる。さらに、カテゴリを参考にして、新たなポイズニングを提案することにも取り組みたい。

5. 参考文献

[1]SEOとは【Search Engine Optimization】 - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/SEO.html
[2]サーチエンジンとは【search engine】(検索エンジン) - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/E382B5E383BCE38381E382A8E383B3E382B8E383B3.html
[3]SEOポイズニングとは【SEO poisoning】 - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/SEOE3839DE382A4E382BAE3838BE383B3E382B0.html
[4]SEOポイズニング とは - Networkキーワード:ITpro
http://itpro.nikkeibp.co.jp/article/Keyword/20080311/295959/
[5]検索結果に潜む偽セキュリティソフトの罠 | コラム | インターネット・セキュリティ・ナレッジ|インターネットセキュリティに関するポータルサイト
http://is702.jp/column/701/partner/12_t/
[6]DNSとは【Domain Name System】 - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/DNS-1.html
[7]RFC 1034
http://www.ietf.org/rfc/rfc1034.txt
[8]RFC 1035
http://www.ietf.org/rfc/rfc1035.txt
[9]DNSキャッシュポイズニング攻撃と、脆弱性への対応についての解説 - !JP 日本レジストリサービス
ttp://jpinfo.jp/topics/080808.html
[10]Kaminsky Attackの全て
http://www.nic.ad.jp/ja/materials/iw/2008/proceedings/H3/IW2008-H3-07.pdf
[11]インターネット10分講座:DNSキャッシュポイズニング
http://www.nic.ad.jp/ja/newsletter/No40/0800.html
[12]It’s The End Of The Cache As We Know It
http://s3.amazonaws.com/dmk/DMK_BO2K8.ppt
[13]RFC 826
http://www.ietf.org/rfc/rfc826.txt
[14]「ARP Poisoning」とは:ITpro
http://itpro.nikkeibp.co.jp/word/page/10004129/
[15]RFC 1058
http://www.ietf.org/rfc/rfc1058.txt
[16]P2Pとは【Peer to Peer】(ピアツーピア) - 意味/解説/説明/定義 : IT用語辞典
http://e-words.jp/w/P2P.html
[17]Winnyの技術
金子 勇、アスキー書籍編集部(編)、pp.183-194、株式会社アスキー、東京、2005.
[18]Winny ネットワークに対するインデックスポイズニングを用いたファイル流通制御方式
吉田 雅裕、大坐畠 智、中尾 彰宏、川島 幸之助、情報処理学会論文誌、Vol.50、No.9、pp.2008-2022、Sep.2009.