ATT&CK矩阵-执行-Trap
[TOC]
简介
trap是shell内置命令,它对硬件信号和其他事件做出响应。trap定义并激活信号处理过程,信号处理过程是当shell接收信号或其他特殊条件时要运行的处理过程。常见的情况是脚本允许正常终止和处理常见的键盘中断(例如ctrl+c和ctrl+d),当shell遇到特定事件中断时,攻击者可用来执行相关代码。
测试用例
语法格式
trap命令允许指定shell脚本要监视并拦截的Linux信号。trap命令的格式如下:
trap commands signals
- Linux信号
信号 | 值 | 描述 |
---|---|---|
1 | SIGHP | 挂起进程 |
2 | SIGINT | 终止进程 |
3 | SIGQUIT | 停止进程 |
4 | SIGKILL | 无条件终止进程 |
5 | SIGTERM | 尽可能终止进程 |
6 | SIGSTOP | 无条件停止进程,但不是终止进程 |
7 | SIGTSTP | 停止或暂停进程,但不终止进程 |
8 | SIGCONT | 继续运行停止的进程 |
- 信号组合键
Ctrl+C组合键会产生SIGINT
信号,Ctrl+Z会产生SIGTSTP
信号
- demo1
#!/bin/bash
# test trap command
trap "echo '我按了Ctrl+c键" SIGINT
echo This is a test script
count=1
while [ $count -le 10 ]
do
echo "Loop $count"
sleep 1
count=$[ $count + 1 ]
done
echo The end.
运行结果:
- demo2
#!/bin/bash
# test trap command
trap "echo '测试结束了'" EXIT
echo 这是个测试脚本
count=1
while [ $count -le 10 ]
do
echo "Loop $count"
sleep 1
count=$[ $count + 1 ]
done
echo The end.
运行结果:
trap -l
可查看所有支持的信号
缓解措施
基于系统功能,暂无缓解措施
侦测方法
- 监测本地文件是否被修改,添加恶意命令
- 严格控制用户脚本执行权限