# Rejtett cron-feladatok felismerése hátsó kapuként

> Cron-feladat hátsó kapu felismerése: az ütemezett feladatok összes helyének ellenőrzése Linuxon, a gyanús bejegyzések értelmezése és a leletek mentése törlés előtt.

Forrás: https://phpsos.de/hu/blog/cronjobs-als-hintertuer/  
Állapot: 2026. 10. 25.  
Szolgáltató: PHP SOS, PHP-vészhelyzeti segítség és szerverbiztonság. Azonnali segítség WhatsAppon: https://wa.me/491736494914?text=%C3%9Cdv%C3%B6zl%C3%B6m%2C%20PHP%20SOS%21%20Seg%C3%ADts%C3%A9gre%20van%20sz%C3%BCks%C3%A9g%C3%BCnk%20a%20PHP-szerver%C3%BCnkkel.%20C%C3%A9g%3A%20%E2%80%A6%20Weboldal%3A%20%E2%80%A6

**Röviden:** A rejtett cron-feladat a Linux-szerverek egyik leggyakoribb hátsó kapuja: rendszeresen kártékony kódot tölt le, vagy újraindít folyamatokat, PHP-frissítés után is. Ellenőrizze az ütemezett feladatok összes helyét, ne csak a `crontab -l` parancsot: az összes felhasználó crontabját, az `/etc/crontab` fájlt, az `/etc/cron.d` könyvtárat, a cron-mappákat, a systemd-időzítőket és az at-feladatokat. A leleteket mentse el, mielőtt eltávolítaná őket.

## Miért olyan népszerűek a cron-feladatok hátsó kapuként

Egy sikeres behatolás után a támadónak van egy problémája: a hozzáférése törékeny. Egy frissítés bezárja a rést, egy admin törli a webshellt, egy újraindítás befejezi a folyamatot. Egy cron-feladat megoldja ezt a problémát. Rögzített időpontokban parancsokat indít, anélkül hogy bárki beavatkozna, és így helyreállítja az elveszett hozzáféréseket.

