Illumination
A Junior Developer just switched to a new source control platform. Can you find the secret token?
Po ściągnięciu plików uruchamiamy terminal, rozpakowujemy i sprawdzamy zawartość ściągniętego archiwum.
┌──(bugspace㉿kali)-[~/Downloads/Illumination.JS]
└─$ la -a
. .. bot.js config.json .git
Okazuje się, że wśród plików znajduje się folder z plikami do kontroli wersji repozytorium git. Wchodzimy do niego i sprawdzamy logi gita.
┌──(bugspace㉿kali)-[~/Downloads/Illumination.JS]
└─$ git log
commit edc5aabf933f6bb161ceca6cf7d0d2160ce333ec (HEAD -> master)
Author: SherlockSec <dan@lights.htb>
Date: Fri May 31 14:16:43 2019 +0100
Added some whitespace for readability!
commit 47241a47f62ada864ec74bd6dedc4d33f4374699
Author: SherlockSec <dan@lights.htb>
Date: Fri May 31 12:00:54 2019 +0100
Thanks to contributors, I removed the unique token as it was a security risk. Thanks for reporting responsibly!
commit ddc606f8fa05c363ea4de20f31834e97dd527381
Author: SherlockSec <dan@lights.htb>
Date: Fri May 31 09:14:04 2019 +0100
Added some more comments for the lovely contributors! Thanks for helping out!
commit 335d6cfe3cdc25b89cae81c50ffb957b86bf5a4a
Author: SherlockSec <dan@lights.htb>
Date: Thu May 30 22:16:02 2019 +0100
Moving to Git, first time using it. First Commit!
Jeden z commitów przykuwa naszą uwagę. W jego opisie jest mowa o usunięciu niebezpiecznego tokenu. Sprawdźmy więc zawartość commita.
┌──(bugspace㉿kali)-[~/Downloads/Illumination.JS]
└─$ git show 47241a47f62ada864ec74bd6dedc4d33f4374699
commit 47241a47f62ada864ec74bd6dedc4d33f4374699
Author: SherlockSec <dan@lights.htb>
Date: Fri May 31 12:00:54 2019 +0100
Thanks to contributors, I removed the unique token as it was a security risk. Thanks for reporting responsibly!
diff --git a/config.json b/config.json
index 316dc21..6735aa6 100644
--- a/config.json
+++ b/config.json
@@ -1,6 +1,6 @@
{
- "token": "SFRCe3YzcnNpMG5fYzBudHIwbF9hbV9JX3JpZ2h0P30=",
+ "token": "Replace me with token when in use! Security Risk!",
"prefix": "~",
"lightNum": "1337",
"username": "UmVkIEhlcnJpbmcsIHJlYWQgdGhlIEpTIGNhcmVmdWxseQ==",
Token, który został usunięty jest zakodowany algorytmem base64. Możemy go rozpoznać po tym, że kończy się znakiem „=
” (choć nie zawsze). Po odszyfrowaniu go dostajemy flagę. Jest to ciekawy przykład wprowadzający do zagrożeń związanych z systemem kontroli wersji git.
USB Ripper
There is a sysadmin, who has been dumping all the USB events on his Linux host all the year… Recently, some bad guys managed to steal some data from his machine when they broke into the office. Can you help him to put a tail on the intruders? Note: once you find it, „crack” it.
Po rozpakowaniu archwium dostajemy dwa pliki – auth.json
oraz syslog
. Pierwszy plik jest formatu JSON i posiada trzy klucze z listą – manufact
, prod
i serial
. W drugim pliku znajdujemy logi związane z podłączanymi do urządzenia USB.
{
"manufact": [
"100012DAF2A2121E6AF21CE1D8",
"100032F42B683A7F5ADFF7"
(...)
],
"prod": [
"10007799793A1A26BD29452610480",
"10007878E465DFB1A73B98338"
(...)
],
"serial": [
"0C09754B3AB54EC3581DA83B287685B2",
"10004BFF64FBCBAEFE4E94F4F2"
(...)
]
}
Jun 10 22:02:28 kali kernel: [ 5153.279410] usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 10 22:02:28 kali kernel: [ 5153.279411] usb 2-1: Product: 14BAC8771222E867250F0599DBB874F
Jun 10 22:02:28 kali kernel: [ 5153.279412] usb 2-1: Manufacturer: CFF576BA63D7957C6740B9FD807
Jun 10 22:02:28 kali kernel: [ 5153.279413] usb 2-1: SerialNumber: 2E8D144560E76088CF6ADD7FFD7
Jun 10 22:02:28 kali kernel: [ 5153.279414] usb-storage 2-1:1.0: USB Mass Storage device detected
Jun 10 22:02:28 kali kernel: [ 5153.279415] scsi host3: usb-storage 2-1:1.0
Jun 10 22:03:26 kali kernel: [ 5153.279416] usb 2-1: USB disconnect, device number 5
Mar 14 04:19:49 kali kernel: [ 9420.390379] usb 2-1: new high-speed USB device number 7 using ehci-pci
Mar 14 04:19:49 kali kernel: [ 9420.390380] usb 2-1: New USB device found, idVendor=5696,
Rzeczą, na którą powinnismy zwrócić uwagę, jest pole „Product:
„, „Manufacturer:
” i „SerialNumber:
„. Pola najpewniej odnoszą się do rekordów z pliku JSON. Napiszmy prosty skrypt sprawdzający, czy każda wartość dla produktu, producenta i numery seryjnego z pliku syslog
znajduje swoje odzwierciedlenie w pliku auth.json
.
import json
def iterate():
json_file = open('auth.json')
json_data = json.load(json_file)
syslog_file = open('syslog')
for line in syslog_file:
stripped_line = line.strip()
if "Product: " in stripped_line:
for prod in json_data["prod"]:
if prod in stripped_line:
break
else:
print("{} not found in {}".format(prod, stripped_line))
elif "Manufacturer: " in stripped_line:
for manufact in json_data["manufact"]:
if manufact in stripped_line:
break
else:
print("{} not found in {}".format(manufact, stripped_line))
elif "SerialNumber: " in stripped_line:
for serial in json_data["serial"]:
if serial in stripped_line:
break
else:
print("{} not found in {}".format(serial, stripped_line))
else:
pass
iterate()
Efekt działania skryptu:
┌──(bugspace㉿kali)-[~/Downloads/usb-ripper]
└─$ python3 iterateThrough.py 130 ⨯
Aug 3 07:18:01 kali kernel: [ 7364.305854] usb 1-1: SerialNumber: 71DF5A33EFFDEA5B1882C9FBDC1240C6 looks suspicious
W ten sposób wiemy, że numer seryjny „71DF5A33EFFDEA5B1882C9FBDC1240C6
” nie został znaleziony. Jest on zakodowany algorytmem md5. Spróbujmy zatem go złamać używając narzędzia John The Ripper. Najpierw wrzucamy hash do pliku md5hash, a następnie używamy poniższego polecenia.
┌──(bugspace㉿kali)-[~/Downloads/usb-ripper]
└─$ john --format=raw-md5 md5hash --wordlist=/usr/share/wordlists/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=16
Press 'q' or Ctrl-C to abort, almost any other key for status
**************** (?)
1g 0:00:00:00 DONE (2021-08-15 22:21) 100.0g/s 307200p/s 307200c/s 307200C/s my3kids..dangerous
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed
Nasze złamane hasło (zakryte gwiazdkami :)) jest jednocześnie szukaną flagą.