59

Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Embed Size (px)

Citation preview

Page 1: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]
Page 2: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Virus arte de algunos. - Alberto García de Dios

Page 3: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

INDICE1. Métodos de control2. SEO es tu amigo3. Encriptación y mutaciones4. Bypassing the world5. Infección y entrada6. Código inteligente y auto actualizable7. Rootkit escóndete en el sistema8. Enlaza tu virus 9. Expande tu virus10.El virii debería ser arte

Page 4: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Métodos de control¿Cómo podemos controlar un bot si se lo hemos añadido a nuestro virus?.

Page 5: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Métodos de control• Control mediante aplicación propia

• Aplicaciones web para la programación de botnet

• Programación de aplicaciones web para control de botnet

• Control mediante IRCd

Page 6: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

1. Control mediante aplicación En contra:• Es necesario mas recursos para no ser detectado el autor • Es necesario acceso total a un servidor• Es mas estable y rápido• Es menos complejo o “enrevesado”• Es mas probable que por defecto el firewall no lo permita

A favor:• Tiene posibilidades de hacer funciones que con otros métodos es imposible• Puedes crear túneles y/o abusar de su conexión

Page 7: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

1. ¿cuándo se utiliza conexión a un master?Usos:• Estas en la misma red que la victima• La finalidad es control remoto troyano• Transferir gran cantidad de datos• Control de tipo webcam, pantalla remota• Infección especifica por recursos

Page 8: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

SEO es tu amigoUso malintencionado de SEO.

Page 9: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

SEO es tu amigo

• Aparecer en los primeros puestos en palabras clave es un forma de atraer masas hacia tu/tus código/s mal intencionado/s.

• La pornografía es un método muy utilizado ya que tiene una gran cantidad de visitas. Los usuarios cuando ven pornografía son mas incautos. Algunos la visitan desde maquinas virtuales

• Los “boom” del momento también atraen gran cantidad de usuarios.

Page 10: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

SEO es tu amigo

• Funcionamiento de la pornografía orientada al malware.

Páginade temática “Amateur”

Páginade temática “Amateur”, en el jardín

Páginade temática “Amateur”, en la ducha

Páginade temática “Amateur” mas fuerte

Páginas de promoción

con muestra de imágenes o

videos

Página mal intencionad

a

Llamadas entre si aleatoriamente

Llamada tras unas vueltasa la página mal intencionada.

Page 11: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

SEO es tu amigo

• Aprovechando el “boom” del momento.

• Hacer una encuesta sobre “crepúsculo” y estar en las primeras páginas encontradas por google llama en su gran mayoría a un público mas incauto.

• Puedes crear el “boom”… Típico 0day remoto para OpenSSH.

Page 12: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

SEO es tu amigo

• Puedes encontrar información sobre técnicas de SEO

• Hay técnicas de “moral relajada” que entre otros lugares puedes encontrar en “el lado del mal”.

• Google hacking o sitios poco seguros con una cantidad de visitas significantes pueden ser utilizados para hacer promoción de tu sitio malintencionado.

Page 13: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Encriptación y mutacionesMétodos criptográficos en virus, mutaciones etc…

Page 14: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Encriptación y mutaciones

1.Shellcode crypt/decrypt2.Como funciona un

packer3. Soy mutante

Page 15: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Como funciona un crypter

• Parte de la shellcode contiene datos que van a ser modificados en tiempo de ejecución.

• Tiene uno o mas bucles de descifrado para modificar los bytes codes.

• Escribiendo el código, crearíamos una cadena de bytes con los opcode de la shellcode en un “segundo” código que seria el decrypter.

• Cifrar también los “nop” ayuda en la evasión ids.

Page 16: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Como funciona un crypter

Shellcode Crypt

crypt_loop:                 mov al, byte ptr [esi+edi]                 add al, bl                 mov dl, byte ptr [esi+ecx]                 add dl, bl                 mov byte ptr [esi+edi], al                 mov byte ptr [esi+ecx], dl                 cmp ecx, 0                 je crypt_end_loop                 add ecx, 2                 inc edi                 jmp crypt_loop

Page 17: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Como funciona un packer

• Inserción de un archivo dentro de un método de extracción automática (Unión de dos archivos).

• Copia a una carpeta temporal o con privilegios y posterior desempaquetado y descifrado en caso de estarlo. • Copia en extractos de memoria y posterior ejecución. Habitualmente en la memoria “Heap” (dada su situación estática).

