Ajankohtainen tilanne: PHP2Shell. Kaksi kriittistä PHP-haavoittuvuutta (CVSS 9.2) sallii haittakoodin suorittamisen ilman kirjautumista. Korjaukset 21.10.2026 alkaen.Mitä nyt on tehtävä →

Piilotettujen cron-töiden tunnistaminen takaovena

Hyökkääjät käyttävät ajastettuja tehtäviä palatakseen siivouksen jälkeen. Näin tarkistatte crontabit, cron-hakemistot, systemd-ajastimet ja at-työt kokonaan ja tunnistatte epäilyttävät merkinnät.

Tilanne Lukuaika 5 minHavaitseminen ja forensiikka

Lyhyesti: Piilotettu cron-työ on yksi Linux-palvelinten yleisimmistä takaovista: se lataa haittakoodia säännöllisesti uudelleen tai käynnistää prosesseja uudelleen, myös PHP-päivityksen jälkeen. Tarkistakaa kaikki ajastettujen tehtävien paikat, ei vain crontab -l: kaikkien käyttäjien crontabit, /etc/crontab, /etc/cron.d, cron-kansiot, systemd-ajastimet ja at-työt. Varmistakaa löydökset, ennen kuin poistatte ne.

Miksi cron-työt ovat niin suosittu takaovi

Onnistuneen murron jälkeen hyökkääjällä on ongelma: hänen pääsynsä on hauras. Päivitys sulkee aukon, ylläpitäjä poistaa web shellin, uudelleenkäynnistys lopettaa prosessin. Cron-työ ratkaisee tämän ongelman. Se käynnistää komentoja kiinteinä aikoina ilman, että kukaan puuttuu asiaan, ja palauttaa näin menetetyt pääsyt.

PHP2Shellille ei ole vahvistettuja Indicators of Compromise -tunnisteita. Uudet cron-työt kuuluvat kuitenkin käytössämme olevien raporttien mukaan verkkosovellusten kautta tehtyjen murtojen yleisiin varoitusmerkkeihin. Jos olette jo etsineet web shelliä, tarkistakaa ajastetut tehtävät samalla. Jälkihoidon muut vaiheet luettelee Tarkistuslista murron jälkeen.

Missä ajastetut tehtävät voivat piillä

Linuxissa on useita ajastettujen tehtävien mekanismeja. Moni tarkistus epäonnistuu, koska katsotaan vain yhtä niistä.

Paikka Debian/Ubuntu RHEL-perhe Kuka saa kirjoittaa
Crontab käyttäjää kohti /var/spool/cron/crontabs/ /var/spool/cron/ kyseinen käyttäjä
Järjestelmänlaajuinen crontab /etc/crontab /etc/crontab root
Yksittäiset tiedostot /etc/cron.d/ /etc/cron.d/ root
Jaksolliset kansiot /etc/cron.hourly – /etc/cron.monthly samoin root
systemd-ajastimet /etc/systemd/system/, käyttäjäyksiköt samoin root, osin käyttäjä
at-työt atd:n jono samoin käyttäjä, jos sallittu

Tärkeää verkkopalvelimille: verkkopalvelinkäyttäjä voi yleensä luoda oman crontabinsa ilman root-oikeuksia. Hyökkääjä, jolla on www-data-oikeudet, ei siis tarvitse siihen toista aukkoa. Merkinnät tiedostossa /etc/cron.d tai systemd-yksiköt viittaavat sen sijaan siihen, että hän on saanut root-oikeudet.

Hosting-paneelit kuten Plesk tai cPanel tarjoavat oman käyttöliittymän ajastetuille tehtäville. Sen takana ovat yleensä niin ikään kyseisten järjestelmäkäyttäjien crontabit. Joka katsoo vain käyttöliittymästä, ei siksi tunnista jokaista merkintää, joka on luotu suoraan palvelimelle. Tarkistakaa epäselvässä tapauksessa molemmat.

