ここで、解説しているツールは、どれも2面性を備えている。良い方向に使えば、セキュリティを高めるのに役立つツールになるし、悪い方向に使えば、使った人は、犯罪者になってしまう。
敵の手口を具体的に知るためにこれらのツールを使う場合には、他のネットワークから切り離された、テスト専用環境において使用すること。くれぐれも、権限のない行為を行わないよう注意すること。
また、その実行結果において起こったことに対して、私は何ら責任を負わないので、各自の責任において行っていただくことになる。
さて、セキュリティについては、物理的なセキュリティとソフト的なセキュリティとがある。 物理的なセキュリティについては、ネットワークインターフェースのファームウェアのバグをついたルーティング不能攻撃などの特殊なものを除いて、人間にとっては、分かり易いものである。簡単にいうと、人や動物など許可されたもの以外、ネットワークを構成する機器に近づけてはいけないということである。
但し、物理的セキュリティが侵された場合には、ソフト的なセキュリティが破られた場合より一般的にダメージは大きい。(もちろん、銀行のオンラインシステムで多額の取引を操作された場合は別だが...)
クラッカーにも、本当に恐い真のクラッカーと、ただ単に他人が作成したツールを使うツールクラッカーとがあるように、守る側もレベルが高いに越したことはない。
例えば、敵の手口に関して無知では、事前対処の方法を論ずるどころではない。仕組みに関して熟知していれば、それなりの砦を築けるわけである。
これは、コンピュータウイルスに関しても同じで、ウィルス対策というものを、次のような決まりきったものとして考えていてはいけない。
例えば、アプリケーションプログラムの簡易言語が、システムのサブルーチンをダイレクトに呼び出せるような仕組みがある場合に、プログラミングに関する知識があれば、「それは、危険ではないのか?」と疑ってみることができる。ここしばらく、巷を賑わせているのは、そういった仕組みに基づいたウィルスである。
「だって、そのほうが便利じゃん!」的な、脳天気な発想自体が危険性を孕んでいるわけである。この場合、ユーザに、当該機能を「無効化」しておけとか、そういうものをメールで受け取っても「開くな」とか、そういう事前対処が可能となるかも知れない。
その意味で、ネイティブな言語であるC言語やアセンブリ言語等に関する知識があるのと無いのとでは、コンピュータというものがプログラムによって制御されている限り、雲泥の差があると認識すべきである。
守り手にとっては、自ホストの弱点を調査し対処を行うことに利用できます。ここで、取り上げたもの以外に商用でInternet Security Systems社のISS(Internet Security Scanner)というものもあり、定評があります。
$ tar zxvf saint-2.0.2.tar.gz $ cd saint-2.0.3 $ perl reconfig $ make $ make linux-new次のように実行すると、WWWブラウザが起動して SAINT の設定を行ったり、ターゲットを調査することができます。
$ su # ./saint &
Nessusの特長は、プラグイン機構により、新しい攻撃の手口を追加することができることである。
$ 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
$ tar zxvf crack5.0.tar.gz $ cd c50a $ vi Crack編集ポイントは次の点である。各自のシステムに合わせる。
CRACK_PATH C5FLAGS CC CFLAGS LIBS実行ファイルを作成。
$ ./Crack -makeonly辞書ファイルを作成。
$ ./Crack -makedict
パスワード・クラックに対する防御としては、まずパスワードファイルとパスワードの実体を切り離すためパスワードのシャドウ化を行うこと。 そして、万一ルート権限を奪取されたりして実体が盗まれたときのために、パスワードに人名や辞書にある言葉を使わないことや、身辺にある番号を使わないことを全てのユーザに徹底して教育し、実践させることである。 そして、適切なサイクルでパスワードを変更することも重要である。
もちろんこのことは、想起性とトレードオフ問題である。そのために、メモを引当てる危険性も考慮すべきことだが...
ソースコードは、次の場所にあるが、Vine Linux 2.0 ではそのままでは、コンパイルを通らなかった。必要なヘッダをインクルードすれば1行、直接宣言を書き込めば、2行の変更でコンパイルし、実行ファイルを作成することができた。
ソースコードは、次の場所にある。
これも、Vine Linux 2.0 で linsniffer と同様にコンパイルして実行ファイルを作成することができた。$ tar zxvf hunt-1.5.tgz $ cd hunt-1.5 $ more README.tp ... $ more INSTALL ... $ make
検出されたということは、すでに情報が盗まれているかもしれない。予防策としては、、ssh や SSL 等による通信の暗号化・秘密化が有効である。
当然、そのようなことをするアプリケーションがあるわけではなく、クラッカー達は、目的により、SOCKET関数を巧妙に使ったツールをプログラムするわけである。
ところが、盗聴や、プログラムのセキュリティホールを突いたバッファオーバーラン等によりルート特権を奪われてしまえば、システム上の全てのファイルは、クラッカーの意のままになってしまう。
ホームページの改竄などは、カワイイもので、そうなれば、当然改竄以外にも、ウイルスを仕込まれたり、トロイの木馬を仕掛けられたり、裏口を設置されたり、侵入の痕跡を消されたりと全てを疑わなくてはならないのだが...そのときは、きれいさっぱりシステムを入れなおすことにしよう。
それでも、被害を最小限に食い止めるために、早期に改竄を検出することも意味のあることである。
$ 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