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
ets5-password-recovery — ETS5 Password Recovery Tool è una PoC per CVE-2021-36799 | Kitploit
Strumenti/GitHubGitHub/robertguetzkow/ets5-password-recovery
Password CrackingStrumenti di Crittografia/DecrittografiaAnalisi delle VulnerabilitàExploitReverse EngineeringCrittografiaArchived
GitHubrobertguetzkow/ets5-password-recovery

ets5-password-recovery

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

ETS5 Password Recovery Tool è una PoC per CVE-2021-36799

Vedi Repository
33484 anni faNon ancora revisionato

ETS5 Password Recovery Tool

Sommario

  • Introduzione
  • Installazione
  • Requisiti
  • Come funziona il recupero della password?
  • Come è stato scoperto il difetto di progettazione?
  • Come si può mitigare il rischio?
  • Divulgazione coordinata delle vulnerabilità
  • Licenza
  • Registro delle modifiche

Introduzione

Hai dimenticato la password di uno dei tuoi progetti ETS5 e non riesci più ad accedere alla configurazione dell'impianto KNX? Il tool ETS5 Password Recovery ti permette di recuperare la password del progetto e altri segreti salvati nel project store dell'ETS5. Ciò è possibile perché l'ETS5 presenta un significativo difetto di progettazione: utilizza una password e un salt hard-coded per crittografare le informazioni del progetto (CVE-2021-36799).

Prompt dei comandi

Conservare segreti crittografici nel codice sorgente è sconsigliato perché possono essere recuperati tramite reverse engineering del software, offrendo così poca protezione in più rispetto a memorizzare le informazioni in chiaro. Ciò può rappresentare una minaccia per la sicurezza delle installazioni KNX. Se un attaccante riesce ad accedere ai file nel project store, può decifrarli pur non conoscendo la password del progetto. Le informazioni in essi contenute consentono di intercettare, impersonare e riconfigurare i dispositivi KNX. Questo è particolarmente problematico perché l'ETS5 dà agli utenti l'impressione che la password del progetto venga utilizzata per crittografare le informazioni del progetto, non solo per i progetti esportati. Di conseguenza, è probabile che molti utenti e integratori di sistema non abbiano preso ulteriori misure per garantire la riservatezza del project store. Se l'ETS5 implementasse correttamente la crittografia e venisse scelta una password forte per il progetto, sarebbe una sfida molto più ardua per un attaccante, anche se riuscisse ad ottenere accesso remoto al computer.

Le seguenti informazioni riservate sono crittografate in modo improprio:

  • Password dei progetti
  • FDSK
  • Chiavi backbone
  • Codici di autenticazione dei dispositivi e chiavi derivate
  • Password di gestione dei dispositivi e chiavi derivate
  • Password utente/tunneling e chiavi derivate
  • Chiavi tool

ETS5 Password Recovery Tool è una prova di concetto che dimostra il problema decifrando e mostrando le informazioni sensibili. È stato sviluppato come parte della divulgazione coordinata delle vulnerabilità e viene rilasciato con il permesso della KNX Association. La pubblicazione del tool ha i seguenti scopi:

  1. Documenta pubblicamente il problema di sicurezza, permettendo così agli utenti di prendere precauzioni per mitigare i rischi.
  2. La KNX Association non prevede di risolvere il problema nelle versioni correnti o future dell'ETS. Sensibilizzare l'opinione pubblica sul difetto di progettazione potrebbe far loro cambiare idea. (vedere la sezione divulgazione coordinata delle vulnerabilità per un aggiornamento)
  3. Divulgare il difetto di progettazione sperabilmente incoraggia la KNX Association e chiunque legga questo documento ad adottare migliori pratiche di ingegneria del software.
  4. ETS5 Password Recovery Tool potrebbe effettivamente essere utile nel caso in cui qualcuno abbia dimenticato la password del proprio progetto.

AVVERTENZA: Utilizza questo tool solo se sei legalmente autorizzato a visualizzare le informazioni del progetto. Aggirare le misure di sicurezza, anche quelle inefficaci, per ottenere l'accesso a informazioni che non ti è consentito vedere, potrebbe essere un reato nella tua giurisdizione.

Installazione

L'eseguibile può essere scaricato dalla sezione release. Non necessita di installazione e può essere posizionato in qualsiasi directory a scelta.

In alternativa, se non desideri eseguire un binario non attendibile sul tuo sistema, puoi decifrare singoli attributi dai file XML del progetto sul sito CyberChef.

Requisiti