Näin tarkistatte kaikki paikat kokonaan

Seuraavat komennot vain lukevat. Ajakaa ne rootina ja tallentakaa tulosteet päivämäärän kanssa.

# Tulosta kaikkien käyttäjien crontabit
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

# Järjestelmänlaajuiset merkinnät ja muutosajat
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-ajastimet ja at-työt
systemctl list-timers --all
atq 2>/dev/null

# Etsi tyypillisiä kaavoja kaikista cron-tiedostoista
grep -rnE "curl|wget|base64|/tmp/|/dev/shm|\| *(ba)?sh" /etc/crontab /etc/cron.* /var/spool/cron 2>/dev/null

Kaksi temppua ansaitsee erityistä huomiota. Jotkin merkinnät piilottavat komentoja monien välilyöntien taakse, jolloin ne ajautuvat editorissa oikealle ulos näkyvistä. Toiset käyttävät ohjausmerkkejä, jotka peittävät tekstiä näytettäessä. Komennolla cat -A tällaiset merkit tulevat näkyviin:

cat -A /var/spool/cron/crontabs/www-data 2>/dev/null | less

Toinen näkökulma ovat cron-palvelun lokit. Monissa järjestelmissä cron kirjaa jokaisen suorituksen käyttäjän ja komennon kanssa. Näin näette myös merkinnät, jotka hyökkääjä on sittemmin poistanut, ja tunnistatte, mistä lähtien epäilyttävä komento on toiminut:

# Verkkopalvelinkäyttäjän suoritetut cron-komennot (Debian/Ubuntu tai systemd-journal)
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

Mistä tunnistatte cron-takaoven

  1. Lataus internetistä: Lataus, jonka tulos välitetään suoraan shellille.
  2. Koodattu sisältö: Pitkät merkkijonot, jotka puretaan vasta ajon aikana.
  3. Epätavalliset polut: Ohjelmat polussa /tmp, /dev/shm, piilotetuissa kansioissa tai upload-hakemistoissa.
  4. Väärä käyttäjä: Tehtävät verkkopalvelinkäyttäjän alla, vaikka sovellus ei tarvitse niitä.
  5. Poikkeava tahti: Suoritus joka minuutti tai jokaisella uudelleenkäynnistyksellä @reboot-merkinnän kautta.
  6. Sopimattomat aikaleimat: Tiedosto muutettu ajanjaksona, jolloin kukaan ei työskennellyt palvelimella, esimerkiksi 17. lokakuuta jälkeen.

Älkää unohtako: myös sovelluksilla on omat aikataulunsa. WordPress esimerkiksi hallinnoi ajastettuja tehtäviä tietokannassa. Miten ne tarkistetaan siellä, kuvaa Takaovien löytäminen WordPressistä.

Tärkeää

Cron-työ tulee harvoin yksin. Joka on luonut ajastetun tehtävän, on usein myös tallentanut SSH-avaimia tai piilottanut tiedostoja. Tarkistakaa lisäksi avaimet, kuten artikkelissa Tuntemattomien SSH-avainten löytäminen kuvataan.

Varmistakaa löytö, ymmärtäkää, poistakaa sitten

Haitallinen cron-työ on arvokas todiste. Se näyttää latausosoitteen, luontihetken ja usein käyttäjän, jonka kautta hyökkääjä tuli. Varmistakaa tiedosto tarkistussummalla ja aikaleimoilla, ennen kuin poistatte sen. Aikaleima auttaa myöhemmin kulun rekonstruoinnissa; miten se tehdään, näyttää Tapauksen aikajanan laatiminen. Myös mahdollista ilmoitusta tietosuojaviranomaiselle tai vakuutusyhtiölle varten löytö on tärkeä todiste siitä, mistä lähtien hyökkääjällä oli pääsy.

