20:04
11/3/2014

Niedawno opisywaliśmy jak do wzmocnienia ataku DDoS można wykorzystać serwery NTP oraz DNS. Dziś chcieliśmy zaprezentować małe case-study ataku DDoS, który nas spotkał kilka dni temu. Jest on tyle ciekawy, że do “odbicia” wykorzystano dziesiątki tysięcy blogów na WordPressie — także z Polski.

DDoS-ują nas WordPressy?

Kilka dni temu zauważyliśmy w naszych logach serwera HTTP ruch o charakterystyce odpowiadającej atakowi DDoS. Wycinek z logów prezentujemy poniżej:


50.28.46.125 - - [05/Mar/2014:23:26:46 +0100] "GET /?4890113=1054820 HTTP/1.1" 200 0 "-" "WordPress/3.8.1; http://crewdenverforms.org"
31.186.82.48 - - [05/Mar/2014:23:26:46 +0100] "GET /?2166335=4879730 HTTP/1.1" 200 0 "-" "WordPress/3.5.2; http://wittamina.pl"
50.28.102.220 - - [05/Mar/2014:23:26:46 +0100] "GET /?3741766=2713424 HTTP/1.1" 200 0 "-" "WordPress/3.7.1; http://www.imobitrax.com"
67.227.171.65 - - [05/Mar/2014:23:26:46 +0100] "GET /?5955136=7314769 HTTP/1.1" 200 0 "-" "WordPress/3.8.1; http://www.begincollege.com"
50.31.79.160 - - [05/Mar/2014:23:26:46 +0100] "GET /?7880989=2202460 HTTP/1.1" 200 0 "-" "WordPress/3.3; http://bootcamplaunch.com"
38.96.198.165 - - [05/Mar/2014:23:26:47 +0100] "GET /?6303322=7043752 HTTP/1.1" 200 0 "-" "WordPress/3.5.1; http://poolservicelehighvalley.com"
42.121.35.145 - - [05/Mar/2014:23:26:47 +0100] "GET /?1947341=6202433 HTTP/1.1" 200 0 "-" "WordPress/3.4.2; http://blog.penna.me"
50.6.77.89 - - [05/Mar/2014:23:26:47 +0100] "GET /?8485459=2320683 HTTP/1.1" 200 0 "-" "WordPress/3.7.1; http://www.samanthadesouza.com"
50.6.77.81 - - [05/Mar/2014:23:26:47 +0100] "GET /?6969146=2117889 HTTP/1.1" 200 0 "-" "WordPress/3.5.1; http://www.88a8ylc.com"
173.83.247.210 - - [05/Mar/2014:23:26:47 +0100] "GET /?5895075=6581477 HTTP/1.1" 200 0 "-" "WordPress/3.5; http://spasmouse.org"
173.83.247.210 - - [05/Mar/2014:23:26:47 +0100] "GET /?1458768=2287175 HTTP/1.1" 200 0 "-" "WordPress/3.5; http://hackercentral.org"
2607:f208:50c:21e0::10 - - [05/Mar/2014:23:26:47 +0100] "GET /?8581209=4190653 HTTP/1.1" 200 0 "-" "WordPress/3.8.1; http://valenciawebdevelopment.com"
50.63.154.87 - - [05/Mar/2014:23:26:47 +0100] "GET /?4173873=1956571 HTTP/1.1" 200 0 "-" "WordPress/3.4.1; http://50.63.154.87"
2607:f208:508:1c50::10 - - [05/Mar/2014:23:26:47 +0100] "GET /?5345839=7245987 HTTP/1.1" 200 0 "-" "WordPress/3.2.1; http://www.superiorwater.com"

Jak widać, był to DDoS typu aplikacyjnego, generujący średnio ok. 30 “niecache’owalnych” zapytań HTTP na sekundę. Cechą wspólną wszystkich requestów był User-Agent wskazujący na WordPressa (różne wersje).

W przypadku tego typu ataku spoofing IP jest wykluczony, a dodatkowo pod podanymi adresami rzeczywiście hostowały się blogi oparte o WordPressa. Upadła więc hipoteza, że obrywamy z botnetu, który spoofuje nagłówki żądań — wszystko wskazywało na to, że ktoś przejął kontrolę nad tysiącami WordPressów. Być może wektorem ataku była podatna na atak wordpressowa wtyczka? Jeśli tak, to musiała być bardzo popularna, ponieważ dokładnie atakowało nas 76773 unikatowych hostów-blogów, w tym 39 z Polski (poniżej wygrepowane URL-e):

http://9gags.pl"
http://bezpiecznainformacja.wordpress.com"
http://blog.lizardmedia.pl"
http://blog.ouou.pl"
http://di9ital.pl"
http://evarts.pl"
http://gurumedia.pl"
http://komputer.sluge.pl"
http://moja-reklama.pl"
http://mzielinski.pl"
http://satisfaction-band.pl"
http://sopee.net"
https://ponymeet.pl"
http://stt.szczecin.pl"
http://wittamina.pl"
http://www.ble-bla.pl"
http://www.busy-warszawa-modlin.pl"
http://www.dudek-art.pl"
http://www.ed-project.pl"
http://www.filmm.pl"
http://www.gwalkiewicz.pl"
http://www.ilovesport.pl"
http://www.infolatanie.pl"
http://www.jdc-solutions.pl"
http://www.kucielconsulting.pl"
http://www.kursy-nurkow.pl"
http://www.marketuv.pl"
http://www.mojamapka.pl"
http://www.networknews.pl"
http://www.offf.pl"
http://www.queris.com.pl"
http://www.saskaexpo.pl"
http://www.spls.com.pl"
http://www.stocznowcy.pl"
http://www.tajnesluzbykapitalizmu.pl"
http://www.teniswlkp.pl"
http://www.twojefilmy.pl"
http://www.wmordejeza.pl"
http://yuccaprojekt.pl"

CloudFlare poradził sobie z atakiem, ale…

Ponieważ Niebezpiecznik.pl korzysta z CDN-ów Cloudflare’a, atak został obłużony przez reverse-proxy Cloudflare’a — w trakcie ataku część z Was mogła widzieć specjalną stronę “przejściową”, której zadaniem jest wykonanie kilku testów weryfikujących, czy osoba wchodząca na naszą stronę korzysta rzeczywiście z przeglądarki WWW (i robi to świadomie) czy jest to po prostu bot, który bierze udział w ataku.

Podobny efekt można uzyskać bez konieczności przepinania się na CDN CloudFlare. Dla webserwera nginx dostępny jest moduły “anti-ddosowy” działający na podobnej zasadzie co strona przejściowa CloudFlare’a.
Strona przejściowa CloudFlare'a w trakcie ataku

Strona przejściowa CloudFlare’a w trakcie ataku

Wyświetlanie tej “przejściowej” strony wymusza się przestawieniem CloudFlare’a w tryb “I’m under attack”. I faktycznie, w tym trybie, serwer odżył, ale w logach dalej widoczne były DDoS-owe żądania pochodzące tym razem tylko i wyłącznie z adresów IP należących do …Elastic Cloud Amazon AWS.

Amazon nas DDoS-uje?

Z jakiegoś powodu CloudFlare automatycznie whitelistuje (tzn. nie pokazuje strony “przejściowej”) adresom IP należącym do Amazonu. Dopiero po zablokowaniu tych klas adresowych load na serwerze wrócił do zdroworozsądkowych granic.

Ręczna blokada nałożona na podsieci Amazonu

Ręczna blokada nałożona na podsieci Amazonu

Miliony WordPressów umożliwiają atak

Bliższa analiza tego incydentu ujawniła, że za atak odpowiedzialne są nie wtyczki w WordPressach, a sam WordPress, a dokładniej jego interfejs XML-RPC, wykorzystywany do wysyłania tzw. pingbacków i trackbacków. Na wykorzystanie tego interfejsu do ataków DDoS uwagę zwracano już 7 lat temu, a w szczegółach atak został opisany przez Incapsulę w zeszłym roku.

HTTP DDoS via WordPress Pingback

HTTP DDoS via WordPress Pingback XML-RPC

Co więcej, każdy może wymusić na dowolnym WordPressie wysłanie takiego złośliwego żądania przy pomocy zwykłego curla:

$ curl blog-na-wordpressie.pl/xmlrpc.php -d '<methodCall><methodName>pingback.ping</methodName><param>http://strona-ofiary.pl</value></param><param><value><string>url-postu</string></value></param></param></methodCall>'

Adresy blogów zapewne atakujący pozyskują przez Google Dorka lub Shodana.

Czy mój blog brał udział w atakach na innych?

Można to sprawdzić przeglądając logi pod kątem żądań typu POST skierowanych do pliku /xmlrpc.php.

