1. Historia del malware

La palabra malware viene de la combinación de las palabras malicious y software. Anteriormente, todo malware era llamado virus, pero en la actualidad, la diversidad de malware es muy amplia, y el término virus se utiliza principalmente para el software antimalware por cuestiones históricas.

El malware original era fuente de orgullo para su creador, ya que mostraba su nivel de destreza y conocimientos. Es por ello que los efectos debían ser visibles, y cuanto más devastadores mejor. En la actualidad este panorama ha cambiado. El mejor malware nunca es detectado, ya que su objetivo es permanecer el mayor tiempo posible en el sistema atacado. El fin último, es el beneficio económico, bien robando información sensible, creando redes de ordenadores zombie que un atacante podría utilizar para llevar acciones como el spam, el phishing, DDoS, distribuyendo falsas soluciones de seguridad (rogueware), secuestrando archivos del sistema mediante cifrado y pidiendo un rescate, etc.

Para conocer más sobre la historia del malware, podemos leer el siguiente artículo: Historia de los virus informáticos de la inciclopedia de la seguridad de RA-MA.

El beneficio del malware

El libro "Hacking Exposed. Malware and rootkits", dedica en el apartado "It's a business" a hablar de RBN (Russian Business Network), un ISP Ruso de San Petersburgo, que alberga websites de malware y phishing, originan spam, etcétera.

Los rusos son una potencia puntera en cuanto al desarrollo de malware. Virus y gusanos como Bagel, MyDoom o NetSky son producciones suyas. No es que sean más competentes o tengan habilidades superiores. Se trata de personas preparadas con pocas perspectivas laborales en nuevas tecnologías. Muchas de las personas que desarrollarían líneas de código para productos en empresas, se pasan a la escritura de malware para obtener beneficio rápido y fácil.

De hecho, "Hacking Exposed. Malware and rootkits" comienza contando una historia de un programador, que debido a la crisis, necesita ingresos extra. De modo que se pone manos a la obra para crear un software que le reporte dinero de manera fraudulente, mediante el llamado "fraude del clic"

RBN, ofrece una completa infraestructura para los ciberdelitos. Phishing, malware, ataques DDoS, pornografía infantil, etcétera, son soportados por este ISP ruso. Para ello, se pone a disposición del cliente varias botnets, shells remotas en servidores crackeados y servidores centralizados de gestión de estas actividades. Por ejemplo, el 31 de Agosto del 2007, la web bankofindia.com fue comprometida insertando un iframe que instalaba 22 malwares diferentes en los clientes de dicho banco. El ataque a dicha web tenía como origen RBN.

Clasificación

Antes de seguir, vamos a leer lo que dice la wikipedia sobre el malware. Esto nos llevará al menos 30 minutos, pero es un buen punto de partida. El artículo menciona:

  • Software infeccioso: Virus y gusanos.
  • Malware oculto: puertas traseras, descargas dirigidas, rootkits y troyanos.
  • Obtención de beneficios: spyware, adware y hijacking.
  • Robo de información: keyloggers y stealers.
  • Llamadas telefónicas: dialers.
  • DDoS y Spam: botnets.
  • Falsas soluciones antivirus: rogueware.
  • Secuestro de datos: Ransomware.

Métodos de infección/propagación

Veamos 5 métodos de infección:

  • Explotación de una vulnerabilidad
  • Ingeniería social: el usuario es engañado para que haga algo
  • Archivos maliciosos, adjuntos en emails, en sitios web, P2P, warez...
  • Dispositivos extraibles
  • Cookies maliciosas, que registran los hábitos de navegación del usuario, y vender la información a empresas de publicidad

Práctica 1. Antes de seguir, especifica al menos un método que te permita controlar cada método de infección, para evitar la instalación de malware en tus sistemas.

El libro "Hacking exposed. Malware and rootkits", dedica el apartado Modern malware propagation techniques a las técnicas que el malware emplea para propagarse sin ser detectado en la actualidad. Como explica el libro, todas las técnicas modernas llevan la impronta de las técnicas antiguas:

  • StormWorm crea una red p2p de máquinas zombie, controladas en remoto. La infección se basa en la ejecución de un archivo de MS Office adjunto en un correo electrónico.
  • Metamorfismo: malware polimórfico y malware oligomórfico.
  • Ofuscación: archivadores (zip, rar, cab) y empaquetado. A veces, el empaquetado traiciona al malware.
  • Codificación de red: XOR
  • DDNS y fast flux (single flux y double flux).

Vectores de propagación

