我正在尝试编写一个 bpftrace 脚本来获取从后缀进程传递的字符串和用于身份验证部分的 saslauthd。目标是检测我公司的入侵帐户。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 系统调用字符串,但不是全部。我不明白为什么我的 bpftrace 没有相同的结果。我还考虑了空字符以及为什么我使用str(arg1,arg2)来强制数组的大小。我也尝试过使用跟踪点,这是相同的结果。
也许有人可以帮助我了解我的错误在哪里?所以任何输入将不胜感激