Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
BugId — Rileva, analizza e identifica in modo univoco i crash nelle applicazioni Windows. | Kitploit
Strumenti/GitHubGitHub/skylined/bugid
Analisi delle VulnerabilitàAnalisi Dinamica del Codice (DAST)DebuggerFuzzingAnalisi di Binari
GitHubskylined/bugid

BugId

Rileva, analizza e identifica in modo univoco i crash nelle applicazioni Windows.

Vedi Repository
525861 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Sito web

BugId

Rileva, analizza e identifica in modo univoco i bug delle applicazioni.

TL;DR

Vuoi...

  • sapere che tipo di bug sta causando il crash di un'applicazione?
  • sapere se un bug potrebbe essere una vulnerabilità di sicurezza?
  • scoprire se due o più crash sono causati dallo stesso bug?
  • ottenere un report leggibile con l'analisi di un bug?

...allora BugId potrebbe fare al caso tuo!

Configurazione rapida

Per usare BugId, scarica e installa il seguente software:

  • Ultima versione di Python 2.7.14
  • Ultima versione di Debugging Tools for Windows
  • Ultima release di BugId

Se installi Python e Debugging Tools for Windows con le impostazioni predefinite, BugId dovrebbe essere in grado di funzionare senza dover modificare alcuna impostazione. Puoi decomprimere BugId in qualsiasi punto del tuo file system locale.

Prima di avviare BugId, dovresti abilitare full page heap nell'applicazione target. Questa operazione può essere eseguita per singolo binario impostando determinati Global Flags. Il modo più semplice per farlo è usare lo script pageheap.cmd incluso in BugId. Ad esempio, per abilitare full page heap per notepad, esegui il seguente comando:

root@kitploit:~
C:\BugId>pageheap notepad.exe ON

(Nota: questo comando deve essere eseguito da un prompt dei comandi con privilegi elevati e accesso amministrativo alla macchina).

Per semplificare ulteriormente le cose, pageheap.cmd include un elenco di applicazioni note. Puoi abilitare o disabilitare full page heap per una qualsiasi di esse fornendo il suo nome, ad esempio pageheap msie ON abilita full page heap per Microsoft Internet Explorer. Usa pageheap /? per ottenere maggiori informazioni sugli argomenti della riga di comando.

A questo punto, potresti voler verificare che BugId funzioni correttamente. Possiamo farlo eseguendo un'applicazione con BugId e mandandola in crash per vedere se BugId segnala il bug correttamente. Una buona applicazione da usare per questo test è rundll32.exe, che si trova in tutte le installazioni di Windows nella sottocartella system32 della cartella di Windows (%WinDir%). Può essere usato per caricare qualsiasi dll presente nel file system locale e chiamare una funzione esportata in questa dll con un determinato formato di chiamata. Ci sono molte dll nella cartella system32 che esportano funzioni. La maggior parte di queste funzioni esportate si aspetta argomenti in un formato completamente diverso da quello che rundll32 fornirà, causando il crash dell'applicazione.

Prima dobbiamo attivare full page heap in rundll32 con il seguente comando:

root@kitploit:~
C:\BugId>pageheap rundll32.exe ON

Successivamente avvieremo BugId e gli diremo di avviare rundll32 con argomenti che gli indicano di caricare advapi32.dll e chiamare CloseThreadWaitChainSession. Al momento in cui scriviamo, questo causa una cosiddetta violazione di accesso tramite puntatore NULL, che BugId dovrebbe rilevare e segnalare.

root@kitploit:~
C:\BugId>BugId.cmd %WinDir%\system32\rundll32.exe -- advapi32 CloseThreadWaitChainSession

Nota che c'è un -- tra rundll32.exe e gli argomenti passati a esso. Questo perché potresti voler fornire argomenti sia a BugId stesso sia all'applicazione che vuoi testare. Questi due gruppi di argomenti devono essere separati da -- nella riga di comando. Tutto ciò che precede -- viene gestito da BugId e tutto ciò che segue viene ignorato da BugId ma passato all'applicazione.

Se tutto funziona correttamente, l'output di BugId sarà simile a questo:

root@kitploit:~
* Command line: C:\WINDOWS\system32\rundll32.exe advapi32 CloseThreadWaitChainSession
+ Main process 8024/0x1F58 (rundll32.exe): Attached; command line = C:\WINDOWS\system32\rundll32.exe advapi32 CloseThreadWaitChainSession.
,-- A bug was detect in the application ----------------------------------------
| Id @ Location:    AVR@NULL a1f.904 @ rundll32.exe!advapi32.dll!WctRemoveEntry
| Description:      Access violation while reading memory at 0x0 using a NULL pointer.
| Security impact:  Denial of Service
| Version:          rundll32.exe 10.0.16299.15 (x64)
|                   advapi32.DLL 10.0.16299.15 (x64)
| Bug report:       AVR@NULL a1f.904 @ rundll32.exe!advapi32.dll!WctRemoveEntry.html (60703 bytes)
'-------------------------------------------------------------------------------

