opowiadać o użytecznych narzędziach dla pentestera. W nowym artykule przyjrzymy się narzędziom do analizy zabezpieczeń aplikacji internetowych.
Nasz kolega już tworzył podobny około siedmiu lat temu. Interesujące jest spojrzenie, jakie narzędzia zachowały i wzmocniły swoją pozycję, a które odeszły na dalszy plan i są teraz rzadko używane.

Zauważamy, że należy do tego także Burp Suite, ale o nim i jego przydatnych wtyczkach będzie osobna publikacja.
Zawartość:
Amass
— narzędzie napisane w Go do wyszukiwania i enumeracji poddomen DNS oraz mapowania zewnętrznej sieci. Amass to projekt OWASP, stworzony, aby pokazać, jak z perspektywy zewnętrznego obserwatora wyglądają organizacje w Internecie. Nazwy poddomen Amass pozyskuje na różne sposoby, w narzędziu zastosowano zarówno rekurencyjne przeszukiwanie poddomen, jak i poszukiwanie w otwartych źródłach.
Aby odkryć powiązane ze sobą segmenty sieciowe i numery systemów autonomicznych, Amass wykorzystuje adresy IP pozyskiwane podczas pracy. Wszystkie znalezione informacje są używane do budowy mapy sieci.
Zalety:
- Techniki zbierania informacji obejmują:
* DNS — przeszukiwanie poddomen za pomocą słowników, bruteforce poddomen, 'inteligentne' przeszukiwanie z wykorzystaniem mutacji na podstawie znalezionych poddomen, odwrotne zapytania DNS i poszukiwanie serwerów DNS, na których możliwe jest przeprowadzenie zapytania o transfer strefy (AXFR);* Poszukiwanie w otwartych źródłach — Ask, Baidu, Bing, CommonCrawl, DNSDB, DNSDumpster, DNSTable, Dogpile, Exalead, FindSubdomains, Google, IPv4Info, Netcraft, PTRArchive, Riddler, SiteDossier, ThreatCrowd, VirusTotal, Yahoo;
* Wyszukiwanie w bazach danych certyfikatów TLS — Censys, CertDB, CertSpotter, Crtsh, Entrust;
* Wykorzystanie API wyszukiwarek — BinaryEdge, BufferOver, CIRCL, HackerTarget, PassiveTotal, Robtex, SecurityTrails, Shodan, Twitter, Umbrella, URLScan;
* Poszukiwanie w internetowych archiwach: ArchiveIt, ArchiveToday, Arquivo, LoCArchive, OpenUKArchive, UKGovArchive, Wayback;
- Integracja z Maltego;
- Zapewnia najbardziej kompleksowe pokrycie zadania wyszukiwania poddomen DNS.
Wady:
- Uważaj na amass.netdomains — spróbuje skontaktować się z każdym adresem IP w zidentyfikowanej infrastrukturze i uzyskać nazwy domen z odwrotnych zapytań DNS oraz certyfikatów TLS. To 'głośna' technika, która może ujawniać Twoje działania wywiadowcze w badanej organizacji.
- Wysokie zużycie pamięci, może zajmować do 2 GB RAM w różnych ustawieniach, co uniemożliwi uruchomienie tego narzędzia w chmurze na tanim VDS.

Altdns
— narzędzie napisane w Pythonie do tworzenia słowników do przeszukiwania subdomen DNS. Umożliwia generowanie wielu wariantów subdomen za pomocą mutacji i permutacji. W tym celu wykorzystuje się słowa, które często występują w subdomenach (na przykład: test, dev, staging), wszystkie mutacje i permutacje stosowane są do już znanych subdomen, które można podać jako wejście do Altdns. Na wyjściu otrzymuje się listę wariantów subdomen, które mogą istnieć, a ta lista może być później wykorzystana podczas brutalnego przeszukiwania DNS.
Zalety:
- Dobrze działa z dużymi zbiorami danych.
aquatone
— wcześniej był bardziej znany jako kolejne narzędzie do wyszukiwania subdomen, ale sam autor zrezygnował z tego na rzecz wspomnianego wyżej Amass. Teraz aquatone został przepisywany na Go i jest bardziej zoptymalizowany do wstępnego rozpoznania witryn internetowych. W tym celu aquatone przeszukuje określone domeny i szuka na nich witryn internetowych na różnych portach, a następnie zbiera wszystkie informacje o witrynie i robi zrzut ekranu. Użyteczne do szybkiego wstępnego rozpoznania witryn internetowych, po czym można wybrać priorytetowe cele do ataku.
Zalety:
- Na wyjściu tworzy grupę plików i folderów, które są wygodne do dalszej pracy z innymi narzędziami:
* Raport HTML ze zebranymi zrzutami ekranu oraz posegregowanymi według podobieństwa nagłówkami odpowiedzi;* Plik ze wszystkimi URL, na których znaleziono witryny;
* Plik ze statystyką i danymi strony;
* Folder z plikami zawierającymi nagłówki odpowiedzi od znalezionych celów;
* Folder z plikami zawierającymi ciało odpowiedzi od znalezionych celów;
* Zrzuty ekranu znalezionych witryn;
- Obsługuje raporty XML z Nmap i Masscan;
- Wykorzystuje headless Chrome/Chromium do renderowania zrzutów ekranu.
Wady:
- Może przyciągnąć uwagę systemów wykrywania intruzji, dlatego wymaga konfiguracji.
Zrzut ekranu wykonany dla jednej ze starszych wersji aquatone (v0.5.0), w której zrealizowano wyszukiwanie subdomen DNS. Starsze wersje można znaleźć na .

