Хакинг. Хакинг__искусство_эксплоита_2_е_469663841. Книга дает полное представление о программировании, машин ной архитектуре, сетевых соединениях и хакерских приемах
Скачать 2.5 Mb.
|
начинал програм ми ро вать еще на ком пью тере Commodore Vic-20 и с тех пор про дол жа ет занимать- ся ха кин гом. Сформировался как спе ци а лист, про грам мируя иг ры и пер со наль ные сис те мы без - опас ности, был за всег да та ем BBS, общест вен ных се тей и се тей X.25. Движимый не угасимым ин те ре сом к ком пью те рам, Джон по сту пил в уни вер си тет. И хотя лю бо пыт ст во поч ти до ве ло его до ис клю че ния, он по лу чил сте пень, начал ра бо тать про грам мис том и вы сту пать на кон - фе рен ци ях по ком пью терной без- опас нос ти по все му миру, из вле кая поль зу из зна ний, от ко то рых рань- ше бы ли од ни не при ят но с ти. Сей час жи вет в Се вер ной Ка ли фор нии и за- ни ма ется изу че ни ем уяз ви мо стей и эк с плой тов. Джон Эриксон Издательство «Символ-Плюс» (812) 324-5353, (095) 945-8100 www.symbol.ru Óðîâåíü ïîäãîòîâêè ÷èòàòåëåé: âûñîêèé Êàòåãîðèÿ: áåçîïàñíîñòü Иску сство эксплойта Джон Эр И ксон Ха кИ нг Хакинг: искусство эксплойта Хакинг – это искусство творческого решения задач, подразуме- вающее нестандартный подход к сложным проблемам и исполь- зование уязвимостей программ. Часто бывает трудно разобрать- ся в методах хакинга, потому что для этого нужны широкие и глу- бокие знания. Автор не учит применять известные эксплойты, а объясняет их работу и внут реннюю сущность. Вначале читатель знакомит- ся с основами программирования на C, ассемблере и языке ко- мандной оболочки, учится исследовать регист ры процессора. А усвоив материал, можно приступать к хагингу – перезаписы- вать память с помощью переполнения буфера, получать доступ к удаленному серверу, скрывая свое присутствие, и перехваты- вать соединения TCP. Изучив эти методы, можно взламывать за- шифрованный трафик беспроводных сетей, успешно преодоле- вая системы защиты и обнаружения вторжений. Книга дает полное представление о программировании, машин- ной архитектуре, сетевых соединениях и хакерских приемах. С этими знаниями ваши возможности ограничены только вообра- жением. Материалы для работы с этим изданием имеются в виде загрузочного диска Ubuntu Linux, который можно скачать и ис- пользовать, не затрагивая установленную на компьютере ОС. Спрашивайте наши книги: Оби Фернандес Путь RAILS 861585 9 785932 ISBN 978-5-93286-158-5 Ричард Стивенс, Стивен Раго UNIX. Профессиональное программирование Марк Саммерфилд Программирование на Python 3 Джефф Форсье Django. Разработка веб-приложений на Python По договору между издательством «СимволПлюс» и Интернетмага зином «Books.Ru – Книги России» единственный легальный способ получения данного файла с книгой ISBN 9785932861585, назва ние «Хакинг: искусство эксплойта. 2е издание» – покупка в Интер нетмагазине «Books.Ru – Книги России». Если Вы получили дан ный файл какимлибо другим образом, Вы нарушили международ ное законодательство и законодательство Российской Федерации об охране авторского права. Вам необходимо удалить данный файл, а также сообщить издательству «СимволПлюс» (piracy@symbol.ru), где именно Вы получили данный файл. HACKING The Art of Exploitation Second edition Jon Erickson ХАКИНГ Искусство эксплойта Второе издание Джон Эриксон Санкт-Петербург – Москва 2010 Серия «High tech» Джон Эриксон Хакинг: искусство эксплойта, 2-е издание Перевод С. Маккавеева Главный редактор А. Галунов Зав. редакцией Н. Макарова Выпускающий редактор П. Щеголев Редактор Т. Темкина Корректор Л. Уайатт Верстка К. Чубаров Эриксон Дж. Хакинг: искусство эксплойта. 2-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2010. – 512 с., ил. ISBN 978-5-93286-158-5 Хакинг – это искусство творческого решения задач, подразумевающее нестан- дартный подход к сложным проблемам и использование уязвимостей про- грамм. Часто бывает трудно разобраться в методах хакинга, потому что для этого нужны широкие и глубокие знания. Автор не учит применять известные эксплойты, а объясняет их работу и внут- реннюю сущность. Вначале читатель знакомится с основами программирова- ния на C, ассемблере и языке командной оболочки, учится исследовать регист- ры процессора. А усвоив материал, можно приступать к хагингу – перезаписы- вать память с помощью переполнения буфера, получать доступ к удаленному серверу, скрывая свое присутствие, и перехватывать соединения TCP. Изучив эти методы, можно взламывать зашифрованный трафик беспроводных сетей, успешно преодолевая системы защиты и обнаружения вторжений. Книга дает полное представление о программировании, машинной архитекту- ре, сетевых соединениях и хакерских приемах. С этими знаниями ваши воз- можности ограничены только воображением. Материалы для работы с этим из- данием имеются в виде загрузочного диска Ubuntu Linux, который можно ска- чать и использовать, не затрагивая установленную на компьютере ОС. ISBN 978-5-93286-158-5 ISBN 978-1-59327-144-2 (англ) © Издательство Символ-Плюс, 2010 Authorized translation of the English edition © 2008 No Starch Press, Inc. This trans- lation is published and sold by permission of No Starch Press, Inc., the owner of all rights to publish and sell the same. Все права на данное издание защищены Законодательством РФ, включая право на полное или час- тичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные зна- ки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство «Символ-Плюс». 199034, Санкт-Петербург, 16 линия, 7, тел. (812) 380-5007, www.symbol.ru. Лицензия ЛП N 000054 от 25.12.98. Налоговая льгота – общероссийский классификатор продукции ОК 005-93, том 2; 953000 – книги и брошюры. Подписано в печать 30.09.2009. Формат 70×100 1 / 16 . Печать офсетная. Объем 32 печ. л. Тираж 1500 экз. Заказ № Отпечатано с готовых диапозитивов в ГУП «Типография «Наука» 199034, Санкт-Петербург, 9 линия, 12. Оглавление Отзывы на 1-е издание книги ..................................................10 Предисловие ...........................................................................11 Благодарности ........................................................................11 0x100 Введение ...........................................................................12 0x200 Программирование ...........................................................17 0x210 Что такое программирование? ...........................................18 0x220 Псевдокод .......................................................................19 0x230 Управляющие структуры ..................................................20 0x231 If-then-else ................................................................20 0x232 Циклы while/until......................................................22 0x233 Циклы for .................................................................22 0x240 Основные понятия программирования ................................23 0x241 Переменные ..............................................................24 0x242 Арифметические операторы ........................................25 0x243 Операторы сравнения .................................................26 0x244 Функции ..................................................................28 0x250 Практическая работа ........................................................32 0x251 Общая картина ..........................................................33 0x252 Процессор x86 ..........................................................37 0x253 Язык ассемблера ........................................................38 0x260 Возвращаемся к основам ..................................................51 0x261 Строки .....................................................................52 0x262 Целые числа со знаком, без знака, длинные и короткие .....56 0x263 Указатели .................................................................58 0x264 Форматные строки .....................................................62 0x265 Приведение типа ........................................................66 0x266 Аргументы командной строки......................................73 0x267 Область видимости переменных ...................................77 0x270 Сегментация памяти ........................................................85 0x271 Сегменты памяти в C ..................................................92 0x272 Работа с кучей ...........................................................94 0x273 Функция malloc() с контролем ошибок ..........................97 6 Оглавление 0x280 Опираясь на основы ..........................................................99 0x281 Доступ к файлам ........................................................99 0x282 Права доступа к файлам ............................................ 104 0x283 Идентификатор пользователя .................................... 106 0x284 Структуры .............................................................. 115 0x285 Указатели на функции .............................................. 119 0x286 Псевдослучайные числа ............................................ 120 0x287 Азартная игра ......................................................... 122 0x300 Эксплойты ....................................................................... 135 0x310 Общая технология эксплойта ........................................... 138 0x320 Переполнение буфера ..................................................... 139 0x321 Переполнение буфера в стеке ..................................... 142 0x330 Эксперименты с BASH .................................................... 155 0x331 Использование окружения ........................................ 165 0x340 Переполнения в других сегментах .................................... 173 0x341 Типичное переполнение в куче ................................... 173 0x342 Переполнение с замещением указателя на функцию ..... 180 0x350 Форматные строки ......................................................... 191 0x351 Параметры формата ................................................. 192 0x352 Уязвимость форматной строки ................................... 195 0x353 Чтение из памяти по произвольному адресу ................. 197 0x354 Запись в память по произвольному адресу ................... 198 0x355 Прямой доступ к параметрам ..................................... 205 0x356 Запись коротких целых ............................................ 208 0x357 Обход с помощью .dtors ............................................ 210 0x358 Еще одна уязвимость в программе notesearch ............... 215 0x359 Перезапись глобальной таблицы смещений ................. 216 0x400 Сетевое взаимодействие .................................................. 220 0x410 Модель OSI .................................................................... 220 0x420 Сокеты ......................................................................... 223 0x421 Функции сокетов ..................................................... 224 0x422 Адреса сокетов ......................................................... 226 0x423 Порядок байтов в сети ............................................... 228 0x424 Преобразование интернет-адресов .............................. 229 0x425 Пример простого сервера ........................................... 229 0x426 Пример веб-клиента ................................................. 233 0x427 Миниатюрный веб-сервер .......................................... 239 0x430 Более низкие уровни ...................................................... 244 0x431 Канальный уровень .................................................. 244 0x432 Сетевой уровень ....................................................... 246 Оглавление 7 0x433 Транспортный уровень.............................................. 248 0x440 Анализ сетевых пакетов (сниффинг) ................................. 252 0x441 Сниффер сокетов прямого доступа .............................. 254 0x442 Сниффер libpcap ...................................................... 256 0x443 Декодирование уровней ............................................ 258 0x444 Активный сниффинг ................................................ 268 0x450 Отказ в обслуживании .................................................... 281 0x451 SYN-флуд ............................................................... 282 0x452 Смертельный ping .................................................... 286 0x453 Teardrop ................................................................. 287 0x454 Пинг-флудинг ......................................................... 287 0x455 Атаки с усилителем .................................................. 288 0x456 Распределенная DoS-атака ........................................ 289 0x460 Захват TCP/IP ............................................................... 289 0x461 Перехват с помощью RST ......................................... 289 0x462 Еще о перехвате ....................................................... 295 0x470 Сканирование портов ...................................................... 295 0x471 Скрытое SYN-сканирование ...................................... 296 0x472 FIN, X-mas и Null-сканирование ................................ 296 0x473 Создание ложных целей ............................................ 297 0x474 Сканирование через бездействующий узел ................... 297 0x475 Активная защита (shroud) ......................................... 299 0x480 Пойди и кого-нибудь взломай! ......................................... 305 0x481 Анализ с помощью GDB ............................................ 306 0x482 «Почти попал» здесь не проходит ............................... 308 0x483 Шелл-код для привязки порта ................................... 311 0x500 Шелл-код (код оболочки) ................................................ 315 0x510 Ассемблер и C ................................................................ 315 0x511 Системные вызовы Linux на ассемблере ...................... 318 0x520 Путь к шелл-коду ........................................................... 321 0x521 Команды ассемблера для работы со стеком................... 321 0x522 Исследование с помощью GDB ................................... 324 0x523 Удаление нулевых байтов .......................................... 325 0x530 Шелл-код для запуска оболочки ....................................... 331 0x531 Проблема привилегий ............................................... 335 0x532 Еще короче ............................................................. 338 0x540 Шелл-код с привязкой к порту ......................................... 339 0x541 Дублирование стандартных дескрипторов файла .......... 343 0x542 Управляющие структуры условного перехода .............. 345 0x550 Шелл-код с обратным соединением ................................... 351 8 Оглавление 0x600 Противодействие ............................................................. 357 0x610 Средства обнаружения атак ............................................. 358 0x620 Системные демоны ......................................................... 358 0x621 Краткие сведения о сигналах ..................................... 360 0x622 Демон tinyweb ......................................................... 362 0x630 Профессиональные инструменты ..................................... 367 0x631 Инструмент для эксплойта tinywebd ........................... 367 0x640 Журнальные файлы ...................................................... 373 0x641 Слиться с толпой ...................................................... 373 0x650 Пропуск очевидного ....................................................... 375 0x651 Пошаговая работа .................................................... 375 0x652 Наведение порядка ................................................... 380 0x653 Детский труд ........................................................... 386 0x660 Усиленные меры маскировки .......................................... 388 0x661 Подделка регистрируемого IP-адреса .......................... 388 0x662 Эксплойт без записи в журнал .................................... 392 0x670 Инфраструктура в целом ................................................. 395 0x671 Повторное использование сокетов .............................. 395 0x680 Контрабанда оружия ...................................................... 400 0x681 Кодирование строк ................................................... 400 0x682 Как скрыть цепочку ................................................. 404 0x690 Ограничения, налагаемые на буфер .................................. 404 0x691 Полиморфный шелл-код в отображаемых символах ASCII ................................ 407 0x6a0 Усиление противодействия .............................................. 418 0x6b0 Неисполняемый стек ...................................................... 419 0x6b1 Возврат в libc (ret2libc) .............................................. 419 0x6b2 Возврат в system() .................................................... 419 0x6c0 Рандомизация стековой памяти (ASLR) ............................ 421 0x6c1 Анализ с помощью BASH и GDB ................................. 423 0x6c2 Отскок от linux-gate .................................................. 427 0x6c3 Применяем знания ................................................... 431 0x6c4 Первая попытка ....................................................... 431 0x6c5 Игра случая ............................................................. 433 0x700 Криптология ................................................................... 436 0x710 Теория информации ....................................................... 437 0x711 Безусловная стойкость .............................................. 437 0x712 Одноразовые блокноты ............................................. 437 0x713 Квантовое распределение ключей ............................... 438 0x714 Практическая (вычислительная) стойкость ................. 439 Оглавление |