Aktuālā situācija: PHP2Shell. Divas kritiskas PHP ievainojamības (CVSS 9.2) ļauj izpildīt ļaunprātīgu kodu bez pieteikšanās. Ielāpi kopš 21.10.2026.Kas jādara tagad →

Nesen mainītu failu atrašana tīmekļa serverī

Pēc iespējamas ielaušanās svarīgi ir tas, kas serverī mainījies. Kā meklēt pēc laika logiem, pareizi izmantot mtime un ctime un salīdzināt ar pakotnēm, Git un rezerves kopijām.

Aktuāls uz 5 min lasīšanas laiksAtklāšana un forensika

Īsi sakot: Mainītus failus Linux sistēmā atradīsit ar find un laika logu, piemēram, no 2026. gada 17. oktobra, kas saskaņā ar plašsaziņas līdzekļu ziņojumiem bija pirmais novērotais uzbrukuma mēģinājums ar PHP2Shell. Pārbaudiet ne tikai satura izmaiņu laiku (mtime), bet arī metadatu laiku (ctime), jo pirmo viegli viltot. Uzticams rezultāts rodas tikai salīdzinot ar pakotņu kontrolsummām, Git vai rezerves kopiju.

Kāpēc laika zīmogi ir labs sākums, bet nav pierādījums

Kas serverī ienes kodu, maina failus. Jauni webshell, pielāgoti konfigurācijas faili, papildinātas rindas esošos skriptos: viss tas atstāj laika zīmogus. Izmaiņu meklēšana pareizajā laika logā tāpēc ir viens no ātrākajiem ceļiem uz pirmajiem atradumiem.

PHP2Shell gadījumā loga sākumam der 2026. gada 17. oktobris, diena ar saskaņā ar plašsaziņas līdzekļu ziņojumiem pirmo novēroto uzbrukuma mēģinājumu. Ielāpi parādījās 21. oktobrī. Kas serveri atjauninājis tikai pēc tam, meklē līdz sava atjauninājuma dienai un ilgāk. Kā webshell atpazīt starp atradumiem, apraksta Webshell atpazīšana un noņemšana. Šeit runa ir par pašu meklēšanas metodi.

Faila trīs laika zīmogi

Linux katram failam glabā vairākus laika punktus. Izmaiņu meklēšanā izšķiroši ir divi.

Laika zīmogs Nozīme Vai viltojams?
mtime pēdējā satura izmaiņa jā, piem., ar touch, ikviens, kam atļauts failu rakstīt
ctime pēdējā satura vai metadatu, piemēram, tiesību, izmaiņa nē, ar vienkāršiem līdzekļiem
atime pēdējā lasīšanas piekļuve bieži izslēgts vai neprecīzs, meklēšanai maz piemērots

Uzbrucēji mtime labprāt atpakaļ datē uz kaimiņu failu datumu, lai jauns fails neuzkristu acīs. ctime tomēr tajā pašā laikā mainās līdzi. Fails ar vecu mtime un svaigu ctime tāpēc ir spēcīga norāde uz manipulāciju.

Salīdzinot ņemiet vērā laika joslas. find un ls rāda servera vietējo laiku, daudzi žurnāli un pakalpojumi turpretī strādā UTC. Kas atradumus no failu sistēmas un žurnāliem liek blakus, visus datus pārrēķina vienā laika joslā, citādi notikumi šķietami nesakrīt. Ielāpi parādījās aptuveni 21. oktobrī plkst. 14:00 UTC, tātad plkst. 16:00 pēc Vācijas laika.

Mainītu failu atrašana Linux ar find

Visas komandas tikai lasa. Pielāgojiet ceļu un datumu.

# Saturs mainīts kopš 17.10.2026, sakārtots, ar mtime, ctime un īpašnieku
find /var/www -type f -newermt "2026-10-17" -printf '%TY-%Tm-%Td %TH:%TM  %CY-%Cm-%Cd %CH:%CM  %u  %p\n' | sort

