このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

MacOSXで侵入検知3(rkhunter)

発言者:石津@RJC
( Date Monday, April 12, 2004 17:41:39 )


以前のosirisとは傾向が違うので別の発言にしました。

侵入時に仕掛けられる可能性の高いrootkitを検出できるツールが紹介されていた
ので、MacOSXでも使えるのか試したところ、バッチリでしたので紹介します。
ほとんどjapan.linux.comの記事の通りなのであまり書くこともないのですが。

rootkithunter
http://freshmeat.net/projects/rkhunter/

上記URLからrkhunter-1.0.5.tar.gzをダウンロードします。
任意の場所(例はデスクトップ)で展開してインストールを行います。

$ tar zxvf /Users/yourname/Desktop/rkhunter-1.0.5.tar.gz

$ cd /Users/yourname/Desktop/rkhunter

$ sudo ./installer.sh

これでインストールできます。

インストール先は/usr/local/bin/になります。
まずはhelpを表示します。

$ sudo /usr/local/bin/rkhunter

Rootkit Hunter 1.0.5, copyright Michael Boelen

Valid parameters:
--checkall (-c)           : Check system
--createlogfile*          : Create logfile
--cronjob                 : Run as cronjob (removes colored layout)
--help (-h)               : Show this help
--nocolors*               : Don't use colors for output
--report-mode*            : Don't show uninteresting information for reports
--rootdir <rootdir>*      : Use <rootdir> instead of / (NO slash at end)
--skip-keypress*          : Don't wait after every test (non-interactive)
--tmpdir <tempdir>*       : Use <tempdir> as temporary directory
--quick*                  : Perform quick scan (instead of full scan)
--version                 : Show version and quit
--versioncheck            : Check for latest version

Explicit scan options:
--disable-md5-check*      : Disable MD5 checks
--disable-passwd-check*   : Disable passwd/group checks
--scan-knownbad-files*    : Perform besides 'known good' check a 'known bad' check

Multiple parameters are allowed
*) Parameter can only be used with other parameters

するとこんなヘルプが表示されます。
まずは対話的なスキャンを実行してみます。

$ sudo /usr/local/bin/rkhunter -c --createlogfile  ←チェックをログに記録します

するとチェック結果がカラーで表示されていきます。
問題がなければ「OK」、問題がある時には「warning!」が出ます。

OSXではいくつかのコマンドがNot Foundになるみたいです。
例えばnetstatはOSXでは/usr/sbin/の下なのですが/usr/bin/を探しているようです。

logは/var/log/rkhunter.logに書き出されます。
ターミナルよりも詳しい内容になっていて、rootkitを知る上でも参考になります。

上記のコマンドだと、対話的に進むので時々エンターキーを押して次のプロセスに
進むことを促さないといけません。この場合以下のコマンドで自動にできます。

$ sudo /usr/local/bin/rkhunter -c --createlogfile --skip-keypress

コマンドを実行する都度ログは上書きされているようなので、必要な結果はリネーム
して保存する必要があるようです。

非常に簡易なので定期的にチェックされることをおすすめします。
rkhunter自体のバージョンアップのチェックもお忘れなく。

→  あなたの武器庫にrootkit hunterはあるか?  

石津@RJC さんからのコメント
( Monday, April 12, 2004 17:43:47 )

実行結果のサンプルです。
ntopを動かしていたので、プロミスキャスモードが検出されてますね。

---

Rootkit Hunter 1.0.5 is running

Determining OS... Ready


Checking binaries
* Selftests
     Strings (command)                                        [ OK ]


