Trenutno stanje: PHP2Shell. Dvije kritične PHP ranjivosti (CVSS 9.2) omogućuju zlonamjerni kod bez prijave. Zakrpe od 21. 10. 2026.Što sada učiniti →

Pronaći sumnjive procese na Linux poslužiteljima

Zlonamjerni procesi maskiraju se bezazlenim imenima, rade iz privremenih direktorija ili s izbrisanih datoteka. S nekoliko naredbi koje samo čitaju pronaći ćete neobičnosti i razvrstati ih.

Stanje 5 min čitanjaOtkrivanje i forenzika

Ukratko: Sumnjive procese na Linux poslužiteljima prepoznajete po nekoliko obilježja: programska datoteka izbrisana ili u /tmp, /dev/shm ili web-direktoriju, ime oponaša sistemski proces, neobičan korisnik, trajne mrežne veze ili visoko opterećenje bez razloga. Naredbama koje samo čitaju provjerite pripada li programska datoteka instaliranom paketu i osigurajte nalaze prije nego išta prekinete.

Što „sumnjivo“ znači kod procesa

Na web-poslužitelju radi stotine procesa. Većina pripada operacijskom sustavu, web-poslužitelju, bazi podataka ili PHP-u. Napadač koji je putem ranjivosti poput PHP2Shella mogao izvršiti kod nastoji među njima ne upadati u oči. Bira neupadljiva imena i programe odlaže tamo gdje korisnik web-poslužitelja smije pisati.

Za provjeru pomaže poznavati normalno stanje. Tko zna koje usluge na poslužitelju trebaju raditi, pod kojim korisnicima i s kojim opterećenjem, odstupanja prepoznaje puno brže. Ako to znanje nedostaje, isplati se za usporedbu uzeti popis procesa sličnog, neosumnjičenog poslužitelja.

Pojedino obilježje još nije dokaz. Odlučuje međudjelovanje. Proces s imenom jezgrine niti koji radi pod www-data, pokrenut je iz /dev/shm i drži vezu u inozemstvo, jasan je slučaj. Kako provjeriti poseban slučaj ljuske pod web-poslužiteljem, opisuje članak Znak upozorenja: web-poslužitelj pokreće ljusku.

Prvi pregled u pet naredbi

Sve naredbe samo čitaju. Izvedite ih kao root da biste vidjeli sve procese i ispise spremite u datoteku izvan web-direktorija.

# 1. Svi procesi s korisnikom, PID-om roditelja, vremenom pokretanja, CPU-om i naredbenim retkom
ps -eo user,pid,ppid,lstart,%cpu,%mem,cmd --sort=-%cpu | head -40

# 2. Procesi čija je programska datoteka izbrisana
ls -l /proc/[0-9]*/exe 2>/dev/null | grep "(deleted)"

# 3. Procesi koji rade iz privremenih ili web-direktorija
ls -l /proc/[0-9]*/exe 2>/dev/null | grep -E " -> (/tmp|/var/tmp|/dev/shm|/var/www)"

# 4. Procesi s mrežnim vezama
ss -tunap

# 5. Pregled procesa korisnika web-poslužitelja
ps -eo user,pid,ppid,lstart,cmd | grep -E "^(www-data|apache|nginx) "

Korisnička imena razlikuju se po distribuciji i panelu; Plesk i drugi paneli PHP često izvršavaju pod korisnikom pojedinog klijenta. Prilagodite popis svom okruženju.

Ispise čitajte s pogledom na vrijeme pokretanja. Procesi koji rade od zadnjeg ponovnog pokretanja poslužitelja uglavnom pripadaju sustavu. Procesi pokrenuti usred noći ili u danima nakon 17. listopada koji ne odgovaraju nijednoj usluzi zaslužuju pažnju. Usporedite i broj PHP procesa s onim što dopušta konfiguracija poola; znatno više procesa pod korisnikom web-poslužitelja je naznaka.

Sumnjivi procesi na Linuxu: tipična obilježja

Obilježje Zašto upada u oči Moguće bezazleno objašnjenje?
Programska datoteka „(deleted)“ napadači brišu datoteke nakon pokretanja da, nakon ažuriranja paketa do ponovnog pokretanja
Mjesto pokretanja /tmp, /dev/shm, direktorij za prijenose tamo smije pisati svatko ili web-poslužitelj rijetko
Ime u uglatim zagradama poput [kworker] oponaša jezgrine niti ne, ako iza njega stoji programska datoteka
Trajno visoko opterećenje CPU-a bez povoda tipično za kriptorudare da, kod batch poslova ili indeksiranja
Roditeljski proces 1 i korisnik web-poslužitelja odvojen od web-poslužitelja, radi samostalno dalje rijetko
Veza prema nepoznatom odredištu upravljanje ili odljev podataka da, kod ažuriranja i API-ja

Prave jezgrine niti nemaju programsku datoteku; ls -l /proc/PID/exe kod njih ne daje put. Pokazuje li proces s jezgrinim imenom na datoteku, maskiran je. Kod visokog opterećenja bez prepoznatljivog razloga pomaže članak Kriptorudar na web-poslužitelju.

Protuprovjera: pripada li programska datoteka paketu?

Gotovo svi legitimni programi na poslužitelju potječu iz upravljanja paketima. Programska datoteka koja ne pripada nijednom paketu nije automatski zlonamjerna, ali zaslužuje pomnu pozornost.