Il software dipende da .NET Framework 4.6 o successivo. Windows 10 include già una versione .NET adeguata per impostazione predefinita. Gli utenti di versioni precedenti di Windows dovranno installare una versione corrente di .NET Framework per eseguire il software.

Come funziona il recupero della password?

Contrariamente a quanto suggerisce l'interfaccia utente, l'ETS5 non crittografa i file di progetto memorizzati localmente in C:\ProgramData\KNX\ETS5\ProjectStore con la password del progetto. Invece, utilizza la password hard-coded ETS5Password e il salt Ivan Medvedev per offuscare specifici attributi nei file XML del progetto. I segreti crittografici hard-coded sono contrari alle buone pratiche, come spiegato in CWE-798 e CWE-321.

Il processo per la deoffuscazione è:

  1. L'attributo offuscato è codificato in Base64 e deve essere decodificato, vedere RFC 4648.
  2. Ottieni la rappresentazione in byte di Ivan Medvedev come stringa codificata ASCII o UTF-8.
  3. Utilizza la funzione di derivazione della chiave implementata da PasswordDeriveBytes nel .NET Framework. È basata su PBKDF1, ma aggiunge un contatore all'algoritmo di derivazione della chiave. Nell'ETS5 viene utilizzata con SHA-1 come funzione hash, 100 iterazioni, ETS5Password come password e la rappresentazione in byte di Ivan Medvedev come salt. I primi 32 byte dell'output della derivazione della chiave saranno usati come chiave e i successivi 16 byte come IV.
  4. Decifra l'attributo decodificato utilizzando AES-256 in modalità CBC con la chiave e l'IV del passo 3.
  5. Rimuovi il padding PKCS#7 e il risultato è il valore originale dell'attributo.

Un'implementazione della deoffuscazione si trova nel file Deobfuscator.cs. Poiché la password e il salt sono costanti, sarebbe possibile precalcolare la chiave e l'IV per saltare la derivazione della chiave. Ciò non viene fatto nell'implementazione di questo software, poiché intende mostrare tutti i passaggi della deoffuscazione. Tuttavia, se hai bisogno della chiave e dell'IV, sono elencati di seguito.

HexBase64
Chiave22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E=
IV8E977BB3FEFADD88E6AE6CBEAE3E7CAFjpd7s/763Yjmrmy+rj58rw==

I file di progetto esportati (.knxproj) non sono interessati da questo difetto di progettazione, quindi questo tool non può essere utilizzato per recuperare la password del progetto per essi. Il file .knxproj è un file ZIP che contiene un altro file ZIP con le informazioni sensibili. Quest'ultimo utilizza la compressione Deflate, la crittografia ZipCrypto / PKWARE e la password del progetto per la derivazione della chiave di crittografia.

Come è stato scoperto il difetto di progettazione?

Durante la preparazione della mia tesi "Security Analysis of the KNXnet/IP Secure Protocol", ho indagato su come l'ETS5 memorizza le informazioni di progetto. Poiché l'ETS genera e memorizza chiavi crittografiche e password utilizzate dai dispositivi KNX IP Secure per autenticarsi a vicenda, fornire riservatezza per la comunicazione multicast e proteggere la configurazione dei dispositivi, è importante mantenere segrete le informazioni. Se un attaccante riuscisse ad accedere alle informazioni di progetto memorizzate dall'ETS, comprometterebbe completamente la sicurezza dell'installazione KNX.

Per questo motivo, il project store dell'ETS5 è stato ispezionato per verificare se i dati sono memorizzati in modo da garantire la riservatezza. I file di progetto in C:\ProgramData\KNX\ETS5\ProjectStore sono leggibili da qualsiasi account utente, non sono necessari diritti di amministratore. Sono stati trovati i seguenti indicatori che hanno sollevato il sospetto che i dati non siano crittografati correttamente:

  1. I file di configurazione XML non sono crittografati nella loro interezza. Solo gli attributi sensibili, come i codici di autenticazione dei dispositivi, le password di gestione dei dispositivi, gli FDSK e le chiavi tool, sono stati modificati per non contenere il loro valore in chiaro.
  2. Un attributo per la password del progetto è memorizzato in uno dei file XML. Questo sembrava leggermente strano perché con un'implementazione corretta la crittografia deriverebbe la chiave dalla password del progetto, quindi memorizzarla non sarebbe stato strettamente necessario. Tuttavia, ipoteticamente, potrebbe essere stato utilizzato per verificare se la password inserita è corretta prima di tentare di decifrare altri attributi.
  3. Due progetti con password di progetto diverse, ma dispositivi identici, avevano gli stessi valori per alcuni attributi specifici del dispositivo, come l'FDSK.