MassDNS
— jeszcze jedno narzędzie do wyszukiwania subdomen DNS. Jego główną różnicą jest to, że wykonuje zapytania DNS bezpośrednio do wielu różnych resolverów DNS i robi to z znaczną szybkością.
Zalety:
- Szybki — zdolny do rozwiązywania ponad 350 tysięcy nazw na sekundę.
Wady:
- MassDNS może wywołać znaczne obciążenie używanych resolverów DNS, co może prowadzić do zablokowania tych serwerów lub skarg do twojego dostawcy. Poza tym, spowoduje to duże obciążenie serwerów DNS firmy, jeśli są dostępne i odpowiadają za domeny, które próbujesz rozwiązywać.
- Lista resolverów jest obecnie nieaktualna, jednak jeśli wyeliminujesz niedziałające resolvery DNS i dodasz nowe znane, wszystko będzie w porządku.

Zrzut ekranu aquatone v0.5.0
nsec3map
— narzędzie w Pythonie do uzyskania pełnej listy domen zabezpieczonych DNSSEC.
Zalety:
- Szybko wykrywa hosty w strefach DNS z minimalną ilością zapytań, jeśli w strefie jest włączone wsparcie dla DNSSEC;
- Zawiera wtyczkę dla Johna the Ripper, której można użyć do łamania uzyskanych skrótów NSEC3.
Wady:
- Wiele błędów DNS jest przetwarzanych niepoprawnie;
- Brak automatycznego równoległego przetwarzania rekordów NSEC — trzeba ręcznie dzielić przestrzeń nazw;
- Wysokie zużycie pamięci.
Acunetix
— skaner wolnych od luk w aplikacjach internetowych, automatyzujący proces testowania bezpieczeństwa aplikacji internetowych. Testuje aplikację pod kątem SQL injection, XSS, XXE, SSRF i wielu innych luk w aplikacjach internetowych. Jednak, jak każdy inny skaner wielu luk w aplikacjach internetowych, nie zastępuje pentestera, ponieważ złożone sekwencje luk lub luki w logice mogą być trudne do zidentyfikowania. Niemniej jednak pokrywa wiele różnych luk, w tym różnych CVE, które pentester mógłby zapomnieć, co czyni go bardzo przydatnym do uwalniania z rutynowych kontroli.
Zalety:
- Niski poziom fałszywych alarmów;
- Wyniki można eksportować w postaci raportów;
- Przeprowadza dużą liczbę testów na różne luki;
- Równoległe skanowanie kilku hostów.
Wady:
- Brak algorytmu deduplikacji (strony Acunetix o tej samej funkcjonalności będą uznawane za różne, ponieważ prowadzą do różnych URL), ale programiści nad tym pracują;
- Wymaga instalacji na oddzielnym serwerze internetowym, co utrudnia testowanie systemów klienta z połączeniem przez VPN oraz używanie skanera w izolowanym segmencie lokalnej sieci klienta;
- Może 'zhałasować' badany serwis, na przykład wysyłając do formularza kontaktowego na stronie zbyt wiele atakujących wektorów, co w znacznym stopniu utrudni procesy biznesowe;
- Jest to rozwiązanie własnościowe, a więc płatne.

