Skip to content

686f6c61/process-cloak

Repository files navigation

process-cloak

Herramienta defensiva de ciberseguridad que camufla los procesos en ejecución de un sistema operativo. Determinado software realiza un inventario de las aplicaciones abiertas en el equipo comparando los nombres de los procesos activos contra una lista negra de programas conocidos. process-cloak renombra estos procesos con nombres que parecen servicios legítimos del sistema, haciendo que las aplicaciones reales sean invisibles para cualquier escaneo basado en nombres de proceso.

El problema

Software de terceros puede listar los procesos activos de una máquina para identificar:

  • Qué navegador se está usando (Chrome, Firefox, Brave, Edge, Opera...)
  • Si hay herramientas de seguridad abiertas (Burp Suite, OWASP ZAP)
  • Si se usa control remoto (TeamViewer, AnyDesk, Parsec)
  • Si se ejecuta dentro de una máquina virtual (VirtualBox, VMware)
  • Qué editor o IDE hay abierto (VS Code, PyCharm, Sublime Text, Eclipse)
  • Qué herramientas de comunicación están activas (Slack, Teams, Telegram, Discord)
  • Si hay grabadores de pantalla o cámaras virtuales (OBS, ManyCam, Bandicam)

El mecanismo es sencillo: el software obtiene la lista de procesos del sistema operativo y compara cada nombre contra una base de datos de aplicaciones conocidas. Si chrome.exe o firefox aparece en la lista, queda registrado.

La solución

process-cloak renombra los procesos para que parezcan servicios legítimos del sistema operativo. Un escáner que busque chrome.exe encontrará RuntimeBroker_a3f2.exe. Un escáner que busque firefox encontrará xdg_session_b4d9.

El programa sigue funcionando con normalidad, pero su nombre real es invisible para cualquier herramienta de reconocimiento basada en nombres de proceso.

Cómo funciona

Análisis del mecanismo de detección

El software de escaneo de procesos funciona así:

// Carga una lista de programas prohibidos
const bannedList = bannedPrograms.map(name => name.toLowerCase());

// Obtiene todos los procesos del sistema
const processes = await systeminformation.processes();

// Compara cada proceso por nombre (case-insensitive)
processes.forEach(process => {
    if (bannedList.includes(process.name.toLowerCase())) {
        // DETECTADO - marca el proceso
    }
});

El escáner no calcula hashes, no verifica firmas digitales, no analiza el contenido del binario ni la memoria del proceso. Solo compara cadenas de texto. Cambiar el nombre del proceso es suficiente para hacerlo invisible.

Método en Linux

  1. Localiza el binario real del programa (ej: /usr/lib/firefox/firefox)
  2. Crea un directorio espejo en ~/.process-cloak/lib/<nombre_falso>/
  3. Crea symlinks a todas las librerías del programa original
  4. Crea un hardlink (o copia) del binario con el nombre falso
  5. Cierra el proceso original
  6. Lanza la copia desde el directorio espejo

El campo comm de /proc/PID/comm (que es lo que leen los escáneres) muestra el nombre falso. El programa funciona con normalidad porque las librerías apuntan a las originales.

Método en Windows

  1. Localiza el ejecutable real (.exe) del programa
  2. Copia el .exe a %USERPROFILE%\.process-cloak\ con un nombre falso
  3. Cierra el proceso original
  4. Lanza la copia

Windows muestra en el Administrador de tareas, tasklist y Get-Process el nombre del fichero .exe que se ejecutó. Si se llama RuntimeBroker_a3f2.exe, eso es lo que ve cualquier escáner.

Nombres falsos generados

Los nombres no son cadenas aleatorias evidentes. Se generan a partir de prefijos reales de servicios del sistema operativo:

Sistema Ejemplos de nombres generados
Linux sys_worker_a3f2, dbus_helper_7c1e, pulse_worker_b4d9, xdg_session_e9b1
Windows svchost_a3f2.exe, RuntimeBroker_7c1e.exe, SearchProtocol_b4d9.exe, WmiPrvSE_e9b1.exe

Un administrador de sistemas vería estos nombres y los confundiría con servicios legítimos.

Dos modos de uso

Modo A: escaneo y protección automática

El flujo principal. El script escanea automáticamente los procesos activos, los cruza con la base de datos de 164 aplicaciones conocidas y alerta de cuáles son detectables:

$ ./process-cloak.sh

  Se han detectado 4 procesos que un escáner podría identificar:

  PID 1423  firefox       (Navegadores web)
  PID 2891  code          (Editores de código)
  PID 3102  spotify       (Reproductores multimedia)
  PID 4521  slack         (Herramientas de conversación)

  ¿Qué deseas hacer?
  [1] Camuflar TODOS
  [2] Elegir cuáles camuflar

