Pytania rekrutacyjne na juniora

Rozpoczynasz swoją przygodę z bezpieczeństwem? Przeczytałeś kilka książek i wziąłeś udział w kilku kursach. Co powinieneś wiedzieć? Spróbujmy razem odpowiedzieć na pytania, które możesz usłyszeć podczas rozmowy kwalifikacyjnej.

Opublikowano 02.01.2023 18:15

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

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

Uwierzytelnianie vs autoryzacja

  • 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.

Czym różni się szyfrowanie symetryczne od asymetrycznego?

  • 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?

Różnica między szyfrowaniem a haszowaniem

  • 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?

Co oznacza, że HTTP jest protokołem bezstanowym?

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?

Z jakich elementów składa się żą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?

Czym różni się kod błedu 503 od 404 i 301?

  • 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.

Czym różni się plik /etc/passwd od /etc/shadow?

  • /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: chmodls.

TCP vs 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

Co jest głównym powodem błędów typu 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 UNIONSELECT i LIMIT. Kojarzysz pojęcie Blind SQL Injection.

Czy znasz 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.

Na czym polega 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.

Jakie znasz rodzaje ataków XSS?

  • 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 onerroronclick. Rozumiesz czym różni się innerHTML od innerText.

Użytkownik zapomniał hasła. Czy mogę mu je wysłać mailem?

Nie - bo nie powinieneś go znać 😉

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

Wytłumacz 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.

Gdzie możemy natrafić na błąd typu 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?

Czy korzystałeś z 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

O co chodzi z numerami 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).

Na czym polega 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 (HackerOneBugCrowd). Wiesz, że można czytać (niektóre) raporty innych osób. Może brałeś udział w takim programie (i coś znalazłeś).

Co oznacza pojęcie 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.

Różnica między testem black box i white 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

Dlaczego phishing jest niebezpieczny?

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.

Czy oprogramowanie open source jest bezpieczne?

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.

Jakie informacje można znaleźć w certyfikacie SSL?

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 dyski twarde?

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.

Wyjaśnij mechanizm 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.

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

Jakich narzędzi używasz na co dzień?

  • 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.

Czy adres URL może zawierać login i hasło?

 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

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

Wymień popularne 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.

Co oznacza privilege escalation?

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.

Opisz błąd, który Cię zainteresował

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ś.

Jak szukać błędów 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.

Jakie języki są podatne na niebezpieczną deserializację?

  • 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.

Jak przetestujesz aplikację mobilną?

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.

Jak sprawdzić czy strona jest podatna na path traversal?

  • ../
  • ..\

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

Co mówi Ci 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ś.

Jak uruchomisz Linuxowe narzędzia jeśli korzystasz z Windowsa?

  • 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.

Co powinien zawierać raport z pentestów?

  • 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.

Czy znasz jakiś język programowania?

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?

Co robi 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?