Troyano multiconexión

Iniciado por skyweb07, 8 Septiembre 2008, 02:59 AM

0 Miembros y 1 Visitante están viendo este tema.

skyweb07

Haber si me explico amigos tengo un troyano de conexión inversa pero el problema es que este solo se conecta a un solo server a la ves...Pues yo quiero que cada ves que que alguien se conecte a mi cliente este mismo lo acepte y lo almacene en una list view como el bifrost...Quisiera que me explicaran como se hace esto y que codes debo utilizar!

aaronduran2

#1
Busca un poco por el foro. Si utilizas el Winsock, pon la propiedad Index = 0.
Sería algo así:
Código (vb) [Seleccionar]

Dim NumeroConexiones As Integer

Private Sub Form_Load()
    WS(0).LocalPort = 6666
    WS(0).Listen
    NumeroConexiones = 0
End Sub

Private Sub WS_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    On Error Resume Next
    NumeroConexiones = NumeroConexiones + 1
    WS(Index).Close
    WS(Index).Accept requestID
    Load WS(NumeroConexiones)
    WS(NumeroConexiones).Listen
End Sub

Private Sub WS_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim Datos As String
    WS(Index).GetData Datos
End Sub


WS sería el nombre del control Winsock.

En la variable NumeroConexiones se almacena la cantidad de conexiones que tenemos establecidas. Luego tienes que realizar las operaciones que tu quieras sobre el WS(NumeroConexiones).

Y como ya te dije, busca por el foro que hay ejemplos.

Saludos.

The_Shakah

#2
El tema es que un winsock no puede estar conectado con mas de 1 winsock a la vez. Asique si usas winsocks tenés que hacer un function que cree un nuevo winsock cada vez que alguien se conecte. Para esto podes hacer lo siguiente:

Crear 2 winsocks, un Winsock1 que va a recibir las conexiones y las va a asignar a otro winsock, y el Winsock2 como un Array de controles.

El cuando un cliente trata de conectarse, el winsock1 la recibe, si en el array de controles del winscok2 hay alguno libre, se lo asigne, en caso contrario, crea uno nuevo en el array. Para hacer esto te dejo el siguiente código que es el que uso yo y lo encontre en un manual por la web:


Public Function NuevoSocket() As Integer

Dim numElementos As Integer 'numero de sockets
Dim i As Integer 'contador

'obtiene la cantidad de Winsocks que tenemos
numElementos = frmMain.Winsock2.UBound

'recorre el arreglo de sockets
For i = 0 To numElementos
'si algun socket ya creado esta inactivo
If frmMain.Winsock2(i).State = sckClosed Then
'utiliza este mismo para la nueva conexion
NuevoSocket = i 'retorna el indice
Exit Function 'abandona la funcion
End If
Next

'si no encuentra sockets inactivos
'crea uno nuevo y devuelve su identidad
Load frmMain.Winsock2(numElementos + 1) 'carga un nuevo socket al arreglo

'devuelve el nuevo indice
NuevoSocket = frmMain.Winsock2.UBound

End Function



Y en el Winsock1, en el sub de ConnectionRequest deberias poner lo siguiente:

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Dim numSocket As Integer 'el numero del socket

'Hacemos una llamada a la function NuevoSocket
numSocket = NuevoSocket

'aceptamos la conexion con el nuevo socket
Winsock2(numSocket).Accept requestID
End Sub



El codigo que dejo aaronduran2 hace algo muy parecido, pero no se fija si alguno de los winsocks antes creados esta ahora libre, por lo que sigue acumulando winsocks.

De todos modos el codigo que yo deje tampoco es el perfecto, lo ideal seria que cada vez que una víctima se conecta se cree un nuevo winsock, y cuando se desconecta se borre.

Salu2

seba123neo

sino bajate la clase cSocketMaster que ya viene con un ejemplo de multiconexion y listo...y aparte te ahorras el ocx de winsock...

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

skyweb07

Gracias amigos por su ayuda voy aver que puedo hacer y despues les cuento!