V pondělí 23. října jsme zažili nejrozsáhlejší útok na instalace WordPress. Naplno se probudil “Indonéský botnet” a začal masivně útočit na soubory xmlrpc.php
. Ačkoliv se útok snažil vypadat nenápadně, ve výsledku byl opravdu masivní.
Indonéský botnet
Každý den děláme několik agregací dat s cílem zjistit nové potenciální hrozby. Jednou z nich je hledání útoků SQLi. Nové botnety se většinou snaží chovat nenápadně než narostou. Ti, co je ovládají, je tak využívají k nenápadnému hledání zranitelností pro další růst. Během října jsme viděli poměrně slušný nárůst aktivit z Asie, kde v čele byl poskytovatel “PT Telekomunikasi Indonesia”. Odsud tedy interní označení “Indonéský botnet”.
Když takto vidíme lokální nárůst různých škodlivých aktivit, většinou to souvisí s rozšířením nějakého malware na mobilních telefonech. Často je to v oblastech, kde jsou z politických, náboženských anebo čistě obchodních důvodů omezené oblíbené mobilní aplikace a lidé si je pak stahují ze serverů třetích stran, kde mohou obsahovat škodlivý kód.
Pak provádí útoky přes sítě mobilních operátorů a pevných připojení, které nabízí Wi-Fi. Když jsme zagregovali data za 24 hodin, “PT Telekomunikasi Indonesia” byl vždy vidět na vrcholu.
WordPress a xmlrpc.php
Soubor xmlrpc.php
ve WordPress obsahuje skript pro implementaci XML-RPC protokolu, který umožňuje systémům komunikovat mezi sebou. XML-RPC je protokol umožňující jednoduché vzdálené procedurální volání. V kontextu WordPressu xmlrpc.php
umožňoval externím aplikacím (jako jsou mobilní aplikace nebo jiné webové služby) komunikovat s WordPressem, například pro publikování příspěvků, správu komentářů a podobně.
Nicméně, xmlrpc.php
se běžně stává cílem útoků z několika důvodů:
Brute Force útoky: Útočníci mohou používat xmlrpc.php
pro provádění brute force útoků na uživatelská jména a hesla, což je metoda, kdy útočník opakovaně zkouší různé kombinace uživatelských jmen a hesel, dokud se nepřihlásí.
DDoS útoky: Soubor také může být zneužit k provedení distribuovaných denial-of-service (DDoS) útoků, kde útočník volá xmlrpc.php
s velkým množstvím požadavků, což přetěžuje server.
Amplifikace útoků: xmlrpc.php
lze zneužít k amplifikaci útoků, kde útočník pošle malý požadavek, který vede k větší odpovědi od serveru, zvyšující sílu útoku.
Pokud máte vaši doménu chráněnou WEDOS Global Protection, tak je soubor xmlrpc.php
chráněn řadou komplexních pravidel, které neomezují WordPress a zároveň zahazují pokusy o útoky.
Pondělí 23. října 2023
Po půlnoci náš automatizovaný externí monitoring agregující data podle serverů ze všech webů WEDOS OnLine detekoval menší zpomalení webů na některých serverech. Vyšší zátěž potvrdil i interní monitoring zátěže serverů.
Noční hlídka provedla pár zásahů, které situaci stabilizovaly. K žádné krizové situaci nedocházelo, protože servery udržujeme poloprázdné, aby byl dostatek prostoru pro vyrovnání se s nárazovou zátěží. Navíc byl noční provoz.
Útoky dál probíhaly, na serverech to nebylo znát až do rána, kdy začal běžný denní provoz a začala chodit hlášení z WEDOS OnLine, že některé servery jsou pomalejší než je běžné. Začali jsme se tím intenzivněji zabývat a analyzovat provoz.
Brzy se nám podařilo zjistit, že se jedná o útok na xmlrpc.php
. IP adresy “Indonéského botnetu” nám byly známé. Udělali jsme tak hromadnou agregaci dat, a přestože se útočníci opravdu hezky snažili maskovat, tak používali pouze 6 společných useragent
.
Useragent
je krátký textový řetězec, který webový prohlížeč nebo jiný klient posílá webserveru při každém požadavku, a identifikuje tak svůj internetový prohlížeč, operační systém, verze a další informace. Slouží k tomu, aby server poznal, s jakým typem zařízení nebo aplikace komunikuje.
Stačilo tedy odfiltrovat z agregací ostatní useragent
a nechat pouze tyto:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36
Tehdy jsme poprvé uviděli rozsah útoku. I přes obrovské množství requestů šlo z jedné IP adresy jen jednotky až nižší desítky reuquestů za hodinu. A to stíhaly posílat přes 700 tisíc požadavků za hodinu na nějakých 143 tisíc (sub)domén. Pokud bychom ze všech našich serverů v reálném čase nestahovali access logy na jedno centrální místo a nevyhodnocovali, neměli bychom šanci něco takového dohledat.
Takto rozložený útok jako správce jednoho webu nemáte šanci poznat a popravdě se proti němu ani bránit, protože pokaždé přijde request z jiné IP.
Vzhledem k tomu, že weby zákazníků nepadaly ani nebyly nijak významně zpomalené, nebylo nutné nijak ukvapeně jednat. Rozdělili jsme si proto práci.
- Zjistit, které weby tím nejvíce trpí, a ty přesunout na WEDOS Global Protection. Pokud zákazník u webhostingu má naše DNS, uděláme to automaticky za něj. Tyto sice rozsáhlé ale primitivní útoky webům chráněným WEDOS Global Protection neublíží.
- Všechny problémové IP adresy, které jsou nejaktivnější, ale jinak na weby našich zákazníků nechodí, dočasně dát na blacklist.
- Definovat jasná pravidla, jak chránit weby na webhostingu s minimálním dopadem na funkčnost.
Zhruba v 10:40 se vše rozjelo. Bylo zajímavé sledovat, jak na to “Indonéský botnet” reagoval. Jakmile jsme mu začali banovat IP adresy, další začaly posílat více požadavků. Takže celkový součet moc neklesal. Nicméně po nějakých 50 tisících IP adresách, které jsme si byli jistí, že nebudou nikomu chybět, bylo znát, že útok slábne.
Pak přišel technik, který má na starosti webhostingy a proxy, které jim pomáhají se zátěží, s s řešením, které implementovalo jedno z pravidel z WEDOS Global Protection pro všechny právě na proxy. Byl to trochu risk a tak jsme radši dali i varování na status stránku. Nic se ale nerozbilo a útočníkům se postupně začala vracet místo 200 (fialová) 403 (modrá). Tam, kde to úplně nešlo, jsme nezasahovali, protože vliv takových odchylek na servery byl minimální. Zákazníky s instalacemi WordPress obsahujícími něco, co xmlrpc.php
výrazně zpomalovalo, jsme dali na WEDOS Global.
Poté, co útok skončil
Naše nové oddělení datové analytiky pak dostalo za úkol zpětně analyzovat útok a identifikovat další zranitelné weby na WordPress. Tyto weby pak obdržela podpora pro dořešení přesunu na WEDOS Global Protection.
A jaké jsou finální statistiky?
Na webhostingy dorazilo: 17 771 841 requestů
Celkem cílů (sub)domén: 143 727
Celkem útočících UIP: 162 952
Celkový čas pro vygenerování odpovědí webserverů: 3870 h 22 min.
Do statistik nejsou započítané zablokované požadavky na WEDOS Global Protection, blacklistu a proxy.
Jak vidíte, nejednalo se o nic hrozného. Proto jsme si mohli dovolit takto laxní přístup. Naštěstí mají naše servery dostatek výkonu a volné kapacity pro zvládnutí nadměrného provozu. Pokud by šlo do tuhého, jednali bychom rychleji a tvrději.
A co botnet? Ten je stále aktivní. Je zneužíván pro standardní L7 DDoS útoky. Provedl jich do konce října zhruba desítku, které stojí za zmínku. Stále také provádí v menším měřítku hledání zranitelností, ale už používá jiné useragent.
Ochraňte váš WordPress s WEDOS Global Protection pluginem
Ochraňte svůj web snadno a efektivně pomocí našeho nového WordPress pluginu WEDOS Global Protection. Plugin vám umožní rychle a snadno vytvořit nový účet na WEDOS Global, nebo spárovat váš existující přímo z vaší administrace WordPressu, aniž byste museli opustit její prostředí.
Plugin si zdarma nainstalujte přímo v administraci WordPressu. Hledejte WEDOS Global Protection.