elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [APORTE] [PowerShell] Ejemplo para modificar los niveles de integridad de directorios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [APORTE] [PowerShell] Ejemplo para modificar los niveles de integridad de directorios  (Leído 161 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.921



Ver Perfil
[APORTE] [PowerShell] Ejemplo para modificar los niveles de integridad de directorios
« en: Ayer a las 07:57 »

El siguiente script, desarrollado en PowerShell, es una simple demostración de como podemos especificar un array de directorios para modificar su nivel de integridad, mediate el uso del comando ICACLS de Microsoft Windows.

Acerca de los niveles de integridad:
  👉 https://hacktricks.boitatech.com.br/windows/windows-local-privilege-escalation/integrity-levels

Cuando navegamos por un directorio con un nivel de integridad bajo, se nos mostrará la siguiente ventana de advertencia cuando se intenten copiar o mover archivos dentro o fuera de dicho directorio (utilizando el menú contextual de cortar / copiar / pegar):



Pueden comprobarlo en el directorio "C:\Users\{USUARIO}\AppData\LocalLow", que por defecto tiene un nivel de integridad bajo (Low) a menos que de alguna extraña forma esto se haya modificado en su sistema operativo.



Este comportamiento de advertencia puede resultar muy molesto, pero podemos deshacernos de esa ventana de advertencia cambiando el nivel de integridad por uno más alto (Medium):





El script lo he escrito de tal manera que se pueda embedir en un Batch-script:

Código
  1. powershell.exe -NoProfile -ExecutionPolicy Bypass -Command ^
  2. "$folders = @{^
  3.    \"$env:USERPROFILE\AppData\Local\"    = @{level = 'Medium'; recurse = $false};^
  4.    \"$env:USERPROFILE\AppData\LocalLow\" = @{level = 'Medium'; recurse = $true};^
  5.    \"$env:USERPROFILE\AppData\Roaming\"  = @{level = 'Medium'; recurse = $false};^
  6.    \"$env:USERPROFILE\Desktop\"          = @{level = 'Medium'; recurse = $false};^
  7.    \"$env:USERPROFILE\Documents\"        = @{level = 'Medium'; recurse = $false};^
  8.    \"$env:USERPROFILE\Downloads\"        = @{level = 'Medium'; recurse = $false};^
  9.    \"$env:USERPROFILE\Favorites\"        = @{level = 'Medium'; recurse = $false};^
  10.    \"$env:USERPROFILE\Links\"            = @{level = 'Medium'; recurse = $false};^
  11.    \"$env:USERPROFILE\Music\"            = @{level = 'Medium'; recurse = $false};^
  12.    \"$env:USERPROFILE\Pictures\"         = @{level = 'Medium'; recurse = $false};^
  13.    \"$env:USERPROFILE\Videos\"           = @{level = 'Medium'; recurse = $false};^
  14. };^
  15. $sortedFolders = $folders.Keys ^| Sort-Object;^
  16. Write-Output \"Applying folder integrity levels...\";^
  17. Write-Output \"\";^
  18. Write-Output \"Level  | Recursive | Directory\";^
  19. Write-Output \"-------|-----------|----------\";^
  20. foreach ($folder in $sortedFolders) {^
  21.    $level = $folders[$folder].level;^
  22.    $recurseFlag = if ($folders[$folder].recurse) { '/T' } else { '' };^
  23.    $recurseText = if ($folders[$folder].recurse) { 'Yes' } else { 'No ' };^
  24.    Write-Output \"$level | $recurseText       | $folder\";^
  25.    ICACLS.exe \"$folder\" $recurseFlag /Setintegritylevel \"(OI)(CI)$level\" 2^>^$null 1^>^$null^
  26. }"



El cambio de nivel de integridad tiene efecto inmediato, no es necesario reiniciar sesión de usuario ni el PC.

* ⚠️ Antes de utilizar ese script, configurar el array con las rutas de los directorios que deseen incluir.



Como alternativa, les dejo este módulo de PowerShell, basado en la API de Windows para quien desee llevar a cabo una gestión más directa y sofisticada de los niveles de integridad sin necesidad de recurrir a comandos externos del sistema operativo como ICACLS:

  👉 https://github.com/jborean93/PSIntegrity/blob/master/PSIntegrity/PSIntegrity.psm1

Cmdlets incluídos:
Citar
Get-IntegrityLabel: Gets an instance of BaseObjectLabel for the resource specified
Remove-IntegrityLabel: Removes the mandatory integrity label set on an object
Set-IntegrityLabel: Adds or changes the mandatory integrity label set on an object

Atentamente,
Elektro.


« Última modificación: Ayer a las 08:05 por Eleкtro » En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines