Shellcode is executable code intended to be used as a payload for exploiting a software vulnerability. The term includes shell because the attack originally described an attack that opens a command shell that the attacker can use to control the target machine, but any code that is injected to gain access that is otherwise not allowed can be called shellcode. For this reason, some consider the name shellcode to be inaccurate.
Shellcode – anglojęzyczny zlepek słów shell (powłoka) oraz code (kod), oznaczający prosty, niskopoziomowy program prezentowany najczęściej w postaci kodu maszynowego, odpowiedzialny za wywołanie powłoki systemowej. Często wykorzystywany w ostatniej fazie wykorzystywania wielu błędów zabezpieczeń przez exploity. Dostarczany jest on zwykle wraz z innymi danymi wejściowymi użytkownika (zazwyczaj poprzedza go obszar instrukcji NOP, zaś za nim znajduje się przybliżony adres shellcodu w pamięci). Na skutek wykorzystania luki w atakowanej aplikacji, procesor rozpoczyna wykonywanie shellcode, pozwalając na uzyskanie nieautoryzowanego dostępu do systemu komputerowego lub eskalację uprawnień. Przykładowy shellcode, zapisany zgodnie z notacją języka C, zamieszczony jest poniżej: char shellcode[]= "\x31\xc0" /* xorl %eax,%eax */ "\x31\xdb" /* xorl %ebx,%ebx */ "\x31\xc9" /* xorl %ecx,%ecx */ "\xb0\x46" /* movl %al,$0x46 */ "\xcd\x80" /* int $0x80 */ "\x50" /* pushl %eax */ "\x68""/ash" /* pushl $0x6873612f */ "\x68""/bin" /* pushl $0x6e69622f */ "\x89\xe3" /* movl %esp,%ebx */ "\x50" /* pushl %eax */ "\x53" /* pushl %ebx */ "\x89\xe1" /* movl %ecx,%esp */ "\xb0\x0b" /* movb %al,$0x0b */ "\xcd\x80" /* int $0x80 */; W niektórych przypadkach, ze względu na ograniczenia parametrów wejściowych, które może przyjąć program, autorzy shellcode zmuszeni są do wykorzystywania nietypowych konstrukcji - np. unikania jakichkolwiek instrukcji i parametrów zawierających bajt o wartości 0x00, który w C odczytywany jest jako znacznik końca ciągu tekstowego; albo korzystania tylko z instrukcji, których reprezentacja zamknie się w zbiorze znaków drukowalnych ASCII; albo do ograniczenia kodu do bardzo niewielkich wymiarów.
Abstract from DBpedia / Wikipedia · CC BY-SA
Discovered by embedding cosine similarity (sentence-transformers MiniLM, 384-dim).
via Wikidata sitelinks · CC0