次のページ 前のページ 目次へ

Security Tools HOWTO

Yoshio Shimamura <yoshios@green.ocn.ne.jp>

v0.3, 10 September 2000
この文書は、Linuxベースのセキュリティ関連ツールの概要についての HOWTO です。 この文書の最新版は http://hp.vector.co.jp/authors/VA004572/index.html から入手可能です。

0 概要

1 敵の手口

2 調査

3 解析

4 盗聴

5 偽称

6 改竄

7 DoS攻撃

8 参考サイト・文献


0 概要

0.1 概要

まず、総論として敵の手口について外観し、各論で個別の攻撃ツール、防御ツールについて観ていく。

ここで、解説しているツールは、どれも2面性を備えている。良い方向に使えば、セキュリティを高めるのに役立つツールになるし、悪い方向に使えば、使った人は、犯罪者になってしまう。

敵の手口を具体的に知るためにこれらのツールを使う場合には、他のネットワークから切り離された、テスト専用環境において使用すること。くれぐれも、権限のない行為を行わないよう注意すること。

また、その実行結果において起こったことに対して、私は何ら責任を負わないので、各自の責任において行っていただくことになる。

0.2 TCP/IPネットワークに関する知識の必要性について

当然のことだが、これから守ろうとするものについての仕組みに関する知識は十分に必要である。

さて、セキュリティについては、物理的なセキュリティとソフト的なセキュリティとがある。 物理的なセキュリティについては、ネットワークインターフェースのファームウェアのバグをついたルーティング不能攻撃などの特殊なものを除いて、人間にとっては、分かり易いものである。簡単にいうと、人や動物など許可されたもの以外、ネットワークを構成する機器に近づけてはいけないということである。

但し、物理的セキュリティが侵された場合には、ソフト的なセキュリティが破られた場合より一般的にダメージは大きい。(もちろん、銀行のオンラインシステムで多額の取引を操作された場合は別だが...)

0.3 プログラミング技術の必要性について

現在明らかになっているセキュリティホールを塞ぎ、決まりきったツールを用いてネットワーク管理やシステム管理を行う分にはプログラミング技術など必要ない。(それでも、ツールをインストールするために Make に関する知識くらいは必要だが...)

クラッカーにも、本当に恐い真のクラッカーと、ただ単に他人が作成したツールを使うツールクラッカーとがあるように、守る側もレベルが高いに越したことはない。

例えば、敵の手口に関して無知では、事前対処の方法を論ずるどころではない。仕組みに関して熟知していれば、それなりの砦を築けるわけである。

これは、コンピュータウイルスに関しても同じで、ウィルス対策というものを、次のような決まりきったものとして考えていてはいけない。

あくまで、被害を最小限に抑えるものでしかないと認識すべきである。

例えば、アプリケーションプログラムの簡易言語が、システムのサブルーチンをダイレクトに呼び出せるような仕組みがある場合に、プログラミングに関する知識があれば、「それは、危険ではないのか?」と疑ってみることができる。ここしばらく、巷を賑わせているのは、そういった仕組みに基づいたウィルスである。

「だって、そのほうが便利じゃん!」的な、脳天気な発想自体が危険性を孕んでいるわけである。この場合、ユーザに、当該機能を「無効化」しておけとか、そういうものをメールで受け取っても「開くな」とか、そういう事前対処が可能となるかも知れない。

その意味で、ネイティブな言語であるC言語やアセンブリ言語等に関する知識があるのと無いのとでは、コンピュータというものがプログラムによって制御されている限り、雲泥の差があると認識すべきである。

1 敵の手口

最終目標 クラッカー達は、それらを達成するために、実に様々な手段を組み合わせてくる。 例えば、標的に対し 調査結果を分析し、 そして、目的に応じ などを行う。

2 調査

2.1 スキャナについて

スキャナは、対象とするホストがどのようなサービスを行っているか調査するツールです。

守り手にとっては、自ホストの弱点を調査し対処を行うことに利用できます。ここで、取り上げたもの以外に商用でInternet Security Systems社のISS(Internet Security Scanner)というものもあり、定評があります。

2.2 SAINT

