# Veebishelli tuvastamine ja eemaldamine

> Veebishelli tuvastamine pärast PHP2Shelli: kahtlased PHP failid, protsessid ja ühendused leida, jäljed turvata ning tagauksed korralikult eemaldada.

Allikas: https://phpsos.de/et/ratgeber/webshell-erkennen/  
Seis: 25.10.2026  
Pakkuja: PHP SOS, PHP hädaabi ja serveri turvalisus. Kohene abi WhatsAppis: https://wa.me/491736494914?text=Tere%2C%20PHP%20SOS%2C%20vajame%20abi%20oma%20PHP-serveriga.%20Ettev%C3%B5te%3A%20%E2%80%A6%20Veebisait%3A%20%E2%80%A6

**Lühidalt:** Veebishelli tuvastate uute või muudetud PHP failide järgi ebatüüpilistes kohtades, veebiserveri kasutaja võõraste protsesside ja ebatavaliste ühenduste järgi. Turvake jäljed enne kustutamist ja taastage kood puhtast allikast. Paik üksi tagaust ei eemalda.

## Miks on veebishellid pärast PHP2Shelli teema

PHP enda turvaaugud CVE-2026-109618 ja CVE-2026-109619 võimaldavad kahjuliku koodi kaugkäivitamist ilma sisselogimata. Edukas rünnak taotleb loogiliselt püsivat tagaust ehk veebishelli. See jääb alles ka siis, kui PHP on vahepeal uuendatud.

Meediaraportite kohaselt täheldati esimest rünnakukatset juba 17.10.2026, paigad järgnesid 21.10. Kes oli selle perioodi jooksul haavatav, peaks sihipäraselt järele vaatama. Kinnitatud kompromiteerimisnäitajaid (Indicators of Compromise) ei ole seni avaldatud. Otsing tugineb seetõttu käitumuslikele kõrvalekalletele, mitte valmis nimekirjale.

> **Tegutsege kohe:**
> Kui leiate veebishelli serverist, kus on klientide andmed: ärge kustutage kiirustades. Esmalt turvake tõendid, seejärel isoleerige server ja planeerige edasine tegevus.

## Kuidas veebishelli tuvastada: failide kontroll

Enamik veebishelle on PHP failid veebikataloogis. Silma torkavad failid, mis tekkisid või muutusid pärast 17.10., PHP failid üleslaadimis- ja vahemälukaustades ning hägustatud koodiga failid. Järgmised käsud ei muuda midagi, need ainult loetlevad:

```bash
# PHP failid, mida on muudetud alates 17.10.2026
find /var/www -type f -name "*.php*" -newermt "2026-10-17" -ls

# PHP failid üleslaadimis-, vahemälu- või tmp-kaustades
find /var/www -type f -name "*.php*" \( -path "*upload*" -o -path "*cache*" -o -path "*tmp*" \) -ls

# Tüüpiline hägustamine: eval koos dekodeerimisega
grep -rlE "eval\s*\(\s*(base64_decode|gzinflate|str_rot13|gzuncompress)" /var/www --include="*.php"

# Ebatavaliselt pikad read viitavad sageli pakitud koodile
grep -rlE ".{3000,}" /var/www --include="*.php"
```

Tabamused on vihjed, mitte tõendid. Mõned pluginad kasutavad legitiimselt kodeeritud koodi. Võrrelge kahtlaseid faile tootja originaalpaketiga. Kõige usaldusväärsem on võrdlus kontrollsummade või versioonihaldussüsteemiga, näiteks Giti:

```bash
# Kõrvalekalded viimasest teadaolevast seisust Giti hoidlas
git -C /var/www/projekt status --porcelain
```

Ajatempel võib olla võltsitud. Ärge tuginege seetõttu ainult faili muutmiskuupäevale.

### Millised tunnused teevad faili kahtlaseks

| Tunnus | Miks see silma torkab |
|---|---|
| PHP fail üleslaadimis- või piltide kaustas | Seal peaks olema ainult meedia |
| Topeltlaiend, nagu `.jpg.php` või `.php.png` | Maskeerimine süütuks failiks |
| Väga pikad read ilma reavahetuseta | Tüüpiline pakitud või krüpteeritud koodile |
| Failinimi sarnane tuumafailile, kuid puudub originaalpaketist | Maskeerimine tuntud keskkonnas |
| Omanik või õigused erinevad naaberfailidest | Fail on loodud muul teel |

Mida rohkem tunnuseid kokku langeb, seda suurem on leiu tõenäosus. Avage kahtlasi faile ainult tekstina, mitte kunagi brauseris, sest veebisaidi kaudu avamine käivitaks koodi.

## Protsesside, ühenduste ja cron-ülesannete kontroll

Aktiivne veebishell jätab jälgi sageli väljapoole failisüsteemi. Veebiserveri kasutaja, näiteks `www-data`, `apache` või `nginx`, ei käivita tavaliselt shelle, võrgutööriistu ega kompilaatoreid.

```bash
# Tüüpiliste veebiserveri kasutajate protsessid
ps -eo user,pid,ppid,lstart,cmd | grep -E "^(www-data|apache|nginx)"

# Avatud võrguühendused koos protsessiga
sudo ss -tunap | grep -E "php|www-data|apache|nginx"

# Veebiserveri kasutaja ajastatud ülesanded
sudo crontab -u www-data -l
ls -la /etc/cron.d /var/spool/cron 2>/dev/null
```