Z kolei aby zablokować możliwość wykorzystania swojego bloga w atakach, należy zainstalować tę wtyczkę lub do pliku z funkcjami używanej skórki dopisać poniższy kod:

add_filter( ‘xmlrpc_methods’, function( $methods ) {
unset( $methods['pingback.ping'] );
return $methods;
} );

Warto też zastanowić się, czy nie wyfiltrować na firewallu webserwera połączeń wychodzących (poza oczywiście tymi, które dotyczą aktualizacji lub dostępu do innych krytycznych usług).

Po wykonaniu powyższych czynności nie zapomnijcie powiadomić o tym problemie wszystkich znajomych z blogami na WordPressie. Na koniec, przypomnijmy nasze porady, jak chronić się przed atakami DDoS.

PS. Jak się okazuje, Niebezpiecznk nie był jedynym serwisem, który zmagał się z tą techniką ataku DDoS w ostatnim czasie — Sucuri przed chwilą opisało przypadek jednego z ich klientów — scenariusz ataku pokrywa się 1:1 z naszym.

PPS. Przypominamy też, że jeśli ktoś z Was chciałby przetestować swoją sieć kontrolowanym atakiem DDoS, to zapraszamy do kontaktu. Wykonujemy symulację ataku DDoS (zarówno w podejściu wolumetrycznym jak i aplikacyjnym) i jesteśmy w stanie za wygenerować ruch o charakterystyce następujących ataków: SYN Flood, ICMP Flood, UDP Flood, HTTP(S) Connect, HTTP(S) Post, SSL Handshake (exhaustion/renegotiation), oraz inne (do ustalenia). W trakcie ataków możliwe jest dowolne “spoofowanie” pól pakietu/datagramu (np. pól z adresem źródłowym).


Przeczytaj także:



43 komentarzy

