Linux: Planificarea sarcinilor (#18)

Bine ați revenit, dragii mei green horn hackers!

Într-un ghid foarte recent, am învățat cum să scanăm serverele vulnerabile. Într-un astfel de caz, este posibil să dorim efectuarea unor sarcini ce consumă foarte mult timp; poate în mijlocul nopții sau în timp ce suntem la serviciu sau la școală. Astfel, când ne trezim dimineața, suntem întâmpinați de o listă lungă de servere vulnerabile ce pot fi țintele eforturilor noastre mai târziu.

Din fericire pentru noi, Linux are o funcție încorporată ce ne permite să programăm astfel de sarcini într-un program regulat. În Linux, acest lucru se numește cron sau crond pentru daemonul ce rulează aceste servicii (un daemon sau demon este pur și simplu un proces care rulează în fundal).

Cum funcționează Cron în Linux

În mod obișnuit, pentru a programa astfel de sarcini banale, dar necesare, cum ar fi efectuarea de salvări periodice, programate la un moment dat în fiecare săptămână, îl mai putem folosi pentru a programa scanările noastre sau alte treburi mai puțin ortodoxe.

Demonul cron pornește când sistemul pornește și continuă să funcționeze atâta timp cât sistemul este pornit. Citește un fișier de configurare sau fișiere, ce constau în sarcinile care trebuie executate și programul ce urmează să fie rulat. Aproape orice facem de la linia de comandă poate fi programat cu cron.



Să aruncăm o privire cum funcționează și cum putem folosi cron ca hacker.

Pasul 1: Localizăm Crontab

Cron este una dintre acele funcții care este aproape identică între distribuțiile Linux, deci ceea ce învățați aici poate fi folosit în Ubuntu, Red Hat, Suse, Mint, Slackware, CentOS etc. Acesta a făcut parte din familia Linux / UNIX încă 1970, deci este încercat și cu siguranță și-a dovedit utilitatea.

La fel ca multe lucruri în Linux, funcționalitatea cron este controlată de un fișier de configurare, mai exact un fișier text simplu. Într-un mediu cu mai mulți utilizatori, fiecare utilizator poate avea propriul fișier de configurare cron. Totuși, aici, ne vom concentra pe utilizatorul root din Kali.

Pentru cron, fișierul de configurare este fișierul crontab sau ,,tabelul cron”. Pentru a găsi fișierul crontab, tastăm:

locate crontab

După cum putem vedea, acesta este localizat în directorul /etc ca aproape orice alt fișier de configurare din Linux (există, desigur, excepții).



Pasul 2: Deschidem Crontab

Să-l deschidem și să ne uităm prin el. Putem să-l deschidem cu orice editor de text, dar aici o să folosim editorul de text grafic construit în Kali, Leafpad. Tastăm:

leafpad /etc/crontab

Versiunea Debian pe care Kali este construit, are o versiune mai nouă a crontabului, cu care este mai ușor să lucrăm decât în versiunile anterioare. Spre deosebire de versiunile anterioare, au etichetat câmpurile și au adăugat un câmp nou pentru a denumi utilizatorul care va executa sarcina.

Pasul 3: Anatomia unui Crontab

Haideți să studiem puțin fișierul. După cum puteți vedea în captura de ecran de mai sus, crontab începe cu 5 linii care sunt comentate (#). Aceste linii sunt pur și simplu o explicație sau note, ele nefiind văzute sau executate de sistem.



După liniile comentate, vedem câteva linii împreună.

Primul dintre acestea stabilește shell-ul pentru a executa sarcinile. În cazul nostru, am desemnat shell-ul BASH cu următoarea comandă. Dacă dorim să folosim un shell diferit, îl putem desemna aici.

SHELL=/bin/sh

A doua linie stabilește variabila PATH. Variabila PATH este o variabilă de mediu (există și una în Windows), care îi spune sistemului unde să caute comenzi care sunt utilizate în sarcina cron. În mod tipic, acestea sunt bin și sbindirectories (binare), ce conțin comenzile de sistem pe care le folosim în Linux (ls, echo, ps, cd etc.).

Aici sunt setările implicite:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Acest lucru înseamnă pur și simplu că demonul cron va căuta în acele directoare comenzile pe care le utilizăm în sarcinile programate. Dacă utilizăm o comandă sau un fișier care nu se află în acele directoare, pur și simplu edităm acea linie și adăugăm acel director la sfârșitul liniei după introducerea a două puncte (:), cum ar fi:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/newdir

Pasul 4: Programarea sarcinilor

Acum vine partea importantă din fișierul crontab. În a treia secțiune, programăm sarcinile pe care dorim să le executăm.

Dupa cum vedem, fiecare linie reprezintă o sarcină programată care se va executa automat la orice zi, dată sau oră.


Câmpurile fișierului crontab sunt următoarele:

  • Minute — minutul exact când comanda va rula (0-59)
  • Hour — ora exactă când comanda sau sarcina va rula (0-23)
  • Day of the Month — ziua exactă a lunii când comanda sau sarcina va rula (1-31)
  • Month — luna exactă când comanda sau sarcina va rula (1-12)
  • Day of the week –ziua exactă când comanda sau sarcina va rula (0-6, Duminică=0)
  • User — permisiunile utilizatorului care va rula comanda sau sarcina
  • Command — comanda sau sarcina care se va rula

Asteriscul (*) sau steaua reprezintă orice, deci poate fi orice zi, orice oră sau orice minut.

Pasul 5: Programarea unui scanner

Putem programa scanerul să ruleze în fiecare noapte în timp ce dormim și, sperăm, ca atunci când ne trezim dimineața, găsim o nouă potențială victimă!

Să deschidem din nou fișierul cron cu orice editor de text.

Acum vom adăuga o linie pentru a rula scanerul nostru nmap în fiecare săptămână de la ora 2:05 am. Pur și simplu adăugați această linie în fișierul nostru crontab:

05 2 * * 1,2,3,4,5 root nmap -sV –script=ssl-heartbleed 68.76.0.0/16

 

 

Salvăm și închidem acest fișier.

Acest lucru ne programează scanerul nmap Heartbleed pentru a rula în fiecare zi de luni, marți, miercuri, joi și vineri, începând cu ora 2:05 am.

Continuați să reveniți pe Blackweb, dragii mei greenhorn hackers, pentru mai multe tutoriale despre hacking și despre elementele de bază ale Linux-ului, ce ar fi bine să le cunoașteți, în drumul vostru de a deveni niște hackeri talentați.

Până data viitoare, să ne citim cu bine! 🙂

 



0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments