Una muestra de Windows casi no tiene importaciones ni cadenas con nombres de API sospechosos. ¿Significa eso que es inofensiva?
Respuesta breve
No. Una tabla de importaciones escasa no prueba nada. El malware suele guardar hashes u otros identificadores en lugar de nombres de API y los resuelve en ejecución con GetProcAddress y LoadLibrary, sin dejar cadenas reveladoras ni entradas de importación para el análisis estático. MITRE ATT&CK lo recoge como Dynamic API Resolution (T1027.007). Una tabla casi vacía y poco texto legible son una señal de alerta: pasa a análisis dinámico o a desempaquetar.
El triaje estático empieza por la tabla de importaciones y las cadenas: un programa que importa CreateRemoteThread y VirtualAllocEx dice mucho. Los atacantes lo saben, así que la ausencia de esas pistas no prueba que sea seguro.
Qué ocurre
MITRE ATT&CK describe la Dynamic API Resolution (T1027.007): en lugar de enlazar las funciones de Windows con normalidad, el malware guarda hashes u otros identificadores y, en ejecución, los usa con GetProcAddress() y LoadLibrary() para reproducir por sí mismo el proceso de enlazado y carga. Los identificadores pueden incluso estar cifrados y decodificarse solo al ejecutar. El resultado es un binario cuya tabla de direcciones de importación y cadenas revelan muy poco hasta que se ejecuta.
Cómo responder
- Trata una tabla de importaciones diminuta (a menudo solo
GetProcAddress/LoadLibrary, o nada) como una señal, no como tranquilidad. - Pasa a análisis dinámico en un laboratorio aislado, o a desempaquetar y depurar, para ver las funciones resueltas.
- Las notas de detección de ATT&CK señalan secuencias de llamadas
GetProcAddress/LoadLibrarytras la asignación de memoria y el mapeo manual.
Por qué fallan los distractores
No importar nada no impide que un programa llegue a las API. Windows no tiene ninguna regla que rechace tablas pequeñas. Y los programas legítimos normalmente importan lo que usan, así que una tabla vacía es inusual, no normal.
Qué buscan los entrevistadores
El reflejo de que la ausencia de pruebas en lo estático no es prueba de ausencia, y el nombre de la técnica.
Posibles preguntas de seguimiento
- ¿Cómo recuperarías los nombres de API detrás de un conjunto de hashes durante la ingeniería inversa?
- ¿Qué señales de análisis dinámico revelan la resolución de API en tiempo de ejecución?
- ¿En qué se diferencia el empaquetado del hashing de API y puede una muestra usar ambos?