Cyberbezpieczeństwo okiem programisty

CompTIA Security+ SY0-701 – ściąga

C

1.0 General Security Concepts

1.1 Compare and contrast various types of security controls.

Porównaj ze sobą i wskaż różnice pomiędzy różnymi formami kontroli bezpieczeństwa, których zadaniem jest zapobieganie, wykrywanie oraz minimalizowanie skutków różnych typów zagrożeń.

  • Categories – w zależności od tego, do którego obszaru organizacji się odnosimy (dane i zasoby cyfrowe, personel, fizyczny dostęp do budynku), formy kontroli bezpieczeństwa można podzielić na stosunkowo szerokie kategorie, opisane poniżej:
    • Technical – metody kontroli na poziomie ściśle technicznym, których zadaniem jest ochrona danych oraz systemów IT w organizacji (software oraz hardware). Do tej kategorii zaliczamy m.in. firewalle, oprogramowanie antywirusowe, systemy wykrywania/zapobiegania włamań (IDS/IPS), rozwiązania DLP (Data Loss Prevention).
    • Managerialmanagerial security controls (choć częściej można spotkać się z terminem administrative security controls) określa mechanizmy kontrolne na poziomie administracyjnym, czyli wyższym niż wspomniana wcześniej kategoria stricte techniczna. W ramach tego zakresu możemy wymienić polityki (ang. policies), procedury (ang. procedures) oraz wytyczne (ang. guidelines), które powinny być dobrze udokumentowane oraz respektowane i stosowane przez personel organizacji, celem zapewnienia pożądanego poziomu bezpieczeństwa. Przykład: spisany proces wdrażania nowego pracownika (onboarding) czy też dokument z zaleceniami bezpieczeństwa, z którym powinien zapoznać się każdy pracownik.
    • Operational – w tej kategorii security controls główną rolę odgrywa człowiek, zamiast zautomatyzowanych systemów (według słownika NIST). Przykładem takich środków bezpieczeństwa są pracownicy ochrony, a także szkolenia bądź programy budowania świadomości wśród pracowników.
    • Physical – jak sama nazwa wskazuje, ta kategoria obejmuje zabezpieczenia chroniące przed fizycznym dostępem przez osoby nieuprawnione do terenu, budynku, pojedynczego pokoju (np. serwerowni), sprzętu czy nawet dokumentów danej organizacji. Przykład: budki wartownicze (ang. guard shack), ogrodzenia, zamki, czytniki kart dostępu, kamery, systemy alarmowe.

2.0 Threats, Vulnerabilities, and Mitigations

2.2 Explain common threat vectors and attack surfaces.

Na egzaminie należy wykazać się znajomością i zrozumieniem przedstawionych poniżej zagrożeń i wektorów ataku.

  • Human vectors/social engineering – bardzo często najsłabszym ogniwem całego systemu bezpieczeństwa jest jego użytkownik, czyli człowiek. Właśnie dlatego ataki wykorzystujące inżynierię społeczną (lub inaczej socjotechnikę) są bardzo często stosowane – ponieważ są skuteczne.
    • Phishing – jedna z najpopularniejszych metod oszustwa polegająca na podszywaniu się pod zaufaną instytucję lub osobę (np. bank, firmę kurierską czy osobę publiczną) celem nakłonienia ofiary do wykonania jakiejś czynności z korzyścią dla atakującego. Przykład: wiadomość email, która wygląda jakby była wysłana przez naszego usługodawcę z prośbą o pilne zalogowanie się do systemu. Jednakże link umieszczony w mailu, zamiast do prawdziwej strony logowania, kieruje nas do strony spreparowanej przez oszustów.
    • Vishing – skrót od voice phishing, czyli phishing za pośrednictwem komunikacji głosowej (telefonicznej oraz VoIP).
    • Smishing – skrót od SMS phishing, czyli rodzaj oszustwa wykorzystujący wiadomości SMS (Short Message Service). Zasady są podobne do pozostałych form phishingu, z tą różnicą, że fałszywe wiadomości są przesyłane za pośrednictwem protokołu SMS.
    • Misinformation/disinformation
    • Impersonation – jeden z fundamentów inżynierii społecznej. W dosłownym tłumaczeniu jest to udawanie kogoś innego niż się jest w rzeczywistości i stanowi absolutną podstawę udanego ataku socjotechnicznego. Często atakujący podszywa się pod personę, która stoi wyżej w hierarchii organizacji niż osoba atakowana. Jest to czynnik psychologiczny, który może wywierać dodatkową presję na ofiarę i przez to będzie łatwiej nakłonić ją do zrobienia tego czego chce oszust.
    • Business email compromise
    • Pretexting – kolejny z filarów udanego ataku socjotechnicznego, polegający na zbudowaniu zmyślonej, ale brzmiącej wiarygodnie historii, która ma na celu przekonanie ofiary do wykonania określonych działań. Mówiąc krótko: atakujący musi mieć dobry pretekst, żeby ofiara dała się przekonać.
    • Watering hole – jeśli organizacja jest bardzo dobrze chroniona, atakujący ma bardzo nikłe szanse powodzenia w bezpośrednim ataku. W takim przypadku jest zmuszony zmienić strategię i zastosować technikę, którą można przetłumaczyć jako zatruty wodopój bądź atak u wodopoju. Ta strategia polega na określeniu miejsca, poza atakowaną organizacją, gdzie zazwyczaj gromadzą się i przebywają jej członkowie. Może to być miejsce fizyczne, takie jak kawiarnia chociaż częściej jest to zewnętrzny serwis internetowy (third party). Kolejnym krokiem jest atak na zidentyfikowany cel pośredni, który jest słabiej chroniony. Polega zazwyczaj na zainfekowaniu strony złośliwym oprogramowaniem, dzięki czemu istnieje duże prawdopodobieństwo, że członkowie organizacji również zostaną zainfekowani i da to atakującemu upragniony dostęp do instytucji docelowej.
    • Brand impersonation
    • Typosquatting – metoda oszukiwania użytkowników wykorzystująca typowe błędy literowe w adresach URL. Innym określeniem tej metody jest URL hijacking. Technika wykorzystuje nieuwagę użytkownika i fakt, że podstawiony adres z literówką wygląda bardzo podobnie do oryginalnego.

