素人なりのセキュリティ勉強

last update:2003-10-05
−最近の更新−
何だか外に繋ぎに行く task があるのと、port 123 への ICMP が増加しているんで色々気にしている今日この頃。
構成
  1. セキュリティを気にし始めた理由
  2. 不安を得てから安心を得るまでの道のり
  3. 調査ソース&役立つサイト
  4. 敵を知り、己を知りたれば百戦危うからず
  5. 言葉資料

  1. セキュリティを気にし始めた理由
    その昔、HDD に余裕がなかったころは、暇を見て OS を再インストールしていた。しかも ISDN 従量制接続だったため、Web 閲覧の時間は今よりはるかに少なかった。これらのため、PC 内に意図しないものが混入することは稀で、万一入っても長期間に渡ってそれが存在するという事はなかった。
    しかし、ADSL を導入してからは事情が一変した。特に導入当時は、接続料金が接続時間に依存しないのをいいことに本当に "繋ぎっぱなし" にしていたり。やはり貧乏人は根性が、なんて自分でも思ったりするわけですが、やはり最初は嬉しくてね。それで見なくてもいいトコばっかり見ていたりした訳です。そして 2ch にさらられた URL を片っ端から探っていたりした訳です。
    そしてとある URL を辿ってみると突然 A: が boot したり ie の Window が次々と開いて動き回りだしたりした訳です。
    慌ててモデムの電源切りましたね。

    そこから、この道のりが始まった訳です。
  2. 不安を得てから安心を得るまでの道のり
    1. ADSL 導入
    2. ブラクラを踏む
    3. オンラインスキャン実施(トレンドマイクロ、シマンテック)
    4. タスクマネージャ
    5. Ad-aware 導入
    6. PFW 導入
    7. Spybot 導入
    8. RegCleaner 導入
    9. netstat を知る
    10. OS 再インストール
    11. 窓の手導入
    12. tasklist を知る
    まず、他力本願でいくことに。どんなに頑張ってみても所詮は素人の生兵法、プロの技にはかなわないので、オンラインスキャン等に頼ってみた。結果、何も発見されず。

    次にタスクマネージャから怪しいプロセスが走っていないかを調査。しかし、素人にどれが怪しいかなんて分かるはずもなく、あえなく撃沈。

    Ad-aware というスパイ検出・削除ツールの存在を知り、導入。しかしこの段階では使い方を良く知らなかったため、ファイル検索ばっかやってたので cookie しか削除はできていなかった。
    使い始めて数週間、ようやく Memory Scan、Registory Scan の存在に気づく。実行してみると幾つかのスパイウェアを検出した。→当然削除。

    とりあえず何らかの素敵なプログラムが進入していることが分かったので、その対抗策を模索。すると Personal FireWall (以降 PFW と表記する) の存在を知る。また類似のものに Intrusion Detection System(以降 IDS と表記するが、多分もう書かない) というのもある。前者は外からのアクセスを遮断するもの、後者は侵入を検出するもの。どちらも不正アクセスへの対策となる。
    PFW を導入する事にした。とりあえず free のものが 2つあったので、この辺りを導入しておく。
    ZoneAlarm
    OUTPOST FireWall

    PFW を調査している段階で分かったのだが、実は Windows にも FireWall 機能がある事が判明。接続のプロパティの詳細設定タブでインターネット接続ファイアウォールのチェックを入れるだけで FireWall 機能が on になるというお手軽なもの。

    FireWall の log など見ていて驚いたのだが、1時間で 9件も port scan されていた。万が一、妙な port が開いていると大変な事になりそうだ。

    port scan の数にビビり、さらにツール依存症の症状が出てきた。Ad-aware と並び称される Spybot を導入した。すると 1つのスパイウェアを検出した。Ad-aware やオンラインスキャンでは何も出ていなかったのだが。やはりツールには得手不得手があるのかと思いつつも、検出できた事でちょっと安心する。

    そろそろ Registory を疑いだす。RegCleaner を導入してみるもののどうもよく分からん。何がって全てが。何が必要で何が不必要かが分からん。即ち何も消せない状態。う〜ん、意味なかったな。といっても実際は製作者とソフトウェアの名前を表示してくれるのである程度は要不要の判別はできない事もない。とりあえず怪しいもの、不要そうなものを適宜削除。また、特に Startup List から起動の必要のないものを片っ端から削除。RealPlayer のとか Audio 系のが Startup に入っていたので起動が激重になっていたのが、かなり早くなった。チクショウ、レジストリに入れんなよ! メニューのスタートアップに入れやがれってんだ。プン!!

    今もなお port scan の数にビビりまくる。2ch やら検索やらともかくセキュリティ関連を調べまくる。そうする内にとうとう netstat コマンドに遭遇。netstat -na とかやると開いている port 皆判りなんでいい感じ。接続確立されると State に ESTABLISHED と出るので、その先がヘンなトコかどうかを調べればいい。ついでに接続先を調べるにはこの辺を使うといい
    IP Domain Search

    取り合えずそこそこ安全な状態になったような気がする。しかし何だか不安だ。そんな貴兄に OS 再インストール。これで Registory にヘンなのが入っていようがいまいが知った事かという気分になれる事受けあい。ついでに多分不要と思われるデータのエクスポートも行っておこう。

    OS の再インストールは結構大変だ。
    なんてのはウソ。
    今はとてもお手軽にできるようになっている。マニュアルと disk さえ揃っていれば怖いことなんてないので、一度以上やってみる事をお勧めする。

    ちなみに OS 再インストールする際にバックアップディスクなるものを作成する事を要求されているので、それを作成。OS 再インストール後にそのディスクを実行してみると、オンラインマニュアルが出てきました…俺にどうしろと!? これが人類の繁栄と文化の発展に貢献するのか!? 私は問いたい。
    (何かドライバの更新の役割もあるらしいのですが、私的にはイランです。)

    さて、問題は OS 再インストール後のシステム構築ですね。せっかく汚れなき清い乙女のような環境なのに、取り合えずアダルトサイトなんかを見に行って素敵なスパイをネジ込まれてはいけません。私の純潔を返してよ、なんて叫んでみてももう無垢な子供時代へは戻れません。とにもかくにも安全を考慮しつつシステムを構築していきました。
    1. アーカイバの導入
    2. PFW 導入
    3. Ad-aware、Spybot 導入
    4. ブラウザの導入
    5. インターネット接続設定
    6. Windows updateでパッチ当て
    7. mail/ftp 等の設定
    8. その他もろもろ
    ちなみにインターネット接続設定の前で既にスパイが一個検出されたりしたんですけどね。ええ、いいんです。もう不幸には慣れましたから…

    何だか RegCleaner よりも窓の手の方がお手軽に Registory 操作をできるらしい。という事で導入。

    今までずっと胸につかえていた事、そう、netstat で開いている port と、それを使用しているプログラムの対応が知りたい。開いている開いていないだけではやはり心許ない。PFW で塞いでいたとしても、何か気がかりだ。そうしている内に tasklist に遭遇する。こんなコマンドで、開いている port とプログラムの対応が調べられる。
    netstat -nao
    tasklist /svc /fi "PID eq *"

      使い方(xp のみ)
    1. netstat -nao を実行
    2. 開いている port の PID (Process ID) を調べる
    3. その PID で tasklist /svc /fi "PID eq *" の * を置換、実行する
    4. 対応するプログラムが表示される
    これにより、開放されている port とプログラム (タスクやプロセスと言った方が正確か?) の対応が取れた。調査してみると、取り合えずおかしなプログラムがヤバい port を開放している、という様な事象は発見されなかった。

    ちなみにこの辺を見るといろいろいい事が書いてあったりする。
    ZDnet Windows Tips

    タスクマネージャ、プロセス ID 表示できんかなー、と思っていたら、できた。
    1. Ctrl+Alt+Del でタスクマネージャを起動
    2. メニュー[表示] → [列の選択] を選択
    3. PID の項にチェックを入れる
    これで結構使えるようになった、という気がしてきた。

    PFW で外へ接続しまくっている port があっても、どう対応したらいいのか分らない! そんな時は次の手順がいいかもしれない。
    1. PFW のログから、どの port が外への接続を行っているかを確認する
    2. netstat -nao を実行
    3. 外へ接続している port の PID (Process ID) を調べる
    4. 該当する PID のタスクを tasklist でチェック。
    5. そのタスクが不必要であれば、タスクマネージャ上から終了させる。
    ついでに起動時に自動実行されていないかチェックするといい。意図しないプログラムを起動されている様であれば停止しておく事。それには窓の手ないし RegCleaner が有効。


  3. 調査ソース&役立つサイト
    取り合えず履歴が残っているものを掲載しておきます。ただこれだけ見とけばバッチリとかではないので。自己努力こそ最も重要な要素だと思います。
    1. 本「3分ハッキング2」名前は悪いけど使えるのは確か
    2. 本「ネットランナー」評判悪いけど使えるのは確か
    3. 接「google」って、身もフタもないな。ここで出てきた語を検索すれば…
    4. 接「TrendMicro」大御所、オンラインスキャンとかあり
    5. 接「Symantec」大御所
    6. 接「Symantec Security Check」オンラインスキャンとか
    7. 接「ZDnet」Windows Tips は見ておくと良い
    8. 接「LastGuardian」XP のタスク一覧が載っている
    9. 接「インターネットのごみ箱」啓蒙とサポート。特にサポートがありがたい
    10. 接「IP Domain Search」IP address からドメインを特定してくれる
    11. 接「Lavasoft」Ad-aware の開発元。最新版の [発見専用] Ad-ware 6.0 が DL 可能。
    12. 接「Spybot」Spybot の開発元。Spybot 1.1 が DL 可能。寄付を求めているが Free。
    13. 接「Zone Labs」Zone Alarm の開発元。Pro/Plus は有料ですが、Normal の Zone Alarm は Free。
    14. これ以外はとりあえず 2ch のセキュ板を見とこう。気分の悪いやり取りもあるが、使える情報も埋もれている。

  4. 敵を知り、己を知りたれば百戦危うからず
    ハッキング・クラッキングでどんな事ができるのか? とりあえず本屋で 3分ハッキングという本を調達。これでどんなデータが流出し得るかを知ることができた。具体的にはこんな感じだ。(面倒なのでこれ以外でも入手したものを列挙しておく) ちなみにパスワードは暗号化されてるから平気みたいなことを言ってもそんなものは無意味。パスワード解析ツールで覗かれれば丸分かり。
    ではこれらが流出するとどんな被害があるのかというと 特に下の方に行くに従って被害は甚大になる。これらを発生させないためにはどんな手段があるだろうか? 確実な方法はインターネット接続を行わない事ですが、そこまでやるとどうにもって感じなので、できる範囲の事をやるとなると、やはりハッキングされない様に気を使うしかありません。 気を使うとはどういうことかというと… 一応下の方に行くほど簡単にしておいたのですが、案外接続→再接続を繰り返すのは有効だと思っています。万一バックドアが設置されていて覗かれ放題みたいな状況になっても、覗くにはコネクションを確立しなければなりません。覗くには IP address を取得しなければ接続できません。ダイヤルアップ接続や ADSL では DHCP により IP address を動的に割り当てるのが一般的ですので、再接続する事で IP address は切り替わります。これにより覗くには再度相手の IP address を取得しなければならない、またはこちらを長時間覗く事ができなくなります。そんな手間を取るくらいなら、と諦めてくれるかもしれません。

    今気になっている事があります。それはインターネット上に非合法を目的とした集団が出来上がる事です。ネットヤクザとでもいえばよいのか。今の段階ではそういう所までいってないようですけど、その内そんな集団が出てこないとも限りません。今後なんだか Network の知識が英語より必要になりそうな気がしています。


    ちなみにこんな事件が…
    2003-03 の事、Net Cafe の PC に Key Logger を仕込み、そこから得た個人情報を使ってカード詐欺を働いた者が出た。そんな所でカード番号入れるのもどうかしてると思うけど、そんな足が付くに決まってる犯罪を犯すのもどうかしてる (いや、足が付かなきゃいいって訳ではありません。犯罪は常に NG!)。Net 上での匿名性うんぬん言う人は多いけど、そんなの迷信だからね。自宅の PC 使ってれば IP と MAC address で世界中から 1個人 (正確には 1 PC) を特定できるんだし、不特定の人が利用可能な PC だって、利用者を特定するための策は講じていると思うよ (ビデオとったり、アカウント分けたり)。

  5. 言葉資料
    ここに出てきた or 知っておきたい言葉をテキトーにまとめてあります。
    ブラクラ
    browser crasher の事。
    重に重い処理を要求する script で、楽しい動き等を伴い、閲覧者を楽しませてくれるものが多い。しかしその目的は名前の通りブラウザの破壊。ただ単に実行エラーを起こすものを指すべきなのだが、ウィルスドロッパーや文字通りのウィルスを含んでいる場合もある。
    ウィルス
    ここではコンピュータウィルスを指す。それを実行する事で PC 等に障害を与えたり、外部へ/からの不正アクセスを行うものがある。
    PC に被害を与えるウィルス
    Windows システムファイルの書き換え、削除等を行う。これ以外にも browser など特定のプログラムの設定を書き換えたりするものがある。
    外部へ/からの不正アクセスを行うウィルス
    特定のソケットorポートを利用/開放し外部との通信を可能にするもの。これにより PC にハッキング・クラッキングツールを仕込まれ、素敵な事を実行されてしまう事もある。
    ウィルスドロッパー
    それ本体はウィルスではなく、バックドアの設置などにより外部からのアクセスを許可させるような仕組みを送り込むためのプログラム。この段階から悪意のある不正アクセスと認識できる。
    バックドア
    外部からのアクセスを許可させるような仕組み。例えば、適当な port で LISTEN しつつ外部からの通信を待ち、適当なコマンドが来ると内部状態を通知するようなプログラムなど。
    port scan
    上記バックドアとの関連から、外部より適当な port に適当なコマンド (これらは一般的な Troj が使う port へのコマンドである場合が多い) を送出する事。
    Troj
    トロイの木馬。不正でないプログラムを偽装して侵入し、不正アクセスを可能とするようなプログラムを指す。侵入先の Desktop を取り込んだりプログラムを勝手に起動したりと案外いろいろやられてしまう。
    key logger
    キーストロークを盗むツール。FEP に通せば最終的にどのような処理を行ったのか丸わかりになってしまうだなんて、想像するだに恐ろしい。特に Web 通販する人なんかはアレがナニで…
    cookie
    Web 上でのパスワードを保持してくれたりする。同時に簡単な action なども代行してくれる。言い換えると秘密の宝庫、勝手なクリックで危険サイトへGO!(これは Java Script でしょう) などイヤな事ばかり。
    Active X
    Microsoft が開発した技術。Web 上で利用できるプログラム、というと分かりやすいか。OLEコントロール をネットワーク上のプロセス間通信でも可能とする様拡張したもの。
    Java
    Sun が開発したプログラミング言語。プログラムを Web Page に設置しておく事で、それを参照したクライアント上で実行する事がでる。Web 普及当時は動きのある Web Page が作れると持てはやされたが、Security 面の問題から今では嫌われ者。でも商用ベースでは未だ持てはやされている (ちなみに i-アプリも Java)。
    MAC address
    Network Card に付与された認識番号。製造会社毎の製造番号みたいなもんなので、カード毎 固有の識別番号たりえる。
    IP address
    Internet Protocol Address。読んで字の如く Internet Protocol 上の認識番号。TCP(Transmission Control Protocol) と合わせて TCP/IP などとすると Internet/Intranet 上の標準 Protocol になる。
    port
    1つの IP address で複数の通信を行う場合に、各々の通信を識別するために付与する番号。例えば 127.0.0.1:137 というソケットでは 127.0.0.0 が IP address、137 が port。
    socket
    TCP/IP 通信プログラムのインタフェース。IP address と port 番号で構成する。例えば 127.0.0.1:137 など。

homeに戻る