tis-audit-bitlocker

Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Il supporto della community in francese è disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata (1.8.2 / 2.0 / 2.1 / 2.2 / ecc.) e l'edizione Enterprise / Discovery.
* Specificare il sistema operativo del server (Linux / Windows) e la versione (Debian Stretch/Buster - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti (Windows 7 / 10)
. * Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se hai bisogno di supporto commerciale, puoi contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Risposta
VincentUCA
Messaggi: 4
Registrazione: 25 ottobre 2023 - 14:49

27 gennaio 2026 - 10:31

Salve,
sto riscontrando degli errori con la funzione di audit in questo pacchetto.

Su alcune delle nostre macchine, la funzione PowerShell "(Get-BitLockerVolume).MountPoint" restituisce lettere di unità insolite come: \\?\Volume{2d8e1378-6a0d-4197-49d0-fe4e2f18cd72}.

Più avanti nel codice del pacchetto, un ciclo for (for mountpoint in mountpoint_list:) ci permette di ignorare queste unità utilizzando una is_ignored.
Se la condizione ? in mountpoint è soddisfatta (if "?" in mountpoint:), la is_ignored viene impostata su True e quindi l'unità verrà ignorata per il resto della funzione di audit. Fin qui tutto bene.

Il mio problema deriva dalle altre condizioni testate successivamente nello stesso ciclo. Si tratta di ulteriori istruzioni if ​​e quindi vengono testate anche se la prima condizione è soddisfatta. Tuttavia, ad esempio, nella seconda condizione, la funzione "Get-Volume -DriveLetter %s | Where-Object DriveType -EQ Removable" genera un errore nel pacchetto. L'errore restituito è "Get-Volume: Impossibile trovare un parametro posizionale che accetti 2d8e1378-6a0d-4197-49d0-fe4e2f18cd72", ecc.
È chiaro che l'argomento DriveLetter non accetta il nome di volume insolito che gli è stato fornito. O forse le parentesi graffe {} stanno causando un errore di sintassi.

Ho aggirato questo problema iniziando le condizioni con: if not is_ignored and. Ma mentre scrivevo questo messaggio, mi sono reso conto che probabilmente avrei ottenuto lo stesso risultato usando le istruzioni elif.

Con questa modifica, il pacchetto funziona un po' meglio. La chiave BitLocker viene recuperata da Active Directory e dalla console WAPT. Ma il controllo rimane in errore perché in seguito si verifica un nuovo errore. Questa volta con la funzione PowerShell Get-BitLockerVolume. (Get-BitLockerVolume: Impossibile trovare un parametro posizionale che accetti l'argomento...)

Non ho ancora identificato in quale riga dello script di audit si verifica questo nuovo errore. Né il motivo, dato che logicamente non dovrebbero più essere utilizzati nomi di volume strani. Ma ho pensato che valesse già la pena segnalare gli errori riscontrati in questo primo ciclo for.

Aggiungerò la causa di questo nuovo errore a questo post se riuscirò a trovarla.

Buona giornata.
Vincent
VincentUCA
Messaggi: 4
Registrazione: 25 ottobre 2023 - 14:49

27 gennaio 2026 - 16:23

Ho trovato la causa del problema leggendo questa pagina:
https://community.spiceworks.com/t/how-...g/932099/5

Il problema deriva dall'utilizzo del metodo `remove` all'interno del ciclo `for`. Questo crea un comportamento imprevisto. Di conseguenza, un lettore sconosciuto non viene rimosso da `mountpoint_list`, causando il fallimento dello script.

Ho quindi seguito il suggerimento fornito nella pagina web e ho modificato il codice del pacchetto come segue per il primo ciclo for:

Codice: Seleziona tutto

    mountpoint_list_raw = ensure_list(run_powershell("(Get-BitLockerVolume).MountPoint"))
    mountpoint_list = []

    # Cleaning mountpoints (unpartitionned devices and removal devices)
    for mountpoint in mountpoint_list_raw:
        is_ignored = False
        if "?" in mountpoint:
            print("INFO: An unknow volume has been detected and will be skipped (%s)" % mountpoint)
            is_ignored = True
        elif run_powershell("Get-Volume -DriveLetter %s | Where-Object DriveType -EQ Removable" % mountpoint.replace(":", "")):
            is_ignored = True
        elif run_powershell("(Get-PhysicalDisk | Where-Object BusType -EQ USB | ForEach-Object { Get-Disk -Number $_.DeviceId | Get-Partition | Get-Volume } | Where-Object DriveLetter -EQ '%s').DriveLetter -ne $null" % mountpoint.replace(":", "")):
            is_ignored = True
        else:
            print(f"Adding '{mountpoint}' in mountpoint_list")
            mountpoint_list.append(mountpoint)
        if is_ignored:
            print(f"'{mountpoint}' will be ignored")
            #mountpoint_list.remove(mountpoint)
L'utilizzo di una seconda lista e di elif sembra risolvere tutti i problemi riscontrati con questo pacchetto, secondo i test iniziali effettuati.
Buona codifica.
Vincenzo
Risposta