A modern webes infrastruktúrák egyik legfontosabb építőeleme a reverse proxy réteg. Ebben a szerepben az NGINX világszerte domináns megoldás. Webkiszolgálóként, load balancer-ként, cache rétegként és forgalomirányító proxyként egyaránt használják. Emiatt különösen veszélyes az a támadási módszer, amely nem a szoftver sérülékenységeit használja ki, hanem a konfiguráció manipulálásán keresztül fordítja a rendszert a támadó javára.
Az utóbbi időben megfigyelt kampányok jól mutatják, hogy a támadók egyre gyakrabban a működési modell gyengeségeire építenek. A cél nem az NGINX feltörése exploit segítségével, hanem a konfiguráció módosítása úgy, hogy a webszerver legitim működés közben kezdjen el adatot szivárogtatni vagy forgalmat eltéríteni. A támadás különösen alattomos, mert a weboldal zavartalanul működik tovább, miközben a felhasználói kérés a háttérben már a támadó infrastruktúráján halad át.
A támadónak elegendő valamilyen szintű szerverhozzáférést szereznie, például ellopott hitelesítő adatokkal, gyenge SSH védelemmel, kompromittált hosting panelen vagy fertőzött konténer image-en keresztül. Innen a fő cél az NGINX konfiguráció módosítása. Mivel az NGINX eleve forgalom feldolgozására és továbbítására készült, a proxy funkciók visszaélésszerű használata nehezen különböztethető meg egy legitim konfigurációs beállítástól. A forgalom ilyenkor nem feltétlenül kerül látványosan átirányításra, hanem a támadó szerverén keresztül halad tovább a legitim cél felé, ami gyakorlatilag szerver oldali man-in-the-middle működésnek felel meg.
A kampány során automatizált, több lépcsős eszköztár dolgozik. A folyamat egy vezérlő script futtatásával indul, amely letölti a további komponenseket és felméri a környezetet. A kód képes akkor is kommunikálni a támadó infrastruktúrával, ha a klasszikus eszközök – például curl vagy wget – blokkolva vannak, mivel közvetlen TCP-alapú HTTP kapcsolatot is létre tud hozni. Ez azt mutatja, hogy a támadás kifejezetten számol védett vagy korlátozott környezetekkel.
A következő lépésben az eszközök megkeresik az NGINX konfigurációs fájlokat. Kiemelt célpontok a hosting panellel kezelt rendszerek, különösen a Baota (BT) panelt használó szerverek, ahol a konfiguráció módosítása gyakran panel szinten is lehetséges. A támadók nem egyszerű szövegbeillesztéssel dolgoznak, hanem strukturált feldolgozó eszközöket – például csplit és awk – használnak, így minimalizálják a konfiguráció sérülésének és a szolgáltatás leállásának kockázatát.
A fertőzés hash alapú ellenőrzést is tartalmaz, amely segít felismerni a korábban kompromittált konfigurációkat. Ez csökkenti a naplózási zajt és segíti a hosszú távú, észrevétlen jelenlétet. A módosítások után a támadó eszközök validálják az NGINX konfigurációt, majd csak sikeres ellenőrzés után töltik újra a szolgáltatást. Ha ez nem sikerül, bizonyos esetekben kényszerített újraindítást is alkalmazhatnak.
A forgalom eltérítése jellemzően NGINX location blokkok módosításával történik. A támadók olyan proxy szabályokat helyeznek el, amelyek bizonyos URL útvonalakat a saját szervereik felé irányítanak. A módszer különösen veszélyes, mert a proxy szabályok megőrzik az eredeti kérés kontextusát, beleértve a Host, X-Real-IP, User-Agent és Referer headereket. Emiatt a rendszerek teljesen legitim forgalomként naplózzák a támadáson keresztül érkező kéréseket. A teljes URL, beleértve a query paramétereket is, továbbításra kerül, ami gyakorlatilag átlátszó MITM proxy működést eredményez.
A támadó eszköztár képes a cél domain alapján dinamikusan kiválasztani az injektálási sablonokat, ami lehetővé teszi a kampány nagy léptékű automatizálását, különösen shared hosting környezetekben. A kompromittált rendszerekről riport készül, amely tartalmazza az eltérített domaineket és az aktív proxy szabályokat, így a támadók pontos képet kapnak az átvett infrastruktúráról.
Ismert kompromittálási jelek:
Rosszindulatú backend domainek:
- pier46[.]com — bt.sh, zdh.sh
- hashbank8[.]com — bt.sh, zdh.sh
- cogicpt[.]org — bt.sh
Parancs- és vezérlő (C2) IP / adatfeltöltési célpont
- 94.210[.]227 — ok.sh
Perzisztencia / nyomkövető fájl
- /tmp/.domain_group_map.conf — zdh.sh