Silma torkavad püsivad väljaminevad ühendused tundmatute sihtkohtadega, krüptiliste nimedega protsessid ja cron-ülesanded, mis laadivad faile internetist. Kontrollige lisaks juurdepääsulogidest päringuid failidele, mida varem ei olnud. Kuidas seda teha, kirjeldab juhend [Veebiserveri logide analüüs pärast rünnakut](https://phpsos.de/et/ratgeber/logfiles-auswerten/).

## Turvake jäljed enne eemaldamist

Kes kustutab esimesena, kaotab vastused tähtsaimatele küsimustele: kuidas ründaja sisse sai, mida ta nägi, millised andmed on mõjutatud? Neid vastuseid on vaja võimaliku IKÜM-i teavituse jaoks, kindlustajatele ja otsuseks, kas ohus on ka teised süsteemid.

Mõistlik järjekord:

1. Dokumenteerige seis: protsesside nimekiri, võrguühendused, sisselogitud kasutajad.
2. Kopeerige kahtlased failid ja logid kontrollsummaga, neid avamata ega käivitamata.
3. Võimaluse korral looge süsteemi tõmmis või virtuaalmasina hetktõmmis (snapshot).
4. Võtke server võrgust maha või piirake juurdepääsu tugevalt.

Tundlike andmete või võimaliku kohtuvaidlusega süsteemide puhul peaks turvamine toimuma forensiliselt korrektselt. Taustateavet leiate lehelt [IT-forensika pärast veebiserveri rünnakut](https://phpsos.de/et/leistungen/it-forensik/).

## Veebishellide korralik eemaldamine

Üksiku faili kustutamine on harva lõpp. Ründajad loovad sageli mitu ligipääsu: täiendavaid faile varjatud kohtades, kirjeid konfiguratsioonifailides, nagu `.htaccess` või `.user.ini`, uusi administraatori kontosid rakenduses või cron-ülesandeid. Usaldusväärne puhastus järgib neid samme:

- Viige PHP parandatud seisu (8.5.12, 8.4.27, 8.3.36, 8.2.35 või kinnitatud backport) ja taaskäivitage kõik PHP protsessid.
- Seadke rakenduse kood üles puhtast allikast, selle asemel et parandada üksikuid faile.
- Võtke üle ainult kontrollitud sisu, nagu üleslaaditud failid ja andmebaas, ning otsige seal sihipäraselt sisse toodud koodi.
- Vahetage kõik ligipääsuandmed: andmebaas, SSH, FTP, administraatorikontod, API võtmed.
- Piirake veebiserveri kirjutusõigused vajalikuga ja takistage PHP käivitamist üleslaadimiskaustades.

WordPressil on omad tüüpilised peidukohad, mida kirjeldab juhend [Tagauste leidmine WordPressis](https://phpsos.de/et/ratgeber/backdoor-wordpress-finden/). Pärast seda tuleks veebisaiti mõnda aega tihedamalt jälgida, et korduv ligipääs õigel ajal märgata.

## Kuidas PHP SOS konkreetselt aitab?

- Turvame logid, failid ja süsteemi seisu jälgitavalt enne, kui midagi muudetakse.
- Otsime tagauksi failidest, andmebaasist, cron-ülesannetest ja konfiguratsioonist ning hindame leide.
- Seame rakenduse üles puhtast allikast, vahetame ligipääsud ja karastame serveri.
- Dokumenteerime intsidendi selle lõpuni, alusena teavitustele ja kindlustajale.

Puhastuse käiku kirjeldab teenus [Kahjuliku koodi ja veebishellide eemaldamine](https://phpsos.de/et/leistungen/malware-entfernung/).


## Korduma kippuvad küsimused

**Mis on veebishell?**  
Veebishell on sisse toodud fail, enamasti PHP, mille kaudu saavad ründajad serverit kaugjuhtida. See maskeerub sageli süütuks failiks märkamatu nimega ja jääb aktiivseks ka pärast uuendust.

**Kas viirusetõrje leiab iga veebishelli?**  
Ei. Skannerid tunnevad ära teadaolevad mustrid, uued või tugevalt hägustatud variandid lipsavad läbi. PHP2Shelli kohta ei ole lisaks avaldatud kinnitatud kompromiteerimisnäitajaid (Indicators of Compromise), seetõttu on käitumisanalüüs olulisem kui allkirjade nimekiri.

**Kas piisab leitud faili kustutamisest?**  
Enamasti mitte. Ründajad loovad sageli mitu ligipääsu, näiteks täiendavaid faile, cron-ülesandeid või uusi administraatori kontosid. Ilma põhjuse analüüsi ja kõigi ligipääsuandmete vahetamiseta on korduv ligipääs tõenäoline.

**Kas pean pärast veebishelli leidmist midagi teatama?**  
Kui võivad olla mõjutatud isikuandmed, võib olla teavitamiskohustus IKÜM-i alusel, üldjuhul 72 tunni jooksul. Selgitage seda oma andmekaitsespetsialisti või advokaadiga; see ei ole õigusnõustamine.

## Allikad

- [php.net: turvateated](https://www.php.net/)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
- [BSI: Saksamaa föderaalne infoturbeamet](https://www.bsi.bund.de/)
- [IKÜM art 33: teavitamine järelevalveasutusele](https://dsgvo-gesetz.de/art-33-dsgvo/)
