トップページに戻る
tokix.netはネットワーク・セキュリティ周辺から半径rな雑文を垂れ流す不定期更新個人サイト>>このサイトについて

小学生でも分かるIP抜き講座

<<トップカテゴリー「NetChildren」に戻る

小学生でも分かるIP抜き講座(1) (>>この記事のみを表示)

「IPを抜く」。何か鳥肌の立つ言い回しですね。「串を刺す」と同じように「アングラな香り」なのかもしれません。

・・・といった漠然としたイメージが先行すると「IP抜くぞコラ」という台詞に怯え「抜いたぞ」という台詞に泣きながらネットサーフィンをしなくてはいけない訳で。

IP抜きとは何なのか。簡単に説明します。


PC同士がコネクションを持つためには、お互いに「相手が誰なのか」を理解していないといけません。

「PC同士」ってのは例えばこういうことです。

  • WinMXを使ってWindowsマシン同士がファイルの送受信を行う
  • Windowsマシンのブラウザ(例えばIE)がUNIXマシンのサーバーからファイルを受信しネットサーフィン

「PC同士のコネクション」というのは文通に似ています。お互いが「相手の住所」に対し郵便を出す。その連続が「コネクション」です。「郵便」ってのがこの場合は「パケット」です。

「パケット」という言葉は携帯電話のおかげでメジャーになってきたと思います。「長いメールはパケット数増えるから受信料高くなるんだよ」という台詞は普通に通用するでしょう。「パケット」は例えば画像・文章といったデータ以外にも部位を持っています。ヘッダ。いずれこのテーマは深く掘り下げる気がしますが今回は軽く説明して終わります。ヘッダには

  • 送信元IPアドレス
  • 送信先IPアドレス

が書かれています。

例えばこのページを開こうとした時、あなたのPC(12.34.56.78)は以下のような意味の「パケット」をtokix.netサーバー(211.0.149.228)に送信しています。

「俺IPアドレス12.34.56.78だけどサイト見たいからデータ送れ>tokix.net(211.0.149.228)」
あなたは自分からすすんでtokix.netに自分のIPアドレスを送っているんです。当たり前です。そうしなければtokix.netはどこにデータを送ればいいのか分からない。差出人住所が書かれていない手紙には返信しようがないのと同じです。

・・・これが、「IP抜き」です。上記が「tokix.netがあなたのIPアドレスを抜いた」と表現されます。

ネットに接続されている全てのPCは「今自分が接続している相手PCのIPアドレス」を知っている。というか知らなければコネクションを張ることができない。

ウインドウズのスタートを押して下さい。で「プログラム」「アクセサリ」「コマンドプロンプト」を起動して下さい。

上図のようなウインドウが表示されたと思います。「netstat -a」と打ってエンター。

表示されたのが「あなたのPCが現在コネクションを張っている相手」です。

あなたのWindowsマシンも「自分がコネクションを張っている相手」を知っている訳です、さっき書いたように当たり前なことなんですが。

だから「IP抜き」というのは「相手からIPアドレスをかすめ取る(≒スリ)」のではなく「相手に自覚なくIPアドレスを送らせる(≒詐欺)」技術です。

小学生でも分かるIP抜き講座(2) (>>この記事のみを表示)

前回書いたようにWindowsマシンも「自分が接続している相手のIPアドレス」を知っている訳です。知っている訳ですが「それをどうやって管理しよう」というのは別の問題で。netstatでもいいんですがいわゆるパーソナルファイアーウォール系のソフトをすすめておきます。


Sygate Personal Firewall

Sygate Personal Firewall日本語化パッチ

個人使用は無料。「パーソナルファイアーウォールソフトとは何なのか」というのは本筋と関係ないんで一言ですませますが「自分と外部のコネクションを管理し制限するためのソフト」です。つまり「外部からの不正なアクセスを防ぐ」とか「内部から外部への不正なアクセス(トロイとかスパイウェアとか)を防ぐ」とかそういうことをする訳なんですが、動作目的のために接続状況を監視します。決して「IP抜きのためのツール」ではないです。「これとウイルススキャナーとトロイスキャナーがあれば一応安全なネットライフを送れるかなぁ」って感じなツールです。

