title: Trap
tags:


ATT&CK矩阵-执行-Trap

简介

trap是shell内置命令,它对硬件信号和其他事件做出响应。trap定义并激活信号处理过程,信号处理过程是当shell接收信号或其他特殊条件时要运行的处理过程。常见的情况是脚本允许正常终止和处理常见的键盘中断(例如ctrl+c和ctrl+d),当shell遇到特定事件中断时,攻击者可用来执行相关代码。

测试用例

语法格式
trap命令允许指定shell脚本要监视并拦截的Linux信号。trap命令的格式如下:

  1. trap commands signals
  1. Linux信号 | 信号 | 值 | 描述 | | —- | —- | —- |

| 1 | SIGHP | 挂起进程 |

| 2 | SIGINT | 终止进程 |

| 3 | SIGQUIT | 停止进程 |

| 4 | SIGKILL | 无条件终止进程 |

| 5 | SIGTERM | 尽可能终止进程 |

| 6 | SIGSTOP | 无条件停止进程,但不是终止进程 |

| 7 | SIGTSTP | 停止或暂停进程,但不终止进程 |

| 8 | SIGCONT | 继续运行停止的进程 |

  1. 信号组合键

Ctrl+C组合键会产生SIGINT信号,Ctrl+Z会产生SIGTSTP信号

  1. 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.

  1. 运行结果:<br />![](https://blog-1255850204.cos.ap-guangzhou.myqcloud.com/uPic/ZaeFHm.png)<br />![](https://blog-1255850204.cos.ap-guangzhou.myqcloud.com/uPic/pRqZmQ.png)
  2. 4. 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 - 图1
运行结果:
Trap - 图2

  1. trap -l可查看所有支持的信号

    缓解措施

    基于系统功能,暂无缓解措施

    侦测方法

  2. 监测本地文件是否被修改,添加恶意命令

  3. 严格控制用户脚本执行权限