2.3 Explain various types of vulnerabilities.

Wyjaśnij różne typy podatności.

  • Application
    • Buffer overflow – swego czasu, bardzo popularne było wykorzystywanie podatności związanych z niewłaściwym zarządzaniem pamięci poprzez tzw. przepełnienie bufora (ang. buffer overflow). Nie wdając się w szczegóły techniczne, atakujący był w stanie wprowadzić więcej danych do aplikacji (input) niż przewidział to jej twórca. Jeśli program otrzymał na wejściu większą liczbę bajtów niż zarezerwowany obszar pamięci (bufor), to mówiąc w przenośni, nadmiarowe bajty wylewały się poza zarezerwowany bufor, nadpisując sąsiadujące komórki pamięci. W większości przypadków, powodowało to błąd naruszenia pamięci (segmentation fault) i zakończenie działania programu. Jednakże okazało się, że w niektórych przypadkach można przepełnić bufor i nadpisać pamięć w taki sposób, żeby program, zamiast się wykrzaczyć, wykonał przekazany na wejściu, specjalnie spreparowany kod. Przeważnie był to tzw. kod wywołania powłoki (shellcode), dający atakującemu dostęp do skompromitowanego systemu (zakładając, że zaatakowany program działał z uprawnieniami administratora systemu).

4.0 Security Operations

4.1 Given a scenario, apply common security techniques to computing resources.

Na podstawie podanego scenariusza, zastosuj odpowiednie techniki zabezpieczające dla wybranych zasobów.

  • Secure baselines – aby wdrożyć i użytkować nową aplikację lub system w sposób bezpieczny, należy postępować zgodnie z ustalonymi wcześniej, podstawowymi wytycznymi dotyczącymi bezpieczeństwa (secure/security baseline). Jest to przeważnie dokument w postaci przewodnika lub listy kontrolnej (ang. checklist), zawierający informację o sposobie konfiguracji samego rozwiązania oraz środowiska w taki sposób, żeby zapewnić akceptowalny poziom bezpieczeństwa, dostosowany do potrzeb organizacji.
    • Establish – pierwszym krokiem jest ustalenie i zebranie wszystkich istotnych zaleceń dotyczących bezpieczeństwa, które posłużą jako nasz punkty wyjściowy (ang. baseline).
    • Deploy – kiedy zebraliśmy już wszystkie istotne dla nas wytyczne, możemy przystąpić do ich wdrażania (ang. deploy). Proces ten polega na dokładnym sprawdzeniu konfiguracji (rozwiązania i środowiska) oraz dostosowaniu ustawień w taki sposób, żeby zgadzały się z przygotowaną wcześniej listą wytycznych.
    • Maintain -kiedy wszystkie, istotne dla naszej organizacji, wytyczne dotyczące bezpieczeństwa zostały już wdrożone i działają jaka należy, musimy jeszcze pamiętać o ich utrzymywaniu (ang. maintain). Utrzymywanie polega na regularnym sprawdzaniu czy aktualne ustawienia aplikacji/systemu w dalszym ciągu są zgodne z podstawowymi wytycznymi oraz wprowadzaniu ewentualnych poprawek, jeśli coś się rozjeżdża.
Cyberbezpieczeństwo okiem programisty

Łukasz Mieczkowski

Programista, który zainteresował się cyberbezpieczeństwem.

Kontakt

Zapraszam do kontaktu za pośrednictwem mediów społecznościowych.