El documento describe varios métodos para crear y propagar virus de computadora, incluyendo encriptación, mutaciones, evasión de detección, actualizaciones automáticas y escondites en el sistema ("rootkits"). También discute técnicas de ingeniería inversa y explotación de vulnerabilidades para infectar sistemas.
3. 1. Métodos de control
2. SEO es tu amigo
3. Encriptación y mutaciones
4. Bypassingtheworld
5. Infección y entrada
6. Código inteligente y auto actualizable
7. Rootkit escóndete en el sistema
8. Enlaza tu virus
9. Expande tu virus
10. El virii debería ser arte
5. • 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
6. 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
7. 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
9. • 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.
10. • Funcionamiento de la pornografía orientada al
malware.
Página
de temática
“Amateur”
Página
de temática
“Amateur”, e
n el jardín
Página
de temática
“Amateur”,
en la ducha
Página
de temática
“Amateur”
mas fuerte
Páginas de
promoción
con muestra
de imágenes
o videos
Página mal
intencionada
Llamadas entre si
aleatoriamente
Llamada tras unas vueltas
a la página mal intencionada.
11. • 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.
12. • 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.
15. • 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.
17. • 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).
18. • 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.
19. • Cambiamos fracciones de código servible o no
servible.
Malware.exe
x90x90x…
Malware.exe
Tras la primera
ejecución
x40x48x….
Parte del código no
utilizable ejemplo
“x90x90x90x90…”
Parte del código no
utilizable
“x40x48x40x48…”
20. • El código cambia su cambia su clave
criptográfica
Malware.exe
Clave cripto 0x5e
Malware.exe
Tras la primera
ejecución
Parte del código no
utilizable ejemplo
“x11x62x23…”
Parte del código no
utilizable
“x94x75x56…”
Bucle
descifrado
Código cifrado
Clave cripto 0x9a
Bucle
descifrado
Código cifrado
Bucle de cifrado Bucle de cifrado
21. • El código cambia también el cifrado entre 3 o
mas opciones, lo cual complica la firma.
Malware.exe
Clave cripto 0x5e
Malware.exe
Tras la primera
ejecución
Parte del código no
utilizable ejemplo
“x11x62x23…”
Parte del código no
utilizable
“x94x75x56…”
Clave cripto 0x9e
Bucle 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 1
Bucle de cifrado 2
Bucle de cifrado 3
Bucle de cifrado 1
Bucle de cifrado 2
Bucle de cifrado 3
22. • 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”
24. Envío de 29 bytes comprimidos de forma totalmente
indetectable y pasando por cualquier firewall que no tenga el
servidor DNS aislado.
25. • 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 final
sumado al número
anteriormente
26. • Muchos sitios ( ya cada vez menos ) permiten la
resolución DNS publica lo cual nos permite la
creación de un túnel “tcptodns”.
• Si tu dominio no esta en una blacklist no es muy
habitual encontrar filtrados por whitelist.
• Los túneles http no suelen ser filtrados.
27. 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.
28. • Con rawsocket 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.
29. • Una conexión como la de reDuh através del
servidor proxy de lugares “seguros” es posible.
30. •Podemos conseguir el proxy utilizado actualmente
por el sistema en la clave de registro
“HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternetSettingP
roxyServer”.
• 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
31. •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 webopensource para el control
de botnet.
33. • 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 “ImportTable”.
34. • Cambio del “EntryPoint” consiguiendo que se
ejecute nuestro código.
• Nuestro código malicioso salta al antiguo
“EntryPoint” asegurándose la correcta ejecución
del binario ya que no ha sufrido ninguna
modificación.
35. • La infección básica mas conocida consiste en el
añadido de una sección de código y un cambio en
el “EntryPoint”, y un salto hacia el punto de
entrada anterior, ejecutándose primero el virus.
Code
EntryPoint
PE HEADER
Code
PE HEADER
EntryPoint
Evil code
Antiguo EntryPoint
Jumpto
original
entrypoint
Ejecutable normal Ejecutable infectado
36. •EntryPointobscuring (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
EntryPoint
PE HEADER
Code
PE HEADER
EntryPoint
Evil code
ret_malware
Jumpto
evilcode
Ejecutable normal Ejecutable infectado
Jmpret_malware
37. •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.
38. •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.
39. Código inteligente y actualizable
Tu virus puede ser inteligente y
actualizable.
40. • 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.
41. • 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
42. • 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.
43. • 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.
45. • 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.
46. • 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.
47. • 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.
49. • 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.
50. • 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.
51. • 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
52. • 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.
53. •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.
55. • 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
56. •Hook al teclado
• Envío de las pulsaciones a la ventana
• Robo de contactos
57. • Infección de archivos PE
• Remplazo de archivo PDF malintencionados
•Exploit de archivos .lnk
59. •Donut by Benny: Infección de archivo MSIL.
•GriYo: EntryPointobscuring
• 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