Pelkkä poisto ei riitä. Jos käynnissä on yhä prosessi, joka kirjoittaa merkinnän uudelleen, se on takaisin seuraavan minuutin jälkeen. Ja niin kauan kuin alkuperäinen aukko on auki, hyökkääjä voi aloittaa uudelleen milloin tahansa. Järjestys on siksi: varmista, sulje syy, poista kaikki osat, vaihda tunnukset, seuraa.

Cron-töiden ennaltaehkäisevä suojaus

Jotta cron-takaovi ei pääse syntymään tai huomataan nopeasti, auttaa kolme toimenpidettä. Ensinnäkin voi määrittää, mitkä käyttäjät saavat ylipäätään luoda crontabin. Jos tiedosto /etc/cron.allow on olemassa, vain siinä mainitut käyttäjät saavat käyttää crontab-komentoa. Jos sovelluksenne ei tarvitse cron-työtä verkkopalvelinkäyttäjän alla, tämä käyttäjä ei kuulu listalle. Tarkistakaa etukäteen, mitä tehtäviä sovellus todella tarvitsee, ja luokaa ne tietoisesti omalle käyttäjälleen.

Toiseksi tiedostojen seuranta kannattaa. Eheystarkistustyökalu ilmoittaa, kun tiedosto cron-hakemistoissa tai polussa /var/spool/cron muuttuu. Kolmanneksi ajastetut tehtävät kuuluvat palvelimen dokumentaatioon: joka tietää, mitä merkintöjä pitää olla, tunnistaa vieraan heti.

Miten PHP SOS auttaa konkreettisesti?

  • Täydellinen tarkistus: Tutkimme kaikki ajastettujen tehtävien mekanismit, myös systemd-ajastimet, at-työt ja sovellusten aikataulut.
  • Löydösten arviointi: Analysoimme epäilyttävät merkinnät ajamatta niitä ja johdamme niistä lisää jälkiä.
  • Siisti siivous: Haittaohjelmien poistolla poistamme kaikki osat ja suljemme syyn.
  • Paluun tunnistus: Otamme käyttöön seurannan, joka ilmoittaa uusista tai muuttuneista ajastetuista tehtävistä.

Usein kysytyt kysymykset

Miksi hyökkääjät käyttävät cron-töitä?

Cron-työ käynnistää komentoja säännöllisesti ja ilman lisätoimia. Hyökkääjät lataavat sillä haittakoodia uudelleen, luovat poistetut tiedostot uudelleen tai käynnistävät prosesseja uudelleen. Niin heidän pääsynsä säilyy päivityksen ja usein pintapuolisen siivouksenkin yli.

Riittääkö crontab -l tarkistukseen?

Ei. crontab -l näyttää vain nykyisen käyttäjän crontabin. Ajastetut tehtävät ovat lisäksi muiden käyttäjien crontabeissa, tiedostossa /etc/crontab, hakemistossa /etc/cron.d, cron.daily-kansioissa, systemd-ajastimissa ja at-töissä.

Mistä tunnistan haitallisen cron-työn?

Tyypillisiä ovat lataukset internetistä suoralla suorituksella, komennot koodattuine merkkijonoineen, ohjelmat väliaikaisissa kansioissa, tehtävät verkkopalvelinkäyttäjän alla ja merkinnät, jotka toimivat joka minuutti. Yksittäinen piirre on vihje, useampi vakava epäily.

Voinko vain poistaa epäilyttävät cron-työt?

Ensin varmistus, sitten poisto. Merkintä paljastaa usein alkuperän, latausosoitteen ja muita osia. Jos ei selvitetä, miten se syntyi, hyökkääjä luo sen usein uudelleen.

Lähteet

Pikayhteys

Jokainen tunti on tärkeä. Kirjoittakaa meille nyt.

Kuvatkaa lyhyesti järjestelmä, PHP-versio ja havainnot. Otamme yhteyttä, selvitämme tilanteen ja työskentelemme etänä, kunnes tapaus on käsitelty loppuun ja dokumentoitu.

Pikaapu