Хакинг. Хакинг__искусство_эксплоита_2_е_469663841. Книга дает полное представление о программировании, машин ной архитектуре, сетевых соединениях и хакерских приемах
Скачать 2.5 Mb.
|
9 0x720 Сложность алгоритма ..................................................... 440 0x721 Асимптотическая нотация ........................................ 441 0x730 Симметричное шифрование ............................................. 442 0x731 Алгоритм квантового поиска Лова Гровера .................. 443 0x740 Асимметричное шифрование ........................................... 444 0x741 RSA ....................................................................... 444 0x742 Алгоритм квантовой факторизации Питера Шора ........ 449 0x750 Гибридные шифры ......................................................... 450 0x751 Атака «человек посередине» (MitM) ............................ 450 0x752 Различия цифровых отпечатков хостов в протоколе SSH ....................................................... 455 0x753 Нечеткие отпечатки ................................................. 458 0x760 Взлом паролей ............................................................... 463 0x761 Атака по словарю ..................................................... 465 0x762 Атака путем полного перебора ................................... 467 0x763 Справочная хеш-таблица .......................................... 469 0x764 Матрица вероятностей паролей .................................. 470 0x770 Шифрование в протоколе беспроводной связи 802.11b ........ 481 0x771 Протокол WEP ........................................................ 481 0x772 Поточный шифр RC4 ................................................ 483 0x780 Атаки на WEP ............................................................... 484 0x781 Атака путем полного перебора в автономном режиме ........................................................ 484 0x782 Повторное использование ключевого потока ................ 485 0x783 Дешифрование по таблицам IV .................................. 486 0x784 Переадресация IP .................................................... 487 0x785 Атака Флурера-Мантина-Шамира (FMS) ..................... 488 0x800 Заключение ..................................................................... 499 0x810 Ссылки ......................................................................... 500 0x820 Источники .................................................................... 502 Алфавитный указатель ......................................................... 503 Отзывы на 1-е издание книги «Самое полное руководство по технике хакинга. Наконец-то появи- лась книга, которая учит не только применению эксплойтов, но и их разработке». PHRACK «Из всех прочитанных мною книг эту считаю для хакера главной». SECURITY FORUMS «Можно рекомендовать эту книгу из-за одного только программирова- ния». UNIX REVIEW «Очень рекомендую эту книгу. Ее автор знает то, о чем говорит, а про- граммный код, инструменты и примеры вполне работоспособны». IEEE CIPHER «Книга Эриксона – руководство для новичков, включающее сжатое и четкое описание реальных методов программирования и хакинга и объяснение принципов их работы». COMPUTER POWER USER (CPU) MAGAZINE «Отличная книга. Тот, кто решил повысить свой уровень, должен вни- мательно ее прочесть». ABOUT.COM INTERNET/NETWORK SECURITY Предисловие Цель книги – рассказать всем об искусстве хакинга. Разобраться в методах хакинга часто бывает трудно, потому что для этого нужны широкие и глубокие знания. Многое из того, что пишут о хакинге, кажется непонятным для непосвященных из-за некоторых пробелов в подготовке читателя. Настоящее второе издание книги «Хакинг: искусство эксплойта» делает мир хакинга более доступным, показывая всю картину в целом – от программирования до машинного кода и эксплойта. Материалы для этого издания организованы в виде загрузочного диска на базе Ubuntu Linux, который можно использовать на любом компьютере с процессором x86, не затрагивая установленную на нем операционную систему. Диск содержит весь имеющийся в книге исходный код и предоставляет среду для написания и отладки кода, в которой можно воспроизвести имеющиеся в книге примеры и поэкспериментировать самостоятельно 1 Благодарности Хочу поблагодарить Билла Поллока (Bill Pollock) и других сотрудников издательства No Starch Press за воплощение этой книги в жизнь и за то, что позволили мне творчески участвовать в этом процессе. Кроме того, я благодарю своих друзей Сета Бенсона (Seth Benson) и Аарона Эдамса (Aaron Adams) за редактирование и корректуру, Джека Мэтсона (Jack Matheson) за помощь с ассемблером, д-ра Зейделя (Dr. Seidel) за поддержание интереса к вычислительной технике, моих родителей за покупку того самого первого Commodore VIC-20 и хакерское сообщество за стремление к новому и творческий дух, породившие технологии, о которых рассказывается в книге. 1 Образ загрузочного диска можно скачать на сайте издательства «Символ- Плюс» по адресу www.symbol.ru/library/hacking-2ed. – Прим. ред. 0x100 Введение При слове «хакер» обычно возникает образ электронного вандала, шпи она с яркой прической и пирсингом. У большинства людей хакерство, или хакинг, ассоциируется с нарушением закона, а потому все, кто занимает ся хакерской деятельностью, становятся в их глазах преступниками. Не сомненно, действия отдельных хакеров противозаконны, но суть хакер ства состоит не в этом. На самом деле хакинг больше тяготеет к соблю дению законов, чем к их нарушению. Сущность хакинга – поиск непреду смотренных или неочевидных способов использования законов и свойств определенной ситуации и последующее оригинальное и изобретательное применение их для решения некоторой задачи, в чем бы она ни состояла. Сущность хакинга можно продемонстрировать на примере следующей математической задачи: Расставьте между цифрами 1, 3, 4 и 6 любые знаки элементарных арифметических операций (сложение, вычитание, умножение и де- ление), чтобы получилось выражение с результатом 24. Каждую цифру можно использовать только один раз; порядок действий определяете вы сами. Например, выражение 3 × (4 + 6) + 1 = 31 до- пустимо, но неверно, поскольку не дает в результате 24. Условия задачи просты и понятны, и все же решить ее может не каж- дый. Так же как в решении этой задачи (оно приведено в конце книги), в хакерских решениях используются законы системы, но делается это неочевидным образом. Тем и сильны хакеры, что могут решать зада- чи такими способами, которые не приходят в голову тем, кто мыслит и действует стандартным образом. С самого появления компьютеров хакеры занимались творческим ре- шением задач. В конце 1950-х клуб железнодорожного моделирования Массачусетского технологического института получил в подарок дета- ли, в основном от старой телефонной аппаратуры. Из них члены клуба 0x100 Введение 13 смастерили сложную систему, позволявшую нескольким операторам управлять участками дороги, набирая телефонный номер соответству- ющего участка. Такое необычное и оригинальное применение телефон- ного оборудования они назвали хакингом, и многие считают эту груп- пу первыми хакерами. Потом они стали писать на перфокартах и пер- фолентах программы для первых компьютеров, таких как IBM-704 и TX-0. В то время как все, кто писал программы, были довольны тем, что они решают задачи, первые хакеры стремились писать программы, которые решают задачи хорошо. Из двух программ, аналогичных по результатам, лучшей считалась та, которая занимала меньше перфо- карт. Главным отличием было то, как программа получает результа- ты, – ее элегантность. Умение сократить количество перфокарт, необходимых для програм- мы, свидетельствовало об артистизме в управлении компьютером. Вазу можно поставить и на красивый стол, и просто на ящик, но впе- чатление в каждом случае будет разным. Показав, что технические за- дачи могут иметь красивые решения, первые хакеры сделали програм- мирование своего рода искусством. Подобно другим видам искусства, хакинг часто оставался непонятым. Посвященные же создали неформальную субкультуру, нацеленную на более глубокое изучение данного искусства, овладение вершинами ма- стерства. Ее участники считали, что информация должна свободно рас- пространяться, а все, что мешает этой свободе, следует так или иначе преодолевать. Помешать могли авторитетные личности, администра- ция учебных заведений и дискриминация. В отличие от большинства студентов, движимых желанием получить диплом об образовании, не- официальную группу хакеров интересовали не хорошие оценки, а соб- ственно знания. Непреодолимая тяга к учебе и исследованиям побеж- дала даже традиционное неравноправие, например, в эту группу при- няли 12-летнего Питера Дойча, который продемонстрировал свое зна- ние TX-0 и желание учиться. Ценность участников не зависела от воз- раста, расы, пола, внешности, ученых степеней и положения в обще- стве – и целью было не равенство, а развитие нарождающегося искус- ства хакинга. Хакеры обнаружили красоту и элегантность в таких обычно сухих нау- ках, как математика и электроника. Они рассматривали программиро- вание как вид художественного самовыражения, и компьютер был ин- струментом их искусства. Они стремились все проанализировать и во всем разобраться не для того, чтобы разоблачить секреты творчества, а чтобы лучше ими овладеть. Понимание логики как формы искусства, содействие свободному обмену информацией, преодоление традицион- ных пределов и ограничений с единственной целью лучше понять окру- жающий мир – эти ценности, обусловленные стремлением к знаниям, впоследствии назовут хакерской этикой. Все это не ново: схожую эти- ку и субкультуру создали пифагорейцы в Древней Греции, хотя ком- пьютеров у них не было. Они увидели красоту математики и открыли 14 0x100 Введение многие базовые понятия геометрии. Жажда знаний и ее благотворные побочные продукты встречаются на всем протяжении истории от пи- фагорейцев до Ады Лавлейс, Алана Тьюринга и хакеров из клуба же- лезнодорожного моделирования MIT. Последователи первых хакеров, такие как Ричард Столмен и Стив Возняк, дали нам современные опе- рационные системы, языки программирования, персональные ком- пьютеры и многие другие технологические достижения, ставшие ча- стью повседневной жизни. Как же отличить хороших хакеров, творящих чудеса технологическо- го прогресса, от плохих хакеров, крадущих номера наших кредитных карточек? В какой-то момент плохих хакеров стали называть крэкера- ми. Журналистам объяснили, что крэкеры – нехорошие ребята, а ха- керы – хорошие. Хакеры придерживались хакерской этики, а крэке- ры плевали на законы, желая только поскорее заработать. Считалось, что крэкеры далеко не так талантливы, как настоящие хакеры, и про- сто пользуются написанными хакерами инструментами и скриптами, не вникая в их работу. Слово крэкер должно было стать общим ярлы- ком для всех, кто обращает компьютер во зло: ворует программное обе- спечение, уродует веб-сайты и, что хуже всего, не понимает, как он это делает. Но сегодня этим термином пользуются очень немногие. Возможно, термин не прижился из-за конфликта определений: пер- воначально крэкером называли того, кто нарушает авторские права, взламывая системы защиты от копирования. А может быть, причина его непопулярности кроется в неоднозначности, поскольку теперь так называют и тех, кто занимается незаконной компьютерной деятель- ностью, и просто неумелых хакеров. Журналисты не склонны употре- блять термины, незнакомые большинству их читателей. А слово хакер у многих ассоциируется с таинственностью и высоким мастерством, по- этому журналист скорее воспользуется им. Аналогично для обозначе- ния крэкеров иногда употребляют термин скрипт-кидди, но для жур- налиста в нем нет такого оттенка сенсационности, как в темном хаке- ре. Кто-то привык четко разделять хакеров и крэкеров, но лично я счи- таю хакером любого, в ком живет хакерский дух, независимо от того, какие законы он, возможно, нарушает. Различие между хакерами и крэкерами становится еще более рас- плывчатым благодаря современным законам, накладывающим огра- ничения на применение криптографических средств и исследования в этой области. В 2001 году профессор Эдвард Фелтен (Edward Felten) и группа ученых из Принстонского университета собрались опубли- ковать результаты своих исследований в статье, обсуждавшей недо- статки различных систем цифровых водяных знаков. Эта статья была ответом на вызов, брошенный группой основателей стандарта SDMI (Secure Digital Music Initiative), в котором всем желающим предлага- лось попытаться взломать эти системы водяных знаков. Однако про- тив публикации этой статьи и с угрозами в адрес исследователей вы- ступили Фонд SDMI и Американская ассоциация звукозаписывающей 0x100 Введение 15 индустрии (RIAA). Акт об авторских правах цифрового тысячелетия (Digital Millennium Copyright Act, DMCA) от 1998 года делает незакон- ным обсуждение или предоставление технологии, позволяющей обхо- дить промышленный контроль над покупателями. Это тот закон, ко- торый был применен против Дмитрия Склярова, русского программи- ста и хакера. Тот написал программу, позволяющую обходить доволь- но простое шифрование в продуктах фирмы Adobe, и представил свои результаты на конференции хакеров в Соединенных Штатах. ФБР по- спешило арестовать его, за чем последовали долгие юридические бата- лии. По закону сложность системы контроля над покупателем не име- ет значения: формально незаконным является взламывание или даже обсуждение «поросячьей латыни», если она будет использована как промышленное средство контроля над покупателем. Так кого теперь считать хакерами, а кого – крэкерами? Если закон становится препят- ствием для свободы слова, то «хорошие ребята», которые говорят то, что думают, внезапно становятся плохими? Я полагаю, что дух хакер- ства выше правительственных законов и не должен определяться ими. Такие науки, как ядерная физика и биохимия, могут использоваться для того, чтобы убивать, но при этом имеют большое значение для на- учного прогресса и современной медицины. Знание само по себе не яв- ляется ни плохим, ни хорошим; стандарты нравственного поведения относятся к применению этого знания. При всем желании мы не смог- ли бы запретить знание о том, как превратить материю в энергию, или остановить непрерывный технологический прогресс в обществе. Точно так же невозможно отменить сущность хакерства, как и подвергнуть его упрощенной классификации или анализу. Хакеры всегда будут раздвигать существующие границы, побуждая нас к дальнейшим ис- следованиям. Часть этого процесса составляет полезная в конечном счете эволю- ция систем защиты как результат соперничества между теми хакера- ми, которые стремятся обеспечить защиту компьютеров, и другими ха- керами, которые пытаются ее взломать. Как антилопы научились бы- стро бегать, спасаясь от гепардов, а гепарды стали бегать еще быстрее, соревнование между хакерами приводит к появлению более прочной защиты и более утонченных методов атаки. Появление и развитие си- стем обнаружения несанкционированного доступа (Intrusion Detection Systems, IDS) – важный пример такого совместного эволюционно- го процесса. Хакеры-защитники пополняют свой арсенал системами IDS, а хакеры-нападающие разрабатывают методы противодействия IDS, которые учитываются при создании новых и более мощных IDS. Итог такого взаимодействия оказывается положительным: более ква- лифицированные специалисты, более совершенная защита, более ста- бильные программы, изобретательные технологии решения проблем и даже новая экономика. Цель этой книги – показать подлинный дух хакинга. Мы рассмотрим различные хакерские технологии, как старые, так и современные, 16 0x100 Введение и проанализируем их, чтобы понять, как и почему они работают. Ма- териалы для книги (www.symbol.ru/library/hacking-2ed) включают все примеры кода и настроенную среду Linux. Исследования и поиск но- вого – важнейшие элементы искусства хакера, и они помогут вам луч- ше усвоить материал и самостоятельно поэкспериментировать. Един- ственное необходимое условие – процессор x86, который применяет- ся во всех машинах с Microsoft Windows и в более новых компьютерах Macintosh. Эта среда Linux никак не повлияет на установленную у вас ОС. Благодаря выбранному способу изложения информации вы полу- чите ясное представление о хакинге, что позволит вам усовершенство- вать существующие или даже изобрести оригинальные новые методы. Надеюсь, книга поможет читателю развить любознательное хакерское начало и побудит внести свой вклад в искусство хакинга, по какую бы сторону баррикад он ни находился. 0x200 Программирование Хакерами называют и тех, кто создает код, и тех, кто отыскивает и ис пользует его уязвимости. Несмотря на разные конечные цели, обе эти группы хакеров решают свои задачи схожими методами. И поскольку уме ние программировать помогает находить уязвимости программ, а умение находить уязвимости программ помогает их писать, многие хакеры зани маются и тем и другим одновременно. Интересный хак можно найти как в приемах написания элегантного кода, так и в методах поиска уязвимо стей. Фактически хакинг – это нахождение искусного и неочевидного реше ния какойлибо задачи. Хаки, применяемые в программных эксплойтах, как правило, основа- ны на использовании законов функционирования компьютера непреду - смотренными способами с целью обхода системы защиты. Аналогич- но и в обычных программах хаки используют законы функциониро- вания компьютера новыми и творческими способами, но их конечная цель – получить более эффективный или короткий код, не обязатель- но с целью взлома защиты. Из бесчисленного множества разных про- грамм, решающих конкретные задачи, большинство громоздки, пере- усложнены и неряшливы, и лишь немногие компактны, эффективны и аккуратны. Такие программы считаются элегантными, а искусные и изобретательные решения, приводящие к такой эффективности, на- зываются хаками. Хакеры обеих противостоящих групп высоко ценят и красоту элегантного кода, и остроумие удачных хаков. С точки зрения бизнеса важнее быстро создать работающий код, чем ис- кать искусные хаки и добиваться элегантности. Благодаря экспоненци- альному росту скорости вычислений и объема памяти, экономически нецелесообразно тратить лишние часы на то, чтобы сделать код чуть бо- лее быстрым и эффективно использующим ресурсы современного ком- пьютера с гигагерцевой тактовой частотой и гигабайтной памятью. |