PID=12345
EXE=$(readlink /proc/$PID/exe); echo "$EXE"
dpkg -S "$EXE"        # Debian/Ubuntu: kojem paketu pripada datoteka?
rpm -qf "$EXE"        # RHEL obitelj
sha256sum /proc/$PID/exe   # kontrolni zbroj, radi i kod izbrisane datoteke
tr '\0' ' ' < /proc/$PID/environ | head -c 600; echo   # varijable okruženja

Ako je programska datoteka izbrisana, sha256sum /proc/$PID/exe je ipak čita iz aktivnog procesa. Taj kontrolni zbroj pripada u dokumentaciju. Kopiju datoteke smije napraviti samo netko tko zna kako je sigurno pohraniti.

Granice provjere na aktivnom sustavu

Sve gornje naredbe vjeruju sustavu koji upravo provjeravate. Kod uobičajene provale putem web-stranice s pravima korisnika web-poslužitelja to je opravdano. Ako je napadač stekao root prava, može sakriti procese i krivotvoriti ispise. Tada poslužitelj pokazuje samo ono što napadač dopušta.

Naznake su proturječnosti: opterećenje bez vidljivog procesa, veze koje vatrozid vidi, a ss ne, ili izmijenjeni sistemski programi. U takvim slučajevima provjera pripada na osiguranu sliku. Kod aktivnih sustava često se dodaje i sigurnosna kopija radne memorije, jer neki zlonamjerni programi postoje samo tamo i na disku ostavljaju gotovo nikakve tragove. Ta se kopija mora napraviti prije ponovnog pokretanja i traži odgovarajuće alate i iskustvo. Zašto je trebate napraviti prije nove instalacije, objašnjava članak Osigurati dokaze prije ponovne instalacije.

Važno

Sumnjive procese ne prekidajte kao prvi korak. Često ih cron posao ili usluga ponovno pokrene, a s procesom iz memorije nestaju naredbeni redak, veze i izbrisana programska datoteka.

Provjeriti automatska pokretanja i sljedeći koraci

Zlonamjeran proces koji nakon ponovnog pokretanja nestane bio bi napadačima bezvrijedan. Zato uz svaki nalaz procesa pripada pitanje što ga pokreće. Uz cron poslove dolaze u obzir ponajprije systemd usluge koje napadač s root pravima može stvoriti. Upadljive su usluge s generičkim imenima čija se programska datoteka nalazi u neobičnom direktoriju te unit datoteke nastale nakon 17. listopada.

# Aktivne usluge i nedavno izmijenjene unit datoteke
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

# Ubacuje li se biblioteka u svaki proces? Datoteka normalno ne postoji.
ls -l /etc/ld.so.preload 2>/dev/null && cat /etc/ld.so.preload

Unos u /etc/ld.so.preload rijedak je na uobičajenim web-poslužiteljima i snažna je naznaka manipulacije s root pravima. Kako potpuno provjeriti planirane zadatke, opisuje članak Prepoznati skrivene cron poslove kao stražnja vrata.

Zatim slijede sljedeći koraci ovim redoslijedom:

  1. Osigurati ispise i kontrolne zbrojeve s vremenom.
  2. Tražiti postojanost: cron poslove, systemd usluge i timere, SSH ključeve.
  3. Razjasniti podrijetlo: zapisnici od 20. listopada, nove datoteke u web-direktoriju.
  4. Izolirati poslužitelj i planirati čišćenje ili ponovnu izgradnju.

Pregled svih tipičnih znakova nakon PHP2Shella daje članak Jesam li već kompromitiran?.

Kako PHP SOS konkretno pomaže?

  • Procijeniti procese: Provjeravamo popis procesa, programske datoteke i veze te razvrstavamo svaki nalaz.
  • Osigurati dokazno: Uz IT forenziku osiguravamo radnu memoriju i nosače podataka prije nego se išta promijeni.
  • Pronaći postojanost: Tražimo mehanizme koji ponovno pokreću zlonamjerne procese.
  • Zaključiti: Čistimo ili ponovno gradimo i dokumentiramo incident do zaključka.

Česta pitanja

Po čemu prepoznajem sumnjivi proces na Linuxu?

Tipična obilježja su izbrisana programska datoteka, mjesto pokretanja u /tmp ili /dev/shm, ime koje oponaša sistemski proces, neobičan korisnik i trajne mrežne veze. Pojedina obilježja su naznake, a više njih zajedno ozbiljna sumnja.

Što znači „(deleted)“ kod /proc/PID/exe?

Programska datoteka procesa izbrisana je nakon pokretanja. To se legitimno događa nakon ažuriranja paketa, sve dok se usluga ponovno ne pokrene. Kod procesa iz privremenih direktorija ili pod korisnikom web-poslužitelja to je tipično maskirno ponašanje.

Mogu li se osloniti na ispis naredbe ps?

Kod uobičajene provale uglavnom da. No ako je napadač stekao root prava, može manipulirati alatima i ispisima. Tada je pouzdanija provjera izvana, primjerice na osiguranoj slici.

Trebam li sumnjivi proces prekinuti naredbom kill?

Ne kao prvo. Najprije osigurajte naredbeni redak, programsku datoteku, veze i vrijeme pokretanja. Prekinuti proces više ništa ne odaje, a cron posao ili usluga ga često ionako ponovno pokrene.

Izvori

Hitni kontakt

Svaki sat se računa. Pišite nam odmah.

Ukratko opišite sustav, verziju PHP-a i opažanje. Javit ćemo Vam se, razjasniti situaciju i raditi na daljinu dok incident nije zaključen i dokumentiran.

Hitna pomoć