Resultado:

  firefox  -> xdg_session_b4d9   [OK]
  code     -> gsd_service_7c1e   [OK]
  spotify  -> pulse_worker_a8f3  [OK]
  slack    -> dbus_helper_2d4a   [OK]

  Cuando termines, vuelve a ejecutar este script
  para restaurar los nombres originales.

Modo B: lanzar aplicación camuflada desde el catálogo

Si la aplicación no está abierta todavía, puedes lanzarla directamente con un nombre camuflado:

  Categorías:
  [1] Procesadores de texto (3 apps)
  [2] Navegadores web (5 apps)
  [3] Herramientas de conversación (7 apps)
  ...

  > Navegadores web > Mozilla Firefox

  Se lanzará como: xdg_session_b4d9
  ¿Lanzar ahora? [Sí]

  Firefox lanzado como xdg_session_b4d9
  PID: 5678

Base de datos de aplicaciones

El fichero apps-db.json contiene 164 programas organizados en 17 categorías:

Categoría Programas Ejemplos
Procesadores de texto 10 Word, Notepad++, Gedit, Kate, Pages
Lectores de PDF 15 Acrobat, Foxit, Evince, Okular, Sumatra
Hojas de cálculo 3 Excel, Numbers, JASP
Clientes de correo 4 Outlook, Thunderbird, Mail, Airmail
Navegadores web 18 Chrome, Firefox, Brave, Edge, Safari, Opera
Herramientas de conversación 11 Teams, Slack, Discord, Telegram, Zoom, WhatsApp
Cámaras virtuales 19 OBS, ManyCam, Snap Camera, XSplit, DroidCam
Exploradores de archivos 8 Explorer, Finder, Nautilus, Dolphin
Reproductores multimedia 8 VLC, Spotify, iTunes, Audacity
Diapositivas 2 PowerPoint, Keynote
Screenshots / Screen Recorder 29 ShareX, Greenshot, Loom, Bandicam, OBS
Control remoto 7 TeamViewer, AnyDesk, Parsec, Barrier
Pentesting 2 Burp Suite, OWASP ZAP
Editores de código 14 VS Code, PyCharm, Sublime Text, Eclipse, MATLAB
Máquinas virtuales 3 VirtualBox, VMware, Parallels
Clientes de bases de datos 8 DataGrip, MySQL Workbench, HeidiSQL, TablePlus
Ofimática Open Source 4 LibreOffice, OpenOffice, WPS Office

Requisitos

Linux

  • jq: procesador de JSON (sudo apt install jq)
  • whiptail: menús interactivos en terminal (suele venir instalado)

Windows

  • PowerShell 5.1 o superior (incluido en Windows 10/11)
  • No requiere software adicional

Uso

Linux

chmod +x process-cloak.sh
./process-cloak.sh

Windows

cd C:\ruta\a\process-cloak
powershell -ExecutionPolicy Bypass -File .\process-cloak.ps1

Menú principal

  [1] Escanear y camuflar procesos expuestos
  [2] Restaurar procesos camuflados
  [3] Lanzar aplicación camuflada (catálogo)
  [4] Ver estado actual
  [5] Verificar exposición (qué ve un escáner)
  [0] Salir

Limitaciones conocidas

Aplicaciones snap en Linux

Los programas instalados como snap (Ubuntu Snap Store) ejecutan dentro de un sandbox aislado. Su binario no se puede copiar ni ejecutar fuera del entorno snap.

Solución: instalar la versión .deb del programa. Ejemplo para Firefox:

sudo snap remove firefox
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt install firefox

El script detecta automáticamente los procesos snap y avisa al usuario.

Aplicaciones UWP en Windows

Las aplicaciones instaladas desde Microsoft Store (UWP) ejecutan en un sandbox protegido por Windows. Su ejecutable está en C:\Program Files\WindowsApps\, una carpeta con permisos restringidos. Esto incluye el Bloc de notas de Windows 11, la Calculadora y cualquier app de la Store.

Solución: descargar la versión .exe clásica desde la web del programa.

El script detecta las apps UWP y muestra la etiqueta [UWP - no camuflable].

macOS (no soportado)

macOS presenta restricciones de seguridad que impiden el camuflaje de procesos de forma fiable:

  • Hardened Runtime: aplicaciones como Firefox tienen Library Validation activado. macOS verifica la firma del código en tiempo de ejecución y mata (SIGKILL) cualquier copia modificada del binario. No es posible renombrar el ejecutable sin invalidar la firma.

  • App Store sandbox: las aplicaciones descargadas desde la Mac App Store (WhatsApp, Pages, Numbers, etc.) están protegidas por sandbox y no permiten copiar ni relanzar sus binarios.

  • Code Signing enforcement: incluso firmando ad-hoc con codesign --force --sign -, muchas aplicaciones verifican su propia integridad y se niegan a arrancar.

  • Compatibilidad de bash: macOS incluye bash 3.2 (2007) que no soporta arrays asociativos ni otras funcionalidades modernas. Requeriría instalar bash 5+ vía Homebrew.