La prima riga mostra la riga di comando che BugId sta per avviare. La seconda riga indica che questo ha causato la creazione di un nuovo processo con process id 8024, che esegue rundll32.exe, e la riga di comando di questo processo (che ovviamente è la stessa della prima riga). Poco dopo l'avvio dell'applicazione, è stato rilevato un bug. BugId ha generato un id univoco (AVR@NULL a1f.904) per questo bug e ha segnalato che la sua posizione è nella funzione WctRemoveEntry della dll advapi32.dll caricata da rundll32.exe. Poiché i crash da puntatore NULL normalmente non sono sfruttabili se non per mandare in crash l'applicazione, l'impatto sulla sicurezza del bug è Denial of Service. Di default, BugId genera un report in formato HTML per ogni bug che trova e ti indica la posizione in cui il report è stato salvato. Come puoi vedere, il nome del file del report si basa sull'id del bug e sulla sua posizione.

Ogni bug id generato da BugId è composto da due parti separate da uno spazio. La prima parte descrive il tipo di bug. Nell'esempio precedente, AVR@NULL, che significa Access Violation Reading memory at address NULL. La seconda parte descrive la posizione del bug; è composta da due hash brevi separati da un punto. Questi hash sono calcolati dalle funzioni in cima allo stack considerate rilevanti per il bug. Nell'esempio, a1f.904 è composto da a1f (calcolato da advapi32.dll!WctRemoveEntry) e 904 (calcolato da advapi32.dll!CloseThreadWaitChainSession).

Se esegui di nuovo lo stesso comando, BugId riporterà esattamente lo stesso BugId, poiché questo dovrebbe causare esattamente lo stesso bug nello stesso identico codice.

Congratulazioni! Ora sei pronto per testare i tuoi crash con BugId, ma a un certo punto potresti voler eseguire BugId.cmd --help per ottenere informazioni sulle numerose opzioni della riga di comando supportate da BugId.

Note

BugId è stato sviluppato e testato su un gran numero di applicazioni durante attività di fuzzing per analizzare centinaia di migliaia di crash causati da centinaia di bug diversi. In questo ruolo si è dimostrato estremamente accurato nell'analisi dei bug, con un tasso di falsi positivi e falsi negativi molto basso; entrambi sono inferiori all'1%.

Naturalmente, non tutti i tipi di bug sono facili da rilevare e analizzare. Alcuni bug non possono essere attualmente rilevati in modo affidabile nel momento in cui si verificano, ma causano un crash molto più tardi in codice completamente non correlato, portando a un'analisi completamente errata. In questi casi, riprodurre ripetutamente lo stesso bug porterà a una serie di bug id diversi, poiché l'applicazione va in crash in modi diversi in momenti diversi. Per assicurarti che non sia questo il caso, ti consigliamo di eseguire il tuo test case in BugId più volte per vedere se il bug id rimane lo stesso.

Altri bug causano crash che sembrano essere causati da un tipo diverso di bug. Questo può portare ad analisi e bug id errati. In particolare, i bug che derivano da cast errati nel codice C/C++ sono attualmente impossibili da rilevare e segnalare per BugId. Possono causare vari tipi diversi di crash; più comunemente violazioni di accesso quando i valori memorizzati nelle proprietà di un oggetto vengono usati erroneamente come puntatori. Se sospetti che dei cast errati possano essere la causa di un crash, dovresti ricontrollare l'analisi effettuata da BugId per assicurarti che sia corretta.

BugId dipende fortemente dall'uso di full page heap da parte dell'applicazione per poter rilevare e analizzare un gran numero di bug legati all'heap. Questo significa che sarà molto meno efficace nel rilevare e analizzare i bug nelle applicazioni che usano un proprio gestore di heap interno che non si basa sull'heap standard di Windows.

Licenza

Creative Commons License BugId ha un periodo di prova gratuito di 30 giorni per uso commerciale e non commerciale. Durante questo periodo di prova, quest'opera è concessa in licenza secondo i termini della [Creative Commons Attribution-NonCommercial 4.0 International License](http://creativecommons.org/licenses/by-nc/4.0/).

Dopo il periodo di prova, è necessario acquistare una licenza a pagamento su license.skylined.nl se vuoi continuare a usare BugId.

Le licenze non commerciali sono disponibili a un costo molto contenuto; giusto quanto basta per coprire le mie spese. Anche le licenze commerciali per singoli ricercatori di sicurezza sono disponibili con uno sconto notevole.

Se hai domande sulle licenze o vuoi discutere uno sconto per acquisti all'ingrosso, contatta [email protected].

BugId ha un periodo di prova per consentirti di valutarne l'utilità. Se vuoi continuare a usare BugId dopo la fine del periodo di prova, ti chiedo di contribuire con una piccola somma per ripagare il mio lavoro su BugId e la gestione delle richieste di licenza. Se stai usando BugId a livello commerciale, ti chiedo di pagare una quota di licenza regolare per condividere parte del profitto che stai ricavando dall'uso di BugId.

Scarica lo strumento