os dejo una tool que hice hace poco para detectar el tipo de Malware dado un archivo .exe (sin cifrar). La tool en sí es muy simple, se basa en plugins (.dll) que detectan 'firmas' en los ejecutables. Os dejo unas imágenes, el binario (y algunos plugins), la base para hacer vosotros los plugins y el source.
Imágenes


(NOTA: SpyNet lo detecta como CyberGate porque son casi idénticos)
¿Cómo hacer un plugin?
Crea una nueva DLL y añade los siguientes métodos a la clase:
public string malwareName() { return "nombredelrat"; }
public string authorName() { return "tunombre"; }
public bool Check(string file)
{
//código de reconocimiento
}
Hay algunos RATs fácil de adivinar con una string, como es el caso de DarkComet, el método sería así:
public bool Check(string file)
{
return File.ReadAllText(file).Contains("#KCMDDC51#");
}
pero algunos RATs como CyberGate usan nombres de recursos específicos, por lo tanto hay que extender un poco el método. Método para CyberGate/SpyGate:
[DllImport("kernel32.dll")]
private static extern IntPtr LoadLibrary(string dllToLoad);
[DllImport("kernel32.dll")]
private static extern IntPtr LockResource(IntPtr hResData);
[DllImport("kernel32.dll")]
private static extern IntPtr LoadResource(IntPtr hInstance, IntPtr hResInfo);
[DllImport("kernel32.dll")]
private static extern uint SizeofResource(IntPtr hInstance, IntPtr hResInfo);
[DllImport("Kernel32.dll", EntryPoint = "FindResourceW", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern IntPtr FindResource(IntPtr hModule, string pName, string pType);
public bool Check(string file)
{
IntPtr hExe = LoadLibrary(file);
IntPtr hRes = FindResource(hExe, "XX-XX-XX-XX", "#10");
IntPtr hResLoad = LoadResource(hExe, hRes);
IntPtr lpResLock = LockResource(hResLoad);
uint hSize = SizeofResource(hExe, hRes);
return (hSize > 0);
}
BinarioArchivo adjunto. Contraseña/password: Blau
Source
[Enlace externo eliminado para invitados]