Shellcode

Shellcode ( în engleză  shellcode , cod de pornire shell) este un cod executabil binar care transferă de obicei controlul către procesorul de comenzi, de exemplu „/bin/sh” în shell Unix , „command.com” în MS-DOS și „cmd.exe” pe sistemele de operare Microsoft Windows . Shellcode poate fi folosit ca o sarcină de exploatare , permițând unui atacator să acceseze un shell pe un sistem computerizat .  

Atunci când exploatează o vulnerabilitate de la distanță , codul shell poate deschide un port TCP predeterminat al computerului vulnerabil, prin care se va efectua accesul ulterioar la shell-ul de comandă, un astfel de cod se numește shellcode de legare la port .  Dacă codul shell se conectează la portul computerului atacatorului, ceea ce se face pentru a ocoli paravanul de protecție sau NAT , atunci un astfel de cod se numește shell invers ( de exemplu, codul shell invers shell ).  

Cum funcționează

Shellcode este de obicei injectat în memoria programului care rulează, după care controlul îi este transferat prin depășirea stivei sau printr -o depășire a bufferului heap sau prin utilizarea atacurilor de șir de format . Transferul controlului către codul shell se face prin suprascrierea adresei de retur pe stivă cu adresa codului shell injectat, suprascrierea adreselor funcțiilor apelate sau schimbarea gestionatorilor de întreruperi. Rezultatul este executarea unui shellcode care deschide o linie de comandă pentru a fi utilizată de către un atacator.

Descoperire

Crackerii scriu coduri shell, folosind adesea trucuri pentru a-și ascunde atacul. Ei încearcă adesea să-și dea seama cum sistemele de detectare a intruziunilor (IDS) recunosc orice atac primit. Un IDS tipic scanează, de obicei, toate pachetele primite căutând o structură specifică codului shell (de multe ori o gamă largă de coduri nedorite , NOP -uri în cel mai simplu caz ); dacă găsește o astfel de structură, pachetul este distrus înainte de a ajunge la destinație. Poziția slabă a IDS în acest caz este că nu face o căutare chiar bună, altfel va dura prea mult și astfel va încetini conexiunea la internet.

Shellcode conține aproape întotdeauna un șir cu numele shell-ului . Toate pachetele primite care conțin un astfel de șir sunt întotdeauna considerate suspecte în ochii IDS. De asemenea, unele aplicații nu acceptă introduceri non-alfanumerice (nu acceptă caractere în afara intervalului az, AZ, 0-9 și alte câteva caractere.)

Pentru a trece peste toate aceste măsuri anti-intruziune, crackerii folosesc criptare , cod auto-modificabil , cod polimorf și cod alfanumeric .

Vezi și

Link -uri