tis-audit-bitlocker

Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés se proporciona en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada (1.8.2 / 2.0 / 2.1 / 2.2 / etc.) ASÍ COMO la edición Enterprise / Discovery.
* Especifique el sistema operativo del servidor (Linux / Windows) y la versión (Debian Stretch/Buster - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes (Windows 7 / 10)
. * Como en cualquier foro de la comunidad, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte de ventas, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55
Respuesta
VincentUCA
Mensajes: 4
Inscripciones: 25 oct 2023 - 14:49 horas.

27 de enero de 2026 - 10:31

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
VincentUCA
Mensajes: 4
Inscripciones: 25 oct 2023 - 14:49 horas.

27 de enero de 2026 - 16:23

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
Respuesta