# Metadati mainīti kopš 17.10.2026 (atrod arī atpakaļ datētus failus)
find /var/www -type f -newerct "2026-10-17" -printf '%C+  %T+  %p\n' | sort

# Zināmo troksni izslēgt: kešatmiņa, žurnāli, sesijas
find /var/www -type f -newerct "2026-10-17" \
  -not -path "*/cache/*" -not -path "*/logs/*" -not -path "*/sessions/*" -printf '%C+  %p\n' | sort

# Skatīties arī ārpus tīmekļa direktorija
find /etc /usr/local/bin /tmp /var/tmp /dev/shm -xdev -type f -newerct "2026-10-17" -printf '%C+  %p\n' 2>/dev/null | sort

Pie katra atrastā salīdziniet abus laika zīmogus. Ja ctime ir ievērojami jaunāks par mtime un šajā laikā neviens nav mainījis tiesības vai kopējis failus, fails iekļaujams sarakstā. Pievērsiet uzmanību arī īpašniekam: tīmekļa servera lietotāja fails starp izvietošanas lietotāja failiem uzkrīt.

Neaizmirstiet slēptos failus un direktorijus. Nosaukumus, kas sākas ar punktu, daudzi failu pārvaldnieki un vienkāršs ls nerāda. Uzbrucēji to labprāt izmanto, tāpat kā nosaukumus, kas līdz sajaukšanai atgādina īstus failus.

# Slēptie faili un mapes tīmekļa direktorijā, bez zināmajiem, piemēram, .htaccess un .git
find /var/www -name ".*" -not -name ".htaccess" -not -name ".well-known" -not -path "*/.git/*" -printf '%C+  %u  %p\n' | sort

Salīdzināt ar uzticamu avotu

Laika zīmogi parāda, kur kaut kas ir kustējies. Vai tā bija likumīga izmaiņa, parāda tikai salīdzinājums ar avotu, kam uzticaties.

  1. Pakotņu pārvaldība: sistēmas failiem dpkg --verify (Debian/Ubuntu) vai rpm -Va (RHEL saime) pārbauda failus pret instalēto pakotņu kontrolsummām. Konfigurācijas faili likumīgi atšķiras, programmu faili nē.
  2. Git: ja lietojumprogramma atrodas repozitorijā, git -C /var/www/projekt status --porcelain parāda katru novirzi no pēdējā commit.
  3. CMS kontrolsummas: daudzas sistēmas var savus kodola failus salīdzināt ar oficiālajām kontrolsummām, skatiet CMS kodola failu salīdzināšana ar oriģinālu.
  4. Rezerves kopija no laika pirms incidenta: salīdzinājums izmēģinājuma režīmā uzskaita atšķirības, neko nekopējot.
# Tikai uzskaitīt atšķirības starp rezerves kopijas stāvokli un dzīvo sistēmu (izmēģinājuma režīms, neko nekopē)
rsync -rcn --out-format="%n" /backup/www-2026-10-15/ /var/www/

Rezerves kopijas salīdzinājums paredz, ka rezerves kopija radusies pirms incidenta un pati nav mainīta. Kāpēc šeit izšķirošas ir atsevišķi glabātas kopijas, izskaidro Rezerves kopijas pēc 3-2-1 noteikuma.

Padoms

Katras meklēšanas rezultātus ar datumu saglabājiet failā ārpus servera. No šiem sarakstiem vēlāk rodas incidenta laika josla, un tie pierāda, ko un kad esat pārbaudījis.

Ja nav ne rezerves kopijas, ne repozitorija

Daudzām mazākām vietnēm tīras salīdzinājuma bāzes nav: nav Git, nav rezerves kopijas no laika pirms incidenta, spraudņi gadiem atjaunināti ar rokām. Pilnīgi bez atbalsta punkta jūs tomēr neesat.

Lejupielādējiet CMS un paplašinājumus tieši instalētajās versijās no ražotāja un salīdziniet šos failus ar serveri. Kas tur atšķiras vai trūkst, pelna skatienu. Paliek jūsu pašu pielāgojumi, augšupielādes un konfigurācija; tur palīdz laika zīmogu meklēšana, papildināta ar skatienu uz īpašnieku un tiesībām. Faili, kuriem vienīgajiem direktorijā ir cita grupa, citas tiesības vai ievērojami jaunāks ctime nekā kaimiņiem, iekļaujami sarakstā.