El libro "Hacking exposed. Malware and rootkits" también habla sobre los vectores típicos de propagación:

  • email: justo por detrás de la ingeniería social, se basa en archivos adjuntos, de MS Office, típicamente.
    • Contramedidas:
      • El usuario se protege del correo: ¿Quién lo envía?¿Qué extensión tiene el archivo.
      • Nunca ejecutar un archivo recibido que no hemos pedido
      • Los usuarios deben ver la extensión de los archivos. Por ejemplo, un archivo de PowerPoint no tiene extensión exe.
      • Borrar los archivos adjuntos que no necesitamos.
  • Sitios web maliciosos. Muchas web no maliciosas pueden ser atacadas debido a una vulnerabilidad, convirtiéndose en maliciosas.
    • Contramedidas:
      • Educación... vigilar donde se navega, y controlar lo que se cliquea.
      • Software antispyware: Windows Defender, por ejemplo. Aunque un módulo antispyware es tan bueno como el sistema que protege (atención a las actualizaciones).
      • Filtrado web.
  • Phishing
    • Contramedidas:
      • Uso de módulos antiphishing en el navegador
      • Formación
      • Test de intrusión
  • P2P: muchas herramientas libremente descargables desde redes P2P incluyen malware.
    • Contramedidas:
      • Formación
      • Política de seguridad
  • Gusanos: los gusanos son solo la capa de propagación del objetivo final del escritor. Aun así son altamente peligrosos. Por ejemplo, StormWorm, descarga en la víctima un troyano, un rootkit y una estructura de comunicación P2P.
    • Contramedidas:
      • Defensa en profundidad. IDS/IPS.
      • A nivel de host: HIDS/HIPS.

Entonces...¿Cómo se instala el malware?

El malware es casi siempre instalado por el usuario. Esto ocurre en situaciones como las siguientes:

  • Descarga de software que incluye adware y spyware:
    • Uso de software de poca confianza.
    • Descarga de software de redes P2P, y/o uso de activadores, generadores de serials, etc.
  • Clicando en banners y anuncios engañosos.
  • Visitando sitios que usan exploits para instalar malware. Por lo general, esto ocurre en sitios web poco recomendables, aunque también puede ocurrir en sitios web de confianza (ha llegado a ocurrir en redes sociales populares, por ejemplo).
  • Falta de parcheo de programas, SO y software antimalware.
  • Directamente el usuario no usa antivirus.

Síntomas de la infección

Cuando un ordenador está infectado, puede manifestar síntomas o no. En la actualidad, un malware tratará de que no se manifieste ningún síntoma, de forma que pueda realizar su tarea de forma sigilosa. En cualquier caso, hay ciertos síntomas, que de darse, pueden indicar que hay algún malware instalado en nuestro ordenador:

  • El ordenador muestra extraños mensajes de error o popups.
  • El ordenador tarda demasiado en arrancar, y su funcionamiento es muy lento.
  • El ordenador se cuelga o reinicia sin causa aparente.
  • La página de inicio del navegador web ha cambiado.
  • Aparecen en el navegador campos adicionales en formularios.
  • Aparecen nuevas barras de herramientas.
  • Los resultados de una búsqueda son redirigidos.
  • El navegador acaba en sitios inesperados.
  • No se puede acceder a sitios relacionados con la seguridad.
  • Aparecen iconos y programas en el escritorio que no pusimos nostros.
  • Ciertos programas no inician sin causa aparente.
  • Se ha desactivado una o más herramientas de seguridad sin causa aparente.
  • La conexión a internet es lenta, o se genera tráfico sospechoso.
  • Desaparecen programas y archivos repentinamente.
  • El ordenador realiza acciones sin intervención del usuario.

2. Análisis del malware a fondo

Mark Russinovich es actualmente empleado de Microsoft. Antes de eso, fue un programador independiente, que junto con Bryce Cogswell desarrolló un conjunto de herramientas de análisis y auditoría para Windows. Estas herramientas las fue colgando en un sitio web llamado sysinternals.com en 1996. Algunas de las herramientas de Sysinternals, pueden emplearse para el análisis del sistema en busca de malware.

A veces, los antivirus no terminan con el malware. Las razones son las siguientes:

  • Dependen de las firmas. Por ello, solo pueden parar lo que sus laboratorios han visto, pero no lo que no han visto.
  • Los antivirus son objetivo del malware. Si el malware es instalado por el administrador del sistema, no hay nada que hacer.

Siempre hay que hacer una limpieza del sistema con la solución antivirus/antimalware que tengamos instalada. Después, siempre hay que hacer una limpieza manual. La razón del orden es obvia: simplifica el trabajo.

2.1. Fases de la limpieza del malware

Las fases que se deben seguir sistemáticamente para limpiear el malware son las siguientes:

  • Desconectar de la red: evitamos así que más malware se instale mientras intentamos limpiar el que tenemos instalado.
  • Identificar procesos y drivers maliciosos.
  • Finalizar los procesos identificados.
  • Identificar y borrar los autoinicios del malware.
  • Borrar archivos del malware
  • Reiniciar y repetir: a veces, el malware emplea técnicas sofisticadas para replicarse una vez ha sido eliminado. Por ello, hay que cerciorarse de que ha sido eliminado.

Para las prácticas siguientes vamos a utilizar el malware académico "kj33ks", escrito y compartido por Skpunky en http://foro.elhacker.net. Por ello, lo primero es, ejecutar kj33ks.exe y reiniciar.

