基于 inetd 后门的简要分析及利用_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

基于 inetd 后门的简要分析及利用

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


基于 inetd 后门的简要分析及利用

0x01 理解inetd是干什么的 通俗来讲就是一个监听外部网络请求 [就是一个socket] 的系统守护进程,其实有很多比较古老的服务都是基于此守护进程的 具体怎么工作的呢,其实非常简单,当inetd接收到一个外部请求后,它会根据这个请求到自己的配置文件中去找到实际处理它的程序 然后再把接收到的这个socket交给那个程序去处理,问题恰巧也就出在这里 如果来自外部的某个socket是要执行一个可交互的shell [比如,我们已经在目标系统的inetd配置文件中事先定义好],这岂不是就相当于一个简易的bind型后门 另外,关于使用inet的好处就是,不用每个服务都再单独起个进程,这样可以有效降低系统资源消耗,你甚至也可以一定程度上把它理解成linux中的'svchost.exe'进程 0x02 关于inetd.conf配置的具体使用说明 [service_name] [sock_type] [proto] [flags] [user] [server_path] [args] [服务名称] [协议(tcp或udp)] [标志(wait或 nowait)] [属主] [真实服务程序全路径] [真实服务程序名称及参数] 我们不妨先来仔细理解下下面语句的意思 ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd ftp stream:  inetd 开始监听ftp服务[默认端口是21] 这里的协议名称及默认端口号其实都已在/etc/protocol和/etc/services文件中事先定义好 stream : 并为此服务创建流类型的socket tcp: 使用tcp协议 root /usr/sbin/in.ftpd in.ftpd: 当inetd监听到ftp客户端请求,且端口成功连接后,inetd就会fork一个子进程,该子进程属主为root 同时它也继承了该子进程的父进程与客户端连接成功后所产生的子socket 然后该子进程将该子socket为0,1,2[标准输入,输出及错误输出]发给execl去执行/usr/sbin/in.ftpd in.ftpd程序 另外,这里还需要稍微注意下,定义要执行的程序必须给绝对路径 nowait: 父进程不会等待子进程的退出状态 0x03 开始插入inetd后门,此处暂以ubuntu 16.04LTS为例进行演示 因为默认没装,我们需要先装下inetd # apt-get install openbsd-inetd 为了更好的隐藏我们的shell,可以直接用service中定义好的服务,只需要把实际的处理程序替换下即可 # vi /etc/services fido   60179/tcp    # fidonet EMSI over TCP # inetd # ps -le | grep inetd 0x04 实际的连接效果如下 # nc -vv 192.168.3.28 60179 小结: 也并不是什么特别新鲜的东西,年代跟差不多跟suid后门一样久远,使用也非常简单,不过背后所涉及到的知识还需要大家多花点儿时间去透彻理解下,相信这样你会收获的更多,作为个小tip,在实际渗透内网时,可能会用的上,还是那句话,像这类的bind上去的后门有个通病,只要目标系统防火墙一开基本就全废了 文章出处:klion's blog 原文链接: https://klionsec.github.io/2017/10/23/inetd-backdoor/

基于 inetd 后门的简要分析及利用