A PHP2Shellre nincsenek megerősített Indicators of Compromise. Az új cron-feladatok azonban a rendelkezésünkre álló beszámolók szerint a webalkalmazásokon keresztüli behatolások utáni általános figyelmeztető jelek közé tartoznak. Aki már keresett webshelleket, az ütemezett feladatokat is ellenőrizze egyúttal. Az utómunka további lépéseit a [Ellenőrzőlista feltörés után](https://phpsos.de/hu/ratgeber/checkliste-nach-dem-hack/) sorolja fel.

## Hol rejtőzhetnek az ütemezett feladatok

A Linux több mechanizmust ismer az ütemezett feladatokra. Sok ellenőrzés azon bukik, hogy csak az egyiket nézik meg.

| Hely | Debian/Ubuntu | RHEL-család | Ki írhat |
|---|---|---|---|
| Felhasználónkénti crontab | `/var/spool/cron/crontabs/` | `/var/spool/cron/` | az adott felhasználó |
| Rendszerszintű crontab | `/etc/crontab` | `/etc/crontab` | root |
| Önálló fájlok | `/etc/cron.d/` | `/etc/cron.d/` | root |
| Periodikus mappák | `/etc/cron.hourly` – `/etc/cron.monthly` | ugyanígy | root |
| systemd-időzítők | `/etc/systemd/system/`, felhasználói unitok | ugyanígy | root, részben felhasználó |
| at-feladatok | az `atd` várakozási sora | ugyanígy | felhasználó, ha engedélyezett |

Webszerverek esetén fontos: a webszerver-felhasználó általában root jogosultság nélkül létrehozhatja a saját crontabját. Egy `www-data` jogaival rendelkező támadónak ehhez tehát nincs szüksége további résre. Az `/etc/cron.d` vagy a systemd-unitok bejegyzései ezzel szemben arra utalnak, hogy root jogosultságot szerzett.

A tárhelypanelek, például a Plesk vagy a cPanel, saját felületet kínálnak az ütemezett feladatokhoz. Mögöttük általában szintén az érintett rendszerfelhasználók crontabjai állnak. Aki csak a felületen néz utána, ezért nem ismer fel minden bejegyzést, amelyet közvetlenül a szerveren hoztak létre. Kétség esetén ellenőrizze mindkettőt.

## Így ellenőrzi teljesen az összes helyet

A következő parancsok csak olvasnak. Futtassa őket rootként, és a kimeneteket mentse dátummal.

```bash
# Az összes felhasználó crontabjának kiírása
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

# Rendszerszintű bejegyzések és módosítási idők
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-időzítők és at-feladatok
systemctl list-timers --all
atq 2>/dev/null

# Tipikus minták keresése az összes cron-fájlban
grep -rnE "curl|wget|base64|/tmp/|/dev/shm|\| *(ba)?sh" /etc/crontab /etc/cron.* /var/spool/cron 2>/dev/null
```

Két trükk különös figyelmet érdemel. Egyes bejegyzések a parancsokat sok szóköz mögé rejtik, így azok a szerkesztőben jobbra kifutnak a képből. Mások vezérlőkaraktereket használnak, amelyek megjelenítéskor felülírják a szöveget. A `cat -A` láthatóvá teszi az ilyen karaktereket:

```bash
cat -A /var/spool/cron/crontabs/www-data 2>/dev/null | less
```

A második nézőpont a cron-szolgáltatás naplója. Sok rendszeren a cron minden végrehajtást rögzít a felhasználóval és a paranccsal. Így azokat a bejegyzéseket is látja, amelyeket a támadó időközben eltávolított, és felismeri, mióta fut egy gyanús parancs:

```bash
# A webszerver-felhasználó végrehajtott cron-parancsai (Debian/Ubuntu, illetve systemd-napló)
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
```

## Miről ismeri fel a cron-feladat hátsó kaput

1. **Letöltés az internetről:** Egy letöltés, amelynek eredményét közvetlenül egy shellnek adják át.
2. **Kódolt tartalmak:** Hosszú karakterláncok, amelyeket csak futásidőben dekódolnak.
3. **Szokatlan útvonalak:** Programok a `/tmp`, a `/dev/shm`, rejtett mappák vagy feltöltési könyvtárak alatt.
4. **Rossz felhasználó:** A webszerver-felhasználó alatti feladatok, noha az alkalmazásnak nincs rájuk szüksége.
5. **Feltűnő ütem:** Percenkénti végrehajtás, vagy minden újraindításnál az `@reboot` révén.
6. **Nem odaillő időbélyegek:** Olyan időszakban módosított fájl, amikor senki sem dolgozott a szerveren, például október 17. után.

Ne feledje: az alkalmazásoknak is vannak saját ütemterveik. A WordPress például az ütemezett feladatokat az adatbázisban kezeli. Hogyan ellenőrzi ott, azt a [Hátsó kapuk keresése a WordPressben](https://phpsos.de/hu/ratgeber/backdoor-wordpress-finden/) írja le.

> **Fontos:**
> Egy cron-feladat ritkán jár egyedül. Aki ütemezett feladatot hozott létre, gyakran SSH-kulcsokat is elhelyezett, vagy fájlokat rejtett el. Ellenőrizze a kulcsokat is, ahogyan az [Ismeretlen SSH-kulcsok keresése](https://phpsos.de/hu/blog/ssh-schluessel-pruefen/) cikk leírja.

## A lelet mentése, megértése, majd eltávolítása

Egy rosszindulatú cron-feladat értékes bizonyíték. Megmutatja a letöltési címet, a létrehozás időpontját és gyakran azt a felhasználót, amelyen keresztül a támadó bejutott. Az eltávolítás előtt mentse a fájlt ellenőrző összeggel és időbélyegekkel. Az időbélyeg később segít rekonstruálni a lefolyást; hogyan, azt a [Egy incidens idővonalának elkészítése](https://phpsos.de/hu/blog/zeitleiste-eines-vorfalls/) mutatja. Egy esetleges adatvédelmi felügyeleti hatóságnak szóló bejelentéshez vagy a biztosítóhoz is fontos bizonyíték arra, mióta fért hozzá a támadó.

Az eltávolítás önmagában nem elég. Ha még fut egy folyamat, amely újraírja a bejegyzést, a következő percben visszatér. És amíg az eredeti rés nyitva van, a támadó bármikor újra próbálkozhat. A sorrend ezért: mentés, az ok lezárása, az összes összetevő eltávolítása, hozzáférések cseréje, figyelés.

## A cron-feladatok megelőző védelme

Hogy egy cron-feladat hátsó kapu egyáltalán ne keletkezhessen, vagy gyorsan feltűnjön, három intézkedés segít. Először: megadható, mely felhasználók hozhatnak létre egyáltalán crontabot. Ha létezik az `/etc/cron.allow` fájl, csak az ott megnevezett felhasználók használhatják a `crontab` parancsot. Ha az alkalmazásának nincs szüksége cron-feladatra a webszerver-felhasználó alatt, ez a felhasználó ne kerüljön a listára. Előtte ellenőrizze, mely feladatokra van ténylegesen szüksége az alkalmazásnak, és ezeket tudatosan egy saját felhasználó alatt hozza létre.

Másodszor: megéri a fájlok figyelése. Az integritásellenőrző eszköz jelez, ha a cron-könyvtárakban vagy az `/var/spool/cron` alatt egy fájl megváltozik. Harmadszor: az ütemezett feladatoknak a szerver dokumentációjába kell kerülniük. Aki tudja, milyen bejegyzéseknek kell lenniük, azonnal felismeri az idegent.

## Hogyan segít konkrétan a PHP SOS?

- **Teljes ellenőrzés:** Az ütemezett feladatok összes mechanizmusát megvizsgáljuk, a systemd-időzítőket, az at-feladatokat és az alkalmazások ütemterveit is.
- **A leletek besorolása:** A gyanús bejegyzéseket végrehajtásuk nélkül értékeljük ki, és további nyomokat vezetünk le belőlük.
- **Tiszta eltávolítás:** A [kártevő-eltávolítással](https://phpsos.de/hu/leistungen/malware-entfernung/) eltávolítjuk az összes összetevőt, és lezárjuk az okot.
- **A visszatérés felismerése:** Beállítunk egy figyelést, amely jelzi az új vagy módosított ütemezett feladatokat.


## Gyakori kérdések

**Miért használnak a támadók cron-feladatokat?**  
A cron-feladat rendszeresen és további közreműködés nélkül indít parancsokat. A támadók ezzel töltenek le kártékony kódot, hozzák létre újra a törölt fájlokat, vagy indítanak újra folyamatokat. Így a hozzáférésük túléli a frissítést, és gyakran a felszínes tisztítást is.

**Elég az ellenőrzéshez a crontab -l?**  
Nem. A crontab -l csak az aktuális felhasználó crontabját mutatja. Az ütemezett feladatok emellett más felhasználók crontabjaiban, az /etc/crontab fájlban, az /etc/cron.d könyvtárban, a cron.daily mappákban, a systemd-időzítőkben és az at-feladatokban is szerepelnek.

**Hogyan ismerem fel a rosszindulatú cron-feladatot?**  
Tipikus az internetről való letöltés közvetlen végrehajtással, kódolt karakterláncokat tartalmazó parancsok, ideiglenes mappákban lévő programok, a webszerver-felhasználó alatti feladatok és a percenként futó bejegyzések. Az egyes jellemzők jelzések, több együtt komoly gyanú.

**Egyszerűen törölhetem a gyanús cron-feladatokat?**  
Előbb mentse, azután távolítsa el. A bejegyzés gyakran elárulja az eredetet, a letöltési címet és a további összetevőket. Annak tisztázása nélkül, hogyan keletkezett, a támadó gyakran újra létrehozza.

## Források

- [BSI: a német szövetségi információbiztonsági hivatal](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/)
