Evitar detección de anti virus.

Iniciado por APOKLIPTICO, 16 Noviembre 2012, 18:59 PM

0 Miembros y 2 Visitantes están viendo este tema.

0xDani

@ferleg, antes de despreciar las rutinas de encriptacion de APOKLIPTICO te recomiendo dos cosas:

1) Pasarte por el area de Criptografia, en Seguridad.
2) Demostrarnos tu lo que eres capaz de hacer.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

ferleg

Para 0xDani:

De los códigos que yo haya hecho no te voy a decir nombres concretos. Tú puedes pensar lo que quieras. Pero en general tan sólo te digo que he hecho motores polimórficos, EPO, anti-debugging, ..., y todo precisamente en el área de la programación de virus-antivirus.

No creo que sea yo precisamente quien me tenga que pasar por ninguna área de criptografía, cuando me están intentando colar una rutina xor con una "seed" (vaya novedad) y un PRNG (Pseudo Random Number Generator) (vaya otra gran novedad), como compleja rutina de cifrado.

Os di un link de un artículo (lo siento no estaba en español, era en inglés), sobre cifrado de virus, y además cifrado de la buena y compleja, empleada en algunos de los virus más complejos en cuanto a cifrado se refiere: W32.Magistr, W95.Perenast, W32.Efish, etcs : polimórficos todos, alguno incluso metamórfico.

http://www.thehackademy.net/madchat/vxdevl/papers/avers/x-raying.pdf

Si me queréis decir que vuestro nivel en criptografía y vuestras rutinas de cifrado superan el de ese artículo, os felicito y me como mis palabras.


Para APOKLIPTICO:

De lo último que un AV va a mirar son los strings que estés utilizando. Y lo primero que va a mirar es tu código binario. Y es en ese código binario donde primero compara patrones (cadenas de malware conocidas), y después (si lo considera) aplica emulación.

Te quiero decir con esto que cifrar tus strings es muy poca medida contra un AV.
Por mucho que cifres tus strings (por ejemplo las APIs de las DLLs que utilices), en la emulación serán descifrados (tu propio virus las descifra para utilizarlas, por mucho que estén en la pila o en Hong-Kong ¿lo pillas?, y todo en tiempo de emulación AV sin que se ejecute realmente tu virus), y si tu código binario es sospechoso: (abrir ficheros, que sean ejecutables, manipular la memoria, ...), el AV saltará.

Si intentas cifrar/cifrar algo, que sea todo tu código en todo caso, no tanto sólo unos strings que haya en él.

Por cierto, sigues hablando de tu "virus", estoy confundido, por eso te pregunté: ¿un virus en C? ¿o sea que tu programa infecta otros programas?

También podrías empezar por definir qué hace tu virus: si infecta qué infecta, cómo se propaga, si es residente o de acción directa, ... Porque si resulta que no hace ni la mitad de lo anterior, pues normal que tan sólo cifrando unos strings no sea detectado como programa sospechoso.

Karcrack

Esto se está saliendo del tema. Primer aviso.

La complejidad del cifrado no es tan importante. A los AVs les es más fácil detectar una rutina que haga un bucle de lectura/escritura que probar a crackear la contraseña que tengas en tu XOR.
Por otro lado los AVs buscan patrones a la hora de realizar llamadas. Ciertas APIs tienen parámetros muy particulares y es fácil "taggear" una combinación de pushes particular.

ferleg, APOKLIPTICO utiliza el término "virus" para referise a malware en general. Entiendo que sin replicación. Procura exponer tu opinión sin ofender y respetando al resto de participantes, sin importar tus conocimientos.

ferleg

No hace falta que me des más avisos. Me voy del foro, ya veo lo que hay aquí.

Si se me permite hacer dos últimos comentarios:

1.
Me dice burbu_1 que Panda de españoles lo justo.
Bueno, si tus opiniones sobre el tema virus-antivirus están tan fundadas como tu comentario... mejor no digo más.
Tan sólo esto: échale un vistazo, te vendrá bien actualizar tus conocimientos:
http://es.wikipedia.org/wiki/Panda_Security

2.
Karcrack: ¿utilizar la palabra virus para un código que no se replica? ¿virus para referirse a malware genérico? Pensé que aquí se hablaba con propiedad y conocimientos, dado que esto se supone es un sitio que se hace llamar "elhacker". Y segundo: ¿la complejidad del cifrado no es tan importante? Vale, vale... lo que tú digas. Aquí lo dejo.

ferleg

Lo último: perdonad si he sido hiriente o similar. No era esa mi intención.

Mi respeto sincero para todos. Un saludo.

Karcrack

Sigamos la conversación por privado si lo deseas, aunque veo que tus cualidades aquí se desaprovecharían. No podemos medirnos con tu capacidad y precisión lingüística. Comprenderé si deseas irte.

Cualquier otro mensaje fuera de tema será eliminado.

APOKLIPTICO

Aaanyways.
Cifrar los strings es más que nada una pequeña barrera a un antivirus que pueda llegar a buscar cadenas específicas en la sección data del ejecutable. También para un análisis manual ayuda. Aparte cifré también las APIs que utilizo que se cargan de forma dinámica, ya que he probado que linkeándolas estáticamente salta el anti-virus. Se que lo mejor sería un código que se automodifique, pero no tengo interés en hacerlo ya que no es necesario, siendo que mi Virus (es un worm con propagación por pipes y SMB, sin infección de ejecutables), no es detectado por la mayoría de los anti-virus (es detectado como sospechoso por el cloud de Symantec y la emulación de código del Kaspersky lo detecta como "sospechoso" y pregunta qué hacer).

En cuanto al cifrado, lo repito, todos los cifrados simétricos actuales se basan en un generador pseudoaleatorio o PRNG, que debe de ser uno apropiado para la criptografía, es decir que cumpla ciertas reglas. Algunos también tienen otros pasos, pero la base es esa, un PRNG que genera un flujo de datos para los cifrados de stream y los de bloque, utilizan en general una red de Feistel o variaciones de la misma. Pero siendo que el objetivo del cifrado es obfuscar los strings para evitar un posible análisis estático, cumple su función.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

~

Por lo general, antes de cifrar se aplica algún tipo de compresión, para evitar evidenciar redundancias (y obtener mejor cifrado) y después se cifra.

Una opción simple de compresión podría ser LZW con un número no común de bits por bloque comprimido, o con alguna otra característica no estándar.

Otra opción menos simple pero más estándar y probablemente más detectable sin un buen cifrado, sería el algoritmo DEFLATE (el que se usa en los ZIP clásicos).

Y agregar código paso a paso para determinar qué es lo que activa la detección.
Sitio web (si la siguiente imagen no aparece es porque está offline):

APOKLIPTICO

Para qué habría de comprimir los strings?? No hace falta, es más que suficiente con el cifrado que apliqué. La realidad es que tampoco me interesa que los niveles de entropía sean tan altos. Prefiero que estén bajos así no se asume que hay compresión o cifrado.
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

APOKLIPTICO

Buenas noticias: Logré que mi malware sea indetectable completamente excepto por el symantec, que ya lo voy a atacar, pero tengo que conseguirme una copia aunque sea de prueba.

Saludos y gracias!!
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.