Page 18: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Como funciona un packer

• Bucle incompleto relleno con una cadena recogida de internet. Dificulta el reversing antes de la ejecución del malware.

• Sección o “Stub” con opción “read/write” siendo descifradas en tiempo de ejecución

• Fragmentación en varias secciones de memoria diferentes con saltos de una a otra para dificultar su análisis.

Page 19: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Soy Mutante

• Cambiamos fracciones de código servible o no servible.

Malware.exe

\x90\x90\x…

Malware.exeTras la primera ejecución

\x40\x48\x….

Parte del código no utilizable ejemplo “\x90\x90\x90\x90…”

Parte del código no utilizable

“\x40\x48\x40\x48…”

Page 20: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Soy Mutante

• El código cambia su cambia su clave criptográfica

Malware.exeClave cripto

0x5e

Malware.exeTras la primera ejecución

Parte del código no utilizable ejemplo “\

x11\x62\x23…”

Parte del código no utilizable

“\x94\x75\x56…”

Bucle descifrado

Código cifrado

Clave cripto 0x9aBucle

descifrado

Código cifrado

Bucle de cifrado

Bucle de cifrado

Page 21: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Soy Mutante

• El código cambia también el cifrado entre 3 o mas opciones, lo cual complica la firma.

Malware.exeClave cripto

0x5e

Malware.exeTras la primera ejecución

Parte del código no utilizable ejemplo “\

x11\x62\x23…”

Parte del código no utilizable

“\x94\x75\x56…”

Clave cripto 0x9eBucle

descifrado 1

Código cifrado

Bucle descifrado 2

Bucle descifrado 3

Bucle descifrado 1

Código cifrado

Bucle descifrado 2

Bucle descifrado 3

Bucle de cifrado 1Bucle de cifrado 2Bucle de cifrado 3

Bucle de cifrado 1Bucle de cifrado 2Bucle de cifrado 3

Page 22: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Soy Mutante

• Apertura del archivo : “OpenFileA/NtOpenFile”

• Podemos utilizar la propia firma o una cadena especifica para la búsqueda “ db ‘JennyLab’, 0 ”

• Si escribimos al final de un archivo PE, no ocurre nada lo cual nos permite incluso meter datos para la mutación.

• Podemos inyectar un hilo para mover archivos o hacer algún cambio, tras el cierre del proceso malware “CreateRemoteThread”

Page 23: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Bypassing the world¿Cómo salimos de la red?

Page 24: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

DNS Bypassing all firewalls

Envío de 29 bytes comprimidos de forma totalmente indetectable y pasando por cualquier firewall que no tenga el servidor DNS aislado.

Page 25: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

DNS Bypassing all firewalls

• Compresión de un número de 16 dígitos ( como una tarjeta de crédito por ejemplo).

5 8 7 9 9 9 8 9 3 3 1 5 8 9 0 2

16 bytes/ 4098 / 4098/ 4098=5 bytes + 1 byte

8 5 4 4 0 A

Si es un numero impar tenemos un “flag” para restar ‘1’ al resultado

finalsumado al número

anteriormente

Page 26: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Filtrado incorrectos

• Muchos sitios ( ya cada vez menos ) permiten la resolución DNS publica lo cual nos permite la creación de un túnel “tcp to dns”.

• Si tu dominio no esta en una blacklist no es muy habitual encontrar filtrados por whitelist.

• Los túneles http no suelen ser filtrados.

Page 27: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Túneles

De una manera bastante habitual se suele encontrar servidores que por actualizaciones o razones varias salen por el puerto 80 tcp. Esto puede ser útil para sacar datos de la red sin necesidad de utilizar proxy, lo cual puede ser útil en virus a medida.

Page 28: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Túneles

• Con raw socket podemos hacer en el servidor de sniffer de la capa IP, utilizando la capa ICMP para recibir datos del infectado.

• Haciendo hooking de la capa NDIS podemos hacer el sniffer de protocolos de capas inferiores como STP.

• Librerías como libpcap nos permitirían hacer el sniffer pero dependerías de librerías.

Page 29: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Túnel HTTP• Una conexión como la de reDuh através del servidor proxy de lugares “seguros” es posible.

