Cómo ejecutar cmd.exe o powershell.exe con una imagen renombrada a .bat

Si algo caracteriza al hacking es la creatividad a la hora de encontrar caminos alternativos para alcanzar un destino que a priori no es alcanzable... y hoy traemos un buen ejemplo. 

Se trata de un post de Rickard en el que utiliza el algoritmo de codificación a la hora de guardar imágenes BMP de 24 bits, aprovechando las conversiones de los colores RGB a datos ASCII para llamar a cualquier ejecutable, renombrando previamente la imagen a un .bat eso sí. 

En cristiano... podemos usar una imagen .bmp para ejecutar por ejemplo cmd.exe o powershell.exe y evadiendo así algunos controles.

En el post de tzusec tenéis paso a paso como crear la imagen con Paint... pixel a pixel. ¿Qué pereza no? Si no quieres dejarte los ojos puedes utilizar un simple script en Python con Pillow por ejemplo:

from PIL import Image

# Crea una imagen 1x6
img = Image.new('RGB', (6,1), (0,0,0))
pixels = img.load()

# Configura los valores RGB para cada pixel
pixels[0,0] = (10, 0, 0)
pixels[1,0] = (13, 10, 13)
pixels[2,0] = (100, 109, 99)
pixels[3,0] = (120, 101, 46)
pixels[4,0] = (0, 0, 101)
pixels[5,0] = (0, 0, 0)

# Guarda la imagen en un Bitmap de 24-bits
img.save('6pixels.bmp', format='bmp')


Y ahora veréis que estos 6 inofensivos pixeles:


si lo renombramos a .bat y ejecutamos nos abrirá un cmd.exe: 


y lo mismo con powershell:
from PIL import Image

# crea una imagen con una fila de 6 pixels
width = 6
height = 1

# Define los valores RGB para cada pixel
pixels = [(10, 0, 0), (13, 10, 13), (119, 111, 112), (115, 114, 101), (108, 101, 104), (0, 0, 108)]

# Crea el objeto imagen
img = Image.new("RGB", (width, height), "white")

# Pon los valores RGB en la image
img.putdata(pixels)

# Guarda la imagen en formato Bitmap de 24-bit
img.save("6pixels.bmp", format="BMP")

Increíble verdad... pues otro truquito más para el arsenal ;)

Comentarios