poniedziałek, 20 stycznia 2020

Narzędzia automatyzacji testów penetracyjnych

W tym poście zebrałem informacje dotyczące narzędzi, które pozwalają na automatyczne wyszukiwanie luk w oprogramowaniu jak i też zbieranie informacji o systemie operacyjnym.

Na samym początku warto z terminala wydać polecenie
whois nazwa_domeny
Da nam to pewne informacje jak np. kto jest właścicielem domeny. Informacje te możemy użyć do dalszego ataku.

Łącząc się netcatem na porcie, na którym nasłuchuje serwer WWW możemy również uzyskać pewne informacje np. jaki serwer jest tam zastosowany (czasami po wydaniu komendy "GET / HTTP/1.1" trzeba jeszcze raz wcisnąć Enter):
login@host:~$ nc adres_IP 80 
GET / HTTP/1.1
HTTP/1.1 400 Bad Request
Date: Mon, 20 Jan 2020 09:17:46 GMT 
Server: Apache
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title> 
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p> 
</body></html>
Podobnie może nam przyjść z pomocą curl:
login@host:~$  curl -I https://adres_serwera
HTTP/1.1 200 OK 
Date: Mon, 20 Jan 2020 09:26:19 GMT
Server: Apache
Last-Modified: Sat, 26 Aug 2017 07:09:20 GMT
ETag: "192-557a2bd9310a2"
Accept-Ranges: bytes
Content-Length: 402
Vary: Accept-Encoding
Content-Type: text/html

Przyszła pora, żeby rozpoznać nasz serwer, na którym stoi aplikacja. Użyjemy oczywiście do tego nmapa jak np.:
login@host:~$ nmap -sT -sU -Pn -O -sV -p- -v host
Opcje:
  • "-sT": skanowanie portów TCP (pełne),
  • "-sU": skanowanie portów UDP,
  • "-Pn": oszacuj wszystkie cele jako niedostępne (nie pinguj),
  • "-O": oszacuj system operacyjny (jeżeli nie może zgadnąć to można dodać "--osscan-guess"),
  • "-sV": wersje usług,
  • "-p-": pełen zakres portów,
  • "-v": stopień gadatliwości.


Możemy użyć nmapa również w takiej postaci:
login@host:~$ nmap -sS -sU -Pn -A -p- -v host
Opcje:

  • "-sS": skanowanie TCP (niepełne),
  • "-A": wykrywanie systemu operacyjnego, usług, uruchamianie skryptów ("-sC") oraz trasowanie (''--traceroute").
Po rozpoznaniu systemu i działających na nim usług warto przejrzeć bazę exploitów oraz wyszukiwarkę identyfikatorów znanych podatności.

Jeżeli dostaliśmy się do systemu możemy (poza explotami typu lokalnego) wykorzystać narzędzie Lynis. Da nam ono dużo informacji na temat zabezpieczeń aktualnego systemu.


Istnieje możliwość dodania prędkości skanowania (0-5) gdzie najniższy jest odpowiedni jeżeli mamy zapory ogniowe, a najwyższy kiedy zależy nam na jak najszybszym otrzymaniu wyników ("-T1" jeżeli mamy IDS-y).

Jeżeli nasza strona internetowa, którą atakujemy ma możliwość połączenia szyfrowanego to sprawdźmy czy certyfikat i konfiguracja serwera nie zawierają jakichś defektów. Można to zrobić na stronie Qualys SSL Labs.

Do dyspozycji jeżeli chodzi jeżeli chodzi o kobyły mamy program OWASP ZAP zarówno w wersji płatnej jak i darmowej. Wersja darmowa pozwala nam na wyszukiwanie bardzo podstawowych błędów.

Kolejnym narzędziem, które jest zarówno płatne jak i darmowe jest Burp Suite. Warto go użyć jako proxy jak i też stosując fuzzowanie względem badanej aplikacji.

Biorąc pod uwagę darmowe skanery mamy do dyspozycji Nikto. Stosujemy go z linii poleceń jak np.:
login@host:~$ perl nikto.pl -host https://host/ -output host.html
Jeżeli używamy KALI Linux to fajnym narzędziem jest dirb, który szuka ukrytych obiektów na danej stronie:
login@host:~$ dirb http://adres
Do naszej kolekcji dodamy również aplikację WAScan, która szuka dziur na danej stronie w trybie czarnej skrzynki pracując jak fuzzer. Pełne skanowanie:
login@host:~$ python wascan.py --url https://aplikacja/ --scan 5
Jeżeli wiemy, że na stronie jest WordPress do zarządzania zawartością to warto użyć WPScan.

Oczywiście nie wolno zapominać o Metasploicie. Do automatycznego szukania podatności możemy tutaj wykorzystać WMAP oraz OpenVAS.

Wiedząc, że na hoście jest baza typu NoSQL to warto przyjrzeć się temu programowi.