SAINT (Security Administrator's Integrated Network Tool)は、かの有名な SATAN の後継ともいうべきツールです。 セットアップは次のように行います。
$ tar zxvf saint-2.0.2.tar.gz
$ cd saint-2.0.3
$ perl reconfig
$ make
$ make linux-new
次のように実行すると、WWWブラウザが起動して SAINT の設定を行ったり、ターゲットを調査することができます。
$ su
# ./saint &

2.3 Nessus

Nessus は Renaud Deraison 作のオープンソースなスキャナである。

Nessusの特長は、プラグイン機構により、新しい攻撃の手口を追加することができることである。

2.4 nmap

nmap (The Network Mapper)は、Fyodor 作のコマンドラインスキャナである。コマンドラインから実行するため非常に柔軟性に富んだ利用ができる。

3 解析

3.1 John the Ripper

John the Ripper は、システムユーザが脆弱なパスワードを使っていないかどうかチェックするツールである。
$ tar zxvf john-1_6_tar.gz
$ cd john-1.6/src
$ make
$ make linux-x86-any-elf
使用例を示す。詳しい使い方については、doc/EXAMPLESを参照すること。
$ cd john-1.6/run
$ su
# ./unshadow /etc/passwd /etc/shadow > passwd.sample
# john passwd.sample

3.2 Crack

Crack 展開して、シェルスクリプトであるCrackファイルを編集する。添付されているマニュアルを参照すること。
$ tar zxvf crack5.0.tar.gz
$ cd c50a
$ vi Crack
編集ポイントは次の点である。各自のシステムに合わせる。
CRACK_PATH
C5FLAGS
CC
CFLAGS
LIBS
実行ファイルを作成。
$ ./Crack -makeonly
辞書ファイルを作成。
$ ./Crack -makedict

3.3 パスワードクラック対策

パスワードクラックは、パスワードファイルが入手できて初めて可能なものである。歴史的には、phf.cgiなどを使ったパスワードファイルの盗み出しなどの例がある。

パスワード・クラックに対する防御としては、まずパスワードファイルとパスワードの実体を切り離すためパスワードのシャドウ化を行うこと。 そして、万一ルート権限を奪取されたりして実体が盗まれたときのために、パスワードに人名や辞書にある言葉を使わないことや、身辺にある番号を使わないことを全てのユーザに徹底して教育し、実践させることである。 そして、適切なサイクルでパスワードを変更することも重要である。

もちろんこのことは、想起性とトレードオフ問題である。そのために、メモを引当てる危険性も考慮すべきことだが...

4 盗聴

4.1 linsniffer

パスワードの捕捉ツールである。仕組み上通常のユーザは実行できない。

ソースコードは、次の場所にあるが、Vine Linux 2.0 ではそのままでは、コンパイルを通らなかった。必要なヘッダをインクルードすれば1行、直接宣言を書き込めば、2行の変更でコンパイルし、実行ファイルを作成することができた。

4.2 linux_sniffer

linsnifferと同様なツールである。実行結果は、標準出力に返されるのでやや使い勝手は良い。

ソースコードは、次の場所にある。

これも、Vine Linux 2.0 で linsniffer と同様にコンパイルして実行ファイルを作成することができた。

4.3 hunt

コマンドの実行過程を追いかけるツール glibc 2.0.7以降の環境であれば、次のように実行ファイルを作成することができる。
$ tar zxvf hunt-1.5.tgz
$ cd hunt-1.5
$ more README.tp
...
$ more INSTALL
...
$ make

4.4 スニッファ対策

スニファの検出はその性質上非常に難しい。プロミスキャスモードを要求するようなツールであれば、Linux ネイティブツールの ifconfig で、IFのモードを調べることにより検出が可能である。

検出されたということは、すでに情報が盗まれているかもしれない。予防策としては、、ssh や SSL 等による通信の暗号化・秘密化が有効である。

5 偽称

5.1 IPスプーフィングについて

IPスプーフィングとは、送信元IPアドレスを偽称し、ゲートウェイを乗り越えて、コネクションを確立しようとするものである。

当然、そのようなことをするアプリケーションがあるわけではなく、クラッカー達は、目的により、SOCKET関数を巧妙に使ったツールをプログラムするわけである。

5.2 IPスプーフィング対策

IPスプーフィングの対策としては、ゲートウェイでパケットフィルタリングにより、IFとの論理マッチングを行って排除することである。

6 改竄

6.1 ファイルの改竄について

Linuxのファイルシステムも他のUNIX系OSと同様に、ファイルのアクセスモードを細かく指定できる。このアクセスモードの制御と、ファイルを扱うサービスやプログラムの実行者に注意を払っておけば通常は、改竄されるというようなことはない。

ところが、盗聴や、プログラムのセキュリティホールを突いたバッファオーバーラン等によりルート特権を奪われてしまえば、システム上の全てのファイルは、クラッカーの意のままになってしまう。

ホームページの改竄などは、カワイイもので、そうなれば、当然改竄以外にも、ウイルスを仕込まれたり、トロイの木馬を仕掛けられたり、裏口を設置されたり、侵入の痕跡を消されたりと全てを疑わなくてはならないのだが...そのときは、きれいさっぱりシステムを入れなおすことにしよう。

それでも、被害を最小限に食い止めるために、早期に改竄を検出することも意味のあることである。

6.2 Tripwire

ファイル改竄検出ツールである Tripwire は、Tripwire Inc. による商用ソフトとなったが、オープン化団体によりオープンソース化の動きがある。 次のサイトを参照。
$ tar zxvf tripwire-1.2.tar.Z
$ tar xvf T1.2.tar
$ cd tripwire-1.2
$ more README.FIRST
...
$ more README
...
$ cd include
$ vi config.h

...
#include "../configs/conf-linux.h"

...

#define CONFIG_PATH "/etc"
#define DATABASE_PATH "/mnt/floppy/databases"

...

#define CONFIG_FILE "tw.config"
#define DATABASE_FILE "tw.db_@"

...

$ cd ..
$ vi Makefile

...

DESTDIR = /usr/lcoal/sbin

...

# system utilities
#LEX = lex
LEX  = flex

#YACC = yacc
YACC = bison -y


$ vi src/config.pre.y

#ifdef TW_LINUX

#ifdef TW_LINUX_UNDEF



$ make


$ su
...
# make install
...
# cp configs/tw.conf.linux /etc/tw.conf
# vi /etc/tw.conf




7 DoS攻撃

8 参考サイト・文献


次のページ 前のページ 目次へ