
TABPE v2026.8
Un conjunto de datos mensual de referencia de PE de Windows para investigadores de ciberseguridad.
TABPE
¿Qué es TABPE?
TABPE (una combinación de TABriz + PE - Tabriz es mi ciudad natal, y nombré este proyecto por mi amor a mi ciudad) es un conjunto de datos abierto y estructurado que contiene información sobre todos los archivos PE (ejecutables de Windows) incluyendo .exe, .dll, .sys, etc., en versiones limpias y completamente actualizadas de Windows 10 Pro y Windows 11 Pro.
Mi flujo de trabajo es el siguiente:
- Instalé Windows y, cada mes después de que Microsoft publica sus actualizaciones de seguridad (Patch Tuesday), intentaba actualizar el sistema.
- En algunos meses, la actualización se aplicaba exactamente el mismo día o unos días después del Patch Tuesday.
- En otros meses, debido a varias razones (como cortes de internet en Irán), no pude actualizar a tiempo. En esos casos, descargué e instalé manualmente los archivos de actualización (
.msu). - Como resultado, el momento exacto del escaneo relativo al Patch Tuesday puede variar desde unos días hasta unas semanas. Sin embargo, al final, todas las actualizaciones publicadas por Microsoft hasta la fecha del escaneo se aplicaron al sistema.
La hora exacta de inicio y fin de cada escaneo se registra en el archivo
pe_files_info.jsonbajo la secciónscan_info.
Resultados del Proyecto
Cada Release proporciona tres archivos principales:
| File | Description |
|---|---|
pe_files_info.json | El archivo principal que contiene información completa sobre todos los archivos PE (encabezados, secciones, importaciones, exportaciones, hash SHA256, información de seguridad, LOAD_CONFIG, etc.) |
file_list.txt | Lista completa de rutas de todos los archivos PE en esa versión específica de Windows |
scanner.log | Registro de errores y archivos a los que el escáner no pudo acceder (Acceso Denegado) + error |
Estructura de ejemplo de pe_files_info.json
{
"scan_info": {
"start_time": "2026-06-04T06:21:51-07:00",
"end_time": "2026-06-04T08:09:37-07:00",
"duration": "1h 47m 45s",
"windows_version": {
"os_name": "Windows 11 Pro",
"os_version": "10.0.26100.8457 Build 26100",
"system_type": "x64-based PC",
"version": "24H2",
"last_update": "KB5087054"
},
"total_files": 29377,
"error_files": 12,
"error_files_list": [
{
"id": 7618,
"path": "C:\\Windows\\SysWOW64\\compobj.dll"
},
{
"id": 8561,
"path": "C:\\Windows\\SysWOW64\\ole2disp.dll"
},
{
"id": 8562,
"path": "C:\\Windows\\SysWOW64\\ole2nls.dll"
},
{
"id": 8560,
"path": "C:\\Windows\\SysWOW64\\ole2.dll"
},
{
"id": 8839,
"path": "C:\\Windows\\SysWOW64\\storage.dll"
},
{
"id": 8912,
"path": "C:\\Windows\\SysWOW64\\typelib.dll"
},
{
"id": 28768,
"path": "C:\\Windows\\WinSxS\\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.26100.1_none_d3b8ff829e6c9bfb\\ole2.dll"
},
{
"id": 28767,
"path": "C:\\Windows\\WinSxS\\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.26100.1_none_d3b8ff829e6c9bfb\\compobj.dll"
},
{
"id": 28769,
"path": "C:\\Windows\\WinSxS\\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.26100.1_none_d3b8ff829e6c9bfb\\ole2disp.dll"
},
{
"id": 28770,
"path": "C:\\Windows\\WinSxS\\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.26100.1_none_d3b8ff829e6c9bfb\\ole2nls.dll"
},
{
"id": 28772,
"path": "C:\\Windows\\WinSxS\\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.26100.1_none_d3b8ff829e6c9bfb\\typelib.dll"
},
{
"id": 28771,
"path": "C:\\Windows\\WinSxS\\x86_microsoft-windows-n..nd-syswow64-payload_31bf3856ad364e35_1.0.26100.1_none_d3b8ff829e6c9bfb\\storage.dll"
}
]
},
"pe_files": [
{
"id": 1,
"filename": "msdaosp.dll",
"path": "C:\\Program Files\\Common Files\\System\\Ole DB\\msdaosp.dll",
"sha256": "38390b62e81fd3381d6ea2d50c5e35ff93370e70122326c0cb8de53f9f9085d0",
"file_type": "dll",
"has_rich_header": "YES",
"machine": "AMD64",
"time_date_stamp": "2010-06-03 08:46:58 UTC",
"characteristics": [
"EXECUTABLE_IMAGE",
"LARGE_ADDRESS_AWARE",
"UP_SYSTEM_ONLY"
],
"magic": "PE32+",
"major_linker_version": 14,
"minor_linker_version": 38,
"major_os_version": 10,
"minor_os_version": 0,
"major_image_version": 10,
"minor_image_version": 0,
"major_subsystem_version": 10,
"minor_subsystem_version": 0,
"checksum": 188850,
"subsystem": "WINDOWS_GUI",
"dll_characteristics": [
"DYNAMIC_BASE",
"GUARD_CF",
"HIGH_ENTROPY_VA",
"NX_COMPAT"
],
"data_directories": [
"EXPORT_TABLE",
"IMPORT_TABLE",
"RESOURCE_TABLE",
"EXCEPTION_TABLE",
"BASE_RELOCATION_TABLE",
"DEBUG",
"LOAD_CONFIG_TABLE",
"IAT"
],
"sections": [
{
"name": ".text",
"characteristics": [
"CNT_CODE",
"MEM_EXECUTE",
"MEM_SHARED"
]
},
{
"name": "fothk",
"characteristics": [
"CNT_CODE",
"MEM_EXECUTE",
"MEM_SHARED"
]
},
{
"name": ".rdata",
"characteristics": [
"CNT_INITIALIZED_DATA",
"MEM_EXECUTE"
]
},
{
"name": ".data",
"characteristics": [
"CNT_INITIALIZED_DATA",
"MEM_EXECUTE",
"MEM_READ"
]
},
{
"name": ".pdata",
"characteristics": [
"CNT_INITIALIZED_DATA",
"MEM_EXECUTE"
]
},
{
"name": ".rsrc",
"characteristics": [
"CNT_INITIALIZED_DATA",
"MEM_EXECUTE"
]
},
{
"name": ".reloc",
"characteristics": [
"CNT_INITIALIZED_DATA",
"LNK_NRELOC_OVFL",
"MEM_EXECUTE"
]
}
],
"exports": [
"DllCanUnloadNow",
"DllGetClassObject",
"DllMain",
"DllRegisterServer",
"DllUnregisterServer"
],
"imports": [
{
"dll_name": "ADVAPI32.DLL",
"functions": [
"RegCloseKey",
"RegOpenKeyExW",
"RegQueryValueExW"
]
},
{
"dll_name": "KERNEL32.DLL",
"functions": [
"CompareStringA",
"CompareStringW",
"DeleteCriticalSection",
"DisableThreadLibraryCalls",
"EnterCriticalSection",
"GetCurrentProcess",
"GetCurrentProcessId",
"GetCurrentThread",
"GetCurrentThreadId",
"GetProcessHeap",
"GetSystemDefaultLCID",
"GetSystemInfo",
"GetSystemTimeAsFileTime",
"GetTickCount",
"InitializeCriticalSection",
"LeaveCriticalSection",
"MultiByteToWideChar",
"QueryPerformanceCounter",
"RtlCaptureContext",
"RtlLookupFunctionEntry",
"RtlVirtualUnwind",
"SetUnhandledExceptionFilter",
"Sleep",
"TerminateProcess",
"TryEnterCriticalSection",
"UnhandledExceptionFilter",
"WideCharToMultiByte"
]
},
{
"dll_name": "MSVCRT.DLL",
"functions": [
"_XcptFilter",
"__C_specific_handler",
"_amsg_exit",
"_callnewh",
"_initterm",
"_mbsinc",
"_purecall",
"_wcsicmp",
"floor",
"free",
"malloc",
"memcmp",
"memcpy",
"memmove",
"memset",
"realloc"
]
},
{
"dll_name": "OLE32.DLL",
"functions": [
"CLSIDFromProgID",
"CoCreateInstance",
"CoGetMalloc",
"CoTaskMemFree",
"ProgIDFromCLSID",
"StringFromCLSID"
]
},
{
"dll_name": "USER32.DLL",
"functions": [
"DispatchMessageW",
"LoadStringW",
"MsgWaitForMultipleObjects",
"PeekMessageW",
"TranslateMessage"
]
}
],
"debug_info": [
"CODEVIEW"
],
"mitigations": [
"DYNAMIC_BASE/ASLR",
"NX_COMPAT/DEP",
"CFG",
"HIGH_ENTROPY_VA"
],
"has_certificate": false,
"load_config": {
"raw": "00000148 size\n0 time date stamp\n0.00 Version\n0 GlobalFlags Clear\n0 GlobalFlags Set\n0 Critical Section Default Timeout\n0 Decommit Free Block Threshold\n0 Decommit Total Free Threshold\n0000000000000000 Lock Prefix Table\n0 Maximum Allocation Size\n0 Virtual Memory Threshold\n0 Process Affinity Mask\n0 Process Heap Flags\n0 CSD Version\n0000 Dependent Load Flag\n0000000000000000 Edit List\n00000001800190C0 Security Cookie\n0000000180015B38 Guard CF address of check-function pointer\n0000000180015B40 Guard CF address of dispatch-function pointer\n0000000180015BD4 Guard CF function table\nA5 Guard CF function count\n10417500 Guard Flags\nCF instrumented\nFID table present\nProtect delayload IAT\nDelayload IAT in its own section\nExport suppression info present\nLong jump target table present\nEH Continuation table present\n0000 Code Integrity Flags\n0000 Code Integrity Catalog\n00000000 Code Integrity Catalog Offset\n00000000 Code Integrity Reserved\n0000000000000000 Guard CF address taken IAT entry table\n0 Guard CF address taken IAT entry count\n0000000000000000 Guard CF long jump target table\n0 Guard CF long jump target count\n0000000000000000 Dynamic value relocation table\n0000000000000000 Hybrid metadata pointer\n0000000000000000 Guard RF address of failure-function\n0000000000000000 Guard RF address of failure-function pointer\n00000228 Dynamic value relocation table offset\n0007 Dynamic value relocation table section\n0000 Reserved2\n0000000000000000 Guard RF address of stack pointer verification function pointer\n00000000 Hot patching table offset\n0000 Reserved3\n0000000000000000 Enclave configuration pointer\n0000000000000000 Volatile metadata pointer\n0000000180015B90 Guard EH continuation table\nD Guard EH continuation count\n0000000180015B48 Guard XFG address of check-function pointer\n0000000180015B50 Guard XFG address of dispatch-function pointer\n0000000180015B58 Guard XFG address of dispatch-table-function pointer\n0000000180015B60 CastGuard OS determined failure mode\n0000000000000000 Guard memcpy function pointer\nGuard CF Function Table\nAddress\n--------\n0000000180001060\n00000001800012E0\n0000000180001550\n00000001800017D0\n0000000180001AA0\n0000000180001AC0\n0000000180001AE0\n0000000180001B60\n0000000180001BA0\n0000000180001CF0\n0000000180001D10\n0000000180001D30\n0000000180001D40\n0000000180001D50\n0000000180001D60\n0000000180001D70\n0000000180002080\n00000001800022C0\n00000001800022D0\n00000001800022F0\n0000000180002B70\n0000000180003470\n00000001800034D0\n0000000180003D20\n0000000180003D30\n0000000180003D40\n0000000180003F30\n0000000180003F50\n0000000180003F60\n0000000180003F70\n0000000180003F80\n0000000180003F90\n0000000180003FA0\n0000000180003FC0\n0000000180003FD0\n0000000180003FE0\n0000000180003FF0\n0000000180004000\n0000000180004010\n0000000180004500\n00000001800046A0\n0000000180004800\n0000000180004810\n0000000180004840\n0000000180004A30\n0000000180005490\n00000001800054A0\n00000001800055A0\n0000000180005710\n00000001800057A0\n00000001800057B0\n00000001800059B0\n0000000180005AD0\n0000000180005B70\n0000000180005BB0\n0000000180005BD0\n0000000180005C10\n0000000180005E00\n00000001800062F0\n00000001800064C0\n0000000180006890\n00000001800068D0\n0000000180006A00\n0000000180006BB0\n0000000180006C30\n0000000180006C50\n0000000180007150\n00000001800075B0\n00000001800076A0\n0000000180007C60\nE 0000000180008570\nE 00000001800085E0\nE 00000001800088F0\n0000000180008BD0\n00000001800094F0\n0000000180009B80\n000000018000A040\n000000018000A060\n000000018000A0A0\n000000018000A3E0\n000000018000A420\n000000018000A620\n000000018000A790\n000000018000A890\n000000018000A8C0\n000000018000A930\n000000018000AA40\n000000018000AA70\n000000018000AAF0\n000000018000AB20\n000000018000AB80\n000000018000AC70\n000000018000ACA0\n000000018000AD30\n000000018000ADB0\n000000018000AE00\n000000018000AF40\n000000018000B470\n000000018000B630\n000000018000BA90\n000000018000CFF0\n000000018000D0D0\n000000018000D190\n000000018000D2E0\n000000018000D2F0\n000000018000D300\n000000018000D310\n000000018000D320\n000000018000D330\n000000018000D350\n000000018000D360\n000000018000D450\n000000018000D4C0\n000000018000D910\n000000018000D930\n000000018000E030\n000000018000E5B0\n000000018000EBF0\n000000018000EC00\n000000018000EF90\n000000018000F370\n000000018000F6F0\n000000018000F780\n000000018000F7D0\n000000018000F7E0\n000000018000F800\n000000018000F820\n000000018000F830\n000000018000FA80\n000000018000FCA0\n00000001800102A0\n0000000180010440\n00000001800104B0\n00000001800105D0\n0000000180010680\n0000000180010960\n0000000180010970\n0000000180010980\n0000000180010990\n00000001800109A0\n00000001800109B0\n0000000180010A10\n0000000180010A20\n0000000180010A30\n0000000180010A40\n0000000180010A50\n0000000180010A60\n0000000180010B50\n0000000180010B90\n0000000180010C90\n0000000180010D00\n0000000180010E80\n0000000180010FD0\n0000000180011580\n0000000180011750\n0000000180012050\n0000000180013080\n0000000180013100\n0000000180013120\n0000000180013140\n0000000180013170\n0000000180013180\n0000000180013190\n00000001800131C0\n00000001800131E0\nGuard EH Continuation Table\nAddress\n--------\n00000001800013A3\n00000001800013DA\n0000000180001411\n000000018000143E\n0000000180001460\n000000018000148E\n00000001800014C4\n0000000180001508\n0000000180001640\n00000001800085C4\n0000000180008B93\n000000018000D49B\n0000000180010CE8\nDynamic Value Relocation Table (version: 1)\nSymbol VA: 0000000000000007 IMAGE_DYNAMIC_RELOCATION_FUNCTION_OVERRIDE\nTotal function overrides size: 20 bytes\nBDD data: 20 bytes\nFunction Override (1)\nOriginal RVA: 00013480\nBDD Offset: 0\nRVA array size: 4\nReloc size: C\nRVAs:\n[00000000] 00013480\nBDD (version: 1, 18 bytes):\n[00000000] 0002, 0001, 00000142\n[00000001] 0001, 0001, 00000000\n[00000002] 0000, 0000, 00000000\nFixup RVAs:\n[00000000] = page 00014000 rva 00014011 type 1"
}
},
Casos de Uso en Ciberseguridad
Defensivo (Blue Team)
- Detección de Suplantación (Masquerading): Al comparar los hashes de los archivos en su sistema con los de TABPE, puede detectar archivos falsos y malware que se hacen pasar por archivos legítimos del sistema (por ejemplo, un
svchost.exefalso). - Análisis Forense: Al buscar el hash de un archivo en TABPE, puede determinar rápidamente si pertenece a Windows o si es una amenaza externa.
- Identificación de LOLBin (Living Off the Land Binaries): Al examinar las capacidades de los archivos legítimos de Windows (a través de importaciones y exportaciones), puede ver qué herramientas integradas podrían usar los atacantes para la ejecución de código malicioso.
Ofensivo (Red Team)
- DLL Side-Loading: Al examinar la tabla de importaciones de ejecutables legítimos, puede determinar qué DLLs carga un ejecutable específico. Esta información es crucial para las técnicas de DLL Side-Loading.
- Encontrar Archivos sin Mecanismos de Seguridad: Al revisar la sección
mitigations, puede encontrar archivos que carecen de ASLR o DEP, facilitando el desarrollo de exploits. - Identificación de LOLBin (Living Off the Land Binaries): Para el Red Team, es crítico saber qué archivos legítimos de Windows tienen capacidades como ejecución de código, descarga de archivos o comunicación de red para usar en ataques.
Análisis de Malware y Desarrollo de Exploits
- Detección de Packers: El malware empaquetado a menudo tiene secciones inusuales. TABPE proporciona una línea base de archivos normales para que pueda detectar anomalías más rápido.
- Verificación de Mitigaciones: Antes de escribir un exploit, necesita saber qué mecanismos de seguridad (ASLR, DEP, CFG, etc.) están activos en el archivo objetivo. TABPE le proporciona esta información.
Seguimiento de Cambios a lo Largo del Tiempo (Binary Diffing)
Al comparar archivos PE entre dos versiones diferentes, puede:
- Ver exactamente qué archivos cambiaron durante cada Patch Tuesday.
- Identificar parches de seguridad silenciosos.
- Rastrear cambios de archivos para analizar vulnerabilidades de día cero.
Información Técnica
| Feature | Value |
|---|---|
| Platform | Windows 10 Pro & Windows 11 Pro (x64) |
| Virtualization Environment | VMware Workstation (VM aislada, sin interferencia del host) |
| Update Frequency | Mensual (después de cada Patch Tuesday) |
| Number of PE files per version | Aproximadamente 25,000 – 31,000 archivos |
| Output Format | JSON (procesable con Python, PowerShell, C#, etc.) |
| Tagging Format | YYYY.M (ejemplo: 2026.5 para mayo de 2026) |
| Compressed File Size | ~30 MB (JSON original ~1 GB) |
Descargo de Responsabilidad
Este proyecto se proporciona solo con fines de investigación y educativos. Los datos presentados son una línea base de archivos legítimos de Windows. Cualquier uso de esta información para actividades ilegales, maliciosas o no autorizadas es responsabilidad exclusiva del usuario. El autor no asume ninguna responsabilidad por el mal uso de estos datos.
Licencia
Este proyecto se publica bajo la Licencia MIT.