Identificación de procesos maliciosos

Los procesos maliciosos suelen tener algunas características que los descubran. Estas características pueden ser alguna o varias de las siguientes:

  • No tienen icono
  • No tienen descripción o nombre de fabricante
  • No están firmados por Microsoft
  • Están en el directorio de Windows
  • Están empaquetados
  • Incluyen extrañas URLs entre sus cadenas de texto
  • Abren conexiones TCP/IP
  • Incluyen o usan extraños DLLs

El malware deja estos aspectos sin definir, porque puede (la mayoría de usuarios no comprueba estos aspectos). Sin embargo podemos dar con falsos negativos y con falsos positivos. Algunas aplicaciones de confianza no están firmadas por Microsoft.

El administrador de tareas como visor de procesos

Todo el mundo ha usado el administrador de tareas. Pero no muestra ninguna de la información previamente descrita. Definitivamente, el visor de procesos no es una herramienta válida para detectar malware.

Process Explorer

Process Explorer es una herramienta de Sysinternals que permite analizar en profundidad los procesos en ejecución. Es descargable desde sysinternals.com (ahora parte de Microsoft). Algunas de sus características son:

  • Muestra arbol de procesos. El malware no suele utilizar icono, descripción, etc.
  • Window finder (diana en la barra de herramientas) permite asociar un proceso a una ventana.
  • Search online (botón derecho sobre el proceso) permite buscar online información sobre el proceso.
  • Cuando un programa que se inicia se pone en verde. Cuando se detiene, se pone en rojo. Podemos modificar el tiempo que dura el color en Options\Difference hightlighting duration. También se pueden cambiar los colores.

Colores importantes en Process Explorer

Process Explorer describe alguna característica importante de un proceso mostrándolo en algún color concreto. De entre todas las características que Process Explorer puede mostrar, nos interesan especialmente (para la detección del malware) los siguientes:

  • Procesos ejecutados bajo el mismo usuario que inició sesión (Azul).
  • Procesos que ejecutan servicios (Rosa).
  • Procesos cuya imagen tiene algún tipo de empaquetado (Morado). El malware utiliza empaquetado o encriptación (que varía cada vez) para dificultar la identificación por parte de los antivirus.

Existen más colores, aunque no son relevantes para la detección del malware, así que podemos desactivarlos.

Notas flotantes

Al ponerse encima de un proceso podemos ver la ruta de la imagen de origen. Algunos procesos no tienen una imagen de origen, ya que han sido ejecutados por otro proceso. En estos casos no hay ruta. Esto no tiene por qué ser algo malo, ya que es un mecanismo muy empleado por el sistema operativo, para el alojamiento de servicios (svchost).

Verificación de firmas

Microsoft trata de firmar todo, de forma que un proceso que corre en el sistema debe estar firmado si es de confianza. No siempre es cierto, pero puede ser una ayuda a la hora de encontrar malware.

Práctica 2. En una máquina Windows Server 2008 que ejecuta el malware Kj33ks, comprobar las firmas de los procesos. Para ello, hacer doble clic sobre el proceso. Hay datos que pueden sernos útiles como si el fabricante puede verificarse: en la pestaña image, hay un botón "verify" que permite verificar la firma de un proceso. También se puede verificar automáticamente desde el menú "Options\Verify Images Signatures" (debemos activar la columna "Verify Signer" para ver cual está firmada).

Hace falta conexión a Internet para verificar las firmas a través de las CRL (Certificate Revocation Lists). De este modo, una firma que ya no es válida, será descubierta.

Servicios

Windows utiliza servicios para muchas cosas. En "Process Explorer" aparecen de color rosa. Los servicios pueden arrancar solos de manera independiente al usuario cuando la máquina arranca. Proporcionan muchas funcionalidades necesarias para el sistema, y otras que no son tan necesarias (como IIS por ejemplo) salvo en servidores. Un servicio puede tener un proceso dedicado o puede alojarse en un proceso "svchost". En este último caso, un solo proceso svchost puede alojar varios servicios. El archivo Svchost.exe se encuentra en la carpeta C:\WINDOWS\system32\svchost.exe.

Al iniciarse, Svchost.exe comprueba la parte de servicios del Registro para elaborar la lista de servicios que necesita cargar. Se pueden ejecutar múltiples instancias de Svchost.exe al mismo tiempo. Cada sesión de Svchost.exe puede contener un conjunto de servicios, para que se puedan ejecutar servicios autónomos, en función de cómo y cuándo se inició Svchost.exe. Esto permite un control mejor y una depuración más sencilla.

Los grupos Svchost.exe están identificados en la siguiente clave del Registro:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Cada valor contenido en esta clave representa un grupo Svchost distinto y se muestra como un ejemplo independiente cuando se consultan los procesos activos. Cada valor es un valor REG_MULTI_SZ que contiene los servicios que se ejecutan en el grupo Svchost. Cada grupo Svchost puede contener uno o varios nombres de servicio que se extraen de la siguiente clave del Registro, cuya subclave Parameters contiene un valor ServiceDLL:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Nombre del Servicio

