Linux安全攻防:使用TRAP实现持续控制和提权
ATT&CK TRAP技术说明
在ATT&CK中,TRAP属于事件触发执行的一种技术,可以用于持续控制(persistence)和提权(privilege escalation)。
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