TryHackMe – Mr. Phisher

TryHackMe – Mr. Phisher

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ę