Dodaj komentarz
  1. A czy ten kod nie zablokuje również możliwości otrzymywania pingbacków?

  2. http://blog.cloudflare.com/wordpress-pingback-attacks-and-our-waf
    Cloudflare już o tym pisze :D

    • Miło, że się obudzili po informacji od konkurencyjnej usługi, mimo, że tego typu ruch mieli już 5 marca u siebie :-)

    • Ratują tyłki rzeszy administratorów stron :D Najważniejsze, że cokolwiek w tej sprawie zdziałali.

  3. @marsjaninzmarsa niestety tak.. ale coś za coś…

  4. “www.tajnesluzbykapitalizmu.pl”

    I wszystko staje się jasne ;]

  5. W ustawieniach wordpressa jest coś takiego:

    Zezwól innym blogom na informowanie o umieszczeniu odnośnika do tej witryny (pingbacki i trackbacki)

    nie wystarczy to wyłączyć?

  6. A tak z innej beczki to mpcforum caly czas zmaga sie z ddosami

  7. Tak na temat DDos, to MPCForum nie działa od 5 dni, cały czas strona cloudflare’a. Na FB piszą, że to DDos i sprawcą jest Rebekka

  8. A nie da się po prostu skasować jakiegoś pliku odpowiedzialnego za ping i trackbacki? Może wystarczy skasować wp-trackback.php z głównego katalogu WP i problem zniknie? Po co instalować kolejną wtyczkę lub dodawać fragment kodu skoro dałoby się to zrobić prościej?

    • Może dlatego, że takie rozwiązanie zadziała tylko do momentu aktualizacji WordPressa do najnowszej wersji (o ile w ogóle zadziała, a nie rzuci errorem bo brak pliku)?

  9. 1. Czy/jaka jest amplifikacja?
    2. Czy powiadomiliście stosowne abuse, zwł. “polskich” stron (nawiasem, Polska to nie tylko .pl)?
    3. Czy do powstrzymanie tego typu ataku nie wystarczy prosty rate limit na iptables, ew. użycie denyhost itp.?

    • Trzeba by wtedy powiadomić abuse 99% polskich wordpressów. ;-)

    • @LANcaster Tylko tych, które atakowały. Mowa jest o 39 (pewnie więcej, bo nie tylko pl w nazwie oznacza Polskę). Ale można też “robić newsa” i wierzyć, że ludzie faktycznie sprawdzą. A jak sprawdzą, to poprawią (o ile wycięcie funkcjonalności można nazwać poprawą). Wiara to piękna rzecz. ;-)

      Podatnych może i faktycznie jest 99%, natomiast wg mojej wiedzy niespecjalnie widać te “ataki”, na pewno nie ma to charakteru masowego.

      W ogóle nadal nie do końca widzę problem. Jest masa usług, które można wykorzystać do tego typu “ataku”. Z e-mail na czele.

      PS Wszelkie prawa zastrzeżone © 2009- echo date(“Y”); – zamierzone czy bug?

  10. Jesteście pewni, że np. http://www.plasticsurgery-texas.com to polski blog, a nie efekt wygrepania wszystkiego, co zawiera gdzieś “pl”? ;)

    • z niechęci do dolara ;)

    • Dolar nie gryzie :)

  11. juz kilka dni temu dalem wam wpis na face ze maly ddos na was leci ale moj wpis tam wyparowal hmm a teraz widac po obadaniu sprawy dopiero o tym piszecie tylko nie wiem czemu usuneliscie moj wpis, skad ta cenzura

    • wyparował pewnie dlatego, że taki wpis na fb to jak krzyczenie do sąsiada przez okno, że auto mu ukradli. Sąsiad wie, że ukradli mu auto. Każdy ddos widać w logach aktywności strony. Wiadomość odebrana i starczy.

  12. W końcu ktoś uchylił rąbka tajemnicy jak działa od środka CloudlFlare. Jakoś atakowani nigdy tego nie chcą robić (przynajmniej nie spotkałem się). Jakieś NDA?

  13. Jak wersje abonamentu na CF macie? Czy ta najtańsza za $20 chroni przed takimi atakami?

  14. Panowie to by wyjasnialo czemu jakis czas temu CF domagal sie wlaczonego skryptu podczas odwiedzania waszej strony. Wtedy mnie to “zdrzaznilo” ale powod oczywiscie jak najbardziej sluszny…

    Co do blokowania userow na podstawie uzywanego przez nich User Agenta ja u siebie zalatwiam to .htaccessem.

    http://pastebin.com/NAxRyiJj

    Pozdrawiam.

    Andrzej

  15. Google wykańcza konkurencję promując swojego blogspota.
    Poza tym Niebezpiecznik musi strasznie cienko prząść skoro używa darmowego wordpressowego CMS hehehe

    • Zdecydowanie lepiej pisać własny engine i go supportować, fixować, aktualizować? Ta… :-)

    • Google musi strasznie cienko prząść skoro używa darmowego Linuksa, hehehe.

  16. Dzisiaj rano dostałem maila, że google nie może znaleźć robots.txt – co dziwne plik był normalnie dostępny z poziomu przeglądarki. Po małym rozeznaniu (małym bo mało się znam), na serwerze w katalogu [temp] w Joomla! znalazłem plik o nazwie phpGloqbJ o następującej treści http://pastebin.com/TFRGcNN8 Na razie wgrywam się backup ale jak ktoś ma ochotę na małą analizę logów to zapraszam. Nie znam się zbytnio. Mam na jednym serwerze kilka stron Joomla! i jakiś stary tymczasowy WordPress z autoinstalatora – w logach nie widzę nigdzie “xmlrpc” ale jest kilka odwołań z domeny .ru do panelu przywracania hasła.

    • Hmmm mi to wyglada na jakiś worogi skrypt w phpapie ktory wylacza mechanizmy ochrony raportuje na googlowy emial potem dociaga shella ktory zapewne łaczy się z jakims c(AND)c. widać że szer w binarce exekowej. Co do sposobu w jaki sie tam znalazl poszukaj czy nie mozna sie wbic do ciebie wykorzystujac LFI albo RFI… Ale moge się mylić :)

  17. Można było by w takim ataku wykorzystać serwery hostujące za free WordPressa z dostępem do FTP, których są miliony ;)

    just sayin…

  18. Świetny temat wpisu. W dobie blogerów, wskazówki dotyczące bezpieczeństwa są na wagę złota. Okazuje się, że CloudFlare to całkiem dobre rozwiązanie :)

  19. “Co więcej, każdy może wymusić na dowolnym WordPressie wysłanie takiego złośliwego żądania przy pomocy zwykłego curla: [polecenie]”

    Sądzę, że nie powinniście tego podawać w artykule, podobnie, jak nie linkujecie do wyciekłych baz danych – wyjaśnienie działania ataku (cała reszta artykułu) może służyć zabezpieczeniu się przed nim, ale podanie polecenia “jak przeprowadzić atak samemu” jest pomocne tylko dla tych, którzy chcą coś zaatakować.

    Oczywiście, żeby zrobić “użytek” z tego polecenia trzeba by mieć jeszcze botnet, który wygeneruje dużą ilość takich zapytań i można rozważać, czy posiadacz botnetu nie znajdzie innej możliwości ataku – ale nadal, to IMHO ułatwianie im sprawy.

    • Albo innymi słowami: nie widzę, aby z podania dokładnego polecenia mogło wyniknąć coś dobrego. Z bardzo małym prawdopodobieństwem natomiast coś złego – więc po co podawać w ogóle?

    • “nie widzę, aby z podania dokładnego polecenia mogło wyniknąć coś dobrego. Z bardzo małym prawdopodobieństwem natomiast coś złego”

      Z moich obliczeń wynika, że prawdopodobieństwo czegoś dobrego wychodzi 8,21 BPAN*, a czegoś złego – 8,69 BPAN. W porównaniu z grupą kontrolną, której podawano exploity placebo, wynika, że różnica jest statystycznie nieznacząca.

      * proponowana jednostka SI – będziepadaćalbonie

      Teraz poważnie: swoje wizje i szacowanie na podstawie swoich domysłów rzeczy nieszacowalnych ciężko uznać za argument.

    • Straszne. Drugi wynik w google, normalnie kuźwa wiedza tajemna: https://www.google.pl/search?q=how+to+send+pingback+with+curl&oq=how+to+send+pingback+with+curl&aqs=chrome..69i57.9136j0j7&sourceid=chrome&espv=210&es_sm=93&ie=UTF-8

      Nie wpadłeś synku na to, że można dzięki temu szybko sprawdzić, czy nasz blog może być wykorzystany jako narzędzie ataku?

  20. @Xender, protokół RPC w dziedzinie informatyki, znany jest jak mąka piekarzowi ;)

  21. Jak dla mnie atak spory 162k i jak widać przepuściły go serwery wordpress i to najnowsze silniki wordpressa :( na serwerze WP.

    cóż potwierdza się powiedzenie:
    “jak nie zrobisz czegś sam to nie ufaj, że inni zrobią to lepiej”

    http://it.slashdot.org/story/14/03/11/2324207/large-ddos-attack-brings-wordpress-pingback-abuse-back-into-spotlight

  22. Może jakiś użytkownik był równie poirytowany jak ja czytając białe litery na czarnym tle.

    Ja mam pytanie – ile znacie stron informacyjnych z czarnym tłem i białymi napisami?!

    Rozumiem ,że ma być hackersko, konsolowo itp. ale jest to ch..e dla oka. Zróbcie stronę standard i przełącznik dla hakierów ;)

    • @Igla: Polecam Stylish. :)

    • I chwała Niebezpiecznikowi za to, za te czarne tło.
      Nie wypala oczu jak inne “strony informacyjne”.
      A najgorzej w nocy, bez światła z białym tłem, ugh. TO jest “ch..e dla oka”. :P

      A wracając do tematu:
      Jestem zbyt leniwa, żeby sprawdzić logi…
      Dobrze, że jeszcze nie adminuje nic poważnego :D

    • @Ashley: Polecam F.lux albo Redshift (zależnie od tego, czy wolisz ładny, klikalny interfejs czy preferencje w plikach konfiguracyjnych ;) ), serio ratuje oczy jak siedzi się przed komputerem po nocach. Na początku kolory z nim wydają się dziwne i nienaturalne, ale jak spróbujesz wyłączyć po paru godzinach to na 90% stwierdzisz, że już nie możesz bez tego żyć. ;)

    • dokładnie – zrobić wszystkie strony takie same, dość tego wymyślania, załóżmy mundurki…

  23. Wtyczka Disable XML-RPC uniemożliwia korzystanie z aplikacji WordPress’a, więc radzę się zastanowić czy warto aż tak się zabezpieczać.

  24. However, there are other factors that can cause or exacerbate this condition. You take a risk when selling on a product to a customer.
    Determining cause and effect is not really possible.

  25. Mam nową wersję wordpressa i nie mogę zakomunikować się od kilku dni z nim poprzez plik xmlrpc (chcę dodać posta z zewnętrznego programu), do tej pory wszystko działało, na serwerze nikt nie wie co się dzieje, mówią, że nie ma u nich żadnej blokady. Nie mam pojęcia jak to naprawić, ktoś pomoże?

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: