04-02-2021 / Od 0 do pentestera

Pytania rekrutacyjne na juniora

Nie jestem fanem pytań pamięciowych o konkretne przełączniki.

Pytania pamięciowe

To tylko hipotetycze pytania - potraktuj je jako trening. Mogą one paść podczas rozmowy kwalifikacyjnej na pentestera - ale nie muszą. To bardziej informacja dla Ciebie co powinieneś wiedzieć i co warto doczytać.

Nie wyjaśniam tutaj szczegółowo o co chodzi w danym temacie. Bardziej tłumaczę, dlaczego ja zadałbym takie pytania i co chciałbym sprawdzić przy ich pomocy.

Podstawy

Autoryzacja vs uwierzytelnianie

Uwierzytelnianie - weryfikacja tożsamości użytkownika np. za pomocą hasła.

Autoryzacja - prawo do wykonania konkretnej operacji/dostępu do konkretnego pliku

Te pojęcia są ze sobą często mylone. Powinieneś wiedzieć, że mają różne znaczenia.

Gdzie prowadzi adres 127.0.0.1

Komunikacja z adresem 127.0.0.1 oznacza wymianę informacji wewnątrz danego hosta.

Sprawdzamy podstawowe wiadomości o sieciach komputerowych. Alternatywnie można zapytać o adres 127.0.0.2. Powinno paść słowo kluczowe loopback. Loopback to wirtualne urządzenie sieciowe.

Szyfrowanie

Algorytm symetryczny - wykorzystuje pojedynczy klucz - do szyfrowania i deszyfrowania.

Kryptografia asymetryczna - jeden z kluczy jest dostępny publicznie. Każdy może go użyć do zaszyfrowania wiadomości. Tylko posiadacz drugiego, tajnego klucza może odszyfrować taką wiadomość.

Podstawowa wiedza z zakresu kryptografii. Czy potrafisz podać przykład wykorzystania algorytmu asymetrycznego?

Haszowanie

Szyfrowanie - proces zamiany tekstu jawnego (zrozumiałego dla człowieka) w szyfrogram.

Haszowanie - wyliczenie przy użyciu funkcji skrótu ciągu znaków o stałej długości. Jest to proces nieodwracalny.

Pytanie można zadać na wiele sposobów. Jak przechowywać hasła użytkowników w bazie danych? Jak sprawdzić, czy plik nie został zmodyfikowany?

Protokół bezstanowy

Protokół bezstanowy - nie zachowuje żadnych informacji o poprzednich transakcjach. Każde żądanie jest rozpatrywane niezależnie od innych.

Definicja to jedno - zrozumienie to drugie. Czy rozumiesz skąd serwer wie kim jesteś po zalogowaniu?. Dlaczego używamy ciasteczek?

Żądanie HTTP

Żądanie HTTP składa się z metody, adresu, wersji protokołu, nagłówków.

Jeżeli używałeś Burpa to wiesz, że mamy żądania GET/POST. Potrafisz podać popularne nagłówki (cookie, user agent). Wiesz, że są one rozdzielone znakiem CRLF. Po co nagłówek Content-Length?

Kody błędów

503 - usługa niedostępna.

404 - strona nie istnieje (nie znaleziono)

301 - trwale przeniesiony

Kody błędów to istotna informacja. Wiesz, że informacje diagnostyczne mogą być przydatne. Rozumiesz, jak działają narzędzia w stylu dirbuster.

/etc/passwd

/etc/passwd - nazwa, identyfikator, grupa podstawowa, katalog domowy, powłoka.

/etc/shadow - nazwa, hasło (w formie hasza), data zmiany hasła.

Podstawowa wiedza z zakresu Linuxa. Jeżeli rozwiązywałeś jakieś zadania to pewno odczytywałeś plik /etc/passwd. Można zapytać o inne komendy: chmod, ls.

TCP i UDP

TCP - wysoce niezawodny, wykorzystuje three-way handshake.

UDP - nadawca nie czeka aż odbiorca odbierze pakiety, po prostu kontynuuje wysyłanie.

Czy potrafisz wytłumaczyć dlaczego HTTP korzysta z TCP a nie UDP?

OWASP

SQL Injection

Jeżeli programista nie używa "prepared statement" tylko łączy dane od użytkownika z zapytaniem może dojść do "wstrzyknięcia" dodatkowych warunków/danych.

Potrafisz wyjaśnić na czym polega SQL Injection. Wiesz co to UNION, SELECT i LIMIT. Kojarzysz pojęcie Blind SQL Injection.

Inne rodzaje wstrzyknięć
  • CSS injection
  • NoSQL injection
  • LDAP injection
  • Command injection
  • Server-side template injection

SQL Injection to oczywisty typ wstrzyknięcia. Ale istnieją też mniej znane. Sprawdzam, czy je kojarzysz.

Zasada najmniejszego uprzywilejowania

Principle of least privilege - każdy element systemu ma dostęp tylko do tych informacji, które są niezbędne do spełnienia wyznaczonych mu celów/zadań.

Nie tylko znasz definicję, ale potrafisz podać przykład. Jeżeli sekretarka korzysta tylko z emaila nie powinna mieć dostępu do bazy danych lub serwerów produkcyjnych.

Reflected - kod jest zaszyty w linku przesłanym do ofiary.

Stored - kod jest zapisany w bazie (lub innym podobnym miejscu).

DOM - użyto niebezpiecznych funkcji w JS (innerHTML/eval).

Wiesz co to XSS i dlaczego jest niebezpieczny. Kojarzysz co to onerror, onclick. Rozumiesz czym różni się innerHTML od innerText.

Zapomniane hasło

Nie - bo nie powinieneś go znać 😉

Wiesz, że hasła nie powinny być przechowywane jako plain text. Potrafisz wyjaśnić procedurę resetowania hasła.

XXE

XXE - przetwarzanie złośliwego pliku XML może doprowadzić do odczytania zawartości pliku z atakowanej maszyny.

Wiesz, co to XML. Znasz pojęcie encji.

Race condition

Kupony rabatowe w sklepach

Race Condition - niektóre akcje w systemie mogą się wykonać tylko raz

Co jeśli wyślemy wiele żądań w tym samym momencie?

Czy wykonają się raz a może wiele razy?

Świetnie, jeżeli znasz moduł Intruder. Albo Turbo Intruder. A może potrafisz podać inne przykłady?

Damn Vulnerable Web Application

Damn Vulnerable Web Application - specjalnie przygotowana aplikacja

która posiada błędy bezpieczeństwa. Można na niej szlifować swoje umiejętności.

Znajomość OWASP to podstawa. Jeżeli czytałeś - to raczej na pewno natknąłeś się na ten projekt. Nie używałeś? To może zgadniesz na podstawie nazwy.

Bug bounty

CVE

Common Vulnerabilities and Exposures - identyfikator odpowiadający

powszechnie znanym podatnościom, standard ich nazewnictwa.

Odnalezionym błędom można przypisać numery. Wiesz, że firmy podają je w swoich komunikatach. Znasz Exploit Database (lub inne miejsca).

Bug bounty

Bug Bounty - to formalne zaproszenie do zgłaszania odnalezionych podatności. Czasami można za nie otrzymać nagrodę (również finansową).

Znasz popularne platformy (HackerOne, BugCrowd). Wiesz, że można czytać (niektóre) raporty innych osób. Może brałeś udział w takim programie (i coś znalazłeś).

Google dorks

Google Hacking - wykorzystanie zapytań do wyszukiwarki, które pozwalają na odszukanie przydatnych informacji.

Wiesz co to Shodan. Kojarzysz termin głębokie ukrycie. Potrafisz stworzyć ukryty plik.

Box

Testy czarnej skrzynki - osoba testująca nie zna budowy programu poddanego testom.

Testy białej skrzynki - mamy dostęp do kodu źródłowego i dokumentacji systemu.

