Opis maszyny
I received a suspicious email with a very weird looking attachment. It keeps on asking me to „enable macros”. What are those?
Analiza
Zastrzeżenie: We wpisach opisujących CTFy nie znajdziesz gotowych flag do wklejenia na THM, znajdziesz natomiast wskazówki jak samemu rozwiązać dany problem.
Analizę rozpocząłem od znalezienia kodu makra w podejrzanym pliku. Aby to zrobić wszedłem w Tools -> Macros -> Edit Macros i wybrałem makro [MrPhisher.docm].Project. Kod który zobaczyłem:
Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub Format()
Dim a()
Dim b As String
a = Array(102, 109, 99, 100, 127, 100, 53, 62, 105, 57, 61, 106, 62, 62, 55, 110, 113, 114, 118, 39, 36, 118, 47, 35, 32, 125, 34, 46, 46, 124, 43, 124, 25, 71, 26, 71, 21, 88)
For i = 0 To UBound(a)
b = b & Chr(a(i) Xor i)
Next
End Sub
Co robi skrypt? Najpierw tworzy tablicę a, później tablicę b jako tablicę znaków. Do tablicy a są przypisywane wartości liczbowe. Po przypisaniu każda z tych wartości jest w pętli przeliczana za pomocą metody xor do tablicy b z tablicy a. Wrzucając do AI możemy otrzymać od razu odkodowaną wartość, ale poniżej pokażę jak ręcznie rozkodować taki ciąg. W tym celu przygotowałem krótki skrypt dekodujący w Pythonie:
a = [102, 109, 99, 100, 127, 100, 53, 62, 105, 57, 61, 106, 62, 62, 55, 110, 113, 114, 118, 39, 36, 118, 47, 35, 32, 125, 34, 46, 46, 124, 43, 124, 25, 71, 26, 71, 21, 88]
b = ""
for i in range(len(a)):
x=a[i]^i #XOR wartosci z indeksem - w orginalnym kodzie: a(i) Xor i
znak=chr(x) #zmiana wartosci liczbowej na znak - w orginalnym kodzie: Char(///)
b=b+znak #skladanie stringa - w orginalnym kodzie b=b & Char...
print(b)

Uruchamiając ten skrypt otrzymujemy flagę