Praegune olukord: PHP2Shell. Kaks kriitilist PHP turvaauku (CVSS 9,2) lubavad kahjulikku koodi ilma sisselogimata. Paigad alates 21.10.2026.Mida nüüd teha →

Kahtlaste protsesside leidmine Linuxi serverites

Kahjulikud protsessid maskeerivad end kahjutute nimedega, töötavad ajutistest kaustadest või kustutatud failidest. Mõne lugeva käsuga leiate kõrvalekalded ja hindate neid.

Seis Lugemisaeg 5 minTuvastamine ja forensika

Lühidalt: Kahtlasi protsesse Linuxi serverites tunnete ära mõne tunnuse järgi: programmifail kustutatud või kataloogis /tmp, /dev/shm või veebikataloogis, nimi järgib süsteemiprotsessi, ebatavaline kasutaja, püsivad võrguühendused või suur koormus põhjuseta. Kontrollige lugevate käskudega, kas programmifail kuulub paigaldatud paketi juurde, ja kindlustage leiud enne, kui midagi lõpetate.

Mida „kahtlane“ protsessi puhul tähendab

Veebiserveris töötab sadu protsesse. Enamik kuulub operatsioonisüsteemi, veebiserveri, andmebaasi või PHP juurde. Ründaja, kes sai turvaauguga nagu PHP2Shell koodi käivitada, püüab nende vahel mitte silma jääda. Ta valib märkamatud nimed ja paigutab programmid sinna, kuhu veebiserveri kasutaja tohib kirjutada.

Kontrolliks aitab normaalseisundi tundmine. Kes teab, millised teenused serveris peaksid töötama, milliste kasutajate all ja mis koormusega, märkab kõrvalekaldeid palju kiiremini. Kui seda teadmist pole, tasub võrdluseks kasutada samalaadse kahtlustamata serveri protsessinimekirja.

Üksik tunnus ei ole veel tõend. Otsustav on koosmõju. Protsess Linuxi tuuma lõime nimega, mis töötab kasutaja www-data all, käivitati kataloogist /dev/shm ja hoiab ühendust välismaale, on selge juhtum. Kuidas kontrollida shelli erijuhtu veebiserveri all, kirjeldab Hoiatusmärk: veebiserver käivitab shelli.

Esimene ülevaade viie käsuga

Kõik käsud ainult loevad. Käivitage need root-na, et näha kõiki protsesse, ja salvestage väljundid veebikataloogist väljaspool asuvasse faili.

# 1. Kõik protsessid koos kasutaja, vanema PID, käivitusaja, CPU ja käsureaga
ps -eo user,pid,ppid,lstart,%cpu,%mem,cmd --sort=-%cpu | head -40

# 2. Protsessid, mille programmifail on kustutatud
ls -l /proc/[0-9]*/exe 2>/dev/null | grep "(deleted)"

# 3. Protsessid, mis töötavad ajutistest või veebikataloogidest
ls -l /proc/[0-9]*/exe 2>/dev/null | grep -E " -> (/tmp|/var/tmp|/dev/shm|/var/www)"

# 4. Võrguühendustega protsessid
ss -tunap

# 5. Veebiserveri kasutajate protsessid ülevaates
ps -eo user,pid,ppid,lstart,cmd | grep -E "^(www-data|apache|nginx) "

Kasutajanimed erinevad distributsiooniti ja paneeliti; Plesk ja teised paneelid käitavad PHP-d sageli vastava kliendi kasutaja all. Kohandage nimekiri oma keskkonnale.

Lugege väljundeid käivitusaega silmas pidades. Protsessid, mis töötavad serveri viimasest taaskäivitusest saadik, kuuluvad enamasti süsteemi juurde. Protsessid, mis käivitati keset ööd või päevadel pärast 17. oktoobrit ja ei sobi ühegi teenusega, väärivad tähelepanu. Võrrelge ka PHP protsesside arvu sellega, mida teie pooli seadistus lubab; oluliselt rohkem protsesse veebiserveri kasutaja all on vihje.