Dirsearch
— narzędzie w Pythonie do brute forcingu katalogów i plików na stronach internetowych.
Zalety:
- Może odróżniać prawdziwe strony „200 OK” od stron „200 OK”, ale z treścią „strona nie znaleziona”;
- Dostarczane jest z wygodnym słownikiem, który ma dobrą równowagę między rozmiarem a efektywnością wyszukiwania. Zawiera standardowe ścieżki charakterystyczne dla wielu CMS-ów i stosów technologicznych;
- Swój format słownika, który pozwala osiągnąć dobrą efektywność i elastyczność przeszukiwania plików i katalogów;
- Wygodny wypis — zwykły tekst, JSON;
- Potrafi robić throttling — pauzę między zapytaniami, co jest niezbędne dla każdego słabego serwisu.
Wady:
- Rozszerzenia muszą być przekazywane w postaci ciągu, co jest niewygodne, jeśli trzeba przekazać wiele rozszerzeń jednocześnie;
- Aby używać własnego słownika, będzie trzeba lekko go dostosować do formatu słowników Dirsearch dla maksymalnej efektywności.

wfuzz
— Pythonowy fuzzing aplikacji webowych. Prawdopodobnie jeden z najbardziej znanych fuzzingów. Zasada jest prosta: wfuzz pozwala na fuzzing każdego miejsca w zapytaniu HTTP, co daje możliwość fuzzingu parametrów GET/POST, nagłówków HTTP, w tym ciasteczek i innych nagłówków uwierzytelniających. Jest również wygodny do prostego brute forcingu katalogów i plików, do czego potrzebny jest dobry słownik. Posiada również elastyczny system filtrów, za pomocą którego można filtrować odpowiedzi z witryny według różnych parametrów, co pozwala na uzyskanie efektywnych wyników.
Zalety:
- Wszechstronny — modułowa struktura, montaż zajmuje kilka minut;
- Wygodny mechanizm filtrowania i fuzzingu;
- Można fuzzować każdą metodę HTTP, a także każde miejsce w zapytaniu HTTP.
Wady:
- W fazie rozwoju.

ffuf
— fuzzing sieciowy w Go, stworzony na wzór wfuzz, pozwala brute'ować pliki, katalogi, ścieżki URL, nazwy i wartości parametrów GET/POST, nagłówki HTTP, w tym nagłówek Host do brute forcingu wirtualnych hostów. W porównaniu do swojego brata wfuzz różni się wyższą prędkością i niektórymi nowymi funkcjami, na przykład obsługuje słowniki w formacie Dirsearch.
Zalety:
- Filtry są podobne do filtrów wfuzz, umożliwiają elastyczne dostosowanie brute forcingu;
- Pozwala fuzzować wartości nagłówków HTTP, dane zapytań POST i różne części URL, w tym nazwy i wartości parametrów GET;
- Można wskazać dowolną metodę HTTP.
Wady:
- W fazie rozwoju.

gobuster
— narzędzie w Go do eksploracji, ma dwa tryby działania. Pierwszy używany jest do brute force plików i katalogów na stronie internetowej, drugi — do przeszukiwania subdomen DNS. Narzędzie początkowo nie obsługuje rekurencyjnego przeszukiwania plików i katalogów, co oczywiście oszczędza czas, ale z drugiej strony brute force każdego nowego punktu końcowego na stronie internetowej trzeba uruchamiać osobno.
Zalety:
- Wysoka prędkość działania zarówno przy przeszukiwaniu subdomen DNS, jak i brute force plików i katalogów.
Wady:
- W obecnej wersji nie obsługuje ustawiania nagłówków HTTP;
- Domyślnie uznaje za ważne tylko niektóre kody statusu HTTP (200, 204, 301, 302, 307).

Arjun
— narzędzie do brute force ukrytych parametrów HTTP w parametrach GET/POST, a także w JSON. Wbudowany słownik zawiera 25 980 słów, które Ajrun sprawdza w ciągu prawie 30 sekund. Kluczowym elementem jest to, że Ajrun nie sprawdza każdego parametru osobno, ale sprawdza około 1000 parametrów jednocześnie i obserwuje, czy odpowiedź się zmieniła. Jeśli odpowiedź się zmieni, dzieli te 1000 parametrów na dwie części i sprawdza, która z tych części wpływa na odpowiedź. W ten sposób, za pomocą prostego wyszukiwania binarnego, znajduje parametr lub kilka ukrytych parametrów, które wpłynęły na odpowiedź i mogą istnieć.
Zalety:
- Wysoka prędkość działania dzięki wyszukiwaniu binarnemu;
- Wsparcie dla parametrów GET/POST, a także parametrów w formacie JSON;
Na podobnej zasadzie działa wtyczka do Burp Suite — , która również świetnie sprawdza się w wyszukiwaniu ukrytych parametrów HTTP. Więcej informacji na ten temat przedstawimy w nadchodzącym artykule o Burp i jego wtyczkach.

LinkFinder
— skrypt w Pythonie do wyszukiwania linków w plikach JavaScript. Przydatny w poszukiwaniu ukrytych lub zapomnianych punktów końcowych/URL w aplikacji internetowej.
Zalety:
- Szybki;
- Istnieje specjalna wtyczka do Chrome oparta na LinkFinderze.
.
Wady:
- Niezbyt wygodne wyjście końcowe;
- Nie analizuje JavaScriptu w czasie rzeczywistym;
- Logiczna struktura wyszukiwania linków jest dość prosta — jeśli JavaScript jest jakoś zagnieszczony lub linki są początkowo niedostępne i generowane dynamicznie, to nic nie znajdzie.

JSParser
— skrypt w Pythonie, który używa i do analizy względnych adresów URL z plików JavaScript. Bardzo przydatny do wykrywania zapytań AJAX i tworzenia listy metod API, z którymi interaguje aplikacja. Efektywnie działa w parze z LinkFinderem.
Zalety:
- Szybkie przetwarzanie plików JavaScript.

sqlmap
— prawdopodobnie jedno z najpopularniejszych narzędzi do analizy aplikacji webowych. Sqlmap automatyzuje poszukiwanie i eksploatację iniekcji SQL, działa z wieloma dialektami SQL, ma w swoim arsenale ogromną ilość różnych technik, zaczynając od prostych iniekcji przez wprowadzenie apostrofów i kończąc na skomplikowanych wektorach dla iniekcji SQL opartych na czasie. Ponadto, ma wiele technik dalszej eksploatacji dla różnych baz danych, dlatego jest użyteczny nie tylko jako skaner iniekcji SQL, ale również jako potężne narzędzie do eksploatacji już znalezionych iniekcji SQL.
Zalety:
- Duża liczba różnych technik i wektorów;
- Niska liczba fałszywych alarmów;
- Wiele możliwości precyzyjnej konfiguracji, różne techniki, docelowa baza danych, skrypty tamper do omijania WAF;
- Możliwość tworzenia zrzutów danych wyjściowych;
- Wiele różnych możliwości eksploatacji, na przykład w niektórych bazach danych — automatyczne ładowanie/wyładowanie plików, możliwość wykonania poleceń (RCE) i inne;
- Wsparcie dla bezpośredniego połączenia z bazą danych przy użyciu danych uzyskanych podczas ataku;
- Można przekazać plik tekstowy z wynikami pracy Burp — nie trzeba ręcznie składać wszystkich atrybutów w wierszu poleceń.
Wady:
- Trudne do dostosowania, na przykład, napisanie własnych sprawdzeń z powodu ubogiej dokumentacji dla tego;
- Bez odpowiednich ustawień przeprowadza niepełny zestaw kontroli, co może wprowadzać w błąd.

