Zanim dojdę do głównego tematu kilka nowinek:
- na blogu pojawiła się dodatkowa adnotacja odnośnie charakteru mojego bloga - w moim profilu
- jestem świeżo po kolejnej (dla mnie już trzeciej) edycji warsztatów z testów penetracyjnych aplikacji webowych, wkrótce zapraszam na kolejną!
- nadal gdy do znajomych mówię "do zobaczenia na CONFidence" część z nich smutno pyta dlaczego zobaczymy się dopiero w przyszłym roku, przypominam, że najbliższa edycja CONFidence już w listopadzie 2009 :-)
Wracając do tematu... atak typu Denial of Service dla aplikacji webowych to ciut inne zagadnienie od tych występujących w pozostałych warstwach szeroko pojętych usług. W pierwszym rzucie można przyglądnąć się stosownej kategorii na wiki OWASPa - Denial of Service Attack , która naświetla problem na konkretnych przykładach. Pozostaje jednak pytanie jak często pentesterzy sprawdzają czy można przeprowadzić skuteczny atak DoS i czy są o to proszeni? Spotkałem się z różnymi opiniami - niestety większość osób, z którymi poruszałem ten temat sądziła, że DoS zawsze się uda, kwestia przyłożonej siły. W związku z powyższym dość rzadko przeprowadza się takie testy.
Moim zdaniem testy DoS warto przeprowadzać zawsze, ale nie za wszelką cene. Co to oznacza? Że nie ma potrzeby zawsze wykupować botnetu żeby sprawdzić ile dana infrastruktura wytrzyma SYNów/sec czy równoległych slowlorisów tylko zobaczyć jak zachowuje się aplikacja i środowisko, w której pracuje przy podstawowych testach, o których mówi choćby OWASP Testing Guide. Dobrze jest przeprowadzić testy DoS z jednej maszyny/jednego adresu IP aby sprawdzić jak bardzo odporni jesteśmy na jednego napastnika. Wstyd jeśli się okaże, że jeden wystarczy by osiągnąć niedostępność usługi dla pozostałych, prawda? :-)
Poza testami wymienionymi w OWASP Testing Guide proponuję testy wydajnościowe aplikacji. Mogą one pomóc w określeniu miejsc, w których aplikacji odwołuje się do bazy danych i wykonuje na niej kosztowne z punktu widzenia czasu operacje. Szczególnie niebezpieczne będą to miejsca jeśli dostęp do nich jest przed zalogowaniem się do aplikacji - napastnik pozostaje wtedy bardziej anonimowy i nie musi w ogóle posiadać konta. Zwróciłbym jeszcze szczególną uwagę na cache'owanie. Jeżeli wydaje się nam, że zapewniliśmy odpowiedni poziom cache'owania obiektów np. na reverse-proxy i aplikacja nie będzie zawsze odpytywała bazy danych to trzeba się zastanowić czy zmieniając/dodając dodatkowe, unikalne parametry w zapytaniu HTTP odpowiedź będzie nadal z cache'a czy za każdym razem generowana na nowo. Jeszcze innym przykładem, który czasami jest ignorowany to posiadanie ciasteczek. Automat próbujący wykonać DoS aplikacji nie będzie przejmował się ciasteczkami ustawianymi przez nagłówek Set-Cookie, a nawet może próbować go wykorzystać jako wektor ataku. W końcu identyfikatory sesji też są w jakiejś bazie :-)
A jakie doświadczenia z testami typu DoS mają inni?
wtorek, 6 października 2009
Subskrybuj:
Komentarze do posta (Atom)

2 komentarze:
W wielu przypadkach przetestowanie podatności infrastruktury na atak DoS jest dość dużym wyzwaniem. Głównie dotyczy to serwerów produkcyjnych gdzie klient nie dysponuje kopią maszyny do odwzorowania identycznej konfiguracji i zachowania na dane czynniki.
Ostatnio sprawdzałem podatność na Slowloris-a, niestety okazało się że maszyna jest całkowicie uległa. Aczkolwiek był to ewidentny błąd w konfiguracji ilości dozwolonych sesji, gdzie ustawienie odpowiedniego limitu załatwiło sprawę.
Testowanie tego typu ataków to dość trudna sprawa ale fakt jest taki, że bez testów nigdy do końca nie możemy być pewni jak zachowa się dana jednostka przy określonych zmiennych. Często "wydaje mi się.../teoretycznie powinno..." nie wystarczy. Działania praktyczne (nie)stety są niezbędne aby unaocznić pojawiające się problemy.
W pełni się z Tobą zgadzam Radku. Moje przemyślenia, których efektem są wpisy na blogu skierowane są do ogółu, bez dzielenia na pentesterów wykonujących usługi dla klientów i tych wew. firm. Bardziej pasuje tutaj słowo konsultant :) Testy DoS, o których wspominałem nie należą do grupy tych 'ciężkich' wymagających szerokiego łącza i dużej mocy obliczeniowej. Na pewnym poziomie wystarczy np. Firefox+Firebug w dodatku na środowisku produkcyjnym (choć preferuję te, w których nie ma prawdziwych klientów). Takie testy nie muszę odbywać się na środowisku odzwierciedlającym moc produkcji.
Prześlij komentarz