Grey box - połączenie metody black box z white box.

Może znasz potencjalnie niebezpieczne funkcje w różnych językach. Wiesz co oznacza pojęcie rekonesansu. Znasz pojęcie certificate transparency log.

Inne

Phishing

Phishing - metoda oszustwa, w której przestępca podszywa się pod kogoś lub coś w celu wyłudzenia informacji (np. loginu i hasła).

Używasz menadżera haseł. Wiesz co to 2FA/U2F.

Open source

To, że oprogramowanie jest Open Source nie oznacza od razu, że jest bezpieczne. Programy tworzą ludzie, którzy popełniają błędy.

Pytanie otwarte, zachęcające do dyskusji. Potrafisz wskazać plusy i minusy projektów open source. Znasz pojęcie security through obscurity.

HTTPS

Certyfikat zawiera:

  • datę ważności
  • numer seryjny
  • informację o podmiocie
  • adres listy CRL
  • dane wystawcy

Rozumiesz po co są certyfikaty. Wiesz, że mają określoną datę ważności. Kojarzysz, że są różne, główne urzędy certyfikacji. Pewno samemu instalowałeś certyfikat dla BURPa.

Po co szyfrujemy dane

Chronimy dane, które mogą wpaść w ręce przestępców (jeśli ukradną laptopa).

Pytanie otwarte - prowokujące do rozmowy. Wiesz jak działa ekran logowania komputera. Rozumiesz, że można bootować laptopa z pendrive.

SOP

SOP - to istotny mechanizm bezpieczeństwa, który określa sposób, w jaki dokument lub skrypt jednego pochodzenia (origin) może komunikować się z zasobem innego pochodzenia. Pozwala to na odizolowanie potencjalnie szkodliwych dokumentów i tym samym redukowane są czynniki sprzyjające atakom.

https://developer.mozilla.org/pl/docs/Web/Bezpiecze%C5%84stwo/Same-origin_policy

Origin = protokół, domena i port. Potrafisz wyjaśnić po co ta izolacja. Znasz pojęcia CORS, JSONP.

Narzędzia
  • Burp
  • ZAP
  • Metasploit
  • NMAP
  • WireShark
  • HashCAT
  • SQLmap
  • DirBuster
  • WFUZZ
  • IDA
  • Ghidra

Alternatywnie: jak wysłać zmodyfikowane żądanie do serwera? Wymienione narzędzia nie mają większego znaczenia. Sprawdzamy, czy wiedza nie jest tylko teoretyczna. Czy potrafisz opisać co robią te narzędzia. Umiesz wykonać daną pracę ręcznie.

URL
 http://hans:[email protected]:8080/demo/example.cgi?land=de&stadt=aa
 \__/   \__/ \____/ \_____________/ \__/\_______________/ \______________/
  |      |     |           |         |          |                 |
  |    login   |          host      port     ścieżka           ścieżka
 protokół    hasło  (adres serwera)         do zasobu        wyszukiwania
 https://pl.wikipedia.org/wiki/Uniform_Resource_Locator  

Można to pytanie dodatkowo rozszerzyć. Jak nazywa się część po #. Czy jest ona wysyłana do serwera?

Numery portów
  • 20 - FTP
  • 22 - SSH
  • 53 - DNS
  • 80 - HTTP
  • 443 - HTTPS
  • 445 - SMB
  • 3306 - MySQL

Wiesz co to nmap. Rozumiesz, że testować można nie tylko aplikacje webowe. Potrafisz wymienić kilka znanych portów.

Eskalacja uprawnień

Eskalacja uprawnień – zdobycie uprawnień do zasobów, które normalnie nie są dostępne.

Rozumiesz, że systemy działają na różnych poziomach uprawnień. Wiesz czym różni się zwykłe konto od konta administratora. Wiesz co to SUID.

Jak chronisz swoje bezpieczeństwo
  • Menadżer haseł
  • 2FA
  • Antywirus
  • Aktualizacje oprogramowania
  • Maszyny wirtualne
  • Firewall

