- PR -

tripwireでファイルの改竄を発見

投稿者投稿内容
しだれざくら
会議室デビュー日: 2002/07/25
投稿数: 15
お住まい・勤務地: 東京都多摩市
投稿日時: 2003-06-09 17:22
時計じかけさん、はじめまして。
しだれざくらと申します。

ログ拝見しました。

すご〜くしょうもない質問になってしまいますが、/var/log/messagesに記述のある日時にtty1を利用してrootでログインされた記憶はないんですよね?でもログは残っていると考えてよいのでしょうか?

それと、
引用:

尚、一部、プライバシーにかかる部分は「********」に変更してあります。


の********は、普段時計じかけさんが利用しているユーザ名ですか?
時計じかけ
会議室デビュー日: 2003/06/04
投稿数: 6
投稿日時: 2003-06-10 00:11
しだれざくらさん レスありがとうございます。

/var/log/messagesのログは全て私がログインしたものです。rootも「*************」も
私自身です。不審なログが無い意味を込めて載せました。

通常と逆ですが、rootでログインした後に「************」に「su」しています。

ただし、よく見ると自分でログインしているのにパスワードを間違えているようで、誤解を
招くログだったかもしれません。

因みに「*************」は通常使用しているユーザー名です(*の数は適当です)。

しかP
会議室デビュー日: 2003/06/11
投稿数: 3
投稿日時: 2003-06-11 15:26
しかPです。

ログを読ませていただきましたが、引っかかる点がありますので…。
まず、tripwireのログを見ると、/rootにもじらの設定及びキャッシュが大量に追加されていますが、これはroot権限でweb閲覧を行った、という解釈でよいでしょうか?
#サーバ運用者の行動としてはあまりに軽率すぎるかと。

やられた、と仮定してシナリオを考えてみましたが、サーバが最新のもの=穴がないとすれば、可能性は「cgi経由でapacheの権限を取られ、その後ローカルコマンドの脆弱性を悪用され、rootに昇格された」か、「webサーフィン中、トラップを踏んでバックドアを仕込まれ、そこから侵入」くらいしか思いつきません。
#リモートの場合は、ですが・・・:-P

webサーバの該当時間でのログとかに、見慣れないアクセスとかはありませんよね?cgiから、コマンド発行ができたりしませんよね?/etc/passwdに見慣れないものはないですよね?他のマシンからポートスキャンして、変なポートが空いていませんよね?
ログはとっても重要な情報ですが、それだけでは何もわかりません。もっといろいろな観点から情報を見ていかないと・・・・。

あと、tripwireでこのプロパティを使っていないのであやふやな知識なのですが、ポリシーファイルのルールで、プロパティに「a」ついていますか?

ともあれ、rpmでは改竄を検知できなかった、とのことですし、先のログ「だけ」で判断すると、私個人はやられていない、と思うのですが・・・。
Nishizaka
ベテラン
会議室デビュー日: 2001/10/12
投稿数: 83
お住まい・勤務地: 長崎県
投稿日時: 2003-06-11 16:04
こんにちは

何かやっぱ変ですよねぇ〜。
ログだけ見ていると、別パーティションに古いRedhat が入ってて、
/root /bin /sbin 等を同じパーティションをマウントして、
古い Redhat が立ち上がったような感じです。(違うかなぁ〜?)

とりあえず、/bin/bash だけを例に取って原因を調べてみましょうか...。

$ /usr/sbin/twprint --print-dbfile /bin/bash
$ ls -al /bin/bash
$ /usr/sbin/siggen -a /bin/bash
$ ls -al /var/lib/tripwire

この結果はどうなります?
 tripwire の db の記憶がおかしいのか
 /bin/bash が書き換わったのか
 /bin/bash の MD5 等の値
 前回の tripwire --init の日時
この辺から、ある程度、どういう事か判断出来ると思います。

# tripwire --init に失敗しているんですかねぇ〜? だといいのですが。
# もし改竄されているんだったら人事じゃないんで気になってます。^^;

[ メッセージ編集済み 編集者: Nishizaka 編集日時 2003-06-11 19:54 ]
時計じかけ
会議室デビュー日: 2003/06/04
投稿数: 6
投稿日時: 2003-06-18 23:42
仕事の関係でなかなか返信ができませんでした。

さて、Nishizakaさんのコマンドを実行した結果です(一部******にしてあります)。
何か分からずに教えていただいたとおり実行しましたが、その後tripwireのデータベ
ースを更新してしまっているため、参考にならないかもしれません。
________________________

# /usr/sbin/twprint --print-dbfile /bin/bash
Object name: /bin/bash

Property: Value:
------------- -----------
Object Type Regular File
Device Number 769
Inode Number 3522570
Mode -rwxr-xr-x
Num Links 1
UID root (0)
GID root (0)
Size 626188
Modify Time 2002年08月24日 05時01分06秒
Blocks 1232
CRC32 AvJt4g
MD5 Cmk7bUInfLBBCgdlDRXYEV

# ls -al /bin/bash
-rwxr-xr-x 1 root root 626188 8月 24 2002 /bin/bash

# /usr/sbin/siggen -a /bin/bash
--------------------------------------------------------------------------------Signatures for file: /bin/bash

CRC32 AvJt4g
MD5 Cmk7bUInfLBBCgdlDRXYEV
SHA OhaPC5U7/WxMBneZ+meFCx16g86
HAVAL BR78SXJFJFJNX3YMcLMwS/
--------------------------------------------------------------------------------

# ls -al /var/lib/tripwire
合計 2408
drwxr-xr-x 3 root root 4096 6月 7 23:49 .
drwxr-xr-x 20 root root 4096 6月 1 00:37 ..
-rw-r--r-- 1 root root 1205412 6月 7 23:49 ******.twd
-rw-r--r-- 1 root root 1234308 6月 7 23:49 ******.twd.bak
drwxr-xr-x 2 root root 4096 6月 18 04:09 report


しかPさんのご指摘どおり、rootでweb閲覧をしました。今後は気を付けようと思います
(これもWindowsマシンで入力しています)。
外部からのポートスキャンの結果も、「80」と「25」だけでした。
CGI自体は設置していませんでしたが、特定のディレクトリーでCGIが動作するようにはし
てありました。コマンド発行ができたりしませんよね?の意味が分かりませんでしたので
教えていただければ幸いです。
Apacheのaccess_logには、code redやnimdaのアクセスはありましたが、それ以外に気
になるものはありませんでした。

Nishizakaさんの、「ログだけ見ていると、別パーティションに古いRedhat が入ってて、
/root /bin /sbin 等を同じパーティションをマウントして、古い Redhat が立ち上が
ったような感じです」の意味も分かりませんでした。

確かに、カーネルのアップデートを行っていますので、なんとなく気になるところです。

やっぱり、素人にはLinuxは敷居が高いですね。
Nishizaka
ベテラン
会議室デビュー日: 2001/10/12
投稿数: 83
お住まい・勤務地: 長崎県
投稿日時: 2003-06-19 09:18
> 何か分からずに教えていただいたとおり実行しましたが、その後tripwireのデータベ
> ースを更新してしまっているため、参考にならないかもしれません。

# /usr/sbin/twprint --print-dbfile /bin/bash
これは tripwire の DB の内容を表示ですね。

> Mode -rwxr-xr-x
> Num Links 1
> UID root (0)
> GID root (0)
> Size 626188
> Modify Time 2002年08月24日 05時01分06秒

此処までの内容は ls -al で表示させた内容と比較出来ます。

> CRC32 AvJt4g
> MD5 Cmk7bUInfLBBCgdlDRXYEV

この内容は、siggen での結果と比較できます。

# Object Type, Device Number, Device Number,Blocks は、どのコマンドでわかるのかな?

DBの内容と他のコマンドの内容との比較で何が異常で検出されたかがわかると思うんですが。

> -rw-r--r-- 1 root root 1205412 6月 7 23:49 ******.twd
> -rw-r--r-- 1 root root 1234308 6月 7 23:49 ******.twd.bak

これが、tripwire の DB だと思うんですが、前回更新時のサイズとか日付とか
見れば、何かヒントでもわかるかと思ったんですが、更新しちゃってますね。

結果は問題はないみたいでわからなくなっちゃいましたねー。

> Nishizakaさんの、「ログだけ見ていると、別パーティションに古いRedhat が入ってて、
> /root /bin /sbin 等を同じパーティションをマウントして、古い Redhat が立ち上が
> ったような感じです」の意味も分かりませんでした。

う〜ん。では意図的に別のパーティションにインストールはしてないって事ですね。
推測するに、tripware の DB が何かの原因で壊れてしまったんでは無いでしょうか?
しかP
会議室デビュー日: 2003/06/11
投稿数: 3
投稿日時: 2003-06-19 12:29
しかPです。

現状、真相は闇の中、と言う感じですね。(^^;
DBが腐っているにしては検知が少なすぎるし・・・んー、想像力の欠如だなぁ。
#これでは不正アクセスの解析なんてできないぞ>俺

ともあれ、ご質問の件について。

まず、CGIでのコマンド発行、と書いたのは、CGIへの入力に対するサニタイジングが不足している状況で、それをUNIXコマンドの引数にしていたりする場合、コマンド発行が可能です、という事です。。
例えば、メール送信CGIとかで、メールアドレスのサニタイジングが不足している場合で、かつ、sendmailコマンドに直接それを代入している場合(例:system("date | sendmail $mailaddr"))、もしメールアドレスの後ろに「;」を加え、その後にコマンドを書かれてしまうと実行されてしまいます。
ま、CGIを置いていない、という事ですから問題ないですし、そもそも今時こんなCGIは配布されていないと思いますが。
この辺りについては「是非」IPAのセキュアプログラミング講座あたりを一読しておくことをおすすめします。(http://www.ipa.go.jp/security/awareness/vendor/programming/a04_02.html)

ついでに確認ですけど、ポートスキャンは1-65535すべてやりましたよね?TCP/UDP両方。

閑話休題。

つか、Linuxの敷居が高いのではなく、(OSはなんであれ)公開サーバをたてることの敷居が高いだけだと思います。Windowsだから簡単、などという問題ではないです。
蛇足として、ログなんですが、(今回のはともかく)公開サーバのログは、基本的に信用に足るものではなかったりします。簡単に改竄できますから。
できれば、syslog経由でもなんでもいいので、別マシンに送ることをおすすめします。

取り急ぎ乱文ご容赦m(__)m
では。
時計じかけ
会議室デビュー日: 2003/06/04
投稿数: 6
投稿日時: 2003-06-24 12:55
時計じかけです。

海外のサイトの無料サービスを利用した結果ですが、ポートスキャンは
TCP/UDPともに全て行いました。

しかP様のおっしゃるとおり「サーバをたてることの敷居が高い」ので
すね。最近では「簡単!自宅でWebサーバ構築」といった書籍が書店
に並んでいますが、全然簡単じゃないですよね。rootkitの情報なども
載ってませんし、私も含めて管理が甘いサーバが増えているのは恐い気
がします。

さて、
原因がはっきりしないのは気になりますが、自分自身の操作ミス、勘違
いの可能性もあるため、一旦打ち切りとして、再インストールして様子
を見ることとします。これまでの作業の結果ではなんとなく大丈夫そう
?ですし。

ログを別マシンに送ること以外に、最低限(きりがないのでしょうが)
やっておいた方が良いことがあればご教授下さい。

スキルアップ/キャリアアップ(JOB@IT)