L'ultimo punto indicava chiaramente che la password del progetto non veniva utilizzata nell'algoritmo che modifica i valori degli attributi. Un esempio può essere visto di seguito, dove i codici di autenticazione dei dispositivi in due progetti P-02FB e P-0117 erano impostati su valori identici. Anche gli output offuscati sono gli stessi, nonostante l'uso di password di progetto diverse. Poiché non viene richiesto di inserire altro oltre alla password del progetto quando si apre il progetto nell'ETS5, ciò significava che la chiave doveva essere memorizzata da qualche parte o si trattava di semplici algoritmi di offuscazione che non richiedono alcuna chiave. Sembrava probabile che la soluzione non fosse ideale per garantire la riservatezza e potenzialmente mettere a rischio le installazioni KNX.

I file di configurazione non sono crittografati nella loro interezza.```xml

``` #### Una password di progetto diversa non cambia l'output se i valori degli attributi originali sono identici```xml ``` Poiché le osservazioni suggerivano fortemente l'uso di un approccio insicuro, probabilmente dovuto all'uso di una chiave crittografica hard-coded, era necessario indagare su come venivano modificati i valori degli attributi. L'intenzione era di identificare un potenziale difetto di sicurezza, che potesse poi essere segnalato al fornitore e risolto, migliorando la sicurezza per tutti gli utenti. Valutare se l'implementazione fornisca una riservatezza adeguata ha richiesto il reverse engineering dell'ETS5.

Poiché l'ETS5 si basa sul framework .NET, cosa immediatamente evidente dalle DLL utilizzate, il decompilazione poteva essere facilmente realizzata tramite ILSpy. Il binario era stato offuscato con Dotfuscator, presumibilmente per rendere più difficili gli sforzi di reverse engineering. Tuttavia, i nomi di classi e funzioni erano sorprendentemente rimasti per lo più intatti. Quindi, l'approccio scelto è stato quello di cercare classi e funzioni che sembravano correlate all'elaborazione dei file XML, alla crittografia, alla decrittografia, all'offuscamento, al deoffuscamento, alle chiavi o alle password. Questo ha portato alla scoperta di Knx.Ets.ObjectModel.Import.PasswordDescrambler.Scramble e Knx.Ets.ObjectModel.Import.Encryption.EncryptString, che vengono chiamati sui valori offuscati degli attributi memorizzati nei file XML. Non veniva passato alcun materiale chiave alle funzioni; utilizzavano solo valori costanti per derivare una chiave che veniva poi utilizzata per crittografare/decrittografare gli attributi utilizzando AES-256 in modalità CBC. Era evidente che venivano utilizzate credenziali hard-coded per derivare una chiave. Dotfuscator modificava il flusso di controllo e inseriva operazioni superflue, ma le chiamate alle funzioni del framework .NET non potevano essere nascoste. Pertanto, è stato possibile scrivere una specifica per il (de)offuscamento in questa fase per un approccio semi-clean-room. L'unica parte mancante era la stringa utilizzata nella derivazione della chiave, che era stata oscurata da Dotfuscator. De4dot è stato scelto per invertire l'offuscamento delle stringhe, rivelando la password ETS5Password. L'IV era già leggibile prima di applicare De4dot, poiché era stato definito come una sequenza di byte. Per curiosità personale, si è scoperto che non si trattava di byte casuali, ma in realtà della rappresentazione in byte ASCII / UTF-8 della stringa Ivan Medvedev.

Poiché il difetto di progettazione rappresenta un rischio per le installazioni KNX, il problema doveva essere segnalato alla KNX Association. Era necessaria un'implementazione proof of concept per garantire che il problema potesse essere dimostrato, se richiesto. Per evitare qualsiasi violazione del copyright, il proof of concept è stato implementato sulla base delle specifiche annotate. Ciò è stato fatto per evitare qualsiasi riutilizzo di codice dal software originale. L'applicazione di Dotfuscator ha anche fatto sì che il codice originale e persino quello non offuscato fossero comunque inutilizzabili per un'implementazione pulita, garantendo che anche la copia involontaria dell'originale fosse improbabile.

Per i dettagli sulla divulgazione coordinata successiva allo sviluppo del proof of concept, vedere la sezione Divulgazione coordinata della vulnerabilità.

Come può essere mitigato il rischio?

Sfortunatamente, al 2021-07-18, non è disponibile una versione ETS con patch. Pertanto, sono necessarie misure aggiuntive al di fuori dell'ETS5 per affrontare i rischi. Le sottosezioni seguenti spiegano diversi approcci che possono essere adottati a seconda del modello di minaccia che si ipotizza e contro il quale ci si vuole proteggere.