* System tools
  Performing 'known bad' check...
   /bin/cat                                                   [ OK ]
   /bin/chmod                                                 [ OK ]
   /bin/csh                                                   [ OK ]
   /bin/date                                                  [ OK ]
   /bin/df                                                    [ OK ]
   /bin/echo                                                  [ OK ]
   /bin/ed                                                    [ OK ]
   /bin/kill                                                  [ OK ]
   /bin/ls                                                    [ OK ]
   /bin/ps                                                    [ OK ]
   /bin/sh                                                    [ OK ]
   /sbin/dmesg                                                [ OK ]
   /sbin/ifconfig                                             [ OK ]
   /sbin/init                                                 [ OK ]
   /sbin/md5                                                  [ OK ]
   /sbin/nologin                                              [ OK ]
   /usr/bin/basename                                          [ OK ]
   /usr/bin/du                                                [ OK ]
   /usr/bin/egrep                                             [ OK ]
   /usr/bin/fgrep                                             [ OK ]
   /usr/bin/file                                              [ OK ]
   /usr/bin/find                                              [ OK ]
   /usr/bin/groups                                            [ OK ]
   /usr/bin/head                                              [ OK ]
   /usr/bin/killall                                           [ OK ]
   /usr/bin/last                                              [ OK ]
   /usr/bin/less                                              [ OK ]
   /usr/bin/locate                                            [ OK ]
   /usr/bin/logger                                            [ OK ]
   /usr/bin/login                                             [ OK ]
   /usr/bin/more                                              [ OK ]
   /usr/bin/passwd                                            [ OK ]
   /usr/bin/size                                              [ OK ]
   /usr/bin/sort                                              [ OK ]
   /usr/bin/strings                                           [ OK ]
   /usr/bin/su                                                [ OK ]
   /usr/bin/top                                               [ OK ]
   /usr/bin/touch                                             [ OK ]
   /usr/bin/uname                                             [ OK ]
   /usr/bin/users                                             [ OK ]
   /usr/bin/w                                                 [ OK ]
   /usr/bin/wc                                                [ OK ]
   /usr/bin/whatis                                            [ OK ]
   /usr/bin/whereis                                           [ OK ]
   /usr/bin/which                                             [ OK ]
   /usr/bin/who                                               [ OK ]
   /usr/bin/whoami                                            [ OK ]
   /usr/sbin/amd                                              [ OK ]
   /usr/sbin/chroot                                           [ OK ]
   /usr/sbin/cron                                             [ OK ]
   /usr/sbin/inetd                                            [ OK ]
   /usr/sbin/syslogd                                          [ OK ]
   /usr/sbin/vipw                                             [ OK ]
   /usr/sbin/xinetd                                           [ OK ]
  Performing 'known good' check...


Check rootkits
* Default files and directories
   Rootkit '55808 Trojan - Variant A'...                      [ OK ]
   Rootkit 'AjaKit'...                                        [ OK ]
   Rootkit 'aPa Kit'...                                       [ OK ]
   Rootkit 'Apache Worm'...                                   [ OK ]
   Rootkit 'Ambient (ark) Rootkit'...                         [ OK ]
   Rootkit 'BeastKit'...                                      [ OK ]
   Rootkit 'BOBKit'...                                        [ OK ]
   Rootkit 'CiNIK Worm (Slapper.B variant)'...                [ OK ]
   Rootkit 'Danny-Boy's Abuse Kit'...                         [ OK ]
   Rootkit 'Devil RootKit'...                                 [ OK ]
   Rootkit 'Dica'...                                          [ OK ]
   Rootkit 'Dreams Rootkit'...                                [ OK ]
   Rootkit 'Duarawkz'...                                      [ OK ]
   Rootkit 'Flea Linux Rootkit'...                            [ OK ]
   Rootkit 'FreeBSD Rootkit'...                               [ OK ]
   Rootkit 'Fuck`it Rootkit'...                               [ OK ]
   Rootkit 'GasKit'...                                        [ OK ]
   Rootkit 'Heroin LKM'...                                    [ OK ]
   Rootkit 'HjC Kit'...                                       [ OK ]
   Rootkit 'ignoKit'...                                       [ OK ]
   Rootkit 'ImperalsS-FBRK'...                                [ OK ]
   Rootkit 'Kitko'...                                         [ OK ]
   Rootkit 'Knark'...                                         [ OK ]
   Rootkit 'Li0n Worm'...                                     [ OK ]
   Rootkit 'Lockit / LJK2'...                                 [ OK ]
   Rootkit 'MRK'...                                           [ OK ]
   Rootkit 'RootKit for SunOS / NSDAP'...                     [ OK ]
   Rootkit 'Optic Kit (Tux)'...                               [ OK ]
   Rootkit 'Oz Rootkit'...                                    [ OK ]
   Rootkit 'Portacelo'...                                     [ OK ]
   Rootkit 'R3dstorm Toolkit'...                              [ OK ]
   Sebek LKM                                                  [ OK ]
   Rootkit 'Scalper Worm'...                                  [ OK ]
   Rootkit 'Shutdown'...                                      [ OK ]
   Rootkit 'SHV4'...                                          [ OK ]
   Rootkit 'Sin Rootkit'...                                   [ OK ]
   Rootkit 'Slapper'...                                       [ OK ]
   Rootkit 'Sneakin Rootkit'...                               [ OK ]
   Rootkit 'Suckit Rootkit'...                                [ OK ]
   Rootkit 'SunOS Rootkit'...                                 [ OK ]
   Rootkit 'Superkit'...                                      [ OK ]
   Rootkit 'TBD (Telnet BackDoor)'...                         [ OK ]
   Rootkit 'TeLeKiT'...                                       [ OK ]
   Rootkit 'T0rn Rootkit'...                                  [ OK ]
   Rootkit 'Trojanit Kit'...                                  [ OK ]
   Rootkit 'VcKit'...                                         [ OK ]
   Rootkit 'Volc Rootkit'...                                  [ OK ]
   Rootkit 'X-Org SunOS Rootkit'...                           [ OK ]
   Rootkit 'zaRwT.KiT Rootkit'...                             [ OK ]

* Suspicious files and malware
   Scanning for known rootkit files                           [ OK ]
   Miscellaneous Login backdoors                              [ OK ]
   Miscellaneous directories                                  [ OK ]
   Sniffer logs                                               [ OK ]

* Trojan specific characteristics
   shv4
     Checking /etc/rc.d/rc.sysinit                            [ Not found ]
     Checking /etc/inetd.conf                                 [ Clean ]

* Suspicious file properties
   chmod properties
     Checking /bin/ps                                         [ Clean ]
     Checking /bin/ls                                         [ Clean ]
     Checking /usr/bin/w                                      [ Clean ]
     Checking /usr/bin/who                                    [ Clean ]
   Script replacements
     Checking /bin/ps                                         [ Clean ]
     Checking /bin/ls                                         [ Clean ]
     Checking /usr/bin/w                                      [ Clean ]
     Checking /usr/bin/who                                    [ Clean ]

* OS dependant tests


Networking
* Check: frequently used backdoors
Not tested

* Interfaces
     Scanning for promiscuous interfaces                      [ Warning! ]
Found promiscuous interface. Please use option '--createlogfile' and check the logfile


System checks
* Allround tests
   Checking hostname... Found. Hostname is myClient01.local
   Checking for differences in user accounts... OK. No changes.
   Checking for differences in user groups... OK. No changes.
   Checking rc.local file... 
     - /etc/rc.local                                          [ Not found ]
     - /etc/rc.d/rc.local                                     [ Not found ]
     - /usr/local/etc/rc.local                                [ Not found ]
     - /usr/local/etc/rc.d/rc.local                           [ Not found ]
   Checking rc.d files...                                     [ Not found ]
   Checking history files
     Bourne Shell                                             [ Not Found ]

* Filesystem checks
   Checking /dev for suspicious files...                      [ OK ]
   Scanning for hidden files...                               [ OK ]


Security advisories
* Check: Groups and Accounts
   Searching for /etc/passwd...                               [ Found ]
   Checking users with UID '0' (root)...                      [ OK ]

* Check: SSH
   Searching for sshd_config... 
   Found /etc/sshd_config
   Checking for allowed root login... Watch out Root login possible. Possible risk!
    info: 
   Checking for allowed protocols...                          [ Warning (SSH v1 allowed) ]

* Check: Events and Logging
   Search for syslog configuration... found
   Checking for running syslog slave...                       [ OK ]
   Checking for logging to remote system...                   [ OK (remote logging) ]
    info: install.*                                             @127.0.0.1:32376


---------------------------- Scan results ----------------------------

MD5
MD5 compared: 0
Incorrect MD5 checksums: 0

File scan
Scanned files: 283
Possible infected files: 0
Possible rootkits: 

Scanning took 65 seconds
Scan results written to logfile (/var/log/rkhunter.log)

-----------------------------------------------------------------------

Do you have some problems, undetected rootkits, false positives, ideas
or suggestions?
Please e-mail me by filling in the contact form (@http://www.rootkit.nl)

-----------------------------------------------------------------------

石津@RJC さんからのコメント
( Monday, April 12, 2004 17:45:57 )

logもポストしようかなと思いましたが、かなり長いのでやめました。(笑
上のものはターミナルへの出力です。

英語は苦手という方でもわかりやすい表示だと思うので、気軽に試してみて
はどうでしょうか。

石津@RJC さんからのコメント
( Wednesday, April 14, 2004 13:21:48 )

今日確認したら1.06にアップデートしていました。
変更点はサポートするOSの追加などですが、OSX関係で修正が入ったわけではないようです。

OSXは1.02でサポートされたようなのですが、Pantherに対応していないのかも?

→  changelog

たまちゃん さんからのコメント
( Wednesday, April 14, 2004 13:42:17 )

1.06 の 10.3.3 上での動作を確認しました。

Warning about promisc. mode --rkhunter さんからのコメント
( Wednesday, June 23, 2004 22:02:48 )

I am gettting this same warning. How can I disable the eth0 from promisc. mode
-----------------
* Interfaces
     Scanning for promiscuous interfaces  [ Warning! ]

---------------------------
basanta
basanta@imax.com.np
Imax pvt. Ltd.
System Dept. 
Nepal

石津@RJC さんからのコメント
( Monday, June 28, 2004 23:59:03 )

Hmm... "ifconfig" which on MacOSX does not have options for promisc mode.
How can we disable it?

MacOSXのifconfigにはプロミスキャスモードに対する設定がないみたいですね。
どうやって無効にするんでしょう?

ちなみにLinuxとかは

ifconfig en0 -promisc

とかでいいんですが...

ifconfig自分でコンパイル&インストール?
tcptrackでできないかなーと思ったんですが、だめでした。(x_x)

otsune さんからのコメント
( Tuesday, June 29, 2004 11:36:57 )

DHCPサーバーが動作しているとpromiscモードになるはず。