Hace 3 años | Por Ukchay a welivesecurity.com
Publicado hace 3 años por Ukchay a welivesecurity.com

Analizamos el código fuente de un ransomware escrito en Python bajo el nombre de detección: Python/Filecoder.AX. Esta variante, que ya no está activa, sí lo estuvo durante los años 2017 y 2018 y fue distribuida empaquetada en un ejecutable .exe mediante PyInstaller.[...] Una vez obtenido el código fuente nos encontraremos con muchas funciones y variables que deberemos ir leyendo detenidamente para poder comprender las actividades maliciosas realizadas.

Comentarios

kampanita

#2 me has quitado el comentario, iba a decir que más simple que el mecanismo de un orinal

adrigm

#2 Todo el código es simple para todo aquel que sepa leerlo.

adrigm

#11 Si ni lo comprendes leyendo es que no sabes bien como funciona alguna de las partes o como leerlo correctamente.

Si sabes lo que es una función, un hilo y como salta el código de una parte a otra puedes seguir la lógica de cualquier código.

En este caso por ejemplo la función run_crypt será la que tenga toda la chicha de encriptación y será tan fácil o difícil de leer según cuanto conozcas de código y en este caso de matemáticas y números primos muy grandes que es lo que intuyo que hay en esa función run_crypt

analphabet

#12 En realidad la función esa es mucho más sencilla no hace falta saber nada de matemática ni siquiera practicamente nada de cifrado para entenderla.

anv

#11 Cierto. Pero un código simple muchas veces es indicación de un buen programador.

hijomotoss

#22 Un buen programador siempre mete comentarios. El código puede ser muy simple pero hay veces que no concuerda con su intención. A mi en la carrera siempre me dijeron comenta tú código como si fuera para otro. Un día llegaras revisarás tu código y no tendrás ni p*** idea de porque no lo comentaste.

anv

#30 Un buen programador siempre mete comentarios.

Real programmers dont' use comments. The code is self-explaining.

Katsumi

#8 Claro, por eso hay competiciones de código ofuscado. Porque no hay diferencia con el que no lo es.

j

#2 La parte complicada del código está escrita en las librerías externas que usa.

D

#27 Cierto, pero un aes256 en cbc es relativamente sencillo de entender e implementar... Tienes una librería open source en c rulando por github.

K

#2 No sé que tal anda de programar (no le he echado un ojo al código) pero de criptografía anda muy verde. Deja todos los datos para descodificar en el equipo. No es por dar ideas, pero lo suyo sería teniendo el id del equipo enviarlo y usarlo como parte de una semilla para un cifrado asimétrico y usar la clave pública para cifrar todo.

l

Gracias por el tutorial.

ioxoi

#6 es típico que el troyano en si es descargado y ejecutado por el exploit o vector de infección, de esta forma se puede ir cambiando el vector de ataque y no tocar el troyano.
Pero la verdad es que estaría bien un poco más de contexto y saber cómo se distribuía, ya que al ser un Python compilado, pequeño no debía ser.
Por otra parte no incluye ninguna técnica evasiva, no creo que tardasen mucho en ficharlo los antivírus.

c

#6 Estoy contigo, lo interesante es saber como se distribuyo el malware, como funciona randsome es conocido por todos y hay muchas variantes que basicamente hacen lo mismo en esencia.

h3ndrix

#6 En efecto, como dices, la gracia de todo gusano es su método de propagación. Recuerdo allá por el año 2009 en que junto con otras personas nos hacíamos los juankers (no confundir con juankars) programando gusanos que al propagarse infectaban los PC's con algún ejecutable. Eran tiempos de Windows XP y de Messengers y Emules, es decir, caldo de cultivo. Recuerdo que uno lo llegó a usar y le metió un servidor de Bifrost, a las pocas semanas tuvo que dejarlo de usar porque el cliente de Bifrost no soportaba tantas conexiones simultáneas y daba error y se cerraba (también manda cojones).

Los tiempos han cambiado y creo que ahora no es tan sencillo programar vectores de infección (hace ya mucho que dejé todo este tinglado), con lo que coincido contigo, lo chulo sería haber explicado ése módulo y no el de cifrar archivos, que es trivial.

D

Muy interesante.
En Telefónica entró uno de esos gusanos y cifró un montón de equipos.

D

