Página 1 de 1

tis-audit-bitlocker

Publicado: 27 de enero de 2026 - 10:31
por VincentUCA
Hola,
estoy teniendo problemas con la función de auditoría en este paquete.

En algunas de nuestras máquinas, la función de PowerShell "(Get-BitLockerVolume).MountPoint" devuelve letras de unidad inusuales como: \\?\Volume{2d8e1378-6a0d-4197-49d0-fe4e2f18cd72}.

Más adelante en el código del paquete, un bucle for (for mountpoint in mountpoint_list:) nos permite ignorar estas unidades usando una is_ignored.
Si se cumple la condición ? en mountpoint (if "?" in mountpoint:), entonces la is_ignored se establece en True, y por lo tanto la unidad se ignorará para el resto de la función de auditoría. Esto está bien.

Mi problema surge de las otras condiciones que se prueban después en el mismo bucle. Estas son sentencias if adicionales, y por lo tanto se prueban incluso si se cumple la primera condición. Sin embargo, por ejemplo, en la segunda condición, la función "Get-Volume -DriveLetter %s | Where-Object DriveType -EQ Removable" genera un error en el paquete. El error devuelto es "Get-Volume: No se puede encontrar un parámetro posicional que acepte 2d8e1378-6a0d-4197-49d0-fe4e2f18cd72", etc.
Está claro que el argumento DriveLetter no acepta el nombre de volumen inusual que se le da. O tal vez las llaves {} están causando un error de sintaxis.

Solucioné este problema comenzando las condiciones con: if not is_ignored and. Pero mientras escribo este mensaje, me doy cuenta de que probablemente obtendría el mismo resultado usando instrucciones elif.

Con esta modificación, el paquete funciona un poco mejor. La clave de BitLocker se recupera de Active Directory y la consola WAPT. Pero la auditoría sigue en error porque ocurre un nuevo error después. Esta vez con la función de PowerShell Get-BitLockerVolume. (Get-BitLockerVolume: No se pudo encontrar un parámetro posicional que acepte el argumento...)

Todavía no he identificado en qué línea del script de auditoría ocurre este nuevo error. Ni por qué, ya que lógicamente, no deberían usarse nombres de volumen extraños. Pero pensé que ya valía la pena informar sobre los errores encontrados en este primer bucle for.

Agregaré la causa de este nuevo error a esta publicación si logro encontrarla.

Que tenga un buen día.
Vincent

Re: tis-audit-bitlocker

Publicado: 27 de enero de 2026 - 16:23
por VincentUCA
Encontré la causa del problema leyendo esta página:
https://community.spiceworks.com/t/how-...g/932099/5

El problema surge al usar el método `remove` dentro del bucle `for`. Esto genera un comportamiento inesperado. Como resultado, un lector extraño no se elimina de `mountpoint_list`, lo que provoca un error en el script.

Entonces seguí el consejo dado en la página web y modifiqué el código del paquete de la siguiente manera para el primer bucle for:

Código: Seleccionar todo

    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)
El uso de una segunda lista además de elif parece resolver todos los problemas encontrados con este paquete según las pruebas iniciales realizadas.
Buena codificación.
Vicente