Шелл-код — различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
[отпатрулированная версия][непроверенная версия]
м (r2.7.1) (робот добавил: nl:Shellcode)
(Ссылки)
Строка 21: Строка 21:
   
 
== Ссылки ==
 
== Ссылки ==
* http://www.shellcode.com.ar/docz/bof/Writing_shellcode.html (англ.) Введение в разработку кода консоли
 
 
* {{cite web
 
* {{cite web
| url = http://www.vividmachines.com/shellcode/shellcode.html
+
| author = http://www.1337day.com/
| title = Shellcoding for Linux and Windows Tutorial with example windows and linux shellcode
+
| datepublished = 29 августа 2010
| author = Steve Hanna
+
| url = http://www.1337day.com/
| datepublished = 2004
+
| title = Самая большая База эксплойтов (более 17824 записей)
  +
| publisher = www.1337day.com
  +
| accessdate = 2010-08-29
 
| lang = en
 
| lang = en
| accessdate = 30 сентября 2007
 
  +
| archiveurl = http://www.webcitation.org/61C8aYP1r
| archiveurl = http://www.webcitation.org/61C8RUIR5
 
 
| archivedate = 2011-08-25
 
| archivedate = 2011-08-25
}}
 
* {{cite web
 
| url = http://www.enderunix.org/docs/en/sc-en.txt
 
| title = Designing Shellcode Demystified
 
| lang = en
 
| archiveurl = http://www.webcitation.org/61C8RwqAp
 
| archivedate = 2011-08-25
 
 
}}
 
}}
   

Версия 22:38, 24 марта 2012

Шелл-код (англ. shellcode, код запуска оболочки) — это двоичный исполняемый код, который обычно передаёт управление командному процессору, например '/bin/sh' Unix shell, command.com в MS-DOS и cmd.exe в операционных системах Microsoft Windows. Шелл-код может быть использован как полезная нагрузка эксплойта, обеспечивающая взломщику доступ к командной оболочке (англ. shell) в компьютерной системе.

При эксплуатации удаленной уязвимости шелл-код может открывать заранее заданный порт TCP уязвимого компьютера, через который будет осуществляться дальнейший доступ к командной оболочке, такой код называется привязывающим к порту (англ. port binding shellcode). Если шелл-код осуществляет подключение к порту компьютера атакующего, что производится с целью обхода брандмауэра или NAT, то такой код называется обратной оболочкой (англ. reverse shell shellcode).

Принцип работы

Шелл-код обычно внедряется в память эксплуатируемой программы, после чего на него передается управление путём переполнения стека, или при переполнении буфера в куче, или используя атаки форматной строки. Передача управления шелл-коду осуществляется перезаписью адреса возврата в стеке адресом внедрённого шелл-кода, перезаписью адресов вызываемых функций или изменением обработчиков прерываний. Результатом этого является выполнение шелл-кода, который открывает командную строку для использования взломщиком.

Обнаружение

Взломщики пишут шелл-коды часто используя приёмы, скрывающие их атаку. Они часто пытаются выяснить как системы обнаружения вторжений (СОВ) распознают любую входящую атаку. Типичная СОВ обычно просматривает все входящие пакеты в поисках структуры специфичной для шелл-кода (часто большой массив мусорных кодов, в простейшем случае NOP-ов); если она находит такую структуру, пакет уничтожается до того, как он достигнет своей цели. Слабая позиция СОВ в данном случае состоит в том, что она не осуществляет действительно хороший поиск иначе он займёт слишком много времени и таким образом замедлит соединение с интернетом.

Шелл-код почти всегда содержит строку с именем оболочки. Все входящие пакеты содержащие такую строку всегда рассматриваются как подозрительные в глазах СОВ. Также, некоторые приложения не принимают неалфавитно-цифровой ввод (они не принимают что-либо, кроме a-z, A-Z, 0-9, и несколько других символов.)

Для прохождения через все эти меры направленные против вторжения, взломщики используют шифрование, самомодифицирующийся код, полиморфный код и алфавитно-цифровой код.

См. также

Ссылки