Crittografia completa del disco

  • Soluzione:
    • Crittografare l'intero disco rigido con Windows BitLocker o un software di terze parti come VeraCrypt.
  • Pro:
    • Tutti i dati sul disco rigido sono crittografati e inaccessibili agli aggressori finché il dispositivo è spento. Ciò presuppone l'uso di una password complessa.
    • Windows fornisce già una soluzione facile da usare con BitLocker su alcune versioni di Windows, e sono disponibili anche soluzioni software open source.
  • Contro:
    • Non garantisce la riservatezza mentre il computer è in esecuzione. Se un aggressore riesce ad accedere a uno degli account utente / sfruttare un RCE, può accedere alle informazioni del progetto in chiaro.

Crittografia di file / cartelle

  • Soluzione:
    • Crittografare la directory C:\ProgramData\KNX\ETS5\ProjectStore e tutti i file in essa contenuti utilizzando il sistema di crittografia dei file (EFS) di Windows.
  • Pro:
    • Le informazioni del progetto sono crittografate e inaccessibili agli aggressori finché il dispositivo è spento.
    • Se l'EFS è configurato dall'account amministratore o da un account dedicato per l'esecuzione dell'ETS, gli altri account utente non possono accedere ai file. Ciò dovrebbe fornire protezione se un aggressore ottiene l'accesso a un account utente sul computer ma non a quello che ha configurato l'EFS. È necessaria una password complessa per l'account amministratore o ETS, poiché viene utilizzata per proteggere il materiale chiave.
  • Contro:
    • Non sempre garantisce la riservatezza mentre il computer è in esecuzione. Se un aggressore riesce ad accedere all'account utente che ha configurato l'EFS o è in grado di eseguire codice nel contesto di quell'utente, può comunque accedere alle informazioni del progetto in chiaro.

Volume crittografato

  • Soluzione:
    • Creare un volume crittografato con un software di terze parti come VeraCrypt e archiviare solo le informazioni del progetto al suo interno.
  • Pro:
    • Le informazioni del progetto sono crittografate e inaccessibili agli aggressori finché il volume non è montato. Ciò presuppone l'uso di una password complessa o di un token hardware per la crittografia del volume.
    • Fornisce una protezione limitata anche nel caso in cui l'aggressore riesca a ottenere i diritti di amministratore. Finché il volume non è montato mentre l'aggressore ha accesso al sistema, i dati nel volume crittografato dovrebbero rimanere riservati.
  • Contro:
    • I file di progetto originali devono essere trasferiti nel volume crittografato e poi cancellati in modo sicuro, in modo che i file originali non crittografati non possano essere recuperati.
    • È necessario creare un collegamento simbolico per far apparire il volume montato sotto C:\ProgramData\KNX\ETS5\ProjectStore.
    • In generale, è più complicato da configurare.

Divulgazione coordinata della vulnerabilità

  • 2021-06-26 - Problema segnalato alla KNX Association
  • 2021-07-09 - KNX Association ha confermato il problema
  • 2021-07-12 - KNX Association ha autorizzato la divulgazione immediata
  • 2021-07-18 - Divulgazione pubblica
  • 2021-07-19 - Assegnato CVE-2021-36799

Secondo Joost Demarest, CTO e CFO della KNX Association, ETS5 non riceverà alcuna patch poiché lo sviluppo per quella versione è già stato concluso. Ha autorizzato la pubblicazione immediata del problema il 2021-07-12, rinunciando al ritardo di 90 giorni offerto per la divulgazione.

Aggiornamento 2021-11-08

A causa di un malinteso, il README in precedenza affermava che la KNX Association prevede di risolvere il problema in ETS6. Questo non è il caso. La KNX Association ha chiarito il 2021-10-25 che non intende risolvere questo problema, in quanto non lo considera di responsabilità dell'ETS per la memorizzazione sicura del materiale crittografico delle chiavi quando non viene esportato.

Aggiornamento 2021-11-10

La KNX Association mi ha contattato e spiegato che ha rivisto i suoi piani. Ora intendono documentare le carenze dell'attuale versione ETS e crittografare adeguatamente il repository dei progetti in una versione futura di ETS6.

Licenza

Il progetto è distribuito sotto la licenza MIT.

Registro delle modifiche

1.0.0 - 2021-07-18

Hash del commit:

  • c6a3750cefa74d84c5886097cdd0f30dc1bd0dd1

Download:

  • Codice sorgente
  • Eseguibile

Modifiche:

  • Versione iniziale
Scarica lo strumento