嘘つきDNS☆彡  



1. 何だコイツは・・・?

 最近、ちょっと某CHATに来るCHAT荒し君を影から調査(笑)していた事がある(爆) そこのCHATの管理者が困っていたので、暇つぶしに色々調べていたという訳である。まぁ大した物ではないのだが・・・。

 そこのCHATはPerlによるCGIで稼動しているのだが、本来入力出来ないはずの文字列が記事や参加者名に反映される事がある。普通に利用すれば文字列制限がかかっているのでそんな大量の文字列の名前が入力される事は出来なく、それを書き込んでいるアホの接続環境(CHATに表示される)には何でか、NASAや首相官邸のドメイン名が・・・。仮にここではその人をA君としましょう。


2. CGIの制限の裏を付く・・・

 とりあえず、このCHATのソースを借りて見たところ、やはり入力フォームの文字列制限(maxlength)しかかかっていなかった。また公開されてるCHATプログラムだが、制作者は送信形式にGETを愛用しているらしい。GET形式による送信は、サーチエンジンなんかでブックマークする時に便利な送信形式だが果たしてCHATで必要か?と言うと本来はそうではないと思う。だがGET形式サポートしないWEBサーバーもある為であろう。

 基本的にアトはPOST形式の送信方法の方が好きだ・・・と言っても別にどうでも良い事なのだが、GET形式によるCHATなのでURL欄に直接好きなパラメータを書き込んで送信する事が可能になる。URL欄に直接書き込む事により、入力フォームによる制限は全て通過した事になる。それにより、本来打ち込めない名前の長さの文字列が入力されたり、通常は参加者表示がされるのだが、居ない人が突然書き込みを行ったりと言った現象が起きるのであった・・・。

 友達に頼んでそのレンタルサーバーの管理者権限を借りてApacheのログを確認するとやはりURL リクエストでGET形式による書き込みであった。通常フォームから送信した場合、日本語はURLエンコードされる為に%XXと言った文字列になる。しかし、ログでは日本語がそのまま記録されている。これはURL欄に直接打ち込んだ証拠である。


3. NASAよりご来訪のA君

 さて、問題のA君なのだが接続元がNASAなのである。本人も「私はNASAの元職員」などとのたまっている(笑) またある時は首相官邸のドメインや、CIAのドメインになる・・・。でも基本的にNASAのドメインで出てくるので最初はNASAのプロキシでも使ってるのかと思っていた・・・

 しかし、アトが持っているプロキシリストでも、ネット上で調べてもNASAのプロキシは見当たらない・・・。すると友達(また別の人)がネカマとしてCHATにアクセス(爆)、A君とコンタクトし、A君からメールを送らせる事に成功。

 メールヘッダを確認すると、送信元が記録されている。取り合えず何処のプロバだ?とか調べると・・・ダイアルアップではなく専用線である。当然、whoisをかけ、nslookupをして見る・・・。すると・・・逆引きに置いてはまぁ〜ったく無関係なドメインが記述されているのである。そう・・・NASAや首相官邸、CIAその他もろもろ怪しいドメインが多数。嘘つきDNSである

 なんか変だな・・・と思いつつ、確実性を増す為に取り合えずログだけでもしっかり取るべ〜と、使用されているCHATプログラムを修正変更し、接続元の取れるだけの情報を取得するように変更し、再設置した。

 このCHATプログラムは基本的にあまりログを取得しないプログラムだったからだ。毎日、朝昼晩を問わずに現れるA君を確認し、早速ログを確認すると明らかにA君の利用しているIPアドレスが取得されている。

 プログラム内で使用される、getbyhostnameは環境変数REMOTE_ADDRから逆引きを掛ける。つまり、IPアドレス→ドメイン名を偽ることでCHATプログラムが表示するドメイン名の情報を偽装しているのである。IPアドレスからならバッティングを起こす事はないからである。


4. あれ?まだいる・・・

 なんだかもう一人荒しがいるらしいとの事で、そのIPも調べた。仮にP君としよう。するとP君も専用線、嘘つきDNSである。なんだか嘘つきDNS立ててる奴多そうだな・・・。revファイルの嘘つきなのだが、zoneに書いてしまうと本物のドメインと混乱を引き起こすので、revファイルにしか記述していない。

 またこの方法だと、DNSサーバーをいじる権限のある者による犯行?という線が非常に強い。対象になるネットワークに存在するWWWを覗いて見ると会社でSOHO、及び個人っぽいので、JPNIC登録者=犯人である可能性が高い。さて、こいつらどうしたもんだろか・・・?

 ところでこのP君に置いてはApacheのログと照らし合わせると、内部で一回プロキシを通している。cgi-proxyなのだが名前忘れた・・・nph-proxyだったかな?確か、USER_AGENTとかの環境変数を変更するプロキシだったと思ったが・・・。


5. おいらもやってみよ〜♪

 怒られそうだが試しにやって見る事にした。家の回線はグローバルなDNSではないので家の環境では出来ない。と言う訳で一応アトが管理しているサーバー(謎)のDNSサーバーをちょっとお借りして・・・余ってるIPアドレスで実験(おいおい)

 方法としては、家からの接続になるのでプロキシによる方法にするしかない。同じセグメントにいないし、嘘つきホストからのアクセスが出来ないからだ。取り合えず、DNSを変更するのだが、運用されている本当のドメインをバーチャルに移行して、ウソを付く為のIPをマスターとして振り直した。後ですぐ戻すのでDNSの有効期限は取り合えず1時間に設定して反映されるのを待った。何故マスターに振るのかと言うとPROXYが返すのがマスターのIPアドレスだからだ。

 その間にWWWサーバーにDELEGATEを導入(WWWサーバーの情報を嘘付いたから)、家からのアクセスだけプロキシ利用可能にして起動。環境変数をチェックしてみる。家→WWW(プロキシ)→家(WWWサーバー)へアクセスして環境変数のチェックしたのだが、見事に嘘つきDNSならぬ、嘘つきPROXY完成♪

 まぁ使い道も特にないのですぐに戻した。

 この方法はDNS Spoofingに入るのだが、最近ではこれを阻止する為にIP→HOST NAMEの後に取得したHOST NAMEから再びIPアドレスを取得して元のIPと照らし合わせてチェックする機能を持つ掲示板、CHAT、サービスプログラムが多くなってきている。


6. そう言えば・・・

 友達にレンタルサーバーの権限を借りてサーバー内をうろついて居た時に気付いたのだがLASTコマンドが表示されなかった・・・。おかしいなぁ〜と思って/var/log/wtmpを探したのだが存在しない・・・。存在しない為にlogin した記録がないのである。元々ファイルがないのか、それともログを消されたのか・・・。前者であればおかしなレンタルサーバーである。後者であれば進入されて消されている。友達曰く侵入された可能性が高いとの事・・・まぁ怖いわ!!

 ついでにその時、root権限なのを良いことにtcpdump(ネットワーク上の流れてるパケットの監視)したんだけど(爆)、何でか特定の一箇所に向けて色んなサーバーがICMPパケットを流していた。DDoS(分散型サービス不能攻撃)してるんじゃないのか?ここのレンタルサーバー達・・・と思ったりした。しかもその送信先がダイアルアップ接続っぽい名前のホストに送信されてたんだけど・・・いいのかな・・・。

 最初、サーバーダウンとかのチェックかなぁとも思ったんだけど・・・。「私は動いてますよ〜」ってな感じの・・・。

 まぁいいや・・・きっと監視センターとかISDNみたいので監視してるんだよ・・・だからだよ・・・とそのまま知らない振りした(笑) ホントか??