メインウインドウで「View」「Connection Details」を選ぶと現在の接続状況。

「Tools」「Logs」「Traffic Log」でログ表示。

見にくいですが「どのアプリがどことコネクションを持ったか」も分かります。netstatにはない機能ですね。例えば「10分前にWinMXで接続していた相手のIPアドレスはー」という情報も手に入る訳です。

同種のソフトでZone Alermというのも個人使用は無料で有名です。というかこっちのが有名かも。個人的にはインターフェイスが嫌いなんで使ってないんですが。他市販でNorton Personal Firewall(Norton Internet Securityに入ってます)等、同種の「パーソナルファイアーウォールソフト」はたくさんあります。大体のソフトには上記のような機能がついてると思います。別に「落とすの面倒」とか「メモリー足りない」という場合はnetstatでもいいですけどね。


・・・とにかく我々ユーザーの目に映すための手段がnetstatだろうとパーソナルファイアーウォールだろうと、「自分のマシンが現在接続している相手のIPアドレス」は分かるものです。

だから問題は「どうやって相手とのコネクションを持つか」という点です。例えばP2Pのファイル交換(共有?)ツールやメッセンジャーなどは基本的に相手PCと直接コネクトします。

具体的なアプリ名を出すと汎用性なくなる気がするので抽象的な説明のまま、この話は終わりです。

「ひょっとしたらIPを抜かれるかもしれないアプリ」があったらnetstatなりで確認してみて下さい。「IP抜き」という視点で見るなら、この世には二種類のアプリしかありません。

  • 相手と直接コネクションを持つアプリ
  • 相手と直接コネクションを持たないアプリ

小学生でも分かるIP抜き講座(3) (>>この記事のみを表示)

前回までを正しく(この連載読むまでIP抜きについてよく知らずウチのテキストをちゃんと理解しつつ)読んでくれた人は何かスッキリしない部分を持っていると思います。

「IP抜きとはコネクションに伴いIPアドレスが相手から通知されることである」
これは正しいです。ということは当然こうなります。

「IPを一方的に抜くことはできない、自分が相手のIPを抜いた時には相手も自分のIPを抜いている」
これも正しいです。

ただし、工夫すれば「相手は自分のIP知らないけど自分は相手のIPを知っている」という状況を作れます。間に第三者を挟むわけです。

「ウェブサーバーのアクセスログを見よう」というのはここで出てくる発想です。つまりウェブサーバーが「第三者」です。

管理人(自分)←→ウェブサーバー←→閲覧者(ターゲット)
「ターゲット」が「ウェブサーバー」に接続する。そして「自分」も「ウェブサーバー」に接続する(アクセスログを拾うために)。「自分」と「ターゲット」の間でコネクションは生じません。「ウェブサーバー」は接続された「ターゲット」のIPアドレスをデータとして保存し、「自分」は「ウェブサーバー」に接続し「ターゲット」のIPアドレスをデータとして受け取る訳です。

※補足

では「閲覧者」から見て、ウェブサーバーに自分のIPアドレスを抜かれないようにするにはどうすればいいのか。こちらも発想は同じで「第三者」を挟めばいい。というのが「プロキシサーバー(=第三者)を挟めば匿名だ」という台詞の意味です。

ウェブサーバー←→プロキシサーバー←→閲覧者
「閲覧者」は「プロキシサーバー」と、「プロキシサーバー」は「閲覧者」・「ウェブサーバー」と接続します。「ウェブサーバー」と「閲覧者」の間でコネクションは生じません。「プロキシサーバー」は「閲覧者」とコネクションを持つ訳なので当然「閲覧者」のIPアドレスを知っていますけどね。
ただ、今回書いた話というのは殆どの人には関係ないことです。「管理人」ってのは「サーバー管理人」のことです。「ページ管理人」ではありません。

サーバーを管理している人は勿論自分のサーバー内のログを確認できます。あと有料レンタルサーバーには「ページ管理人相手にログを表示」みたいなサービスが大抵あります。でも無料サーバーやプロバイダー提供のスペースでサイトをやってる人にはこうしたサービスはないですよね、大抵。

http://www.tokix.net/index.htmlというページを開くとき、あなたは以下のような意味のパケットを送信しています(小学生でも分かるIP抜き講座(1)を思い出して下さい)。

「俺IPアドレス12.34.56.78だけどお前んとこのindex.html見たいからデータ送れ>tokix.net」

ウチがホスティングやってたとして、http://www.tokix.net/yamada/index.htmlというページを開くときに送るパケットはこうです。

「俺IPアドレス12.34.56.78だけどお前んとこのyamada/index.html見たいからデータ送れ>tokix.net」

この連載の最初から何度も書いているように、「コネクションを持つ」ためには「相手のIPアドレスをお互いが知っている」必要があります。「お互い」というのはこの場合「tokix.netサーバーと閲覧者のPC」です。yamadaは関係ありません。上記の「(有料サーバーによくある)ログ表示みたいなサービス」というのは「tokix.netがロギングしたデータをyamadaに見せてやる」という類のモノです。

tokix.netのログ例

12.34.56.78 - - [12/Aug/2001:08:55:33 +0900] "GET /index.html HTTP/1.1" 200 14179 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)"

12.34.56.78 - - [12/Aug/2001:08:55:33 +0900] "GET /main.css HTTP/1.1" 200 329 "http://www.tokix.net/" "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)"

12.34.56.78 - - [12/Aug/2001:08:55:39 +0900] "GET /sitetitle.gif HTTP/1.1" 200 1739 "http://www.tokix.net/" "Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)"

僕はlolipop(「ナウでヤングなレンタルサーバー」だそうです)という有料サーバーで借りたスペースでtokix.netを運営しており、lolipopから上記のようなログを受け取ることができます。HTMLファイルに限らず(画像やスタイルシート等)全てのファイルに関するアクセスログな訳です。

まだ分かりにくいですね。「じゃぁアクセス解析CGIって何だ?」と思うのがきっと正しいです。

小学生でも分かるIP抜き講座(4) (>>この記事のみを表示)

さて、IPを抜くための基本的な方法は「相手とコネクションを持つこと」です。しかし「コネクションを持つ」ということは「お互いのIPアドレスを教え合う」ということですから一方的なIP抜きはできません。だから「自分のIPは教えたくない」と思うならば間に第三者・・・自分に「ターゲットのIPアドレス」を教えてくれる第三者(ex. ウェブサーバー)・・・を挟めば良い。しかし例えばジオシティにウェブページを置いても「ジオシティサーバーへのアクセスログ」を教えてもらえる訳ではない。

アクセス解析CGIというのは「サーバー管理人ではない(サーバーのログを読めない)ウェブページ制作者yamadaがアクセス者のIPを抜くために行う行為」です。

ウェブサーバー内のファイル←→閲覧者
ウェブサーバー内のアクセス解析CGI←→閲覧者
上のコネクションを張った「閲覧者」に半強制的に下のコネクションも張らせます。CGIは閲覧者のIPアドレスを「環境変数」によって取得しデータファイルにログります。

具体的にはHTMLファイル内にこんな記述を加える訳ですね。

<img src="log.cgi" width=1 height=1>

なので例えば閲覧者が「画像は読み込まない」という設定なブラウザならば下のコネクションは生じません。というのが「半強制的」の「半」の意味。

このように「コネクション」とは時に相手の自覚なく張らすことができる代物です。「閲覧者」から見て、ブラウジングのためにウェブサーバーに接続することは必須ですがアクセス解析CGIを実行することは必須ではない。ここが「IP抜き」という世界の戦いです。例えば少し前に話題になった、ウェブページにおける生IP抜きの方法は以下です。

サーバー←(http)→プロキシサーバー←→閲覧者
サーバー←(telnet or ftp)→閲覧者