Page 30: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Túnel HTTP• Podemos conseguir el proxy utilizado actualmente por el sistema en la clave de registro “HKEY_CURRENT_USER\

Software\Microsoft\Windows\CurrentVersion\InternetSetting\ProxyServer”.

• Podemos utilizar “ReDuh” en el servidor web con que haga el túnel de http a tcp

• ReDuh usa un archivo javascript con unas funciones básicas. “startReDuh”, “getData”, “killReDuh”, “createSocket”, “newData”, “debug”

• ReDuh también recoge los parámetros “targetHost”, “targetPort”, “servicePort”, “data”, etc..

Page 31: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Aplicaciones HTTP• También podemos programar aplicaciones simples en “php”, que permitan el control del virus, haciendo que conecte a cualquier servidor gratuito con “php”.

• Alguno virus han utilizado cosas como redes sociales, grupos etc...

• Hay aplicaciones web opensource para el control de botnet.

Page 32: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Infección y entradaInfección básica de un PE.

Page 33: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Estoy infectado

• Añadido de sección o al final del archivo añadimos el código, ya que si escribimos al final de un archivo PE no ocurrirá nada. • Las llamadas a las API’s la haremos utilizando la “IAT” o sacaremos las API’s usando PEB aunque no es lo mas correcto dado que ya tenemos recuperadas las API’s en la “Import Table”.

Page 34: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Estoy infectado

• Cambio del “Entry Point” consiguiendo que se ejecute nuestro código.

• Nuestro código malicioso salta al antiguo “Entry Point” asegurándose la correcta ejecución del binario ya que no ha sufrido ninguna modificación.

Page 35: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Estoy infectado• La infección básica mas conocida consiste en el añadido de una sección de código y un cambio en el “Entry Point”, y un salto hacia el punto de entrada anterior, ejecutándose primero el virus.

Code

Entry PointPE HEADER

Code

PE HEADER

Entry PointEvil code

Antiguo Entry Point

Jump to original entry point

Ejecutable normal

Ejecutable infectado

Page 36: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Estoy infectado• Entry Point obscuring (EPO). No se modifica la dirección de entrada ya que es sospechoso, si no que se cambian los primeros bytes con un jmp hacia el código o durante la ejecución

Code

Entry PointPE HEADER

Code

PE HEADEREntry Point

Evil code

ret_malwareJump toevil code

Ejecutable normal

Ejecutable infectado

Jmp ret_malware

Page 37: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

¿Cómo entro en el sistema? •El método mas habitual de entrada es exploit en el explorador web, plugin del mismo o archivos mal intencionados.

• El exploit ejecuta código binario o interpretado por el explotador.

Page 38: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

¿Cómo entro en el sistema? •Descarga un archivo mínimo que hace posteriores descargas previamente deshabilitando el sistema de seguridad instalado en el PC cliente. En su defecto desempaqueta un archivo binario que es el virus.

• Empieza la infección y el intento de trasmisión a otros equipos.

Page 39: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Código inteligente y actualizableTu virus puede ser inteligente y actualizable.

Page 40: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Auto actualización

• Podemos descargar el nuevo archivo por http ya sea usando las API’s o alguna inyección al explorador o exploradores utilizados. Se debe tener en cuenta que la mayoría de los usuarios no domésticos necesitan conectar mediante proxy.

• Funcionar mediante módulos (dll’s), es una buena opción para “instalar” remotamente partes del virus, puede perder infectados que no le permitan salir por http.

Page 41: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Código inteligente y actualizable• Tu virus puede descargar una nueva versión y ser remplazado o borrado previamente a la copia.

• Tu virus puede ser inteligente si esta dotado de matriz

Page 42: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Auto actualización• Si esta dividido en módulos, actualizar cualquier módulo es tan fácil como no cargarlo o inyectarlo en otro proceso hasta el remplazo.

• En caso de ser el ejecutable o no estar dividido en módulos, podemos inyectar código y cerrar el proceso padre antes de que sea sobrescrito o borrado.

• Si esta divido en módulos, se puede hacer un módulo de actualización.

Page 43: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Soy inteligente• Creando “arrays” con antivirus, antispyware, firewall de host, nids y otros sistemas de seguridad host, podemos detectarlos he intentar matarlos o interrumpir su detección.

• Podemos detectar programas que pongan en peligro el virus por que sean de análisis, ingeniería inversa etc… Debería tener un sistema de auto borrado y desinfección para intentar evadir esto.

