HackTheBox: Free Services

Intergalactic Federation stated that it managed to prevent a large-scale phishing campaign that targeted all space personnel across the galaxy. The enemy's goal was to add as many spaceships to their space-botnet as possible so they can conduct distributed destruction of intergalactic services (DDOIS) using their fleet. Since such a campaign can be easily detected and prevented, malicious actors have changed their tactics. As stated by officials, a new spear phishing campaign is underway aiming high value targets. Now Klaus asks your opinion about a mail it received from "sales@unlockyourmind.gal", claiming that in their galaxy it is possible to recover it's memory back by following the steps contained in the attached file.

Information

Challenge: Free Services

Category:
Forensics

Difficulty:
Easy

Files : ‘Free Services.zip’ 115 KB
free_decryption.xlsm 137 KB

Environment: Remnux VM

 

My Recommendations

Download it from hackthebox and verify it with:

sha256sum /path/to/'Free Services.zip'

SHA256SUM: 

c2eca3cf104ec8cabdebe3e88aba3c5d544dc03957616c0c685cb851cfe0d791

Walkthrough

1. Document Analysis

Looking at the file with Olevba, vMonkey, or even xlmdeobfuscator returns nothing. So instead of waiting around, I’m going to open the file:

				
					libreoffice free_decryption.xlsm
				
			

and this is basically what is going on. The integers in Column E, F G are xored with 24.  So I export the Macro1 sheet as ‘macro1.csv’ and open it in Python.

				
					import pandas
column_names = ['A','B','C','D','E','F','G']
df = pandas.read_csv("macro1.csv", names=column_names)

df['E'] = df['E'].astype("Int64")
df['F'] = df['F'].astype("Int64")
df['G'] = df['G'].astype("Int64")
df.F[257] = 0
df.G[257] = 0

xored_dict = []
for idx, rows in df.iterrows():
    xored_dict.append(df.loc[idx, 'E'] ^ 24)
    xored_dict.append(df.loc[idx, 'F'] ^ 24
    xored_dict.append(df.loc[idx, 'G'] ^ 24)

''.join(chr(i) for i in xored_dict)
				
			

It returns some nonsense, but you can find the common flag strings at the end of the string:

it seems like every other character needs to be kicked out.

				
					chars = [chr(i) for i in xored_dict]
print(''.join(chars[::2]))
				
			

and here is the flag! 

Flag: HTB{1s_th1s_g4l4xy_l0st_1n_t1m3??!}

Discover more from forensicskween

Subscribe now to keep reading and get access to the full archive.

Continue reading

Exit mobile version
%%footer%%