上のコネクション(つまりプロキシ経由のブラウジング)を張った人間に半強制的に下のtelnet(かftp)コネクションを張らせる。具体的にはフレームを使うんですがメカニズムそのものは上記です。いわゆる「串」とは「httpプロキシ」であって「串をさしている」状態でもtelnetやftpは生です(telnet串やftp串をさしていなければ)。だからサーバー管理人は閲覧者の生IPを抜くことができる、と。

最初に「IP抜きとは『スリ』でなく『詐欺』だ」と書いたのは例えばこういうことです。アクセス解析CGIを使った(ページ作成者による)IP抜きはその初歩と言えるかもしれません。


まとめておきます。

アクセス解析CGIというのはあくまで「サーバー管理人でない自分がhtml(等アクセス解析cgiを組み込める一部のファイル)を閲覧した人間のIPアドレスを抜くために設置するモノ」です。アクセス解析CGIがなくてもサーバー管理人は閲覧者のIPを抜けます。htmlに限らずcssやgif等サーバー上の全てのファイルに関するアクセスログを参照できます。それはネットにおけるコネクションの仕組み上当然です。

ウェブページを開く人間が「ページ管理人のアクセス解析に協力しよう」と思っているかどうかは疑問です。それでもウェブページを開いた人間(の大半)はimgタグで呼び出されるアクセス解析CGIを実行している。

誤解しないでほしいですが、「アクセス解析CGIとはIP抜きであり危険だ」という意味ではありません。「『実戦的なIP抜き』のメカニズムはアクセス解析CGIと発想的に同じだ」という意味です。

※参考:Refererでサイト管理人のIPを抜く

この話を僕なりに「実戦的」に応用した一つの例です。

小学生でも分かるIP抜き講座(5) (>>この記事のみを表示)

さて、前回までで本筋は終わりました。

自己防衛する側から見て「自分は何もしてないのにIPアドレス抜かれてる」ということは基本的にはあり得ません。問題なのは「自分が自覚せず他人にIPを教えているかもしれない」という点で。小学生でも分かるIP抜き講座(2)で取り上げたパーソナルファイアーウォールソフトの役割「内部から外部への不正なアクセスを防ぐ」という言葉の意味を小学生でも分かるIP抜き講座(4)まで読み終えた段階で分かってもらえたでしょうか?

今回「補足」として書くのはここまでの流れとは関係ない話です。


「IPアドレスはネットにおける個人の住所だ」という台詞は有名で。「犯罪抑止力」のためにユーザーのIPアドレスをあえて他のユーザーに通知するケースがあります。

例えばこういう掲示板を見たことありませんか?

[46] はじめまして!

管理人さんってデブっぽいですよね(^o^)
yamada ( IP:12.34.56.78 )
2002/01/09 13:45:12
このyamadaのIPアドレスは掲示板にアクセスした他のユーザーにも公開されている訳です。

小学生でも分かるIP抜き講座(4)までを理解してくれた人ならばもう分かっていると思いますが、基本的に掲示板に書き込んだ人間のIPアドレスを他の閲覧者が抜くことは不可能です

管理人←→サーバー←→書き込んだ人
←→他の閲覧者
直接的なコネクションが生じませんしサーバーのアクセスログを見れる訳でもない(サーバーに侵入すれば話は別ですが)ですからね。

上のような掲示板というのはあえて書き込み者のIPアドレスを他のユーザーにも公開している訳です。荒らしとか自作自演に対する抑制効果を狙ってるんですね。コメントタグでIPアドレスを囲み「ソースを見ればIPが分かる」という仕様になっている掲示板もありますが話は同じです。

メールも同じです。本来「は」メールの送受信によってIPが漏洩することはあり得ない

送信者←→送信サーバー←→受信サーバー←→受信者
送信者と受信者の間でコネクションは生じません。「メールでIPが抜ける」というのは「スパムメールを防ぐため」です。スパムメール抑制のために送信者のIPアドレスをメールヘッダにあえて付加しているんです。

dammy

Credit

SeeAlso

OtherSubCategory

Footprint

Navigation