Shell - код

Версія від 08:34, 12 травня 2011, створена Vito89 (обговореннявнесок)
(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)

Шелл-код (англ. shellcode, код запуску оболонки) - це двійковий виконуваний код, який зазвичай передає управління командному процесору, наприклад '/ bin / sh' Unix shell, command.com в MS-DOS і cmd.exe в операційних системах Microsoft Windows. Шелл-код може бути використаний як корисне навантаження експлойта, забезпечує зломщикові доступ до командної оболонки (англ. shell) в комп'ютерній системі. При експлуатації віддаленої вразливості шелл-код може відкривати заздалегідь заданий порт TCP вразливого комп'ютера, через який буде здійснюватися подальший доступ до командної оболонки, такий код називається прив'язуючимся до порта (англ. port binding shellcode). Якщо шелл-код здійснює підключення до порта комп'ютера, що атакує, що проводиться з метою обходу брандмауера або NAT, то такий код називається зворотною оболонкою (англ. reverse shell shellcode).

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

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

Виявлення

Зломщики пишуть шелл-коди часто використовуючи прийоми, що приховують їх атаку. Вони часто намагаються з'ясувати як системи виявлення вторгнень (СОВ) розпізнають будь-яку вхідну атаку. Типова СОВ зазвичай переглядає всі вхідні пакети в пошуках структури специфічної для шелл-коду (часто великий масив сміттєвих кодів, у найпростішому випадку NOP-ів); якщо вона знаходить таку структуру, пакет знищується до того, як він досягне своєї мети. Слабка позиція СОВ в даному випадку полягає в тому, що вона не здійснює справді гарний пошук інакше він займе дуже багато часу і таким чином сповільнить з'єднання з інтернетом. Шелл-код майже завжди містить рядок з ім'ям оболонки. Всі вхідні пакети містять такий рядок завжди розглядаються як підозрілі в очах СОВ. Також, деякі програми не приймають неалфавітно-цифрове введення (вони не приймають будь-що, крім az, AZ, 0-9, і кілька інших символів.) Для проходження через всі ці заходи спрямовані проти вторгнення, зломщики використовують шифрування, коди, що самомодифікуються, поліморфний код і алфавітно-цифровий код.

Посилання

- http://www.vividmachines.com/shellcode/shellcode.html

- http://www.enderunix.org/docs/en/sc-en.txt