1

認証部分の postfix プロセスと saslauthd から渡される文字列を取得する単一の bpftrace スクリプトを作成しようとしています。目標は、私の会社の侵害アカウントを検出することです。strace コマンドを実行すると、いくつかの良い結果が得られます。

strace -p PID -s 100 -e 'read'
read(7, "\0\20", 2)                     = 2
read(7, "xxxxxxxxxx", 10)               = 10
read(7, "\0\t", 2)                      = 2
read(7, "YYYYYYYYY", 9)                 = 9
read(7, "\0\4", 2)                      = 2
read(7, "smtp", 4)                      = 4

ログイン/パスワードを回復し、ブルートフォースが実行されているかどうかを検出できます。

しかし、私は bpftrace で同じ結果を得ようとしています:

$ bpftrace -e 'kprobe:sys_read /comm=="saslauthd"/ {printf("%<%s>\n",str(arg1,arg2));}'
<>
<login>
<>
<>
<>
<smtp>

この場合、一部の sys_read syscall 文字列を読み取ることができますが、すべてではありません。bpftrace が同じ結果にならない理由がわかりません。また、null 文字についても考えます。なぜstr(arg1,arg2)を使用して配列のサイズを強制するのかということです。トレースポイントも使用しようとしましたが、これは同じ結果です。

多分誰かが私のエラーがどこにあるかを理解するのを手伝ってくれるでしょうか? そのため、ご意見をお待ちしております

4

1 に答える 1