# Slēpto cronjobs kā slēptās piekļuves atpazīšana

> Cronjob slēptās piekļuves atpazīšana: pārbaudīt visas ieplānoto uzdevumu vietas Linux, izprast aizdomīgus ierakstus un nodrošināt atradumus pirms dzēšanas.

Avots: https://phpsos.de/lv/blog/cronjobs-als-hintertuer/  
Aktuāls uz: 25.10.2026  
Pakalpojuma sniedzējs: PHP SOS, PHP ārkārtas palīdzība un serveru drošība. Tūlītēja palīdzība pa WhatsApp: https://wa.me/491736494914?text=Sveiki%2C%20PHP%20SOS%2C%20mums%20nepiecie%C5%A1ama%20pal%C4%ABdz%C4%ABba%20ar%20m%C5%ABsu%20PHP%20serveri.%20Uz%C5%86%C4%93mums%3A%20%E2%80%A6%20Vietne%3A%20%E2%80%A6

**Īsi sakot:** Slēpts cronjob ir viena no biežākajām slēptajām piekļuvēm Linux serveros: tas regulāri ielādē ļaunprātīgu kodu vai atkal startē procesus, arī pēc PHP atjauninājuma. Pārbaudiet visas ieplānoto uzdevumu vietas, ne tikai `crontab -l`: visu lietotāju crontab, `/etc/crontab`, `/etc/cron.d`, cron mapes, systemd taimerus un at uzdevumus. Atradumus nodrošiniet, pirms tos noņemat.

## Kāpēc cronjobs kā slēptā piekļuve ir tik iecienīti

Pēc sekmīgas ielaušanās uzbrucējam ir problēma: viņa piekļuve ir trausla. Atjauninājums aizver ievainojamību, administrators izdzēš webshell, pārstartēšana pārtrauc procesu. Cronjob šo problēmu atrisina. Tas startē komandas noteiktos laikos bez nekādas iejaukšanās un tā atjauno zaudētās piekļuves.

