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
0
enC1
e itera hasta772
en pasos de2
- Usa XOR entre la celda activa y
24
y lo interpreta como un carácter - Almacena el resultado en
B1
- Escribe el carácter de
B1
en 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??!}