Jeżeli rzeczywiście interesujesz się bezpieczeństwem to pewno zastanawiałeś się jak chronić swoją pocztę. Rozumiesz, że ktoś może się na nią włamać.

Jak przetestować stronę logowania
  • czy strona ma captcha, rate limiting
  • czy wspiera 2FA/U2F
  • jak działa resetowanie hasła
  • jak działa rejestracja (ticket trick)
  • czy mogę sprawdzić kto posiada konto (a kto nie)
  • jakie komunikaty błędów są zwracane (reflected XSS)
  • SQL Injection/NoSQL Injection
  • jak przechowywane jest hasło?

Pytanie otwarte - sprawdzające jak myślisz. Strona logowania (to teoretycznie) tylko prosty formularz. Czy rozumiesz jak działa od środka.

Interesujący błąd

Dowolny exploit/błąd na który natknąłeś się podczas swojej nauki.

Jeżeli rozwiązywałeś jakieś zadania praktyczne musiałeś wykorzystywać gotowe exploity. Często wymagają one drobnych modyfikacji. Opisując je - wiem, że coś robiłeś.

CSRF

CSRF - wykonanie żądania do serwera przez przeglądarkę użytkownika. Sprawdzamy czy serwis wykorzystuje nagłówki/parametry anty CSRF. Wysyłamy żądanie bez nich i sprawdzamy, czy się powiodło.

Wytłumaczenie CSRF może być trudne. Spróbuj wytłumaczyć to na przykładzie banku i wysłania przelewu.

Deserializacja

Java, Python, PHP, .NET

Serializacja - proces przekształcania obiektów w strumień bajtów.

Deserializacja - proces odwrotny do serializacji.

Serializacja może być trudna do zrozumienia przez osoby bez znajomości programowania.

Aplikacje mobilne

Można zdekompilować aplikację. Można dodać nowy, główny urząd certyfikacji do telefonu. Można przepuścić ruch przez zewnętrzny serwer proxy. Burp Suite.

Aplikacje mobilne to nie coś, co testują początkujący. Taka wiedza może zostać pozytywnie odebrana. Wymaga kilku umiejętności - aby wszystko działało.

Path traversal
  • ../
  • ..\

A czy wiesz gdzie może wystąpić taka podatność (i dlaczego)?

MS08-067

MS08-067 - Unauthenticated RCE jako SYSTEM z powodu buffer overflow w RPC.

Przecież to historia? Jeżeli robiłeś jakieś boxy (w stylu Hack The Box) to pewno się na to natknąłeś.

Linux
  • Maszyna wirtualna
  • WSL
  • Docker

Jeżeli zaczynasz swoją przygodę z bezpieczeństwem to pewno korzystasz z Windowsa. Jeżeli robiłeś praktyczne zadania to raczej na pewno natknąłeś się na ten problem.

Raport
  • Waga błędu
  • Nazwa podatności
  • Opis
  • Przykładowe żądania
  • Rekomendacje naprawy

Oczywistym jest, że sam pewno nie tworzyłeś takiego raportu. Ale jeżeli czytałeś opisy błędów - to masz rozeznanie. Co w nich jest a czego tam nie ma.

Programowanie

Język nie ma znaczenia.

Jeśli nie znasz - to może inaczej poradzisz sobie z problemem. Może znasz jakieś platformy no-code? Może wykorzystasz jakieś narzędzia z interfejsem GUI?

Red Team

Red Team - zespół osób, które symulują realistyczne ataki na firmy.

Czy interesowałeś się innymi działkami bezpieczeństwa? A może Reverse Engineering? Skąd wiesz, że to pentesting jest dla Ciebie najlepszy?

Newsletter

Wyrażam zgodę na przetwarzanie moich danych osobowych przez Kacpra Szurka w celu otrzymywania newslettera za pomocą e-maila, informacji o promocjach, nowościach, produktach blogowych i usługach własnych oraz innych, polecanych osób, zgodnie z polityką prywatności.