putrequest_@home:~$

OverTheWire - Bandit

Zadania dostępne na stronie OverTheWire pozwalają zdobyć i szlifować umiejętności przydatne w obszarze cyberbezpieczeństwa. Są one w formie wielopoziomowych gier: każdy poziom ukrywa hasło do kolejnego poziomu.

Poniżej opisaliśmy naszą ścieżkę przez grę Bandit przeznaczonej dla początkujących entuzjastów cyberbezpieczeństwa. Dzięki niej można nauczyć się podstawowych komend i narzędzi wymaganych do rozwiązania bardziej wyszukanych wyzwań.

Level 0

Pierwszym i niezbędnym krokiem do rozpoczęcia rozwiązywania zadań było zalogowanie się do gry poprzez SSH. Można to osiągnąć za pomocą narzędzia PuTTY. Drugą opcją jest wykorzystanie komendy ssh dostępnej w terminalach Unix/Linux:

ssh bandit0@bandit.labs.overthewire.org -p 2220

Po pomyślnym połączeniu się z grą zostaniemy poproszeni o podanie hasła: bandit0.

Level 0 → Level 1

Hasło do poziomu 1 jest przechowywane w pliku readme umieszczonym w katalogu domowym. Należy wyświetlić jego zawartość:

cat readme

Hasło: boJ9jbbUNNfktd78OOpsqOltutMc3MY1

Level 1 → Level 2

Kolejne hasło jest przechowywane w pliku o nazwie - umieszczonym w katalogu domowym. Tutaj także skorzystaliśmy z narzędzia cat, ale w nieco zmienionej formie:

cat ./-

Alternatywa:

cat < -

Hasło: CV1DtqXWVFXTvM2F0k09SHz0YwRINYA9

Level 2 → Level 3

Tutaj ponownie musieliśmy się zmierzyć z wyświetleniem zawartości pliku o “nietypowej” nazwie - tym razem zawierającej spacje: spaces in this filename. Ponownie skorzystaliśmy z narzędzia cat:

cat "spaces in this filename" 

Alternatywa:

cat spaces\ in\ this\ filename

Hasło: UmHadQclWmgdLOKQ3YNgjWxGoRMb5luK

Level 3 → Level 4

Hasło zostało umieszczone w ukrytym pliku w katalogu inhere. Najpierw przeszliśmy do podanego katalogu, a następnie wyświetliliśmy jego zawartość wraz z plikami ukrytymi. Znając nazwę ukrytego pliku (.hidden), mogliśmy wyświetlić jego zawartość.

cd inhere
ls -la
cat .hidden

Hasło: pIwrPrtPN36QITSp3EQaw936yaFoFgAB

Level 4 → Level 5

Tym razem hasło zostało ukryte w jedynym pliku czytelnym dla człowieka zlokalizowanym w katalogu inhere. Zamiast ręcznie sprawdzać zawartość każdego pliku, można skorzystać z polecenia file, by określić typ pliku. Można zauważyć, że plik -file07 zawiera tekst ASCII.

cd inhere
file -- *
cat ./-file07

Hasło: koReBOKuIDDepwhWk7jZC0RTdopnAYKh

Level 5 → Level 6

Kolejne hasło jest przechowywane w pliku w katalogu inhere lub w którymś z jego podkatalogów. Ponadto spełnia poniższe kryteria:

  • czytelny dla człowieka,
  • rozmiar 1033B
  • niewykonywalny. Wykorzystaliśmy narzędzie find i podaliśmy odpowiednie argumenty. Jedynym plikiem spełniającym kryteria okazał się .file2 z katalogu maybehere07.
cd inhere
find ./ -size 1033c -not -executable
./maybehere07/.file2

Hasło: DXjZPULLxYr17uwoI01bNLQbtFemEgo7

Level 6 → Level 7

Aby dostać się na kolejny poziom, należy odnaleźć plik ukryty gdziekolwiek na serwerze spełniający poniższe kryteria:

  • posiadany przez użytkownika bandit7,
  • posiadany przez grupę bandit6,
  • rozmiar 33B. Ponownie użyliśmy narzędzia find. W wyniku otrzymaliśmy długą listę plików, ale tylko do jednego mieliśmy przyznane uprawnienia. To w nim znaleźliśmy hasło.
find ./ -size 33c -group bandit6 -user bandit7
cat /var/lib/dpkg/info/bandit7.password

Hasło: HKBPTKQnIay4Fw76bEy8PVxKEDQRKTzs

Level 7 → Level 8

Hasło do następnego pliku zostało umieszczone w pliku data.txt tuż obok słowa millionth. W takich przypadkach sprawdza się narzędzie grep służące do wyszukiwania fraz lub wzorców w plikach.

grep millionth data.txt

Hasło: cvX2JJa4CFALtqS87jk27qwqGhBM9plV

Level 8 → Level 9

Hasło ponownie zostało ukryte w pliku data.txt, lecz tym razem w wierszu, którego zawartość pojawia się w pliku tylko raz. Wykorzystaliśmy narzędzie sort sortujące wiersze w porządku alfabetycznym wraz z poleceniem uniq zwracającym jedynie niepowtarzające się wiersze.

sort data.txt | uniq -u

Hasło: UsvVyFSfZZWbi6wgC7dAFyFuR6jQQUhR

Level 9 → Level 10

Kolejne zadanie jest podobne do dwóch poprzednich. Hasło znajduje się w pliku data.txt w jednym z niewielu wierszy czytelnych dla człowieka. Ponadto zostało poprzedzone wieloma znakami =.

cat data.txt | strings | grep ===

Hasło: truKLdjsbJ5g7yyJ2X2R0o3a5HQJFuLk

Level 10 → Level 11

W celu zdobycia kolejnego hasła należało odczytać zawartość pliku data.txt zawierającego dane zakodowane przy użyciu base64.

cat data.txt | base64 -d

Hasło: IFukwKGsFW8MOq3IRFqrxE1hxTNEbUPR

Level 11 → Level 12

Hasło ponownie zostało umieszczone w pliku data.txt, ale teraz wszystkie małe oraz wielkie litery zostały przesunięte o 13 pozycji. Jest to szyfr przesuwający ROT13. Do odszyfrowania użyliśmy narzędzia tr służącego do tłumaczenia oraz usuwania znaków.

cat data.txt | tr 'a-zA-Z' 'n-za-mN-ZA-N'

Hasło: 5Te8Y4drgCRfCx8ugdwuEX8KFC6k2EUu

Część dalsza rozwiązania pojawi się wkrótce…

Autor: Kinga Skrętkowicz