En dicho valor, está la ruta la librería .dll que contiene la imagen del servicio. Al ponernos sobre un proceso "svchost" en "Process Explorer", podemos ver una nota contextual que muestra todos los servicios que se alojan en dicho proceso.

Práctica 3. Conocer la librería .dll que hay detrás de un proceso svchost:

  • Abrir procesxp.exe.
  • Hacer doble clic sobre un proceso svchost.
  • Abrir la pestaña "Services"
  • Buscar en la columna "path"
  • Opcionalmente podemos ver una descripción de la funcionalidad de la librería.

Conocer la ruta a las librerías .dll es muy útil para la detección del malware, porque éste suele valerse de un proceso svchost para su ejecución desde una librería .dll (valga la redundancia).

Strings

Otro aspecto muy interesante de "Process Explorer" es que podemos analizar las cadenas de texto plano que hay dentro del proceso, lo que puede darnos pistas de la función del proceso. Podemos ver tanto las cadenas de texto de la imagen de proceso (el archivo en el disco duro) o bien las cadenas en memoria, desde donde se ejecuta el proceso. El malware suele utilizar encriptación y métodos de empaquetado para dificultar el proceso de los antivirus en la búsqueda de patrones reconocibles. Sin embargo, cuando el malware se está ejecutando, permanece en memoria sin encriptar.

Práctica 4. Analizar las cadenas de texto asociadas a un proceso:

  • 1. Abrir procexp.exe.
  • 2. Hacer doble clic sobre un proceso.
  • 3. Abrir la pestaña "Strings".
  • 4. Hacer clic en el botón de radio "image" para ver las cadenas en la imagen.
  • 5. Hacer clic en el botón de radio "memory" para ver las cadenas en memoria.

A la hora de detectar malware, puede sernos muy útil, si buscamos cadenas que contengan "http" o "www", o ".com", etc. Puede tratarse de cadenas que emplee el malware para conectarse remotamente a servidores maliciosos.

El malware se puede esconder como un .dll en un proceso legítimo. Si activamos en el menú de herramientas "dll view", podemos ver las librerías .dll en ejecución y analizar sus cadenas.

Práctica 5. Analizar las cadenas de texto asociadas a una librería dll.

  • 1. Abrir procexp.exe.
  • 2. En la barra de herramientas, clicar en "Process view"
  • 3. En el panel inferior, clicar en una de las librerías.
  • 4. Abrir la pestaña "Strings".
  • 5. Hacer clic en el botón de radio "image" para ver las cadenas en la imagen.
  • 6. Hacer clic en el botón de radio "memory" para ver las cadenas en memoria.

System

El proceso system es quien aloja los drivers en ejecución del sistema.

Práctica 6. Comprobar que un driver en ejecución está firmado.

  • 1. Abrir procexp.exe.
  • 2. Seleccionar el proceso "System".
  • 3. En la barra de herramientas, clicar en "Process view".
  • 4. En el panel inferior, clicar sobre un driver (.sys)
  • 5. En la pestaña "image" comprobar que en el campo "Company" aparece la palabra "verified".

Conexiones inesperadas

Los procedimientos comentados sirven para identificar procesos y archivos sospechosos. Otra forma de identificar comportamientos sospechosos, es observando los procesos que tienen conexiones de red que no esperamos. Podemos utilizar TCPView. Si se observa una conexión que no esperamos, podemos detener la conexión e incluso hacer un "whois" a la máquina remota:

Práctica 7. Practicar whois a una máquina remota con la que un proceso tiene una conexión:

  • 0. Abrir internet explorer y abrir la página de google
  • 1. Iniciar tcpview
  • 2. Buscar el proceso iexplore donde tenga una conexión en estado "ESTABLISHED".
  • 3. Sobre el proces, clicar con el botón derecho y elegir "Whois".
  • 4. Después terminar la conexión mediante la opción "close connection".

Suspender antes que matar

No matar los procesos sospechosos. Es preferible suspederlos y una vez suspendidos, matarlos. La razón es que unos procesos pueden reiniciar a los otros (watchdog), con otro nombre diferente. De forma que si intentamos matarlos uno a uno, podríamos no acabar nunca.

Debemos anotar la ruta completa de las rutas de los .exe y .dll maliciosos.

La suspensión podría provocar el cuelgue.

Identificar procesos en el inicio

Mediante MSCONFIG es posible comprobar los programas que se inician en el inicio. Pero MSCONFIG ofrece poca información. Podemos utilizar "Auto Runs". Para detectar el posible malware que se esconde en el registro, podemos utilizar el siguiente método:

Práctica 8. Encontar software que arrancan en el inicio que podrían ser maliciosos:

  • 1. Iniciar autoruns.exe
  • 2. Desplegar el menú "options".
  • 3. Marcar la opción "Hide Microsoft and Windows entries".
  • 4. Marcar la opción "Verify code signatures".
  • 5. Clicar el botón "Refresh" de la barra de icono.