Kahtlased protsessid Linuxis: tüüpilised tunnused

Tunnus Miks see silma jääb Kas võimalik kahjutu seletus?
Programmifail „(deleted)“ ründajad kustutavad faile pärast käivitamist jah, pärast paketiuuendusi kuni taaskäivituseni
Käivituskoht /tmp, /dev/shm, üleslaadimiskaust sinna tohib kirjutada igaüks või veebiserver harva
Nimi nurksulgudes nagu [kworker] järgib tuuma lõimi ei, kui selle taga on programmifail
Püsivalt suur CPU koormus põhjuseta tüüpiline krüptokaevuritele jah, partiitööde või indekseerimise puhul
Vanemprotsess 1 ja veebiserveri kasutaja veebiserverist lahutatud, töötab iseseisvalt edasi harva
Ühendus tundmatu sihtkohaga juhtimine või andmevool jah, uuenduste ja API-de puhul

Tõelistel tuuma lõimedel ei ole programmifaili; ls -l /proc/PID/exe ei anna neil teed. Kui tuuma nimega protsess osutab failile, on see maskeeritud. Suure koormuse korral ilma nähtava põhjuseta aitab artikkel Krüptokaevurid veebiserveris.

Vastukontroll: kas programmifail kuulub paketi juurde?

Peaaegu kõik serveri legitiimsed programmid pärinevad paketihaldusest. Programmifail, mis ei kuulu ühegi paketi juurde, ei ole automaatselt kahjulik, kuid väärib täpset pilku.

PID=12345
EXE=$(readlink /proc/$PID/exe); echo "$EXE"
dpkg -S "$EXE"        # Debian/Ubuntu: millise paketi juurde fail kuulub?
rpm -qf "$EXE"        # RHEL-perekond
sha256sum /proc/$PID/exe   # kontrollsumma, toimib ka kustutatud faili puhul
tr '\0' ' ' < /proc/$PID/environ | head -c 600; echo   # keskkonnamuutujad

Kui programmifail on kustutatud, loeb sha256sum /proc/$PID/exe selle ikkagi töötavast protsessist välja. See kontrollsumma kuulub dokumentatsiooni. Faili koopia peaks tegema ainult see, kes teab, kuidas seda ohutult säilitada.

Kontrolli piirid töötavas süsteemis

Kõik ülaltoodud käsud usaldavad süsteemi, mida parajasti kontrollite. Tavalise veebisaidi kaudu toimuva sissemurdmise puhul veebiserveri kasutaja õigustega on see põhjendatav. Kui ründaja on saanud root-õigused, võib ta protsesse peita ja väljundeid võltsida. Siis näitab server ainult seda, mida ründaja lubab.

Vihjed sellele on vastuolud: koormus ilma nähtava protsessita, ühendused, mida tulemüür näeb, kuid ss mitte, või muudetud süsteemiprogrammid. Sellistel juhtudel kuulub kontroll kindlustatud tõmmisele. Töötavate süsteemide puhul lisandub sageli töömälu kindlustamine, sest mõned kahjulikud programmid eksisteerivad ainult seal ja jätavad kõvakettale vaevu jälgi. See kindlustamine peab toimuma enne taaskäivitust ning nõuab sobivaid tööriistu ja kogemust. Miks peaksite selle enne uuesti paigaldamist tegema, selgitab Kindlustage tõendid enne uuesti paigaldamist.

Oluline

Ärge lõpetage kahtlaseid protsesse esimese sammuna. Sageli käivitab need cron-töö või teenus uuesti ning protsessiga kaovad mälust käsurida, ühendused ja kustutatud programmifail.

Automaatkäivituste kontroll ja järgmised sammud

Kahjulik protsess, mis pärast taaskäivitust kaoks, oleks ründajatele väärtusetu. Seetõttu kuulub iga protsessileiu juurde küsimus, mis seda käivitab. Lisaks cron-töödele tulevad kõne alla eelkõige systemd teenused, mida root-õigustega ründaja saab luua. Silma jäävad üldiste nimedega teenused, mille programmifail asub ebatavalises kataloogis, ja unit-failid, mis on tekkinud pärast 17. oktoobrit.

# Töötavad teenused ja hiljuti muudetud unit-failid
systemctl list-units --type=service --state=running --no-pager
find /etc/systemd /usr/lib/systemd /lib/systemd -type f -newerct "2026-10-17" -ls 2>/dev/null

# Kas teek süstitakse igasse protsessi? Fail tavaliselt ei eksisteeri.
ls -l /etc/ld.so.preload 2>/dev/null && cat /etc/ld.so.preload

Kirje failis /etc/ld.so.preload on tavalistes veebiserverites haruldane ja tugev märk root-õigustega manipuleerimisest. Kuidas ajastatud ülesandeid täielikult kontrollida, kirjeldab Peidetud cron-tööde tuvastamine tagauksena.

Seejärel järgnevad järgmised sammud selles järjekorras:

  1. Kindlustage väljundid ja kontrollsummad kellaajaga.
  2. Otsige püsivust: cron-tööd, systemd teenused ja taimerid, SSH-võtmed.
  3. Selgitage päritolu: logid alates 20. oktoobrist, uued failid veebikataloogis.
  4. Isoleerige server ja planeerige puhastamine või uuesti ülesehitus.

Ülevaate kõigist tüüpilistest tunnustest pärast PHP2Shelli annab Kas olen juba kompromiteeritud?.

Kuidas PHP SOS konkreetselt aitab?

  • Protsesside hindamine: Kontrollime protsessinimekirja, programmifaile ja ühendusi ning hindame iga leiu.
  • Kohtukõlbulik kindlustamine: IT-forensikaga kindlustame töömälu ja andmekandjad enne, kui midagi muudetakse.
  • Püsivuse leidmine: Otsime mehhanisme, mis kahjulikke protsesse uuesti käivitavad.
  • Lõpetamine: Puhastame või ehitame uuesti üles ja dokumenteerime intsidendi lõpuni.

Korduma kippuvad küsimused

Kuidas tunda ära kahtlane protsess Linuxis?

Tüüpilised tunnused on kustutatud programmifail, käivituskoht kataloogis /tmp või /dev/shm, süsteemiprotsessi järgiv nimi, ebatavaline kasutaja ja püsivad võrguühendused. Üksikud tunnused on vihjed, mitu koos tõsine kahtlus.

Mida tähendab „(deleted)“ kirje /proc/PID/exe juures?

Protsessi programmifail kustutati pärast käivitamist. See juhtub legitiimselt pärast paketiuuendusi, kuni teenus uuesti käivitatakse. Ajutistest kaustadest või veebiserveri kasutaja all töötavate protsesside puhul on see tüüpiline maskeerimiskäitumine.

Kas ma võin ps väljundile loota?

Tavalise sissemurdmise puhul enamasti jah. Kui ründaja on aga saanud root-õigused, võib ta tööriistu ja väljundeid manipuleerida. Siis on väljastpoolt kontroll, näiteks kindlustatud tõmmisel, usaldusväärsem.

Kas peaksin kahtlase protsessi käsuga kill lõpetama?

Mitte esimese asjana. Kindlustage esmalt käsurida, programmifail, ühendused ja käivitusaeg. Lõpetatud protsess ei reeda enam midagi ja sageli käivitab selle cron-töö või teenus niikuinii uuesti.

Allikad

Kohene kontakt

Iga tund loeb. Kirjutage meile kohe.

Kirjeldage lühidalt süsteemi, PHP versiooni ja tähelepanekut. Võtame teiega ühendust, selgitame olukorra välja ja töötame kaugtööna, kuni intsident on lõpetatud ja dokumenteeritud.

Kohene abi