Page 44: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Rootkit escóndete en el sistemaCosas interesantes para esconderse.

Page 45: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Escondiéndose en el sistema• La intercepción de API’s de conexión a internet, como (connect, WSAConnect), (URLDownloadToFile*, URLDownloadToCacheFile* ) etc… es útil para filtrar

• La API “WSAIoctl” y el argumento “SIO_RCVALL”, pueden ser utilizadas para hacer un “sniffer” del tráfico lo que pone en peligro la detección del tráfico del virus.

Page 46: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Escondiéndose en el sistema • Las API’s “GetTcpStatsFromStackEx”, “GetUdpStatsFromStackEx”, “GetIpStatsFromStackEx”, y varias API’s mas, de (iphlpapi) pueden ser interceptadas con la finalidad de esconderse de aplicaciones como “netstat” y otras aplicaciones básicas para la estadística o monitorización del estado de la pila IP, TCP y otros protocolos utilizados en el sistema.

Page 47: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Escondiéndose en el sistema

• La API “WSAIoctl” y el argumento “SIO_RCVALL”, pueden ser utilizadas para hacer un “sniffer” del tráfico lo que pone en peligro la detección del tráfico del virus.

• Las API’s (gethostbyname, GetAddressByName), hacen resoluciones dns, podemos filtrar IP’s de lugares de actualización, antivirus online y otros contenidos peligrosos para el virus.

Page 48: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Enlaza tu virusJs, sys

Page 49: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

¿Cómo entro en el sistema? • Descarga un archivo pequeño que hace posteriores descargas previamente deshabilitando el sistema de seguridad instalado en el PC cliente. En su defecto desempaqueta un archivo binario que es el virus.

• Empieza la infección y el intento de trasmisión a otros equipos.

Page 50: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Enlaza tu virus• Puede utilizar exploit para exploradores web que permitan la ejecución de javascript, haciendo descarga y ejecución de nuestro virus.

• La explotación de un overflow también puede ser utilizada para la descarga y ejecución de nuestro virus.

• Otra opción es utilizar archivos mal intencionados como puede ser pdf y su oleada de exploits o otros formatos vulnerables.

Page 51: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Tu archivo .sys • La carga de un driver mal intencionado se puede utilizar para hacer hook a la SSTD, permitiéndole interceptar llamadas del modo kernel.

• Haciendo hook a API’s, Zw*, Nt*, Rtl* etc…, podemos interceptar llamadas de otras aplicaciones aunque la aplicación corra en “ring3” modo user

Page 52: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Tu archivo .sys • Haciendo hook a la capa NDIS podemos evadir los sniffers.

• Haciendo hook a API’s de procesos cómo (ZwOpenProcess, NtOpenProcess). Podrá esconder su presencia como proceso.

• Conexión TCP o UDP en modo kernel utilizando la capa TDI.

Page 53: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Tu archivo .js• Javascript nos permite modificar cadenas, lo cual nos permite decodificar en tiempo de ejecución.

• La función “unescape()” de javascript nos permite decodificar cadenas esto dificulta levemente el análisis.

• La función “Chr()” de javascript nos permite meter bytes en lugar de la cadena dificulta levemente el análisis.

Page 54: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Expande tu virusMétodos de expansión

Page 55: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Expande tu virus• Infección de archivos en discos montados con recursos compartidos, para ejecución desde otros equipos que accedan a el y ejecuten los archivos.

• Búsqueda de recursos compartidos tipo “IPC$”.

• Mensajería instantánea

• Exploits

Page 56: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Mensagería instantánea

• Hook al teclado

• Envío de las pulsaciones a la ventana

• Robo de contactos

Page 57: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

Recursos compartidos

• Infección de archivos PE

• Remplazo de archivo PDF malintencionados

• Exploit de archivos .lnk

Page 58: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

El virii debería ser un arte

Page 59: Alberto García de Dios - Virus, el arte no debería ser negocio [Rooted CON 2011]

El virii debería ser un arte• Donut by Benny: Infección de archivo MSIL.

• GriYo: Entry Point obscuring

• Z0MBIE: Infección de imágenes ISO.

• La mayoría del malware “comercial” no aporta mucho y en casó de hacerlo quien lo saca a la luz son las personas que lo analizan.

• No publicar virus para que no lo usen comercialmente