Lo que la acción anterior muestra las entradas que no son de Microsoft o que sí lo son pero que no están firmadas. Si hay alguna entrada que coincide con lo que hemos visto en el análisis anterior, podemos borrarla (o desactivarla si no estamos seguros). Después de borrar (o desactivar), refrescamos.

¿Quién lo pone ahí?

Si después de borrar una entrada, vuelve a aparecer, podemos utilizar otras herramientas para ver quién está volviendo a crear la entrada. Esta herramienta es "Process monitor".

Práctica 9. detectar la inserción de un valor en el registro, en concreto en la clave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run:

  • 1. Descargar el malware didáctico kj33ks.exe de Skapunky
  • 2. Abrir "Process monitor".
  • 3. En la barra de herramientas, marcar el botón "Show registry activity" y desactivar los demás botones "Show .... activity"
  • 4. Crear el siguiente filtro: "Operation is RegCreateValue - Include".
  • 5. Ejecutar el malware kj33ks.exe.
  • 6. Buscar la nueva entrada en "Process monitor". Se puede buscar la cadena "CurrentVersion\Run".

El proceso completo:

En resumen, el proceso a seguir, de manera sistemática, es el siguiente:

  • 1. Identificar los archivos sospechosos.
  • 2. Suspenderlos.
  • 3. Matarlos.
  • 4. Limpiar las entradas de autoinicio en el registro.
  • 5. Borrar los archivos.
  • 6. Reiniciar.
  • 7. Volver a empezar.

3. Varios malwares

Vamos a probar algunos tipos de malware, como keyloggers, troyanos o rootkits.

3.1. Keyloggers

Vamos a probar Revealer Keylogger para entender lo que es un Keylogger software. También existen los Keyloggers físicos, aunque estos ya los vimos en la parte de seguridad física.

Práctica 10. Descargar el keylogger Revealer Keylogger, instalarlo y comprobar su funcionamiento.

Por cierto, la versión gratuita no permite el envio remoto de las capturas de texto.

3.2. Troyanos

Los troyanos permiten establecer conexiones entre la máquina del atacante y la máquina de la víctima. Los troyanos están ampliamente documentados en Internet. Nosotros vamos a utilizar la siguiente referencia: Taller de troyanos de Antrax

Práctica 11. En esta actividad vamos a utilizar el troyano Spy-Net 2.6. Antes de empezar necesitamos una máquina atacante y una máquina víctima. Ambas máquinas tendrán conectividad y estarán en una red aislada. Para configurarlo seguiremos los siguientes pasos (que también podemos ver en el vídeo ofrecido por Antrax).

  • Ejecutar la aplicación SpyNet.exe. El programa nos pregunta: "Deseja listar as informaçoes de seu computador na tela principal?", a lo que respondemos que sí.
  • Una vez iniciada la aplicación, hacemos clic en el botón START de la barra de herramientas. Posteriormente, en el menú Opçoes\cambiar idioma elegimos el español.
  • Debemos indicar en qué puerto vamos a esperar las conexiones inversas del servidor (troyano). Para ello, en el menú Opciones\Seleccionar puerto, dejamos marcados los puertos que nos interesa. Si utilizamos el puerto 80 (por ejemplo), la conexión pasará por un acceso a la web, y no despertará sospechas. Es preciso asignar una contraseña (por ejemplo "perro20"). Esta misma contraseña la volveremos a utilizar al crear un nuevo servidor.
  • A continuación vamos a crear un nuevo servidor de conexión inversa. Para ello, hacemos clic en el menú Archivo\Crear servidor.
  • Lo primero es crear un nuevo usuario, sobre el que configuraremos el servidor. Para ello, creamos un usuario nuevo clicando el botón Nuevo. Por ejemplo, podemos utilizar el usuario "sad". Después hacemos clic en el botón Adelante
  • En la pestaña Conexión configuramos lo siguiente:
    • Dirección del cliente (atacante) y puerto de escucha. En este caso, según el gráfico, la ip del atacante sería 192.168.1.202, y el puerto de escucha el 80.
    • Como identificación, pondremos un nombre que nos permita distinguir el servidor de los otros cuando se produzca la conexión. Podemos utilizar el mismo nombre de usuario, y la contraseña debe coincidir con la utilizada en el puerto de escucha del cliente (que establecimos en el un paso anterior).
  • En la pestaña Instalación configuramos lo siguiente:
    • Marcar Instalación del servidor
    • Marcar Directorio de instalación\Windows para indicar que el troyano se instalará en C:\Windows
    • En la entrada Directorio escribimos el directorio en que se ubicará el servidor una vez se haya ejecutado por primera vez. Lo ideal es utilizar un nombre que no levante sospechas, como por ejemplo "Win32".
    • Marcar Inyectar dentro\Navegador por defecto, de forma que, el servidor se camufle bajo el proceso "explorer.exe".
    • En la sección Arranque, marcamos las claves del registro de autoinicio HKEY_LOCAL_MACHINE\Software\...\Run y HKEY_CURRENT_USER\Software\...\Run, y asignamos un nombre "convincente" a las entradas correspondientes. Algo como "VMWareAdditions". Estas entradas permitirán que el servidor (troyano) se inicie en cada inicio de sesión.
    • Hacemos clic varias veces sobre el botón Random para que el servidor sea registrado con un GUID diferente a cualquier otro del sistema. También cambiamos el Mutex poniendo alguna cadena original, para que el servidor no entre en conflicto con otro proceso con el mismo mutex, por ejemplo, otro alguien .
  • En la pestaña Mensaje podemos hacer que el servidor muestre un mensaje al usuario cuando lo ejecute.
  • En la pestaña Keylogger debemos asegurarnos que el keylogger está activado.
  • En la pestaña Anti-debugger marcamos conocidos depuradores, para evitar el análisis forense.
  • En la pestaña Crear Servidor marcamos todas las casillas:
    • Usar icono, permite evitar las sospechas, ya que un proceso sin icono asociado puede ser indicio de una aplicación de poca confianza
    • La compresión, permite camuflar el proceso, para dificultar su análisis por parte de los antivirus.
    • Las casillas Spreader, permiten que el proceso se difunda por dispositivos USB y programas p2p.
    • RootKIT permite que el proceso se esconda del sistema.
  • Finalmente, guardamos el servidor con el nombre que decidamos, como "keygen.exe" o algo por el estilo.

