4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое шелл код

Что такое Шелл-код / Shellcode?

Что такое Шелл-код?

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

Шелл-код

Зачем это нужно?

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

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

Shellcode обычно внедряется в память эксплуатируемой программы, после чего на него передается управление при помощи использования программных ошибок, таких как переполнение стека или переполнение буфера в куче, или использования атак форматной строки.

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

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

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

Способы запуска шелл-кода в память

Существуют два способа запуска шелл-кода в память на исполнение:

  • Метод position-independent code (PIC, позиционно независимый код) — это код, который использует жесткую привязку бинарного кода (то есть кода, который выполнится в памяти) к определенному адресу или данным. Шелл-код — это по сути PIC. Почему жесткая привязка так важна? Шелл не может знать, в каком именно месте оперативной памяти будет располагаться, поскольку во время выполнения различных версий скомпрометированной программы или малвари они могут загрузить шелл-код в разные ячейки памяти.
  • Метод Identifying Execution Location («Определяй свое место выполнения») заключается в том, что шелл-код должен разыменовать базовый указатель при доступе к данным в позиционно независимой структуре памяти. Добавление (ADD) или вычитание (Reduce) значений от базового указателя позволяет безопасно получить доступ к данным, которые входят в состав шелл-кода.
Читать еще:  В пиво добавляют спирт

В продолжении рекомендую прочитать статью «Как обнаружить шелл-код на машине».

Шелл-код

Шелл-код (англ. 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, и нескольких других символов.)

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

См. также

  • Переполнение буфера
  • Переполнение кучи
  • Компьютерная безопасность
  • Ассемблер
Читать еще:  Как правильно сварить рис

Ссылки

  • http://www.shellcode.com.ar/docz/bof/Writing_shellcode.html (англ.) Введение в разработку кода консоли
  • Steve HannaShellcoding for Linux and Windows Tutorial with example windows and linux shellcode (англ.) (2004). Архивировано из первоисточника 25 августа 2011.Проверено 30 сентября 2007.
  • Designing Shellcode Demystified (англ.) . Архивировано из первоисточника 25 августа 2011.

Wikimedia Foundation . 2010 .

Смотреть что такое «Шелл-код» в других словарях:

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

Код консоли — Код оболочки, шелл код (англ. shellcode) это двоичный исполняемый код, который обычно передаёт управление консоли, например /bin/sh Unix shell, command.com в операционных системах Microsoft Windows. Код оболочки может быть использован как… … Википедия

Код (значения) — Код (фр. code, от лат. codex): В Викисловаре есть статья «код» … Википедия

Shellcode — Код оболочки, шелл код (англ. shellcode) это двоичный исполняемый код, который обычно передаёт управление консоли, например /bin/sh Unix shell, command.com в операционных системах Microsoft Windows. Код оболочки может быть использован как… … Википедия

Шеллкод — Код оболочки, шелл код (англ. shellcode) это двоичный исполняемый код, который обычно передаёт управление консоли, например /bin/sh Unix shell, command.com в операционных системах Microsoft Windows. Код оболочки может быть использован как… … Википедия

Шеллкодес — Код оболочки, шелл код (англ. shellcode) это двоичный исполняемый код, который обычно передаёт управление консоли, например /bin/sh Unix shell, command.com в операционных системах Microsoft Windows. Код оболочки может быть использован как… … Википедия

Переполнение буфера — У этого термина существуют и другие значения, см. Переполнение. Переполнение буфера (Buffer Overflow) явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера. Переполнение буфера обычно… … Википедия

Сетевые черви — У этого термина существуют и другие значения, см. Черви (значения). Сетевой червь разновидность вредоносной программы, самостоятельно распространяющейся через локальные и глобальные компьютерные сети. Содержание 1 История 2 Механизмы… … Википедия

Интернет-черви — Сетевой червь разновидность самовоспроизводящихся компьютерных программ, распространяющихся в локальных и глобальных компьютерных сетях. В отличие от компьютерных вирусов червь является самостоятельной программой. Содержание 1 История 2 Механизмы … Википедия

Интернет-червь — Сетевой червь разновидность самовоспроизводящихся компьютерных программ, распространяющихся в локальных и глобальных компьютерных сетях. В отличие от компьютерных вирусов червь является самостоятельной программой. Содержание 1 История 2 Механизмы … Википедия

Читать еще:  Почему не нужно ссорить искусства между собой

Шелл (Shell), веб-шеллы

Программы и скрипты для удаленного доступа к взломанному сайту.

Веб-шеллы, шеллы — специальные коды и программы, обеспечивающие доступ злоумышленника к файловой системе сервера и базой данных взломанного сайта

В большинстве случаев, после успешного взлома сайта, атакующий оставляет на сайте специализированные программы, коды или врезки в код легальных скриптов, обеспечивающие ему полный доступ к серверу. Эти программы, скрипты и коды называются шеллами.

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

Шеллы, шелл-коды, мини-шеллы

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

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

Веб-шеллы, PHP шеллы.

Веб-шеллы это мощные программные разработки, основной функционал которых заключается в работе с файловой системой сервера на уровне root доступа.
Как правило, веб-шеллы имеют графическую оболочку и удобный интерфейс, на подобии всем известных Far, MC, Norton Commander и др.

Скрин WSO 2.5 веб-шелла:

Основной функционал веб-шеллов:

  • Файловый менеджер
  • Работа с консолью сервера
  • Текстовой редактор
  • Редактор HEX кода
  • MD5, base64 и прочие конверторы
  • Прочие утилиты для работы с сервером

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

Сканер уязвимостей сайтов онлайн Проверьте, наколько устойчив к взлому Ваш сайт

Источники:

http://www.spy-soft.net/chto-takoe-shell-kod/
http://dic.academic.ru/dic.nsf/ruwiki/1184680
http://insafety.org/shellcode.php

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector