## auditd rules: detección LOLBin ransomware (formato nuevo, sin -w legacy) ## Cubre: noxargs_ransom, xargs_ransom, tarbulk ## Instalar: cp auditd_rules.rules /etc/audit/rules.d/lolbin-ransom.rules && augenrules --load ## ## Correlación post-evento: ## ausearch -k crypto_exec --start today | aureport -x --summary ## ausearch -k mass_unlink --start today | wc -l # >500 en <10s = tarbulk ## ausearch -k bash_tcp --start today -i ## ========================================================================== ## -------------------------------------------------------------------------- ## COMUN A LOS TRES ESTILOS ## -------------------------------------------------------------------------- ## Reconocimiento: find / -type f -writable -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/find -k lolbin_recon -a always,exit -F arch=b32 -S execve -F exe=/usr/bin/find -k lolbin_recon ## openssl: generación de clave (rand) y cifrado (enc). Ambos usos relevantes. -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/openssl -k crypto_exec -a always,exit -F arch=b32 -S execve -F exe=/usr/bin/openssl -k crypto_exec ## Escritura en /tmp: .key, .vault.enc, .targets -a always,exit -F arch=b64 -S open,openat,creat -F dir=/tmp -F success=1 -k tmp_staging -a always,exit -F arch=b32 -S open,openat,creat -F dir=/tmp -F success=1 -k tmp_staging ## -------------------------------------------------------------------------- ## NOXARGS_RANSOM + XARGS_RANSOM ## Señal: miles de EXECVE de openssl y shred en minutos ## -------------------------------------------------------------------------- ## shred -u por archivo. noxargs: secuencial. xargs: hasta 36 concurrentes. -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/shred -k shred_exec -a always,exit -F arch=b32 -S execve -F exe=/usr/bin/shred -k shred_exec ## xargs con -P alto: el multiplicador de paralelismo -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/xargs -k xargs_exec -a always,exit -F arch=b32 -S execve -F exe=/usr/bin/xargs -k xargs_exec ## Persistencia via crontab (re-cifra archivos nuevos cada 5 min) -a always,exit -F arch=b64 -S open,openat,creat,rename,unlink -F dir=/var/spool/cron -F success=1 -k crontab_mod -a always,exit -F arch=b32 -S open,openat,creat,rename,unlink -F dir=/var/spool/cron -F success=1 -k crontab_mod -a always,exit -F arch=b64 -S open,openat,creat,rename,unlink -F dir=/etc/cron.d -F success=1 -k crontab_mod -a always,exit -F arch=b32 -S open,openat,creat,rename,unlink -F dir=/etc/cron.d -F success=1 -k crontab_mod ## curl: exfiltración de clave en noxargs y xargs -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/curl -k key_exfil_curl -a always,exit -F arch=b32 -S execve -F exe=/usr/bin/curl -k key_exfil_curl ## -------------------------------------------------------------------------- ## TARBULK ## Señal: UN solo openssl, storm de unlink, connect() desde bash ## -------------------------------------------------------------------------- ## tar -czf - (stdout): staging para el pipe a openssl -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/tar -k tar_exec -a always,exit -F arch=b32 -S execve -F exe=/usr/bin/tar -k tar_exec ## unlink/unlinkat masivo: rm -f sobre 3470 archivos tras el cifrado. ## Esta regla dispara una vez por archivo. El volumen es la alerta. -a always,exit -F arch=b64 -S unlink,unlinkat -F auid>=1000 -k mass_unlink -a always,exit -F arch=b32 -S unlink,unlinkat -F auid>=1000 -k mass_unlink -a always,exit -F arch=b64 -S unlink,unlinkat -F uid=0 -k mass_unlink -a always,exit -F arch=b32 -S unlink,unlinkat -F uid=0 -k mass_unlink ## connect() desde bash: exfiltración via /dev/tcp sin curl ni wget. ## Alta fidelidad: bash no debería abrir sockets TCP directamente. -a always,exit -F arch=b64 -S connect -F exe=/usr/bin/bash -k bash_tcp -a always,exit -F arch=b32 -S connect -F exe=/usr/bin/bash -k bash_tcp -a always,exit -F arch=b64 -S connect -F exe=/bin/bash -k bash_tcp -a always,exit -F arch=b32 -S connect -F exe=/bin/bash -k bash_tcp