¿Qué es Amcache ProgramId? (glosario)
ProgramId es la identidad de 44 caracteres que Amcache usa para una aplicación lógica. Se calcula a partir de metadatos (nombre, publisher, versión, idioma), no del contenido binario. Dos binarios completamente distintos con los mismos metadatos de identidad reciben el mismo ProgramId; el mismo binario recompilado con metadatos distintos recibe uno diferente.
0006fa0b2a9f8a4eb9d7c81e8b1f3c5d3e2a0000ffff
Dos cosas lo hacen útil en DFIR. Es estable entre hosts para la misma instalación, y une un archivo en InventoryApplicationFile con su registro de aplicación en InventoryApplication. Lo primero lo hace primitivo de caza. Lo segundo lo hace primitivo de investigación en un solo host.
ProgramId vs FileId#
| FileId | ProgramId | |
|---|---|---|
| Longitud | 41 caracteres ("0000" + SHA-1) |
44 caracteres |
| Qué hashea | Primeros 31 MiB de bytes del archivo | Metadatos de aplicación |
| ¿Identifica un binario de forma única? | Sí | No, los hermanos lo comparten |
| ¿Estable entre hosts? | Solo para bytes idénticos | Sí, para la misma instalación |
| Mejor para | Cross-host de binario exacto | Cross-host de familia de aplicación |
Cuándo gana ProgramId#
- El atacante reconstruye su loader entre hosts. Bytes distintos,
Hashdistinto. Mismos metadatos de nombre/publisher/versión.ProgramIdlo sigue. - El atacante renombra
mimikatz.exeaupdate.exe. Si no limpió el recurso version-info,ProgramIdlo sigue. - Quieres acotar la propagación por el parque. Un
ProgramIdsospechoso se convierte en una consulta contra el CSV de Amcache de cada host recogido. Ve Movimiento lateral y pivote por ProgramId de Amcache.
Cuándo ProgramId es el pivote equivocado#
- LOLBINs.
net.exe,psexec.exe,certutil.exetienen el mismoProgramIden cada host. Los matches son ruido. Pivota por línea de comandos vía Security 4688 en su lugar. - Implants per-host. Malware verdaderamente por-víctima produce un
ProgramIdúnico por host. Para esos necesitas patrones de comportamiento (origen del logon, telemetría de red).
Para la referencia larga, ve ProgramId de Amcache explicado.
Términos relacionados#
Artículos relacionados
- ¿Qué es LinkDate en Amcache? (glosario)
LinkDate es el PE TimeDateStamp. Controlable por el atacante. Úsalo para agrupar builds, no para líneas de tiempo de host.
- ¿Qué es KeyLastWriteTimestamp en Amcache? (glosario)
El tiempo de escritura de la clave Amcache en el Registro. Lo más cercano a 'cuándo el appraiser anotó esto'. El campo individual que los analistas nuevos confunden más a menudo con LinkDate.
- ¿Qué es Root\InventoryApplicationFile? (glosario)
La clave principal de Amcache. Una subclave por PE que el appraiser inventarió, con hash, ruta, fabricante, fecha de enlace y una marca de escritura de registro. Donde se va el 90% del tiempo del analista.
- ¿Qué es Amcache FileId? (glosario)
FileId es '0000' más el SHA-1 de los primeros 31 MiB del archivo. Quita el prefijo antes de tirar a VirusTotal o no te devolverá nada en silencio.