Muy buen artículo, interesante

xyria

#34 Lo es. Tiene una versión home que admite hasta cinco instantáneas con todas las características de la versión profesional. La de pago --la pro, la server es mucho más cara -- vale unos 84€, Pruébala, no te arrepentirás.

editado:
la versión home es gratuita y no te agobian, nunca, con publicidad.

D

¿Entonces, si me pasan todo el código fuente de por ejemplo todo el kernel de linux, si lo entiendo puedo decir que es sencillo?

No voy a discutir más contigo. Cree y entiende lo que quieras.

Tiberina

Muy bien detallado. Cómo algo tan fácil puede llegar a joder mucho, por ello la importancia de la seguridad.

squanchy

Me resulta curioso que no haya ninguna condición para iniciar la infección. Porque si empieza a cifrar a las 12 de la noche (p.e. en un servidor), cuando llegues por la mañana a la oficina te encuetras todo cifrado. Pero si empieza a cifrar mientras estás trabajando, debería ser relativamente sencillo que te des cuenta que un fichero te ha desaparecido, o que tal programa ha dejado de funcionar, y entonces percatarte de la infección en marcha si eres un usuario experimentado.

Y veo un fallo en que no codifique los archivos sin extensión. Muchos programas es justamente donde almacenan los datos.

G

Ya ni los hackers son como los de antes.. un ransomware escrito... ¡En Python! wall

llorencs

#23 Python vale para todo Por eso es grande. Puedes hacer cualquier cosa con velocidad pasmosa.

Que querías que fuera ensamblador?

G

#26 Los hombres programan en C.

Na en serio, pero ¿Un lenguaje interpretado? Que triste.

n

#32 Dijo él, antes de apretar el botón que ejecutaría una función en JavaScript, dentro de su navegador escrito en C++, el cual mandaria su comentario a una aplicación escrita en PHP.

a

Moraleja: Guarda tus datos personales en la carpeta de Windows

D

#16 Pero solo después de borrar system32, que no vale para nada.

D

Es demasiado fácil fastidiar un equipo con algo así. Los sistemas operativos tendrían que tener algún mecanismo para defenderse de eso.

l

#24 Yo creo que los programas deberia tener mas restricciones. La mayoria solo necesita muy poco acceso al disco duro. Archivos temporales, sus ficheros de configuracion y demás y guardar algun archivo. Si no lo necesita no deberia tener acceso a todo el disco o incluso a todo lo que puede acceder el usuario.
El linux aunque los programas pueden acceder a /tmp pero solo pueden manipular sus propios fichero y no los de otros programas.
El programa podria acceder sus configuraciones para leerlas y modificarlas.
Si quiere guardar un fichero se lo indica a una iibreria, como la que muestra la ventana de elegir la ubicacion o su version de consola, etc. Asi solo habria que asegurar esa libreria que vale para todos los programas y les deja una operacion limitada en el HD.
Los programas tambien podiran llamar un backup, de forma que los archivos puedan quedar fuera de su alcance aunque esten en su propia particion. No podria borrarlos, ni sobreescribirlos.
Todo eso limitaria los daños que podria provocar un programa loco y tendria que encontrar alguna vulneravilidad.

No se si hay algun sistema que lo hace, lo mas parecido el sistema de permisos de android que luego no vale para nada porque los programas te piden permiso para todo.

xyria

#24 RollBack RX: crea instantáneas del sistema de archivos automatizadas y/o a petición. Se arranca antes que el sistema operativo y puedes restaurar el sistema a cualquiera de las imágenes -- instantáneas -- tomadas. No sé si será factible tras un ataque vírico, pero me ha salvado el pellejo en varias ocasiones, sobre todo, probando software.

D

#33 No lo conocía, me parece un software genial. Creo que sí serviría para virus de ese tipo.

m

#33 Muchas gracias por la recomendacion, lo probare, aunque si dices que a ti te funciona muy bien no veo porque a mi no.

p

#24 Recuerdo cuando, con una simple línea de código en el autoexec.bat, se la podías liar parda a alguien.

d

Muy útil, por si alguna vez pasa sabremos que hay que intentar localizar el programa ransomware y por ingeniería inversa sacar la función que encripta y luego ponerte a desencriptar todo. O eso, o esperar a que lo haga otro

adrigm

Lo mismo te digo chavalín.