Una vez creado nuestro troyano, debemos hacerlo llegar al usuario de algún modo para que éste lo ejecute. Para no complicarnos vamos pasar el troyano a la máquina víctima mediante una carpeta compartida. Una vez que lo ejecutemos en la máquina víctima, deberíamos poder ver como se inicia la conexión en el lado del cliente. Para poder explotar el troyano, podemos hacer clic derecho sobre el servidor (en la parrilla donde aparecen los usuarios conectados), y elegir la opción que deseemos, por ejemplo, Keylogger gracias a la cual podemos ver lo que el usuario escribió.

Para terminar, comentaré que existen múltiples tutoriales en youtube sobre cómo configurar "Spy-Net".

Rootkits

Un rootkit es un tipo de malware que se coloca en un lugar privilegiado del sistema operativo, de forma que puede acceder con total impunidad al sistema mientras oculta su presencia al usuario, cambiando el comportamiento de ciertos componentes del sistema operativo.

Existen dos tipos principales de rootkits: los que se ejecutan en modo usuario y los que se ejecutan en modo kernel. Un rootkit ejecutándose en modo usuario intentará interceptar las llamadas a las funciones nativas del sistema para secuestrarlas y reemplazarlas con ejecuciones alternas. Por ejemplo, al ejecutar el comando dir el resultado será modificado para que no muestre cierto archivo. Este tipo de rootkits son más fácilmente detectables por las herramientas antimalware.

Un rootkit en modo kernel intenta cambiar directamente el comportamiento del sistema operativo o modificar las estructuras de datos del kernel de sistema. Puesto que el rootkit se ejecuta en un nivel de privilegio similar al de las herramientas antimalware, pueden defenderse activamente de ellas. La instalación de drivers sin firmar puede provocar la instalación de rootkits en modo kernel.

También hay dos tipos de rootkits dependiendo de su persistencia. En ocasiones el objetivo es mantener el acceso sobre un sistema atacado. En tal caso hablamos de rootkits persistentes, que se inician cuando arranca el sistema operativo. Por otro lado, un rootkit puede estar diseñado para desaparecer una vez que el sistema se reinicie, para evitar su detección en un próximo análisis forense.

Los rootkits tiene muchos usos legítimos, pero son especialmente populares entre el malware, ocultando estratégicamente ciertos procesos nocivos, que pueden apropiarse de recursos, robar contraseñas... sin el conocimiento del usuario.

Práctica 12. Los rootkits modifican partes del sistema operativo, de forma que pueden ocultarse y no ser detectados por el usuario o por otros programas. También pueden ocultar a otros procesos. Para esta práctica, vamos a usar un rootkit clásico, llamado hacker defender. Hacker Defender es antiguo, pero es un buen ejemplo de rootkit. Por ello, utilizaremos un sistema operativo antiguo y vulnerable (sin actualizar), ya que lo que se pretende es ver el comportamiento de un rootkit. Combinaremos el rootkit, con la ejecución de una puerta trasera rudimentaria con netcat. Antes de ejecutar el malware, debemos tomar una "instantánea"

Lo que voy a exponer aquí, es una pequeña parte del manual Rootkit for the masses. Debemos editar el archivo hxdef100.ini y añadir la configuración siguiente:

El archivo hxdef100.ini original, presenta un aspecto bastante diferente, ya que tiene incrustados símbolos como ":", "/" o "\", para "ponérselo" difícil a los softwares antimalware (de la época). Actualmente, cualquier antivirus podrá reconocer el archivo como una amenaza. De hecho, debo ponerlo aquí como una imagen, por todos los problemas que provoca el archivo.

El archivo está dividido en secciones. Las diferentes secciones así como su utilidad son las siguientes:

  • [Hidden Table] contiene los nombres de los archivos ocultos en el sistema de archivos.
  • [Hidden Processes] contiene los procesos en ejecución ocultos al sistema.
  • [Root Processes] contiene los procesos que podrán acceder al sistema, sin sufrir la acción del rootkit. Se trata de aquelos procesos que usaremos para administrar el rootkit.
  • [Hidden RegKeys] son las claves del sistema en las que el rootkit debe ocultar algo. En el ejemplo, ocultamos la clave HKLM\Software\Microsoft\Windows\CurrentVersion\Run ya que en este registro se colocará el software que arrancará en cada reinicio.
  • [Hidden RegValues] contiene las entradas de las claves citadas anteriormente que deben ser ocultadas. En concreto, crearemos la clave "VMware FTP" para hacer referencia a algún programa en la máquina víctima que queramos que se ejecute en cada inicio. Lo ideal es que dicho programa sea algún servidor FTP silencioso, para poder subir archivos al sistema atacado. Aunque nosotros por simplicidad, crearemos un archivo .bat que emita un saludo.
  • [Startup Run] hace referencia a programas (y sus argumentos) que deseamos que sean ejecutados por el rootkit. En nuestro caso, ejecutamos el programa msftp.exe, que solamente es como hemos renombrado el programa nc.exe (netcat) para evitar levantar sospechas.
  • [Hidden Ports] indica los puertos que deben ser ocultados al usuario. De modo que no aparecerán cuando se haya iniciado una conexión desde el atacante.
  • [Settings] es la configuración del rootkit, indicando cosas como la contraseña de la puerta trasera (si se utiliza el cliente bdcli100.exe para conectar al rootkit), el nombre del servicio...

Antes de ejecutar el rootkit, debemos hacer las siguientes cosas en la máquina víctima (en teoría haremos todas estas cosas sin que el usuario se de cuenta, mediante un exploit o algún otro medio):

1. Copiar el programa "nc.exe" (netcat) al directorio %Systemroot%\System32, y renombrarlo como msftp.exe. Gracias a la configuración expuesta anteriormente en hxdef100.ini, mstftp.exe se iniciará cada vez que el sistema arranque, escuchando en el puerto TCP 63333 y el puerto UDP 53, haciéndose pasar por el programa cmd.

2. Crear un archivo por lotes, llamado C:\saludo.bat, cuyo contenido será el siguiente:

echo off echo Hola, soy un servidor ftp silencioso. echo Me ejecuto sin que el usuario se de cuenta. pause

3. Crear la entrada VMware FTP de tipo REG_SZ dentro de la clave HKLM\Software\Microsoft\Windows\CurrentVersion\Rundel registro. El contenido de esta entrada será el siguiente: "C:\saludo.bat".

Una vez que ejecutemos "hacker defender" en la máquina víctima, la reiniciamos. Ahora, podremos acceder a la máquina víctima desde la máquina atacante a través de la rudimentaria puerta trasera, del siguiente modo:

nc.exe 192.168.1.203 63333

De este modo iniciamos una sesión remota con la máquian víctima.

A veces un rootkit puede ubicarse en la MBR de forma que no termina de ser eliminado por las herramientas antivirus, y puede recrear las partes borradas al siguiente reinicio. Existen diferentes maneras de combatir esto. Una de ellas, consiste en reescribir el "master boot code" mediante el comando bootrec fixmbr en la consola de recuperación de Windows.

3.3. Protección y desinfección

El libro de SAD de RA-MA, aporta en el apartado 4.3 un listado de recomendaciones para la protección contra el malware.

3.4. Clasificación de software antimalware

El libro de SAD de RA-MA, dedica el apartado 4.3.1. a los tipos de softwares antimalware.

Se puede incluir a esta clasificación, los antivirus corporativos, que funcionan en un modelo cliente servidor. En este tipo de antivirus, se instala un agente que se integra (más o menos) silenciosamente en el sistema, y permite controlar toda la incidencia de virus desde una consola centralizada.

3.5. Practicando

Vamos a probar algunos softwares antimalware que se emplean actualmente en la lucha contra el malware.

Malwarebytes

Vamos a emplear un malware académico para probar esta herramienta (cortesía de Skapunky, y descargado de elhacker.net). En cualquier caso, es efectiva en la detección de malware actual (incluso rootkits). Utilizaremos un sistema vulnerable y sin actualizar: un Windows Server 2008 recien instalado.

Práctica 13. Ejecutar el software kj33ks.exe en Windows Server 2008. A continuación ejecutar el software Malwarebytes hasta detectar el malware.

Vamos a probar con un el mismo malware académico pero en un sistema GNU/Linux. Instalaremos el antivirus ClamAV. Si instalamos ClamAV desde repositorios diferentes a los del fabricante (por ejemplo, los repositorios de Ubuntu), puede que esté obsoleto y perdamos parte de su potencia. Es preferible instalar el software que proporciona el fabricante.

Práctica 14. Vamos a instalar clamav en una máquina con Ubuntu. Nos aseguraremos de tener los malwares usados hasta ahora en el directorio /home/vulnerable/Descargas/ (es decir, "hacker defender", kj33ks y el troyano que construimos anteriormente). A continuación, realizaremos un análisis de la carpeta home del usuario "vulnerable" empleando ClamAV.

Para conocer las opciones de ClamAV, utilizar el comando man clamscan.

Práctica 15. Vamos a probar el análisis de malware Live! con el mismo malware académico (kj33ks), pero en esta ocasión, usaremos el antivirus Live de AVG: AVG Rescue CD.

Práctica 16. Tras ejecutar el malware en la práctica anterior, probaremos con tres softwares diferentes: Malwarebytes, hijackthis y TDSSKiller.

El resultado obtenido con "hijackthis" debe ser analizado. Por ejemplo, en la página www.hijackthis.de se puede comprobar el resultado y contrastar cada archivo identificado con los detectados por otros usuarios.

También podemos probar con la herramienta Combofix. Esta herramienta es capaz de detectar y eliminar "malwares" actuales. Podemos encontrar un manual en http://www.bleepingcomputer.com/download/anti-virus/combofix

Práctica 17. Para GNU/Linux vamos a usar rkhunter para la búsqueda de rootkits. Lo instalaremos, lo actualizaremos y lo ejecutaremos. Se trata de un script que lleva a cabo varias comprobaciones en el sistema y busca rootkits conocidos y malware. También realiza comprobaciones sobre la integridad de los comandos, comprobando si han sido modificados (cierto tipo de rootkits lo hacen), y finalmente comprueba las aplicaciones que escuchan en algún puerto. Por ejemplo, en un sistema basado en Debian:

sudo apt-get install rkhunter sudo rkhunter --check sudo rkhunter --update

La creencia de que GNU/Linux está exento de malware es completamente falsa. Basta con ver lo que ocurre con Android (un sistema GNU/Linux). Existen diferentes análisis sobre por qué en GNU/Linux existe menos cantidad de malware. Las dos que he podido encontrar que me han parecido más razonables son las siguientes

  • Los usuarios de GNU/Linux son una fracción de los usuarios de Windows. Por eso, un programador de malware encontrará más lucrativo crear malware para Windows que para GNU/Linux.
  • El modelo de permisos de GNU/Linux hace más segura la ejecución de software, ya que el software se ejecuta con los permisos del usuario. Esto deja de ser una garantía cuando para todo se utiliza "sudo". El componente UAC de Windows, presente a partir de Windows Vista, trata de garantizar la seguridad del mismo modo: lo que un usuario ejecuta, lo hace con los permisos del mismo.

Aparte de estos factores, no hay nada que haga que GNU/Linux sea invulnerable al malware. De hecho, los primeros "malwares" surgieron en UNIX, dado que era el sistema mayoritario en el momento.

Práctica 18. Existen diferentes antivirus para GNU/Linux, algunas gratuitas y otras de pago. Busca una solución comercial y pruébala.

En una red con muchos ordenadores, es complicado controlar por separado cada antivirus, sus actualizaciones y las detecciones producidas. Para estos casos, se debe utilizar una solución antivirus corporativa. Estas soluciones incluyen una consola de administración, que permite controlar el estado de cada cliente, indicando en tiempo real si los antivirus están actualizados, si ha habido alguna detección, etc.

Práctica 19. Busca tres soluciones antivirus corporativas. Intenta encontar vídeos donde se muestre su funcionamiento.

3.6. La mejor herramienta antimalware

El apartado 4.3.2. del libro de SAD de RA-MA, ofrece 5 enlaces a laboratorios independientes de soluciones antivirus.

3.7. Otras herramientas antimalware

Cuando se detecta una infección, deben probarse diferentes herramientas antimalware (actualizadas) ya que los falsos negativos de unas pueden ser detectadas por otras. En caso de no estar seguro sobre una detección, porque pensamos que es un falso positivo, podemos utilizar sitios como http://www.virustotal.com o http://virusscan.jotti.org/en.

Práctica 20. Pasa el malware "kj33ks.exe" de Skapunky a http://www.virustotal.com y comprueba los resultados.

Existen diferentes CD's de recuperación de fabricantes de antivirus, además que la que hemos visto en este tema:

Además de estas herramientas, existen muchas otras herramientas antimalware que pueden ser útiles. Algunas de ellas son:

Para la lucha contra los bootkits (rootkits que residen en la MBR), existen diferentes soluciones como las siguientes:

Además de todo esto, se pueden utilizar herramientas de análisis on-line, como las siguientes:

3.8. Sitios donde consultar

Además de los sitios de los fabricantes de software antivirus, existen algunos sitios de interés, como los siguientes: