私は現在これにこだわっており、strace
初心者として試してみることにしました。質問のタイトルからわかるように、私は試してみてstrace su
くださいstrace ssh
。どちらのコマンドも、strace出力に入力したパスワードを表示します。su
引き続きパスワードが間違っているというのにssh
正常にログインになります。
私の質問:
- これはセキュリティ上の欠陥ですか、それとも何か抜けましたか?
- 間違ったパスワードを報告することは、
su
パスワードが実行されていることを検出するためのセキュリティ対策ですかstrace
?それでは、どのようにして呼び出されたのか、どうすればわかりますかstrace
?確認してみましょう/proc/self/cmdline
か? - そんなことがどれくらいダメージを与えることができますか?
alias su="strace -o /tmp/output.log su"
答え1
これはセキュリティ上の欠陥ではありません。あなたのプロセスなので、プロセスを追跡できます。strace
実行中のプロセスにしか接続できません。たとえば、
$ sudo sleep 30 &
[1] 3660
$ strace -p 3660
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
su
読み取り権限が不足しているため、無効なパスワードが報告されました/etc/shadow
。/etc/shadow
パスワードハッシュが保存される場所であり、セキュリティ上の理由からルートのみ読み取れるように設定されています。su
setuid ビットがセットされ、実行する人は root として効果的に実行されますが、実行すると機能しないため、最終的にはstrace
ユーザーアカウントで実行されます。
「どれくらいダメージを与えることができるのか」という言葉がどういう意味なのかよく分からない。ご覧のとおり、内部su
では動作しないため、strace
動作しないようにします。 「誰かがこれを使って自分のパスワードを盗むことができる」という意味であれば、彼らはシェルにエイリアスを設定できるはずです。ログインファイルを誰でも書き込むように設定したり、それに類似したものに設定しない限り、エイリアスを設定しないでください。方法。エイリアスを設定する権限がある場合は、su
パスワードを直接記録するパッチバージョンのエイリアスを使用できます。strace
答え2
私はあなたがこれを見ている理由は、まずプレーンテキストを入力し、su
パスワードssh
を入力してからハッシュして処理する必要があるためだと思います。を実行すると、strace
すべてのシステムコールを受信し、それをハッシュして処理する前にプレーンテキストパスワードをキャプチャします。端末にテキストが表示されないとしても、プレーンテキストを入力しないという意味ではありません。
答え3
http://blog.vpetkov.net/2013/01/29/sniffing-ssh-password-from-the-server-side/潜在的なセキュリティ問題を示す攻撃者がopensshを実行しているサーバーに対するroot権限を持っている場合は、strace
「net」プロセスで実行して、サーバーにSSHを介して接続しているユーザーのパスワードを収集できます。
ps aux | grep ssh | grep net | awk {‘ print $2′} | xargs -L1 strace -e write -p
...
Process 17681 attached – interrupt to quit
write(4, “\0\0\0 \v”, 5) = 5
write(4, “\0\0\0\33thisismysupersecretpassword“, 31) = 31
write(3, “\345+\275\373q:J\254\343\300\30I\216$\260y\276\302\353″…, 64) = 64
Process 17681 detached
答え4
これはroot権限でのみ実行できますが、依然として非常に危険です。そのシステムから他の重要なシステムにSSHを介して接続すると、root権限を持つ悪意のある人がユーザーの知らない間にユーザーのパスワードやパスワードのフレーズを盗む可能性があります。