Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Linterna_Blue en 2 Marzo 2014, 22:57 pm



Título: Còmo puedo cifrar archivos VBS
Publicado por: Linterna_Blue en 2 Marzo 2014, 22:57 pm
Hola, saludos a todos, me doy la bienvenida  ;D espero aportar al Foro.
Conversando por inbox con un grande, expuse  la duda de còmo cifrar un VBS, por lo tanto aqui va la consulta de modo que quede abierta para las opiniones.

¿Còmo cifrar un .VBS???

Gracias  :D


Título: Re: Còmo puedo cifrar archivos VBS
Publicado por: Mad Antrax en 2 Marzo 2014, 23:03 pm
Hola, Bienvenido al foro.

Hay varias formas de cifrar un VBS. Recientemente he creado un pequeño programa para cifrar cualquier VBS, lo deja "oculto" y completamente FUD a los antivirus:

(http://i.imgur.com/xtr8siU.png)

El programa es MUY sencillo, simplemente poner un TextBox y un botón. En el código del botón escribir:

Código
  1. Private Sub menuC_Click()
  2.    Randomize
  3.    Separator1 = Mid("!|@#$%&=-_", Int(Rnd * 10) + 1, 1)
  4.    Variables1 = Mid("ABCD", Int(Rnd * 4) + 1, 1)
  5.    Variables2 = Mid("WXYZ", Int(Rnd * 4) + 1, 1)
  6.  
  7.    R = Int(Rnd * 10)
  8.  
  9.    For i = 1 To Len(Text1.Text)
  10.        X = X & (Asc(Mid(Text1.Text, i, 1)) - R) & Separator1
  11.    Next i
  12.  
  13.    Open App.Path & "\crypted.vbs" For Output As #1
  14.        Print #1, Variables1 & " = " & Chr(34) & X & Chr(34)
  15.        Print #1, Variables1 & " = split(" & Variables1 & "," & Chr(34) & Separator1 & Chr(34) & ")"
  16.        Print #1, "for i = 0 to ubound(" & Variables1 & ") - 1"
  17.        Print #1, Variables2 & " = " & Variables2 & " & chr(" & Variables1 & "(i)+" & R & ")"
  18.        Print #1, "next"
  19.        Print #1, "executeglobal " & Variables2
  20.    Close #1
  21.    DoEvents
  22.    MsgBox "Encryption completed!" & vbCrLf & vbCrLf & "File saved here: " & App.Path & "\crypted.vbs" & vbCrLf & vbCrLf & "Cryptonumber used: " & R
  23. End Sub
  24.  

El programa puede generar hasta 90 archivos diferentes (si mis cálculos no fallan). En la foto, el código VBS cifrado quedaría así:

Código
  1. D = "32%73%90%108%109%94%25%114%104%110%107%25%79%59%76%25%108%104%110%107%92%94%25%97%94%107%94%25%90%103%93%25%105%107%94%108%108%25%109%97%94%25%91%110%109%109%104%103%39%39%39%6%3%6%3%70%108%96%59%104%113%25%27%62%108%109%104%25%94%108%25%110%103%90%25%105%107%110%94%91%90%25%105%90%107%90%25%94%101%97%90%92%100%94%107%39%103%94%109%27%"
  2. D = split(D,"%")
  3. for i = 0 to ubound(D) - 1
  4. Y = Y & chr(D(i)+7)
  5. next
  6. executeglobal Y

Aunque también podría quedar así:

Código
  1. B = "36|77|94|112|113|98|29|118|108|114|111|29|83|63|80|29|112|108|114|111|96|98|29|101|98|111|98|29|94|107|97|29|109|111|98|112|112|29|113|101|98|29|95|114|113|113|108|107|43|43|43|10|7|10|7|74|112|100|63|108|117|29|31|66|112|113|108|29|98|112|29|114|107|94|29|109|111|114|98|95|94|29|109|94|111|94|29|98|105|101|94|96|104|98|111|43|107|98|113|31|"
  2. B = split(B,"|")
  3. for i = 0 to ubound(B) - 1
  4. X = X & chr(B(i)+3)
  5. next
  6. executeglobal X

Si alguien le interesa mi programa para cifrar, subo el EXE + Source. Saludos!!

https://www.mediafire.com/?xi3iug9bcar5r9z


Título: Re: Còmo puedo cifrar archivos VBS
Publicado por: BlackZeroX en 2 Marzo 2014, 23:05 pm
puedes incrustar alguna funcion en vbs y que el resto del codigo este cifrado y almacenado en una string y solo pasar esta por un eval()...

http://www.w3schools.com/vbscript/func_eval.asp

Dulces Lunas!¡.


Título: Re: Còmo puedo cifrar archivos VBS
Publicado por: Linterna_Blue en 2 Marzo 2014, 23:13 pm
Ey!! muchas gracias por las respuestas... voy quedando mas claro.

Saludos!!!!  :laugh:


Título: Re: Còmo puedo cifrar archivos VBS
Publicado por: Mad Antrax en 2 Marzo 2014, 23:31 pm
https://www.mediafire.com/?xi3iug9bcar5r9z

Aquí tienes mi programa para descargar, está compilado para que lo puedas usar, pero si quieres puedes mirar el source que está incluido en el ZIP.

Con éste programa podrás cifrar un mismo fichero de distintas formas, cada copia será única, con nombres de variables aleatorios, stringencription randon, tamaño del fichero final aleatorio, etc...

Debería dejarte cualquier fichero VBS FUD ante cualquier AV.

Que lo disfrutes! :D


Título: Re: Còmo puedo cifrar archivos VBS
Publicado por: hdfhdfh55 en 7 Marzo 2023, 20:06 pm
Por favor, como puedo hacer para compilar el codigo? no puedo descargar el archivo por que mediafire ya lo borro.


Título: Re: Còmo puedo cifrar archivos VBS
Publicado por: MCKSys Argentina en 8 Marzo 2023, 00:43 am
Hola!

Por favor, como puedo hacer para compilar el codigo? no puedo descargar el archivo por que mediafire ya lo borro.

Tienes el codigo fuente en el primer mensaje. Con un compilador de .NET puedes crear un exe funcional.

Saludos!


Título: Re: Còmo puedo cifrar archivos VBS
Publicado por: elektrostudios2 en 25 Febrero 2024, 02:39 am
Por favor, como puedo hacer para compilar el codigo? no puedo descargar el archivo por que mediafire ya lo borro.

Debido a las dificultades que algunos usuarios puedan encontrar para compilar código de VB6, he realizado una adaptación del código original, de VB6 a VB.NET, respetando la mayoría de aspectos del autor. Simplemente lo he hecho compatible con VB.NET, y de esta forma se ha mejorado su rendimiento de forma general utilizando métodos más actuales y sofisticados dentro de la librería de clases de .NET.

Además, me he tomado la libertad de añadir una comprobación adicional para truncar automáticamente el string cifrado si este excede 50 caracteres de longitud, para que no exceda los límites visibles de la ventana de un editor de texto, dando como resultado algo similar a esto:

Código
  1. G = "64!94!105!105!29!74!112!100!63!108!117!37!31!69!98!"    &_
  2.    "105!105!108!29!84!108!111!105!97!31!41!29!115!95!70!"   &_
  3.    "107!99!108!111!106!94!113!102!108!107!41!29!31!81!102!" &_
  4.    "113!105!98!31!38!10!7!84!80!96!111!102!109!113!43!78!"  &_
  5.    "114!102!113!37!45!38!"
  6.  
  7. G = Split(G, "!")
  8. For i = 0 To UBound(G) - 1
  9. H = H & Chr(G(i) + 3)
  10. Next
  11. ExecuteGlobal H

Obtenido al cifrar el siguiente script vbs:
Código
  1. Call MsgBox("Hello World", vbInformation, "Title")
  2. WScript.Quit(0)



La adaptación del código original de VB6 a VB.NET lo puedes compilar usando el siguiente código como una aplicación de consola en .NET:

Código
  1. Imports System.IO
  2. Imports System.Text
  3.  
  4. Friend Module Program
  5.  
  6.    Friend Sub Main()
  7.        Dim vbsSourceCode As String = File.ReadAllText("C:\File.vbs", Encoding.Default)
  8.        Dim encryptedCode As String = Program.EncryptVbsCode(vbsSourceCode)
  9.        Dim outputFilePath As String = $"{My.Application.Info.DirectoryPath}\output.vbs"
  10.  
  11.        File.WriteAllText(outputFilePath, encryptedCode, Encoding.Default)
  12.        Console.WriteLine("Encryption completed!. Press any key to close this program.")
  13.        Console.ReadKey(intercept:=True)
  14.    End Sub
  15.  
  16.    Private ReadOnly RNG As New Random(Seed:=Environment.TickCount)
  17.    Friend Function EncryptVbsCode(vbsCode As String) As String
  18.        If String.IsNullOrWhiteSpace(vbsCode) Then
  19.            Throw New ArgumentNullException(paramName:=NameOf(vbsCode))
  20.        End If
  21.  
  22.        Dim R As Integer = RNG.Next(0,  10 - 1)
  23.  
  24.        Dim separators As Char() = "!|@#$%&=-_".ToCharArray()
  25.        Dim separator As Char = separators(Program.RNG.Next(0, separators.Length - 1))
  26.  
  27.        Dim varChars As List(Of Char) = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray().ToList()
  28.        Dim varChar1 As Char = varChars(Program.RNG.Next(0, varChars.Count - 1))
  29.        varChars.Remove(varChar1)
  30.        Dim varChar2 As Char = varChars(Program.RNG.Next(0, varChars.Count - 1))
  31.  
  32.        Dim intSequence As New StringBuilder(capacity:=vbsCode.Length * 3)
  33.        Dim currentLinelength As Integer
  34.        For Each c As Char In vbsCode
  35.            Dim nextValue As String = $"{Convert.ToInt32(c) - R}{separator}"
  36.            currentLinelength += nextValue.Length
  37.            If currentLinelength <= 50 Then
  38.                intSequence.Append(nextValue)
  39.            Else
  40.                intSequence.AppendLine($"{nextValue}"" &_")
  41.                intSequence.Append("    """)
  42.                currentLinelength = 0
  43.            End If
  44.        Next c
  45.  
  46.        Dim result As New StringBuilder(capacity:=intSequence.Length)
  47.        With result
  48.            .AppendLine($"{varChar1} = ""{intSequence}""")
  49.            .AppendLine($"{varChar1} = Split({varChar1}, ""{separator}"")")
  50.            .AppendLine($"For i = 0 To UBound({varChar1}) - 1")
  51.            .AppendLine($"{varChar2} = {varChar2} & Chr({varChar1}(i) + {R})")
  52.            .AppendLine("Next")
  53.            .AppendLine($"ExecuteGlobal {varChar2}")
  54.        End With
  55.  
  56.        Return result.ToString()
  57.    End Function
  58.  
  59. End Module

Para ello, necesitas usar Visual Studio.

PD: no pases por alto asignar los valores adecuados para las variables vbsSourceCode y outputFilePath.

Aténtamente,
Elektro.