});この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。サーバへの不正侵入、Webページの改ざん、さらには機密情報の漏えいなど、ここ数年、インターネット上で発生するセキュリティ侵害事件が後を絶たない。そのため最近では、企業や組織の多くは、そういったセキュリティ侵害を意識してからか、ファイアウォールやIDSなどを設置し、自サイトのセキュリティ強化に取り組んでいる。それは、最も根本的な問題である、実際に守るべき資産(情報)が格納されている、サーバ自身のセキュリティが確保されていないからだ、と筆者は考える。本稿では、数回にわたり実際の攻撃者が行うであろう一連の手法と、それらの攻撃を防ぐためのサーバにおける対策方法について解説する。環境はUNIXをベースとするが、Windowsについても適時紹介する予定だ。断っておくが、本連載は攻撃者を育成するためのものではない。サーバ管理者に攻撃者の手口(心理)を知ってもらうことで、より効果的なサーバの運用管理に役立ててもらうことを目的としている。他社および他組織のWebサイトなどへのポートスキャンおよびデータの取得などの行為で得た情報を侵入などに悪用するか、または同じ目的を持つ第三者に提供した時点で違法となります。本稿の内容を検証する場合は、必ず影響を及ぼさない限られた環境下で行って下さい。本稿を利用した行為による問題に関しましては、筆者および株式会社アットマーク・アイティは一切責任を負いかねます。第1回の本稿では攻撃者側から見た「事前調査」を解説する。本稿において想定する攻撃側と守備側のネットワーク構成は以下のとおりとなる。本稿内の実行コマンドの先頭の「%」は一般ユーザー権限、「#」は管理者権限(root)によるコマンドの実行を意味する。ほとんどの場合は、いきなり侵入を試みるためのexploitプログラムを実行すのではなく、まずはそのサーバにどういった脆弱性が含まれるかどうかの事前調査から行うだろう。攻撃者が行う事前調査は、一般的に以下のような流れで行うと思われる。そのドメイン名から攻撃対象となるサーバのIPアドレスを得るためには、DNS情報を入手するのが手っ取り早い。DNS情報を調べるには、dig、host、nslookupといったUNIXなどでも一般的に使われているコマンドを利用する。ここではdigコマンドを用いた例を紹介する。A、MX、NS、PTRなどの複数のレコードを問い合わせてみた。SECTION」に注目すると、以下のことが分かる。ns.example.co.jp(192.168.0.10)攻撃対象となるサーバはns.example.co.jp(192.168.0.10)で、このサーバではメール配送(25/tcp)とDNS(53/tcp、53/udp)のサービスが提供されているものと推測できる。ns1.example.netについては、別サイト(おそらくはこのサイトが属するISP)であることから、ここでは攻撃対象外とした。2.ゾーン情報の取得ネームサーバがexample.co.jpであることが分かったので、続いてそのサーバに対して、example.co.jpドメインのDNSゾーンを入手できるかどうかを試みた。ゾーンには、そのドメイン空間に属するサーバのホスト名やIPアドレスなどの情報が含まれているため、取得できれば攻撃者にとって有用な情報となり得る。ここでも同じくdigコマンドを使用した。ゾーンを取得する場合は、問い合わせタイプにaxfrを指定すればよい。minimum先に得た情報と違う点としてはwww.example.co.jpが挙げられるが、これはns.example.co.jp(192.168.0.10)の別名(CNAMEレコード)というだけで、同一サーバのようだ。wwwという名前から推測すると、Web(HTTP)サーバだろう。80/tcpおよび443/tcpポートが待機している可能性がある。以上の結果を踏まえ、現時点で推測される攻撃対象サーバの構成は以下のとおりとなる。不明ポートスキャンを行う攻撃対象の各サーバのIPアドレスを得たならば、次に行うのがポートスキャンと呼ばれる行為だ。ポートスキャンは、主に対象ホスト上で待機(listen)しているポート番号の洗い出しのために実施される。これは、対象ホストを家に例えるなら、ポートはさしずめ玄関や窓といった出入口に相当する。ポートスキャンの行為そのものは、泥棒がその家への侵入を試みる際に、玄関や窓がどこにあるのかを調べるのと同じだと考えてよい。手間をかけずにポートスキャンを行いたい場合、たいていはNmapなどのツールを使うだろう。実際の攻撃者、特に用心深い攻撃者ほどその手のツールはあまり使わないのではないかと思う。いったツールによるポートスキャンは、標的サイトの管理者が気付く可能性が高くなるからだ。それは、攻撃対象サイト側で以下の設定を行っていた場合に顕著となる。1.ファイアウォールなどによるフィルタリングを行っていた場合ファイアウォールで通過を許可していないポートに対して一度に大量のアクセスが行われた場合、アクセス拒否した記録としてログ(ログビューア)に明示的に残るため、管理者が認識し警戒する。条件:管理者がしっかりとログをチェックしている必要がある2.IDSを設置していた場合Nmapなどのよく知られたツールによるポートスキャンは、最近のIDSは検知する。IDSのSnort1.8.7の場合、以下のNmapのポートキャンを検知できる。〜Nmapによるポートスキャンにはいくつかの特徴がある。スキャン(-sT)は、コネクションの終了をFINではなくRSTで行う。UDPスキャンも0byteのパケットを送るという特徴を持つ。これらは、ネットワークトラフィックの抑制やポートスキャン自体の高速化を実現するために用いられているようだ。ポートスキャンを手軽に実現する方法(telnetを使う)Nmapなどのツールを使用せずにポートスキャンを手軽に実現できる方法として、telnetコマンドを使う手法が挙げられる。telnetは皆さんご存じのとおり、通常は対象サーバへのリモートログインに用いられるが、それは単にtelnetがデフォルトでアクセスするポート(23/tcp)というだけで、実際にはtelnetを用いて任意のTCPポートにアクセスすることが可能だ。ここでは、telnetを使用して、よく脆弱性が指摘されているサービスが使用するポート(*1)に対してアクセスを試み、待機状態にある各ポートの洗い出しを行った。closed.上記は53/tcpポートに対してアクセスを行った結果だ。192.168.0.10.」のメッセージより、TCPポートが待機状態であることが分かる。確立したTCPコネクションを切断したい場合はtelnetのエスケープモード(^])に移りquitを実行するとよい。refused」といったメッセージが出力される。接続先...」のまま何の応答もなく、タイムアウトするまではコマンドプロンプトも返ってこない。Ctrl+c(Ctrlキーを押しながらcを押す)で強制終了するとよい。SSH(22/tcp)が待機状態であることが判明した。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。