NoSQLMap
— narzędzie w Pythonie do automatyzacji poszukiwania i eksploatacji iniekcji NoSQL. Wygodne w użyciu nie tylko w bazach danych NoSQL, ale również podczas audytu aplikacji webowych wykorzystujących NoSQL.
Zalety:
- Podobnie jak sqlmap, pozwala nie tylko na znalezienie potencjalnej podatności, ale także sprawdza możliwość jej eksploatacji dla MongoDB i CouchDB.
Wady:
- Nie obsługuje NoSQL dla Redis, Cassandra, w tym kierunku prowadzone są prace.
oxml_xxe
— narzędzie do wbudowywania XXE XML-exploitów w różne typy plików, w których w jakiejkolwiek formie używany jest format XML.
Zalety:
- Obsługuje wiele powszechnych formatów, takich jak DOCX, ODT, SVG, XML.
Wady:
- Nie w pełni zrealizowano wsparcie dla PDF, JPEG, GIF;
- Tworzy tylko jeden plik. Aby rozwiązać ten problem, można użyć narzędzia , które może stworzyć wiele plików z payloadami w różnych miejscach.
Wymienione wcześniej narzędzia doskonale sprawdzają się w testowaniu XXE przy ładowaniu dokumentów zawierających XML. Należy jednak pamiętać, że przetworniki formatów XML mogą występować w wielu innych przypadkach, na przykład XML może być używany jako format danych zamiast JSON.
Dlatego zalecamy zwrócenie uwagi na następujące repozytorium, które zawiera dużą ilość różnorodnych payloadów: .
tplmap
— narzędzie napisane w Pythonie do automatycznego wykrywania i eksploatacji podatności Server-Side Template Injection, ma podobne ustawienia i flagi do sqlmap. Wykorzystuje różne techniki i wektory, w tym iniekcje typu blind, a także zawiera techniki do wykonywania kodu oraz uploadowania/downloadowania dowolnych plików. Dodatkowo zawiera techniki dla dziesięciu różnych silników szablonów oraz niektóre techniki wyszukiwania iniekcji kodu podobnych do eval() w Pythonie, Ruby, PHP, JavaScript. W przypadku udanej eksploatacji otwiera interaktywną konsolę.
Zalety:
- Duża liczba różnych technik i wektorów;
- Obsługuje wiele silników renderujący szablony;
- Wiele technik eksploatacji.
CeWL
— generator słowników napisany w Ruby, stworzony do wydobywania unikalnych słów z podanej strony internetowej, przechodzi przez linki na stronie na zadaną głębokość. Stworzony słownik z unikalnymi słowami można następnie wykorzystać do ataków brute force na hasła w serwisach lub do ataków brute force na pliki i katalogi na tej samej stronie internetowej, czy też do atakowania uzyskanych hashy za pomocą hashcat lub Johna The Rippera. Przydatny przy tworzeniu „docelowej” listy potencjalnych haseł.
Zalety:
- Łatwy w użyciu.
Wady:
- Należy zachować ostrożność z głębokością wyszukiwania, aby nie przechwycić zbędnych domen.
Weakpass
— usługa zawierająca wiele słowników z unikalnymi hasłami. Skrajnie przydatna w różnych zadaniach związanych z łamaniem haseł, od prostego online brute force kont na docelowych serwisach, po offline brute force uzyskanych hashy z użyciem lub . W zbiorze znajduje się około 8 miliardów haseł o długości od 4 do 25 znaków.
Zalety:
- Zawiera zarówno specyficzne słowniki, jak i słowniki z najczęściej występującymi hasłami — można dobrać konkretne słowniki do własnych potrzeb;
- Słowniki są aktualizowane i wzbogacane o nowe hasła;
- Słowniki posortowane według efektywności. Można wybrać opcję zarówno do szybkiego brutalnego ataku online, jak i do starannego dobierania haseł z obszernego słownika z najnowszymi wyciekami;
- Jest kalkulator pokazujący czas łamania haseł na Twoim sprzęcie.

W oddzielnej grupie chcielibyśmy wyróżnić narzędzia do sprawdzania CMS: WPScan, JoomScan i AEM hacker.
AEM_hacker
— narzędzie do identyfikacji luk bezpieczeństwa w aplikacjach Adobe Experience Manager (AEM).
Zalety:
- Może identyfikować aplikacje AEM z listy URL podanych na wejściu;
- Zawiera skrypty do uzyskiwania RCE poprzez wgrywanie JSP shell lub eksploatację SSRF.
JoomScan
— narzędzie oparte na Perlu do automatyzacji wykrywania luk podczas wdrażania Joomla CMS.
Zalety:
- Jest w stanie wyszukiwać wady konfiguracji i problemy z ustawieniami administratora;
- Wymienia wersje Joomla oraz związane z nimi luki, podobnie jak dla poszczególnych komponentów;
- Zawiera ponad 1000 exploitów dla komponentów Joomla;
- Generuje raporty końcowe w formacie tekstowym i HTML.

WPScan
— narzędzie do skanowania stron na WordPress, posiada luki zarówno dla samego silnika WordPress, jak i dla niektórych wtyczek.
Zalety:
- Jest w stanie wymieniać nie tylko niebezpieczne wtyczki i motywy WordPress, ale również uzyskiwać listę użytkowników i pliki TimThumb;
- Może przeprowadzać ataki brutalne na strony WordPress.
Wady:
- Bez odpowiednich ustawień przeprowadza niepełny zestaw kontroli, co może wprowadzać w błąd.

Ogólnie różni ludzie preferują do pracy różne narzędzia: wszystkie są dobre na swój sposób, i to, co podoba się jednej osobie, może zupełnie nie pasować do innej. Jeśli uważasz, że niesłusznie pominęliśmy jakieś dobre narzędzie — napisz o tym w komentarzach!
Źródło: habr.com