Durante el desarrollo se probó en un Mac con Apple Silicon (arm64). De las aplicaciones probadas (Chrome, Firefox, Brave, Telegram, WhatsApp):

Aplicación Resultado Motivo
Google Chrome Funciona Binario launcher ligero, acepta firma ad-hoc
Brave Browser Funciona Mismo motor que Chrome
Telegram Funciona Sin hardened runtime estricto
Firefox Falla Hardened runtime + Library Validation (SIGKILL)
WhatsApp Falla App Store sandbox

Al funcionar solo con un subconjunto de aplicaciones y no poder garantizar compatibilidad general, se decidió no incluir macOS en esta versión. Una implementación fiable requeriría ingeniería inversa de los mecanismos de verificación de firma de cada aplicación o el uso de técnicas de inyección de código (DYLD_INSERT_LIBRARIES) que podrían ser bloqueadas por SIP (System Integrity Protection).

Procesos multiproceso

Aplicaciones como Chrome o Firefox lanzan varios procesos hijos. El proceso principal se camufla, pero los hijos pueden mantener el nombre original dependiendo de cómo los lance la aplicación.

Persistencia

El camuflaje no sobrevive a un reinicio. Los procesos vuelven a lanzarse con su nombre original al iniciar sesión. Hay que ejecutar el script de nuevo tras cada reinicio.

Lo que NO oculta

  • Hashes del binario: el contenido del ejecutable sigue siendo el mismo
  • Conexiones de red: si el proceso abre puertos conocidos, el tráfico lo delata
  • Firmas de memoria: un análisis de memoria RAM sigue viendo las cadenas originales
  • /proc/PID/exe en Linux: con permisos de root se puede ver el binario real

Estas limitaciones no afectan contra escáneres automatizados basados en nombres de proceso (que es el caso de uso principal), pero es importante ser consciente de ellas.

Estructura del proyecto

process-cloak/
  process-cloak.sh          Script principal Linux (bash + whiptail)
  process-cloak.ps1         Script principal Windows (PowerShell)
  apps-db.json              Base de datos de 164 aplicaciones en 17 categorías
  fake-names.json           Pool de 75 nombres falsos realistas por SO
  INSTRUCCIONES-LINUX.txt   Guía paso a paso para Linux
  INSTRUCCIONES-WINDOWS.txt Guía paso a paso para Windows
  README.md                 Esta documentación
  CHANGELOG.md              Historial de cambios
  LICENSE                   MIT

Verificación

Linux

# Comprobar que el proceso no es visible
ps -eo pid,comm | grep -i firefox
# (nada)

# Ver el proceso camuflado
ps -eo pid,comm | grep xdg_session
# 5678 xdg_session_b4d9

Windows

# Comprobar que el proceso no es visible
Get-Process | Where-Object { $_.Name -ieq "chrome" }
# (nada)

# Comprobar con tasklist
tasklist /fi "imagename eq chrome.exe"
# No hay tareas ejecutándose

Preguntas frecuentes

P: ¿Un antivirus detectará esta herramienta como maliciosa?

R: No. El script no inyecta código, no modifica memoria de otros procesos ni usa técnicas de rootkit. Simplemente copia un ejecutable con otro nombre y lo lanza. Es equivalente a renombrar un fichero manualmente.

P: ¿Funciona contra escáneres que verifican hashes?

R: No. Si el escáner calcula el SHA-256 del ejecutable, detectará que el contenido es idéntico al programa original aunque el nombre sea diferente. Sin embargo, los escáneres basados en nombres de proceso (que son la mayoría) no hacen esta verificación.

P: ¿Puedo añadir mis propias aplicaciones a la base de datos?

R: Sí. Edita apps-db.json y añade entradas con el formato:

{
    "programName": "Mi aplicación",
    "win32": ["miapp.exe"],
    "darwin": ["Mi aplicación"],
    "linux": ["miapp"]
}

P: ¿Qué pasa si cierro el script sin restaurar?

R: Los procesos camuflados siguen funcionando con normalidad. Al ejecutar el script de nuevo, detectará los procesos camuflados y ofrecerá restaurarlos.

P: ¿Necesito permisos de administrador?

R: No en la mayoría de casos. Solo sería necesario para camuflar procesos que ejecutan como otro usuario o como SYSTEM/root.

P: ¿Cuánto espacio en disco ocupa el camuflaje?

R: Depende del tamaño del ejecutable. Para la mayoría de aplicaciones, unos pocos MB. Al restaurar, las copias se eliminan automáticamente.

Licencia

MIT

About

Herramienta defensiva de ciberseguridad que camufla los procesos en ejecucion. Renombra aplicaciones con nombres de servicios del sistema para hacerlas invisibles al escaneo de procesos. Linux y Windows.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors