
TABPE v2026.8
Un dataset mensile di baseline di Windows PE per ricercatori di cybersicurezza.
TABPE
Cos'è TABPE?
TABPE (una combinazione di TABriz + PE - Tabriz è la mia città natale, e ho chiamato questo progetto per il mio amore per la mia città) è un dataset aperto e strutturato contenente informazioni su tutti i file PE (eseguibili Windows) inclusi .exe, .dll, .sys, ecc., su versioni pulite e completamente aggiornate di Windows 10 Pro e Windows 11 Pro.
Il mio flusso di lavoro è il seguente:
- Ho installato Windows e, ogni mese dopo che Microsoft rilascia i suoi aggiornamenti di sicurezza (Patch Tuesday), ho provato ad aggiornare il sistema.
- In alcuni mesi, l'aggiornamento è stato applicato esattamente lo stesso giorno o pochi giorni dopo Patch Tuesday.
- In altri mesi, per vari motivi (come interruzioni di internet in Iran), non ho potuto aggiornare in tempo. In quei casi, ho scaricato e installato manualmente i file di aggiornamento (
.msu). - Di conseguenza, il momento esatto della scansione rispetto a Patch Tuesday può variare da pochi giorni a poche settimane. Tuttavia, alla fine, tutti gli aggiornamenti rilasciati da Microsoft fino alla data di scansione sono stati applicati al sistema.
L'ora esatta di inizio e fine di ogni scansione è registrata nel file
pe_files_info.jsonnella sezionescan_info.
Output del Progetto
Ogni Rilascio fornisce tre file principali:
| File | Descrizione |
|---|---|
pe_files_info.json | Il file principale contenente informazioni complete su tutti i file PE (intestazioni, sezioni, import, export, hash SHA256, informazioni di sicurezza, LOAD_CONFIG, ecc.) |
file_list.txt | Elenco completo dei percorsi di tutti i file PE in quella specifica versione di Windows |
scanner.log | Log degli errori e dei file a cui lo scanner non ha potuto accedere (Access Denied) + errore |
Struttura di esempio di 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"
}
},
Casi d'Uso per la Sicurezza Informatica
Difensivo (Blue Team)
- Rilevamento di Masquerading: Confrontando gli hash dei file sul tuo sistema con quelli in TABPE, puoi rilevare file falsi e malware che si spacciano per file di sistema legittimi (ad esempio, un falso
svchost.exe). - Analisi Forense: Cercando l'hash di un file in TABPE, puoi determinare rapidamente se appartiene a Windows stesso o è una minaccia esterna.
- Identificazione di LOLBin (Living Off the Land Binaries): Esaminando le capacità dei file Windows legittimi (tramite import ed export), puoi vedere quali strumenti integrati gli attaccanti potrebbero utilizzare per l'esecuzione di codice malevolo.
Offensivo (Red Team)
- DLL Side-Loading: Esaminando la tabella degli import degli eseguibili legittimi, puoi determinare quali DLL un eseguibile specifico carica. Questa informazione è cruciale per le tecniche di DLL Side-Loading.
- Trovare File Senza Meccanismi di Sicurezza: Controllando la sezione
mitigations, puoi trovare file privi di ASLR o DEP, semplificando lo sviluppo di exploit. - Identificazione di LOLBin (Living Off the Land Binaries): Per il Red Team, è fondamentale sapere quali file Windows legittimi hanno capacità come esecuzione di codice, download di file o comunicazione di rete da utilizzare negli attacchi.
Analisi del Malware & Sviluppo di Exploit
- Rilevamento di Packer: Il malware impacchettato ha spesso sezioni insolite. TABPE fornisce una baseline di file normali in modo da poter individuare le anomalie più velocemente.
- Controlli sulle Mitigazioni: Prima di scrivere un exploit, devi sapere quali meccanismi di sicurezza (ASLR, DEP, CFG, ecc.) sono attivi sul file target. TABPE ti fornisce queste informazioni.
Tracciamento delle Modifiche nel Tempo (Binary Diffing)
Confrontando i file PE tra due rilasci diversi, puoi:
- Vedere esattamente quali file sono cambiati durante ogni Patch Tuesday.
- Identificare patch di sicurezza silenziose.
- Tracciare le modifiche ai file per analizzare vulnerabilità zero-day.
Informazioni Tecniche
| Caratteristica | Valore |
|---|---|
| Piattaforma | Windows 10 Pro & Windows 11 Pro (x64) |
| Ambiente di virtualizzazione | VMware Workstation (VM isolata, nessuna interferenza con l'host) |
| Frequenza di aggiornamento | Mensile (dopo ogni Patch Tuesday) |
| Numero di file PE per versione | Circa 25.000 – 31.000 file |
| Formato di output | JSON (elaborabile con Python, PowerShell, C#, ecc.) |
| Formato di tagging | YYYY.M (esempio: 2026.5 per Maggio 2026) |
| Dimensione del file compresso | ~30 MB (JSON originale ~1 GB) |
Dichiarazione di Esclusione di Responsabilità
Questo progetto è fornito solo per scopi di ricerca e didattici. I dati presentati sono una baseline di file Windows legittimi. Qualsiasi utilizzo di queste informazioni per attività illegali, malevole o non autorizzate è esclusivamente responsabilità dell'utente. L'autore declina ogni responsabilità per qualsiasi uso improprio di questi dati.
Licenza
Questo progetto è rilasciato sotto la Licenza MIT.