Godīgi sakot: bez salīdzinājuma bāzes paliek atlikusī nenoteiktība. Sistēmām ar sensitīviem datiem jaunbūve no tīriem avotiem tad bieži ir uzticamāka nekā katra atsevišķa mainītā faila meklēšana. Nākotnei mācība ir vienkārša: repozitorijs kodam un regulāras, atsevišķi glabātas rezerves kopijas.

Tipiski meklēšanas kļūdu avoti

  • Pārāk devīgi izslēgumi: kešatmiņas un augšupielāžu mapes ir iecienītas slēptuves.
  • Pārbaudīts tikai mtime: atpakaļ datētie faili izslīd cauri.
  • Izvietošana laika logā: regulāra izvietošana maina simtiem failu un aizsedz atsevišķus atradumus. Salīdziniet ar repozitoriju.
  • Faili jau atvērti vai nokopēti: kopijas bez laika zīmogu saglabāšanas iznīcina pēdas. Nodrošiniet ar rīkiem, kas laika zīmogus saglabā.
  • Meklēts tikai tīmekļa direktorijā: uzbrucēji rīkus novieto arī /tmp, /dev/shm vai tīmekļa servera lietotāja mājas direktorijā.
  • Tiesību izmaiņas palaistas garām: fails, kura tiesības pēkšņi atļauj rakstīt visiem, ir atradums, arī ja tā saturs nav mainīts.

Kā atradumus saliek secībā, parāda Incidenta laika joslas veidošana.

Kā PHP SOS palīdz konkrēti?

  • Meklēt sistemātiski: Mēs izmeklējam tīmekļa direktorijus un sistēmas ceļus uz izmaiņām attiecīgajā laika logā un mtime un ctime izvērtējam kopā.
  • Pārbaudīt pret oriģināliem: Mēs salīdzinām ar pakotnēm, repozitoriju, CMS kontrolsummām un jūsu rezerves kopijām.
  • Novērtēt atradumus: Mēs atšķiram regulāras izmaiņas no manipulācijām un nodrošinām pierādījumus.
  • Attīrīt: Ar ļaunprogrammatūras noņemšanu mēs izveidojam tīru stāvokli un to dokumentējam.

Biežāk uzdotie jautājumi

Kā atrast visus failus, kas mainīti kopš noteikta datuma?

Ar find un opciju -newermt, piemēram, find /var/www -type f -newermt „2026-10-17”. Metadatu izmaiņām izmantojiet -newerct. Abas komandas tikai lasa un neko nemaina.

Kāda ir atšķirība starp mtime un ctime?

mtime ir pēdējās satura izmaiņas laiks, un to ar vienkāršiem līdzekļiem var atpakaļ datēt. ctime ir pēdējās satura vai metadatu izmaiņas laiks, un to tik vienkārši viltot nevar. Ja abi stipri atšķiras, vērts uzmanīgi paskatīties.

Kā meklēšanā izslēgt kešatmiņas failus?

Ar -not -path zināmām kešatmiņas, žurnālu un sesiju mapēm. Taču neizslēdziet pārāk devīgi, jo uzbrucēji faili labprāt novieto tieši tur, kur daudzas izmaiņas ir normālas.

Kura pārbaude ir visuzticamākā?

Salīdzinājums ar uzticamu avotu: pakotņu pārvaldības kontrolsummas, Git repozitorijs vai rezerves kopija no laika pirms incidenta. Laika zīmogi ir labs sākums, bet nav pierādījums.

Avoti

Tūlītējs kontakts

Katra stunda ir svarīga. Rakstiet mums tūlīt.

Īsi aprakstiet sistēmu, PHP versiju un novēroto. Mēs sazināsimies, noskaidrosim situāciju un strādāsim attālināti, līdz incidents ir slēgts un dokumentēts.

Tūlītēja palīdzība