PHP2Shell nav apstiprinātu Indicators of Compromise. Jauni cronjobs tomēr saskaņā ar mūsu rīcībā esošajiem ziņojumiem pieder pie vispārējām brīdinājuma pazīmēm pēc ielaušanās caur tīmekļa lietojumprogrammām. Kas jau meklējis webshell, tam vienlaikus jāpārbauda arī ieplānotie uzdevumi. Pārējos pēcapstrādes soļus uzskaita [Kontrolsaraksts pēc uzlaušanas](https://phpsos.de/lv/ratgeber/checkliste-nach-dem-hack/).

## Kur var slēpties ieplānotie uzdevumi

Linux pazīst vairākus mehānismus ieplānotiem uzdevumiem. Daudzas pārbaudes neizdodas, jo apskatīts tikai viens no tiem.

| Vieta | Debian/Ubuntu | RHEL saime | Kas drīkst rakstīt |
|---|---|---|---|
| Crontab katram lietotājam | `/var/spool/cron/crontabs/` | `/var/spool/cron/` | attiecīgais lietotājs |
| Sistēmas mēroga crontab | `/etc/crontab` | `/etc/crontab` | root |
| Atsevišķi faili | `/etc/cron.d/` | `/etc/cron.d/` | root |
| Periodiskās mapes | `/etc/cron.hourly` līdz `/etc/cron.monthly` | tāpat | root |
| systemd taimeri | `/etc/systemd/system/`, lietotāju unit | tāpat | root, daļēji lietotāji |
| at uzdevumi | `atd` rinda | tāpat | lietotājs, ja atļauts |

Svarīgi tīmekļa serverim: tīmekļa servera lietotājs parasti var izveidot savu crontab bez root tiesībām. Uzbrucējam ar `www-data` tiesībām tam tātad nav vajadzīga papildu ievainojamība. Ieraksti `/etc/cron.d` vai systemd unit turpretī norāda uz to, ka viņš ieguvis root tiesības.

Hostinga paneļiem, piemēram, Plesk vai cPanel, ir sava saskarne ieplānotiem uzdevumiem. Aiz tās parasti arī atrodas attiecīgo sistēmas lietotāju crontab. Kas skatās tikai saskarnē, tāpēc neatpazīst katru ierakstu, kas izveidots tieši serverī. Šaubu gadījumā pārbaudiet abus.

## Kā pārbaudīt visas vietas pilnībā

Šīs komandas tikai lasa. Izpildiet tās kā root un izvadus nodrošiniet ar datumu.

```bash
# Izvadīt visu lietotāju crontab
for u in $(cut -d: -f1 /etc/passwd); do
  out=$(crontab -l -u "$u" 2>/dev/null) && printf '### %s\n%s\n' "$u" "$out"
done

# Sistēmas mēroga ieraksti un izmaiņu laiki
cat /etc/crontab
ls -la --time-style=full-iso /etc/cron.d /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly

# systemd taimeri un at uzdevumi
systemctl list-timers --all
atq 2>/dev/null

# Meklēt tipiskus modeļus visos cron failos
grep -rnE "curl|wget|base64|/tmp/|/dev/shm|\| *(ba)?sh" /etc/crontab /etc/cron.* /var/spool/cron 2>/dev/null
```

Divi triki pelna īpašu uzmanību. Daži ieraksti komandas slēpj aiz daudziem atstarpju simboliem, tā ka redaktorā tās aiziet pa labi ārpus attēla. Citi izmanto vadības rakstzīmes, kas attēlojot pārraksta tekstu. Ar `cat -A` šādas rakstzīmes kļūst redzamas:

```bash
cat -A /var/spool/cron/crontabs/www-data 2>/dev/null | less
```

Otrs skatupunkts ir cron pakalpojuma protokoli. Daudzās sistēmās cron katru izpildi atzīmē ar lietotāju un komandu. Tā redzat arī ierakstus, ko uzbrucējs starplaikā ir noņēmis, un atpazīstat, kopš kura laika aizdomīga komanda darbojas:

```bash
# Izpildītās tīmekļa servera lietotāja cron komandas (Debian/Ubuntu vai systemd žurnāls)
grep -h "CRON" /var/log/syslog* 2>/dev/null | grep -E "\((www-data|apache|nginx)\) CMD"
journalctl -u cron -u crond --since "2026-10-17" --no-pager 2>/dev/null | grep CMD | head -100
```

## Kā atpazīt cronjob slēpto piekļuvi

1. **Ielāde no interneta:** lejupielāde, kuras rezultāts tiek tieši nodots shell.
2. **Kodēts saturs:** garas rakstzīmju virknes, kas tiek dekodētas tikai izpildes laikā.
3. **Neparasti ceļi:** programmas `/tmp`, `/dev/shm`, slēptās mapēs vai augšupielāžu direktorijos.
4. **Nepareizs lietotājs:** uzdevumi zem tīmekļa servera lietotāja, kaut gan lietojumprogrammai tādu nevajag.
5. **Uzkrītošs takts:** izpilde katru minūti vai pie katras pārstartēšanas ar `@reboot`.
6. **Neatbilstoši laika zīmogi:** fails mainīts laikā, kad neviens pie servera nestrādāja, piemēram, pēc 17. oktobra.

Neaizmirstiet: arī lietojumprogrammām ir savi laika grafiki. WordPress, piemēram, ieplānotos uzdevumus pārvalda datubāzē. Kā tur pārbaudīt, apraksta [Backdoor atrašana WordPress](https://phpsos.de/lv/ratgeber/backdoor-wordpress-finden/).

> **Svarīgi:**
> Cronjob reti ir viens pats. Kas izveidojis ieplānotu uzdevumu, bieži ir arī noglabājis SSH atslēgas vai paslēpis failus. Papildus pārbaudiet atslēgas, kā aprakstīts rakstā [Nezināmu SSH atslēgu atrašana](https://phpsos.de/lv/blog/ssh-schluessel-pruefen/).

## Atradumu nodrošināt, saprast, tad noņemt

Ļaunprātīgs cronjob ir vērtīgs pierādījums. Tas parāda ielādes adresi, izveides laiku un bieži arī lietotāju, caur kuru uzbrucējs ienāca. Pirms noņemšanas failu nodrošiniet ar kontrolsummu un laika zīmogiem. Laika zīmogs vēlāk palīdz rekonstruēt norisi; kā to darīt, parāda [Incidenta laika joslas veidošana](https://phpsos.de/lv/blog/zeitleiste-eines-vorfalls/). Arī iespējamam ziņojumam datu aizsardzības uzraudzības iestādei vai apdrošinātājam atradums ir svarīgs pierādījums, kopš kura laika uzbrucējam bija piekļuve.

Ar noņemšanu vien nepietiek. Ja vēl darbojas process, kas ierakstu pārraksta, tas pēc nākamās minūtes ir atpakaļ. Un kamēr sākotnējā ievainojamība ir atvērta, uzbrucējs jebkurā laikā var sākt no jauna. Secība tāpēc ir: nodrošināt, aizvērt cēloni, noņemt visas sastāvdaļas, mainīt piekļuves, uzraudzīt.

## Cronjobs profilaktiski nostiprināt

Lai cronjob slēptā piekļuve vispār nevarētu rasties vai ātri uzkristu acīs, palīdz trīs pasākumi. Pirmkārt, var noteikt, kuri lietotāji vispār drīkst izveidot crontab. Ja eksistē fails `/etc/cron.allow`, `crontab` drīkst izmantot tikai tur minētie lietotāji. Ja jūsu lietojumprogrammai zem tīmekļa servera lietotāja cronjob nav vajadzīgs, šim lietotājam sarakstā nav jābūt. Iepriekš pārbaudiet, kādus uzdevumus lietojumprogramma patiešām prasa, un izveidojiet tos apzināti zem savas lietotāja kontā.

Otrkārt, vērts uzraudzīt failus. Integritātes pārbaudes rīks ziņo, tiklīdz mainās fails cron direktorijos vai zem `/var/spool/cron`. Treškārt, ieplānotie uzdevumi pieder servera dokumentācijā: kas zina, kādiem ierakstiem jābūt, svešo atpazīst uzreiz.

## Kā PHP SOS palīdz konkrēti?

- **Pārbaudīt pilnībā:** Mēs izmeklējam visus ieplānoto uzdevumu mehānismus, arī systemd taimerus, at uzdevumus un lietojumprogrammu laika grafikus.
- **Klasificēt atradumus:** Mēs izvērtējam aizdomīgus ierakstus, tos neizpildot, un atvasinām tālākas pēdas.
- **Tīri attīrīt:** Ar [ļaunprogrammatūras noņemšanu](https://phpsos.de/lv/leistungen/malware-entfernung/) mēs noņemam visas sastāvdaļas un aizveram cēloni.
- **Atpazīt atgriešanos:** Mēs iestatām uzraudzību, kas ziņo par jauniem vai mainītiem ieplānotiem uzdevumiem.


## Biežāk uzdotie jautājumi

**Kāpēc uzbrucēji izmanto cronjobs?**  
Cronjob regulāri startē komandas bez papildu iejaukšanās. Uzbrucēji ar to ielādē ļaunprātīgu kodu, izveido izdzēstos failus no jauna vai atkal startē procesus. Tā viņu piekļuve pārdzīvo atjauninājumu un bieži arī virspusēju attīrīšanu.

**Vai pārbaudei pietiek ar crontab -l?**  
Nē. crontab -l rāda tikai pašreizējā lietotāja crontab. Ieplānotie uzdevumi turklāt atrodas citu lietotāju crontab, /etc/crontab, /etc/cron.d, cron.daily mapēs, systemd taimeros un at uzdevumos.

**Kā atpazīt ļaunprātīgu cronjob?**  
Tipiski ir lejupielādes no interneta ar tiešu izpildi, komandas ar kodētām rakstzīmju virknēm, programmas pagaidu mapēs, uzdevumi zem tīmekļa servera lietotāja un ieraksti, kas darbojas katru minūti. Atsevišķa pazīme ir norāde, vairākas ir nopietnas aizdomas.

**Vai aizdomīgus cronjobs drīkst vienkārši izdzēst?**  
Vispirms nodrošināt, tad noņemt. Ieraksts bieži atklāj izcelsmi, ielādes adresi un citas sastāvdaļas. Ja nav noskaidrots, kā tas radies, uzbrucējs to bieži izveido atkārtoti.

## Avoti

- [BSI: Vācijas Federālais informācijas drošības birojs](https://www.bsi.bund.de/)
- [BSI IT-Grundschutz](https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/IT-Grundschutz/it-grundschutz_node.html)
- [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/)
