エンタープライズ:特集 | 2003/01/15 16:59:00 更新 |
rootkitによるハッキングとその防御
第1回 rootkitの概要と検知 (5/5)
netstatコマンドの改ざん
ネットワークの情報を表示するコマンドである「netstat」コマンドも、バックドアなどを検出する可能性があるため、改ざんされたものに置き換えられている。tuxkitではpsコマンドなどと同様に、「/dev/tux/.addr」にnetstatで表示させたくないものを記述するようになっている。改ざんされたnetstatコマンドでは、ここに記述された内容は表示されずに隠蔽される。記述方法は/dev/tux/.procと同様だ。
Type 0:隠蔽したいUIDを指定する Type 1:隠蔽したいローカルアドレスを指定する Type 2:隠蔽したいリモートアドレスを指定する Type 3:隠蔽したいローカルポートを指定する Type 4:隠蔽したいリモートポートを指定する Type 5:隠蔽したいUNIX socketのパスを指定する |
■デフォルトで記述されているもの
# cat /dev/tux/.addr 1 24 2 24 4 6668 3 2600 3 2700 |
実際のネットワークの情報を表示してみる
psコマンドなどと同様に、実際に正常なnetstatコマンドと、改ざんされたnetstatコマンドで違いを見てみよう。改ざんされたシステムにはSSHDのバックドアから侵入されている状態でnetstatコマンドを実行している。
■正常なnetstatコマンドでの表示# /dev/tux/backup/netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:2600 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:2700 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.1.19:2600 192.168.1.20:32774 ESTABLISHED raw 0 0 0.0.0.0:1 0.0.0.0:* 7 raw 1248 0 0.0.0.0:1 0.0.0.0:* 7 Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 1401 /dev/log unix 3 [ ] STREAM CONNECTED 12439 /dev/log unix 3 [ ] STREAM CONNECTED 12438 unix 3 [ ] STREAM CONNECTED 1207 /dev/log unix 3 [ ] STREAM CONNECTED 1206 unix 3 [ ] STREAM CONNECTED 1183 /dev/log unix 3 [ ] STREAM CONNECTED 1182 unix 3 [ ] STREAM CONNECTED 1086 /dev/log unix 3 [ ] STREAM CONNECTED 1085 unix 3 [ ] STREAM CONNECTED 1042 /dev/log unix 3 [ ] STREAM CONNECTED 1041 unix 2 [ ] DGRAM 951 unix 2 [ ] STREAM CONNECTED 685 |
バックドアとpsybncのポートが待ち受けになっており、192.168.1.20からバックドアに接続されているのがわかる。
■改ざんされたnetstatコマンド# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN raw 0 0 0.0.0.0:1 0.0.0.0:* 7 Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 1401 /dev/log unix 3 [ ] STREAM CONNECTED 1207 /dev/log unix 3 [ ] STREAM CONNECTED 1206 unix 3 [ ] STREAM CONNECTED 1183 /dev/log unix 3 [ ] STREAM CONNECTED 1182 unix 3 [ ] STREAM CONNECTED 1086 /dev/log unix 3 [ ] STREAM CONNECTED 1085 unix 3 [ ] STREAM CONNECTED 1042 /dev/log unix 3 [ ] STREAM CONNECTED 1041 unix 2 [ ] DGRAM 951 unix 2 [ ] STREAM CONNECTED 685 |
正常なコマンドと比較すれば一目瞭然だが、バックドアやpsybncの待ち受け、および現在バックドアに接続されている情報も表示されていない。
ファイルの隠蔽
次にファイルの隠蔽を見てみよう。たとえば、tuxkitであれば、/dev/tuxやバックドアのxsfは「ls」コマンド、「find」コマンドなどで表示されては困るファイルということになる。これまでと同様に、tuxkitの設定ファイル/dev/tux/.fileには表示させたくないファイルおよびディレクトリを記述している。改ざんされたlsコマンド、findコマンドなどでは、ここに記述された内容は表示されずに隠蔽される。記述方法はフルパスではなく名前のみが記述される。
■デフォルトで記述されているもの# cat /dev/tux/.file .tux .ssh .proc .addr .file .log .iface .df .cron .pw xsf ssh ssh2 |
実際にファイルを表示してみる
これまでと同様に、正常なlsコマンドと、改ざんされたlsコマンドで違いを見てみよう。バックドアである/usr/bin/xsfが改ざんされたlsコマンドでは表示されていないことがわかるだろう。
■正常なlsコマンドでバックドア/usr/bin/xsfのある/usr/bin以下を表示する# /dev/tux/backup/ls -la 〜省略〜 -rwxr-xr-x 1 root root 74456 4月 3 2001 wvdialconf -rwxr-xr-x 1 root root 4308 2月 8 2001 wx2_conv -rwxr-xr-x 1 root root 11612 2月 9 2001 xargs -rwxr-xr-x 1 root root 89828 12月 26 22:37 xchk -rwxr-xr-x 1 root root 62140 2月 26 2001 xgettext -rwxr-xr-x 1 root root 957 2月 23 2001 xminicom -rwxr-xr-x 1 root root 1040220 4月 8 2001 xsf ←バックドアが表示される -rwxr-xr-x 1 root root 4930 4月 7 2001 xtrace -rwxr-xr-x 1 root root 10972 4月 2 2001 xxd -rwxr-xr-x 1 root root 61136 1月 6 2001 yacc -rwxr-xr-x 1 root root 5400 1月 16 2001 yes 〜省略〜 |
■改ざんされたlsコマンドで/usr/bin以下を表示する
〜省略〜 -rwxr-xr-x 1 root root 74456 4月 3 2001 wvdialconf -rwxr-xr-x 1 root root 4308 2月 8 2001 wx2_conv -rwxr-xr-x 1 root root 11612 2月 9 2001 xargs -rwxr-xr-x 1 root root 89828 12月 26 22:37 xchk -rwxr-xr-x 1 root root 62140 2月 26 2001 xgettext -rwxr-xr-x 1 root root 957 2月 23 2001 xminicom -rwxr-xr-x 1 root root 4930 4月 7 2001 xtrace -rwxr-xr-x 1 root root 10972 4月 2 2001 xxd -rwxr-xr-x 1 root root 61136 1月 6 2001 yacc -rwxr-xr-x 1 root root 5400 1月 16 2001 yes 〜省略〜 |
このように、改ざんされたlsコマンドでは/usr/bin/xsfが表示されていないことがわかる。
今回はrootkitの概要として、ファイルの構成やコマンドの改ざんなどの一部を紹介した。rootkitを使ってどんなことが行われているのか、なんとなくは理解できたのではないだろうか。第2回では、今回紹介しきれなかった、改ざんされたsyslogdによるアクセスログの隠蔽やログクリアーツール、そしてtuxkit自体の検知方法などについて解説していこう。
バックナンバー
第5回 kernel rootkitの概要
[2003.6.10 UP]
今回から解説する「kernel rootkit」は、ps、ls、netstatなどのコマンド類は改変せずに、Application rootkitと同じように、クラッカー側にとって必要な機能(バックドア、ファイル・プロセスの隠蔽など)を提供するものだ。このためApplication rootkitに比べて管理者からの発見を逃れられる可能性が高い。その概要について解説しよう。
第4回 rootkitを利用した侵入
[2003.3.28 UP]
kernel rootkitの解説に移る前に、今回はクラッカーがシステムに侵入し、rootkitをインストールするまでの流れを見ながら、一般的なクラッカーがどのようにしてシステムに侵入し、なぜrootkitを用いるのかについて考えてみよう。
第3回 rootkit検出ツールによる検査
[2003.3.11 UP]
これまではrootkitの概要について実例を出して説明してきたが、今回はrootkitの検出ツールを利用して、rootkitのインストールされたシステムから、rootkitを洗い出す作業を行ってみよう。
第2回 ログファイルの改ざん
[2003.2.12 UP]
第1回では、Linuxのrootkitの中からtuxkitを取り上げ、その概要として改ざんされたシステムコマンド一部を紹介した。今回はその続きとして改ざんされたsyslogdと、ログファイルの改ざんなどについて見ていこう。
第1回 rootkitの概要と検知
[2003.1.15 UP]
システムをクラックする手段として「rootkit」というツールが存在する。ほとんどのrootkitはインストーラー形式になっており、簡単かつ短時間で改ざん作業を完了できるようになっている。攻撃者が利用するrootkitについて、その概要を知るとともに、防御方法について考えていこう。
[TTS,ITmedia]