Linux安全攻防:使用TRAP实现持续控制和提权

ATT&CK TRAP技术说明

在ATT&CK中,TRAP属于事件触发执行的一种技术,可以用于持续控制(persistence)和提权(privilege escalation)。
image

TRAP语法

trap arg signal
trap command signal
trap 'action' signal1 signal2 signalN
trap 'action' SIGINT 
trap 'action' SIGTERM SIGINT SIGFPE SIGSTP
trap 'action' 15 2 8 20

Linux signal类型和含义

Number SIG     Meaning
0     0        On exit from shell
1     SIGHUP   Clean tidyup
2     SIGINt   Interrupt (CTRL-C)
3     SIGQUIT  Quit
6     SIGABRT  Cancel
9     SIGKILL  Die Now (cannot be trap'ped)
14    SIGALRM  Alarm Clock
15    SIGTERM  Terminate

示例说明

假如存在以下文件/tmp/a.txt,在接受到CTRL+C信号后,执行删除该文件的操作,则可以在命令行通过TRAP如下设置

$ trap 'rm /tmp/a.txt' SIGINT

完成后按下CTRL+C,会发现/tmp/a.txt文件已经被删除。

TRAP攻击分析

  • 持续控制:攻击者可以将TRAP的command指定为需要执行的恶意脚本,在系统运行过程中发生了相应的信号时,即可触发恶意脚本执行,类似于定时任务,实现恶意脚本持久化
  • 提权:假如普通用户可以编辑所属用户为root的脚本,并在其中加入恶意内容,通过TRAP将该脚本设置为接受到特定信号执行的命令,当信号触发后,将以root权限执行攻击者编写的恶意指令,从而达到提权的目的。

参考

https://attack.mitre.org/techniques/T1546/005/
https://bash.cyberciti.biz/guide/Trap_statement
https://ss64.com/bash/trap.html

posted @ 2021-07-11 11:34  Init0ne  阅读(198)  评论(0编辑  收藏  举报