Read the book: «Как противостоять хакерским атакам. Уроки экспертов по информационной безопасности»

Font::

Я посвящаю эту книгу своей супруге Трише.

Во всех смыслах это женщина, стоящая за мужчиной


Roger A. Grimes

Hacking the Hacker: Learn From the Experts Who Take Down Hackers

© 2017 by John Wiley & Sons, Inc., Indianapolis, Indiana

All rights reserved. This translation published under license with the original publisher John Wiley & Sons, Inc.

© Райтман М.А., перевод на русский язык, 2020

© Оформление. ООО «Издательство «Эксмо», 2023

Об авторе

Роджер Граймс борется со злонамеренными компьютерными хакерами уже свыше трех десятилетий (с 1987 года). Он получил десятки сертификатов информационной безопасности (включая CISSP, CISA, MCSE, CEH и Security+), а также успешно сдал очень трудный экзамен дипломированных бухгалтеров (CPA), хотя это не имеет ничего общего с ИБ. Роджер создал и обновил курсы информационной безопасности, был инструктором и научил тысячи студентов, как взламывать и защищать. Он часто выступает на национальных конференциях по информационной безопасности. Граймсу платят как профессиональному пентестеру, чтобы он взламывал сети и веб-сайты компаний, и практически всегда он укладывается в пару-тройку часов. Ранее он написал (в том числе в соавторстве) восемь книг по информационной безопасности и около тысячи статей. С августа 2005 года Роджер пишет статьи про ИБ на сайте CSO Online (https://www.csoonline.com/author/Roger-A.-Grimes/), а также работает штатным консультантом более 20 лет. Роджер консультирует крупный и малый бизнес по всему миру по вопросам предотвращения хакерских и вредоносных атак. Опыт показал ему, что большинство злонамеренных хакеров не так умны, как многие считают, и они определенно проигрывают специалистам в области ИБ.

Благодарности

Я хотел бы поблагодарить Джима Минатела, давшего зеленый свет книге, которую я обдумывал на протяжении 10 лет, и Келли Тэлбот, лучшего редактора, с которой я сотрудничал на протяжении 15 лет. Келли отлично справляется с проблемами, не повышая голоса. Я хочу поблагодарить компанию Microsoft, моего лучшего работодателя за последние 10 лет. Спасибо Брюсу Шнайеру за его негласное покровительство надо мной и всеми в этой отрасли. Мое почтение Брайану Кребсу за его большое расследование и за то, что он приоткрыл завесу тайны крупного бизнеса, каковым уже стала киберпреступность. Спасибо Россу Гринбергу, Биллу Чесвику и другим авторам, которые настолько интересно писали об информационной безопасности, что я решил построить на этом карьеру. Наконец, я не был бы тем, кто есть сегодня, без моего брата-близнеца Ричарда Граймса, лучшего писателя, подтолкнувшего меня к написанию книги более 20 лет назад. Всем специалистам по ИБ респект за помощь от имени всех нас.

Предисловие

Роджер Граймс работает в сфере информационной безопасности почти три десятилетия, и я, к моему удовольствию, знаком с ним 15 лет. Это один из немногих избранных профессионалов среди моих знакомых, у кого безопасность в крови – интуитивное понимание предмета, которое в сочетании с колоссальным опытом поимки плохих парней и устранения уязвимостей в системах безопасности превращает его в идеального автора этой книги. Роджер впервые начал писать в журнал InfoWorld в 2005 году, когда по электронной почте раскритиковал автора статей по безопасности, причем настолько убедительно, что мы сразу же попросили его внести свой вклад в публикацию. С тех пор он написал сотни статей в InfoWorld, каждая из которых демонстрирует любовь к теме, а также понимание с точки зрения психологии как злонамеренных хакеров, так и людей, которые противостоят им. В своей еженедельной журнальной колонке «советника по безопасности» Роджер демонстрирует уникальный талант сосредоточиваться на значимых вопросах, а не преследовать эфемерные угрозы или новые технологии. У него было стойкое стремление к убеждению специалистов по информационной безопасности и их руководителей уделять ей больше внимания, несмотря на склонность многих организаций пренебрегать основами и переключаться на последние технологичные решения. В этой книге Роджер описывает этичных хакеров в сфере ИБ, которые повлияли на ситуацию. Их неустанные усилия помогают удерживать линию обороны против растущей армии злоумышленников, чьи цели с годами сместились от деструктивных воздействий в сторону кражи ценной интеллектуальной собственности и миллионов долларов у финансовых учреждений и их клиентов. Мы в неоплатном долгу перед ними. Упоминая о таких людях, как Брайан Кребс, Дороти Деннинг и Брюс Шнайер, Роджер отдает должное потраченным ими усилиям, формируя увлекательный сборник, который и развлекает, и информирует одновременно. Эту книгу важно прочесть всем, кто интересуется информационной безопасностью, и людям, которые стремятся нас обезопасить.

Эрик Кнорр, главный редактор журнала InfoWorld

Введение

Цель этой книги – раскрыть мир специалистов по информационной безопасности (ИБ), некоторых из лучших хакеров, защитников конфиденциальных данных, преподавателей и писателей. Я надеюсь, что вы прочитаете ее с большим удовольствием от осознания усилий, которые потребовались, чтобы реализовать фантастический мир компьютеров, в котором мы живем сегодня. Без добрых людей на светлой стороне, воюющих против злоумышленников, компьютеры, Интернет и все, что с ними связано, были бы невозможны. Эта книга – ода специалистам по ИБ.

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

Книга разделена на главы, в которых кратко описывается реализация определенного способа атаки, а затем приводится один или два профиля специалистов по ИБ, преуспевших в этой области. Я попытался выбрать лучших из множества легенд, светил и даже некоторых относительно скромных специалистов, которые достигли блестящих успехов, даже если они не очень известны обывателям. Я попытался сформировать сочетание опыта ученых, разработчиков, преподавателей, лидеров, писателей и частных практиков, живущих в Соединенных Штатах и во всем мире. Я надеюсь, что читатели, заинтересованные в карьере специалиста ИБ, смогут так же мотивировать себя, как и я, чтобы сделать сферу ИТ значительно безопаснее для всех нас.

Да пребудет с вами сила!

1. Что ты за хакер?

Много лет назад я переехал в дом с прекрасным гаражом. В нем было очень удобно парковаться и даже хранить лодку и небольшой фургон. Сооружение было построено из отличных прочных досок. Электрику провели профессионалы, а качественные окна выдерживали порывы ветра скоростью 70 метров в секунду. Большую часть интерьера создал профессиональный плотник из ароматного красного кедра. Я неспособен и гвоздь забить, не то что собрать мебель, но даже мне было понятно, что он знает свое дело, думает о качестве и уделяет внимание деталям.

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

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

Вопреки распространенному мнению, злонамеренный взлом – это скорее кувалда стропальщика, чем тонкий инструмент ремесленника.

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


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

Большинство хакеров отнюдь не гении

К сожалению, почти каждый, кто пишет о «злых» хакерах, не имея реального опыта, романтизирует их как умные, богоподобные, мифические фигуры. Они могут подобрать любой пароль менее чем за минуту (особенно под прицелом пистолета, если верить Голливуду), взломать любую систему и секретный шифр. Они работают в основном по ночам и пьют много энергетических напитков, а их рабочее место завалено упаковками от чипсов и фастфуда. Школьник крадет пароль учителя, чтобы изменить свои оценки, и СМИ подлизываются к нему, как к потенциальному Биллу Гейтсу или Марку Цукербергу.

Хакеры необязательно гениальны. Я – живое тому доказательство. Несмотря на то, что я вламывался в системы всех компаний, в которых меня когда-либо нанимали для проверки систем защиты, я никогда полностью не понимал квантовую физику или теорию относительности Эйнштейна. Я дважды провалил экзамен по родному языку в средней школе, никогда не получал оценки выше тройки с плюсом по математике, а мой средний балл в первом семестре колледжа составил 0,62. Я получил пять двоек и одну пятерку. Одинокая пятерка была по курсу безопасности на водах, потому что я на тот момент пять лет работал пляжным спасателем. Плохие оценки были не только следствием того, что я не учился. Я просто не был достаточно умен и не пытался с этим справиться. Позже я узнал, что учеба и усердная работа часто более ценны, чем врожденный высокий уровень интеллекта. Я окончил университет и преуспел в мире информационной безопасности.

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

Специалисты по ИБ – продвинутые хакеры

Если проводить интеллектуальное сравнение, то специалист по ИБ в среднем умнее хакера. Он должен знать все, на что способен злоумышленник, а также уметь остановить атаку. Защита не сработает, если нет участия конечного пользователя, работает скрытно и справляется идеально (или почти идеально) все время. Покажите мне «злого» хакера с определенной техникой, и я покажу вам много специалистов по ИБ, которые умнее и лучше его. Однако атакующим обычно уделяется больше внимания. И моя книга призвана исправить ситуацию.

Хакеры особенны

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


Примечание. В какой-то момент моя собственная гипотетическая схема пронесения оружия через охрану аэропорта строилась на использовании инвалидных колясок с оружием или взрывчаткой, спрятанными внутри металлического каркаса. Инвалидные кресла часто провозят мимо охраны аэропорта, не подвергая тщательному досмотру.

Хакеры настойчивы

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

Шляпных дел мастера

Я всю свою жизнь был хакером. Мне платили за то, чтобы я вламывался куда-либо (на что у меня были юридические полномочия). Я взламывал пароли, сети, писал вредоносные программы и при этом ни разу не нарушил закон и не преступил границ этики. Это не значит, что никто из знакомых не пытался меня на это соблазнить. На протяжении многих лет друзья просили меня взломать мобильный телефон супруга, уличенного в измене; заместители хотели получить доступ к электронной почте начальства; а также люди без ордера требовали «вскрыть» компьютер одного злого хакера, чтобы предотвратить его дальнейшие взломы. На ранней стадии вы должны решить, кто вы и какова ваша этика. Я решил, что буду хорошим хакером («в белой шляпе»), а «белые шляпы» не совершают незаконных или неэтичных действий.

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

Однако «черные шляпы» могут стать «белыми». Это происходит сплошь и рядом. Вопрос в том, станет ли хакер «белым», прежде чем ему придется сесть за решетку. Кевин Митник – один из самых известных арестованных хакеров в истории (см. главу 5), который после выхода из тюрьмы начал карьеру в сфере ИБ на всеобщее благо. Роберт Т. Моррис, написавший и выпустивший первого компьютерного червя, чуть не уничтожившего Интернет (https://ru.wikipedia.org/wiki/Червь_Морриса), в итоге стал членом Ассоциации вычислительной техники (https://awards.acm.org/award_winners/morris_4169967.cfm) за «вклад в компьютерные сети, распределенные и операционные системы».

Раньше грань между легальным и нелегальным взломом была не столь четкой. Более того, многие ранние «злые» хакеры получили статус супергероев. Даже я не мог открещиваться от некоторых из них. Джон Дрейпер (ник Capitan Crunch) свистел в игрушечный свисток, обнаруженный им в коробке кукурузных хлопьев Cap’n Crunch, чтобы сымитировать тон частотой 2600 Гц. Таким образом он мог бесплатно звонить по межгороду. Многие хакеры, которые публиковали приватную информацию «во имя общественного блага», часто становились известными. Но, за некоторыми исключениями, я никогда не придерживался чрезмерно идеализированного взгляда на хакеров-злоумышленников. У меня была довольно четкая позиция, что люди, которые делают несанкционированные вещи с чужими компьютерами и данными, совершают преступление.

Много лет назад, впервые заинтересовавшись компьютерами, я прочитал книгу Стивена Леви «Хакеры: герои компьютерной революции»1. На заре эры персональных компьютеров Леви написал занимательную историю о хакерах, хороших и плохих, воплощающих хакерский идеал. Бо́льшая часть книги посвящена людям, которые улучшили мир с помощью компьютеров, но в ней также упоминаются и те, кто сегодня был бы арестован за свою деятельность. Некоторые из этих хакеров полагали, что цель оправдывает средства, и следовали свободе морали, воплощенной, по словам Леви, «хакерской этикой». Главным среди этих верований была философия о том, что каждый компьютер может быть доступен по любой законной причине, что вся информация должна быть свободной, и не следует доверять властям. Это был романтический взгляд на хакерство, хотя он не скрывал сомнительных этических и юридических вопросов. На самом деле все вокруг вновь расширили границы.

Ради автографа я отправил Стивену Леви экземпляр его книги (мне тоже стали присылать мои книги на подпись после того, как я выпустил восемь предыдущих). Леви публиковал свои статьи и редактировал чужие в нескольких крупных журналах, включая Newsweek, Wired и Rolling Stone. Кроме того, он написал еще шесть книг по вопросам информационной безопасности. Леви пишет и по сей день. Его книга «Хакеры: герои компьютерной революции» открыла для меня поразительный мир хакерства.

Позже другие книги, такие как Flu-Shot Росса Гринберга (давно не издается) и Computer Viruses, Worms, Data Diddlers, Killer Programs, and Other Threats to Your System Джона Макафи (https://www.amazon.com/Computer-virusesdiddlers-programs-threats/dp/031202889X) познакомили меня со стратегиями борьбы со злонамеренными хакерами. Я настолько ими впечатлился, что всерьез задумался о карьере борца с этими угрозами.

Позже я узнал, что специалисты по ИБ – самые умные хакеры. Я не хочу сводить всех злонамеренных хакеров под одну гребенку посредственности. Каждый год редкие гениальные хакеры обнаруживают что-то новое. Но подавляющее большинство «черных шляп» довольно посредственны и просто повторяют то, что работает уже на протяжении двадцати лет. Среднестатистический хакер-злоумышленник не имеет достаточного таланта в программировании, чтобы написать простое приложение типа «Блокнот», а тем более самостоятельно проникнуть куда-то, взломать ключи шифрования или самолично успешно подобрать пароли – без помощи других хакеров, которые реально талантливы и успешны на протяжении многих лет.

Ирония в том, что умные люди в компьютерном мире, о которых я знаю, – это не злые хакеры, а специалисты по ИБ. Они должны знать все, что делает хакер, предугадывать то, что он может совершить, и выстроить качественную оборону. Мир специалистов по ИБ полон кандидатов наук, магистрантов и успешных предпринимателей. Теперь хакеры редко меня впечатляют. А вот специалисты по ИБ – всегда.

Обычно специалисты по ИБ открывают для себя новый способ взлома, чтобы предотвратить атаки такого рода, и умалчивают о своем достижении. Это сродни министерству обороны, и предоставление злоумышленникам новых способов взлома до того, как оборона будет возведена, никому не облегчит жизнь. Это их образ жизни: выяснить новый способ взлома и помочь с латанием бреши, прежде чем она будет обнаружена кем-то еще. Такое случается гораздо чаще, чем обратное (например, злонамеренный хакер обнаруживает новую уязвимость).

Я был свидетелем тому, как специалисты по ИБ находят новый способ взлома, но из-за высоких затрат или недостатка времени уязвимость не закрывается немедленно, и какой-нибудь хакер получает звание «первооткрывателя». К сожалению, специалисты по ИБ не всегда получают славу и признание, когда выполняют свою повседневную работу.

Я тридцать лет изучал приемы работы как вредоносных хакеров, так и специалистов по ИБ, и мне стало ясно, что специалисты впечатляют сильнее. Вредоносные хакеры даже рядом не стояли. Если вы хотите показать всем, насколько хорошо разбираетесь в компьютерах, не раскрывайте новый способ взлома – лучше покажите новую стратегию обороны. Не требуется особого ума, чтобы что-то по-новому сломать. Это в основном требует лишь настойчивости. Но человек должен быть особенным и одаренным, чтобы построить то, что может выдержать непрерывные атаки в течение длительного времени.

Если вы хотите произвести впечатление на мир, не сносите гараж. Вместо этого создайте код, который сможет выдержать кувалду хакера-взломщика.

2. Как хакеры взламывают

Самый приятный аспект моей работы – это тестирование на проникновение (также известное как пентестирование). Пентестирование – это взлом в прямом смысле этого слова. Это битва интеллектов человека и машины. Человек – «атакующий» – может использовать собственную изобретательность и новые или существующие инструменты, когда исследует слабые стороны машин или людей. За все годы, что я занимался тестированием, хотя мне на это обычно дают недели, я успешно взламывал цель примерно за час. Самый долгий взлом, помню, продолжался три часа. Это касается любого банка, медицинского, правительственного или корпоративного учреждения, который когда-либо нанимал меня для тестирования на проникновение.

При этом я не могу назвать себя отличным пентестером. По шкале от 1 до 10, где 10 – высший балл, мои способности составляют примерно 6 или 7. С точки зрения специалиста по ИБ я чувствую себя лучшим в мире, но я весьма посредственный взломщик. Я был окружен потрясающими пентестерами, как мужчинами, так и женщинами, которые не помышляли о написании собственных инструментов пентестирования или не считали свои действия успешными, если не они привели к созданию хотя бы одного события с предупреждением в логах. Но даже люди, которых я оцениваю на 10 баллов, обычно считают себя середнячком и восхищаются другими пентестерами, которых, по их мнению, десятки. Насколько же хороши должны быть эти хакеры?

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

Примечание. Если ваши тесты не обнаружили слабых мест, а клиент вскоре был скомпрометирован реальными злоумышленниками, это выставит вас не в лучшем свете. Если это произойдет несколько раз, дурная слава не обойдет вас стороной, и вы, вероятно, будет искать новую работу. Слабые места есть. Ищите их.

Обычно пентестеры делают что-то еще, чтобы произвести впечатление на своих клиентов. Например, удаленно снимают генерального директора за рабочим столом на веб-камеру или взламывают пароль к серверу и размещают «Веселого Роджера» на рабочем столе компьютера сетевого администратора. Это стоит тысячи слов. Не стоит недооценивать, насколько одна глупая картинка может повысить удовлетворенность клиентов вашей работой. Они будут вспоминать о ней (и хвастаться вами) спустя годы после того, как вы закончите работу. Если можете, всегда заканчивайте красивым жестом. Это мой «золотой совет».

Секрет взлома

Если у хакеров и есть секрет взлома, то он точно не в том, как ломать. Это процесс изучения правильных методов и использования верных инструментов, точно как у электриков, сантехников или строителей. Нет определенного способа взлома. Однако существует вполне конкретный набор шагов, которые объединяются в более крупные этапы; это процесс, который включает в себя все, что необходимо хакеру для выполнения задачи. Не каждый хакер проходит все шаги. Некоторые вообще делают только один. Но в целом, если вы будете следовать этапам, то, скорее всего, придете к успеху. Вы можете пропустить один или несколько шагов и все равно быть успешным хакером. Вредоносные программы и другие инструменты взлома часто позволяют пропускать шаги, но по крайней мере один из них – первоначальное проникновение – требуется всегда. Независимо от желания сделать официальную карьеру хакера, если вы собираетесь бороться со злоумышленниками, нужно понимать методологию взлома. Модели могут различаться, включая количество шагов, их названия и конкретные детали, но все они содержат одни и те же основные компоненты.

Методология взлома

Методология взлома содержит следующие прогрессивные шаги.

1. Сбор информации.

2. Проникновение.

3. Упрощение доступа в будущем (необязательный).

4. Разведка системы.

5. Перемещение (необязательный).

6. Выполнение намеченного действия.

7. Заметание следов (необязательный).

Сбор информации

Как правило, если хакер не рассчитывает взламывать все потенциально уязвимые сайты, он придерживается конкретной цели. Проникая в конкретную компанию, первое, что он делает, это собирает о ней всю информацию, которая поможет проникнуть в систему. Это IP-адреса, адреса электронной почты и доменные имена. Хакер узнает, сколько потенциальных сайтов и сервисов, к которым он может получить доступ, подключены к компании. Используя средства массовой информации и публичные документы, он находит сведения о руководителях высшего звена и прочих сотрудниках для проведения атак средствами социальной инженерии. Хакер просматривает новости, чтобы узнать, какое крупное программное обеспечение недавно купил объект, какие происходили слияния или разделения (такие мероприятия часто сопровождаются ослаблением уровня безопасности), и даже с какими партнерами взаимодействует «жертва». Многие компании были скомпрометированы гораздо более слабым партнером.

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

Затем толковый хакер начинает собирать сведения обо всем ПО и сервисах, доступных на каждом из этих сайтов. Это процесс, известный как сбор цифровых отпечатков. Очень важно узнать, какие операционные системы (ОС) и их версии используются. Версии ОС могут сказать хакеру об уровнях защиты системы и ошибках, которые могут или не могут присутствовать. Представим, что он встречает операционную систему Windows Server 2012 R2 или Linux Centos 7.3-1611. По той же причине он ищет программы и вариации версий программного обеспечения, работающие на каждой из этих ОС. Если это веб-сервер, он может встретить Internet Information Server 8.5 на Windows или Apache 2.4.25 на Linux. Он проводит инвентаризацию каждого устройства, операционной системы, приложений и версий, запущенных на каждом из целевых объектов. Всегда лучше провести тщательную инвентаризацию, чтобы получить полную картину, но в других случаях хакер может найти крупную уязвимость на ранней стадии и перейти к следующему шагу. Если отбросить этот быстрый способ, как правило, чем больше информации хакер соберет о том, что работает, тем лучше. Каждое дополнительное ПО и версия предоставляет дополнительные возможные векторы атаки.

Примечание. Некоторые хакеры называют общий нетехнический сбор информации поиском следов, а поиск информации об операционной системе и программном обеспечении – сбором цифровых отпечатков.

Порой, когда хакер подключается к сайту, тот услужливо отвечает очень подробной информацией о версиях программного обеспечения, поэтому не нужны никакие дополнительные инструменты. На случай, если этого не происходит, существует много инструментов, упрощающих сбор цифровых отпечатков. На сегодня первый инструмент, который использует хакер для сбора цифровых отпечатков, – это Nmap (https://nmap.org/). Программа разработана в 1997 году. Она представлена в нескольких версиях, поддерживающих операционные системы Windows и Linux, и, по сути, представляет собой швейцарский армейский нож, только для хакера. Nmap может выполнять все виды сканирования и тестирования хоста, и это очень хороший способ сбора цифровых отпечатков. Для этого существуют и более мощные приложения, в частности сосредоточенные на сборе определенных данных, таких как информация о веб-серверах, базах данных или серверах электронной почты. Например, программа Nikto2 (https://cirt.net/Nikto2) не только эффективнее Nmap собирает цифровые отпечатки с веб-серверов, но и выполняет тысячи пентестов и позволяет выявить уязвимые места.

Проникновение

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

Примечание. Один из моих любимых трюков – атаковать ПО и устройства, которые специалисты по ИБ используют для защиты своих сетей. Часто такое обеспечение и устройства проблематично пропатчить, и в них на многие годы остаются незалатанные уязвимости.

Если вдруг все ПО и устройства полностью защищены (а такого не бывает), то можно атаковать через человеческий фактор, который всегда оказывается самым слабым элементом системы уравнения. Но без первоначального проникновения для хакера все потеряно. К счастью для него, есть много способов проникнуть к жертве. Вот различные методы, которые хакер может для этого использовать:

• уязвимости нулевого дня (0day);

• непропатченное программное обеспечение;

• вредоносные программы;

• социальная инженерия;

• подбор паролей;

• перехват или атака посредника;

• утечка данных;

• неправильная конфигурация оборудования;

• отказ в обслуживании;

• участие инсайдеров, партнеров, консультантов, производителей и других третьих лиц;

• пользовательский фактор;

• физический доступ;

• повышение привилегий.

Уязвимости нулевого дня

Уязвимости нулевого дня (0day2) – это эксплойты (внедрения), которые встречаются реже, чем другие известные уязвимости, большинство которых производители давно закрыли патчами. Для его исправления еще не выпущен патч, и общественность (как, впрочем, и разработчик) не знает об этом. Любые компьютерные системы, на которых присутствует программное обеспечение с уязвимостями нулевого дня, подвержены взлому, если потенциальная жертва не удалит его или не использует инструмент для смягчения последствий (например, брандмауэр, список контроля доступа, сегментация посредством виртуальных ЛВС, средства защиты от переполнения буфера и т. д.).

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

Непропатченное программное обеспечение

Вовремя непропатченное ПО – одна из главных причин, почему компьютером или устройством завладевает злоумышленник. Каждый год публикуются сведения о тысячах (обычно 5–6 тысяч, т. е. около 15 в день) новых обнаруженных уязвимостях в популярном программном обеспечении. (Познакомиться со списком можно на сайте службы безопасности Microsoft: https://www.microsoft.com/ru-ru/security/business/security-intelligence-report.) Разработчики, как правило, стараются писать более защищенный код и исправлять собственные ошибки, но число программ и миллиардов строк кода растет, поэтому общее количество ошибок остается относительно неизменным в течение последних двадцати лет. Большинство разработчиков своевременно выпускают патчи для своего ПО, и чаще всего происходит это после того, как уязвимость становится общеизвестной. К сожалению, пользователи их продукции, как известно, нерасторопно применяют эти патчи, нередко даже отключая процедуру автоматического обновления. Определенный процент пользователей и вовсе не патчит системы. Они либо игнорируют предупреждения и оповещения об обновлениях, либо раздражаются при их появлении, либо вообще не знают, зачем их применять (например, многие торговые системы не уведомляют кассиров о необходимости обновления). Большинство эксплойтов касаются программного обеспечения, которое не патчилось (т. е. не обновлялось) в течение многих лет. Даже если конкретная компания или пользователь исправляет критические уязвимости так же быстро, как они появляются, терпеливый хакер может ждать «дыру», которая будет обнаружена со временем, и запустит соответствующую атаку, прежде чем специалисты по ИБ успеют выявить ее и инициировать выпуск патча. (Хакеру относительно легко удается обратная разработка таких «брешей», и он узнает, как эксплуатировать ту или иную уязвимость.) Как уязвимость нулевого дня, так и обычные уязвимости ПО сводятся к небезопасным методам, применяемым при разработке программного обеспечения. Мы рассмотрим их в главе 6.

Вредоносные программы

Вредоносные программы бывают разных видов. Наиболее известные из них – это вирусы, троянские программы и черви. При этом современные вредоносные программы часто представляют собой гибридную смесь нескольких типов. Вредоносное ПО позволяет хакеру реализовать метод эксплойта, чтобы было проще атаковать или чтобы быстрее охватить большее количество жертв. Когда обнаруживается новый эксплойт, специалисты по ИБ знают, что авторы вредоносных программ будут использовать автоматизированное вредоносное ПО для более быстрого распространения. Этот процесс известен как «вооружение». В то время как эксплойтов следует избегать, зачастую именно их эксплуатация создает наибольший риск для конечных пользователей и общественности. Без вредоносных программ злоумышленник был бы вынужден атаковать каждую жертву поочередно. С их помощью миллионы компьютеров могут подвергнуться взлому в течение нескольких минут. Мы познакомимся с вредоносными программами поближе в главе 9.

Социальная инженерия

Одна из самых успешных стратегий взлома – социальная инженерия. Независимо от того, осуществляется она вручную или автоматически, это хакерский трюк, обманывающий конечного пользователя, который наносит вред собственному компьютеру или безопасности. Это может быть электронное письмо, которое обманом принуждает перейти по вредоносной ссылке или открыть зараженное вложение. Хакер может заставить пользователя раскрыть свои персональные данные для авторизации (так называемый фишинг). Социальная инженерия уже давно находится на лидирующих позициях среди атак, реализуемых хакерами. Опытный хакер в «белой шляпе», Кевин Митник, – один из лучших примеров социальных инженеров-злоумышленников. Речь о нем пойдет в главе 5, а социальная инженерия более подробно рассматривается в главе 4.

Подбор паролей

Пароли или их деривации могут быть подобраны или украдены. Долгое время простой подбор паролей (или социальная инженерия) был одним из самых популярных способов получения начального доступа к компьютерной системе или сети и до сих пор таковым остается. Но кража учетных данных и так называемые атаки повторного воспроизведения (pass-the-hash), по существу, затмили атаки со взломом паролей в течение последних нескольких лет. При атаках с кражей учетных данных злоумышленник обычно получает административный доступ к компьютеру или устройству и перехватывает одну или несколько записей учетных данных, хранящихся в системе (в памяти или на жестком диске). Украденные данные затем используются для доступа к другим системам. Почти каждая крупная корпоративная атака включала кражи учетных данных в качестве общего компонента эксплойта, так что традиционный подбор паролей уже не так популярен. Взломы паролей описаны в главе 21.

Перехват или атака посредника

Перехват и атака посредника (MITM-атака) ставят под угрозу легитимное сетевое подключение, позволяя получить доступ к нему или злонамеренно участвовать в коммуникациях. Большинство таких атак успешны из-за недостатков в сетевых или прикладных протоколах, но также могут быть результативны вследствие человеческого фактора. В наши дни самые большие атаки происходят в беспроводных сетях. Сетевые атаки будут рассмотрены в главе 33, а беспроводные – в главе 23.

Утечка данных

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

Неправильная конфигурация оборудования

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

Отказ в обслуживании

Даже если владелец не совершил ни одной ошибки или строго ставил все патчи на программное обеспечение, с помощью Интернета все равно можно взломать почти любой сайт или компьютер. Даже если вы совершенны, компьютеры, которые вы используете, полагаются на одну или несколько неподконтрольных вам служб, которые потенциально уязвимы. Сегодня масштабные атаки отказа в обслуживании могут положить или значительно повлиять на работу почти любого сайта или компьютера, подключенного к Интернету. В процессе таких атак часто передаются миллиарды вредоносных пакетов в секунду, из-за которых падает (становится недоступен) целевой сайт (или его вышестоящие/нижестоящие соседи). Существуют десятки коммерческих, в том числе незаконных служб, которые можно использовать как для создания, так и для защиты от мощных атак отказа в обслуживании. Рассмотрим их в главе 28.

Участие инсайдеров, партнеров, консультантов, производителей и других третьих лиц

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

Пользовательский фактор

Эта категория проникновения также пересекается с другими методами. Например, пользователь может случайно отправить персональные данные неавторизованному пользователю, указав в адресе электронной почты один неверно введенный символ. Пользователь может случайно пропустить критический патч для серверного ПО или установить неверное разрешение. Частая ошибка пользователя – отвечая на электронное письмо определенному человеку или группе людей, случайно разослать письмо всем или даже, по ошибке, отреагировать в негативном ключе. Я отдельно выделил пользовательские ошибки только потому, что человеческий фактор иногда срабатывает, и хакеры готовы этим воспользоваться.

Физический доступ

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

Повышение привилегий

Каждый хакер использует один из методов проникновения, описанных в предыдущих разделах, чтобы получить доступ к целевой системе. Единственный вопрос – это тип доступа, который он получает. Если хакер использует программное обеспечение или службы, запущенные в собственном контексте безопасности пользователя, он изначально имеет только те же права доступа и разрешения, что и авторизованный пользователь. Или он может открыть cвятой Грааль и получить полный доступ к административной системе. Если злоумышленник получает только обычные, непривилегированные разрешения доступа, то он обычно выполняет вторую атаку для эскалации привилегий, чтобы попытаться получить более высокий доступ. Атаки эскалации привилегий охватывают весь спектр, по существу, дублируя те же подходы, что и для проникновения, но они начинаются с более высокой начальной точки, уже имеющей некоторый доступ. Атаки с повышением привилегий обычно проще выполнить, чем первоначальные эксплойты. И поскольку начальные эксплойты почти всегда гарантированно будут успешными, эскалация привилегий намного проще.

Упрощение доступа в будущем

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

Разведка системы

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

Перемещение

Это редкая разновидность атаки или вредоносного воздействия, применяемого для взлома определенной цели. Почти все хакеры и вредоносные программы хотят подчинить себе как можно больше. Как только они получают доступ к первоначальной цели, распространение их влияния в пределах одной сети или объекта упрощается. Методы проникновения хакеров, перечисленные в этой главе, суммируют различные способы, которыми они могут это сделать, но, сравнивая их с первоначальными усилиями, последующее перемещение облегчается. Если атакующий движется к другим подобным целям, это называется боковым перемещением. Если злоумышленник переходит с устройств с одной привилегией на более высокую или более низкую, это называется вертикальным перемещением.

Большинство атакующих переходят от низких уровней к высоким, используя методы вертикального перемещения (опять же, реализуя методы хакерского проникновения, с которыми мы познакомились). После проникновения они ищут пароли от учетной записи локального администратора. Затем, если эти учетные данные совместно используются несколькими компьютерами (что часто бывает), они перемещаются горизонтально и повторяют процесс, пока не смогут получить доступ к самым привилегированным учетным записям. Иногда это делается во время первого взлома, так как авторизованный пользователь или система уже имеет очень высокие привилегии. Затем они перемещаются на сервер аутентификации и считывают учетные данные каждого пользователя. Это стандартный алгоритм для большинства современных хакерских атак, и переход от первоначального взлома к полному овладению сетью может занять менее часа.

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

Выполнение запланированного действия

После формирования лазеек и установки прав собственности на файлы хакеры выполняют то, что намеревались сделать (если только действие взлома не выявило новые задачи). У каждого хакера есть цель. Официальный пентестер заключает договор на выполнение одной или нескольких процедур. Злоумышленник может распространять вредоносное ПО, читать или красть конфиденциальную информацию, вносить вредоносные изменения и причинять иной вред. Цель хакера, желающего скомпрометировать одну или несколько систем, – что-то с ней сделать. Давным-давно (два или три десятилетия назад) целью хакеров было просто продемонстрировать, что они взломали систему. Сегодня 99 % взломов криминально мотивированы, и хакер собирается сделать что-то вредоносное для цели (даже если единственный ущерб, который он наносит, это скрытное проникновение для потенциальных действий). Несанкционированный доступ без прямого ущерба – это все равно ущерб.

Заметание следов

Некоторые хакеры пытаются замести следы. Раньше это делали почти все, но в наши дни компьютерные системы настолько сложны и присутствуют в таком количестве, что большинство владельцев данных не проверяют хакерские следы. Они не проверяют логи, не ищут НИКАКИХ признаков незаконного проникновения, если те не бросаются в глаза. Каждый год отчет компании Verizon о расследованиях случаев несанкционированного доступа к данным (https://www.verizon.com/business/resources/reports/dbir/) сообщает, что большинство атакующих остаются незамеченными в течение нескольких месяцев или даже лет, а более 80 % атак были бы замечены, если бы специалисты по ИБ потрудились над анализом. Из-за такой статистики большинство хакеров уже не утруждают себя заметанием следов.

Хакеры сегодня еще меньше стремятся к этому, потому что используют методы, которые невозможно обнаружить традиционными способами. Или действия хакера настолько распространены в среде жертвы, что практически нельзя отличить легитимную деятельность от незаконной. Например, после взлома хакер обычно выполняет действия в контексте безопасности законного пользователя, часто получая доступ к тем же серверам и службам, что и последний. И они используют те же инструменты (например, программное обеспечение удаленного доступа и сценарии), что и администраторы. Кто может определить, что злонамеренно, а что нет? Области обнаружения вторжений рассматриваются в главе 14.

Взлом скучно успешен

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

Автоматизированная вредоносная программа как инструмент взлома

Вредоносная программа может выполнять один или несколько шагов в автоматическом режиме или передать хакеру управление, как только цель достигнута. Большинство хакерских групп сочетают социальную инженерию, автоматизированное вредоносное ПО и действия самих хакеров для достижения целей. В больших группах отдельным хакерам могут назначаться роли и должности. Вредоносная программа может выполнить один шаг проникновения и достигнуть успеха, не пытаясь осуществить любой из других шагов. Например, самая быстрая вредоносная программа в истории, SQL Slammer, имела размер всего 376 байт. Она выполняла задачу по переполнению буфера на UDP-порте SQL 1434 независимо от того, был ли на целевом устройстве запущен SQL. Поскольку на большинстве компьютеров он не выполняется, можно подумать, что атака будет весьма неэффективна. Но нет, за 10 минут этот червь изменил мир. Ни одна вредоносная программа никогда даже не приближалась к заражению такого количества устройств за столь короткое время.

Примечание. Если я пропустил какой-то шаг в хакерской методологии или способ проникновения, прошу прощения. С другой стороны, я же предупреждал, что я ничем не примечательный хакер.

Этика взлома

Я хотел бы думать, что мои читатели – этичные хакеры, которые проводят взлом своих целей законным образом. Взлом сайта, на который у вас нет предопределенных и выраженных полномочий, неэтичен и часто незаконен. Также неэтично (и даже незаконно) взломать сайт и сообщить владельцам о найденной уязвимости бесплатно. Неэтично и часто незаконно найти уязвимость, а затем попросить владельцев сайта нанять вас в качестве пентестера. Последнее происходит сплошь и рядом. Если вы сообщите кому-то, что нашли способ взломать его сайты или серверы, и попросите работу, это будет рассматриваться как вымогательство. Могу вас уверить, что почти все владельцы сайтов, получающие такой непрошеный совет, не задумаются о вашей пользе и не захотят вас нанимать. Они увидят в вас врага и передадут дело адвокатам.

Остальная часть книги посвящена описанию конкретных типов взлома, методов проникновения и способов противостояния им со стороны специалистов по ИБ. Если вы хотите зарабатывать на жизнь хакерством или бороться с хакерами, следует понять их методологию. Люди, упомянутые здесь, – гиганты в своей области, и вы можете многому у них научиться. Думаю, лучше всего начать с Брюса Шнайера, речь о котором пойдет в следующей главе. Многие считают его отцом современной компьютерной криптографии.

3. Профиль: Брюс Шнайер

Брюс Шнайер обладает столь большим опытом и знаниями, что при его упоминании многие люди используют словосочетание «светило индустрии» или называют его «отцом современной компьютерной криптографии». Однако интерес Шнайера не ограничивается шифрами, он уже давно задается более глобальными вопросами о том, почему в сфере информационной безопасности за все эти десятилетия произошло так мало улучшений. Поскольку он имеет авторитетное мнение по широкому кругу вопросов, связанных с ИБ, его часто приглашают в качестве эксперта на национальные телевизионные шоу. Несколько раз он даже выступал перед Конгрессом Соединенных Штатов. Шнайер пишет книги и ведет блоги, и я всегда считал ознакомление с его работами получением неофициальной степени магистра в области информационной безопасности. Я и наполовину не был бы тем специалистом по ИБ, которым стал, без знаний, которые почерпнул у него. Он мой неофициальный наставник.

Шнайер известен тем, что говорит обезоруживающе простые вещи, которые заставляют пересмотреть старые догмы. Например, возьмем его фразу: «Если вы сосредоточены на SSL-атаках, значит, вы превосходите всех остальных экспертов в области ИБ». Это означает, что существует очень много других, часто более успешно эксплуатируемых уязвимостей, о которых стоит задуматься, поэтому, если вы действительно беспокоитесь об относительно редко используемом SSL-эксплойте, значит, уже устранили остальные, более вероятные и важные угрозы. Другими словами, мы должны расставить акценты среди мер обеспечения информационной безопасности, а не реагировать на каждую анонсированную уязвимость (которая, возможно, никогда не будет эксплуатироваться).

Он также говорил о том, что специалисты по ИБ часто расстраиваются, если сотрудники не относятся к парольной защите достаточно серьезно, используют слабые пароли (если это допустимо), применяют один и тот же на многих несвязанных веб-сайтах (словно умоляя о том, чтобы их взломали) и часто передают его друзьям, коллегам и даже незнакомым людям. Мы расстраиваемся по этому поводу, поскольку в отличие от рядовых сотрудников представляем возможные последствия для бизнеса. Согласно Шнайеру, конечный пользователь оценивает сложность паролей, исходя из степени риска лично для себя. Сотрудников редко увольняют за использование недостаточно надежных паролей. Даже если хакер украл деньги с банковского счета вкладчика, эти средства, как правило, немедленно возмещаются. Шнайер учит нас тому, что именно профессионалы в сфере ИБ не вполне адекватно оценивают риски. И пока вред не будет причинен конечному пользователю, они не изменят свое поведение. Каково это, быть специалистом по вопросам ИБ, а потом осознать, что рядовой пользователь оценивает риски лучше вас?

Шнайер написал более десятка книг, включая «Прикладную криптография. Протоколы, алгоритмы и исходный код на C», написанную в 1996 году и вышедшую на русском языке3. Создав еще несколько трудов на тему криптографии (в том числе вместе с Нильсом Фергюсоном), он начал интересоваться причинами, по которым в сфере ИБ не наступало значимых улучшений. Результатом этого стала серия книг, каждая из которых посвящена причинам нетехнического характера, связанным с доверием, экономикой, социологией и т. д. Они наполнены простой для понимания теорией и подкреплены реальными примерами. Вот мои любимые книги Шнайера:

• Secrets and Lies: Digital Security in a Networked World4 (https://www.amazon.com/Secrets-Lies-Digital-Security-Networked/dp/0471453803);

• Beyond Fear: Thinking Sensibly About Security in an Uncertain World (https://www.amazon.com/Beyond-Fear-Thinking-Sensibly-Uncertain/dp/0387026207);

• Liars and Outliers: Enabling the Trust that Society Needs to Thrive (https://www.amazon.com/Liars-Outliers-Enabling-Society-Thrive/dp/1118143302);

• Data and Goliath: The Hidden Battles to Collect Your Data and Control Your World (https://www.amazon.com/Data-Goliath-Battles-Collect-Control/dp/039335217X).

Если вы действительно хотите разобраться в сфере ИБ и ее проблемах, вам следует их прочитать. Также подпишитесь на блог Шнайера (https://www.schneier.com/) и ежемесячную рассылку канала Crypto-Gram (https://www.schneier.com/crypto-gram/). Существует заметная разница между теми, кто регулярно читает Шнайера, и теми, кто этого не делает. Его манера письма понятна и интересна, и он рьяно борется с теми, кто продвигает неработающие методы обеспечения информационной безопасности. То, как он разоблачает криптомошенников, само по себе можно считать уроками по кибербезопасности. Он регулярно освещает самые актуальные вопросы в этой области.

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

Я спросил Шнайера о том, когда он впервые заинтересовался темой информационной безопасности, на что он ответил: «Я всегда интересовался математикой и секретными кодами – криптографией. Свою первую книгу, “Прикладная криптография”, я бы с удовольствием сам прочитал в свое время. Однако я понял, что технологии – это не самая большая проблема. Проблема в людях или интерфейсе, с которыми они взаимодействуют. Самые сложные проблемы ИБ связаны не с технологиями, а с социологическими, политическими и экономическими аспектами их применения. Я провожу много времени, думая о пользователях, склонных к риску. У нас есть технологии, чтобы защитить их, но можем ли мы создать такие решения, которые не помешают им делать свою работу? В противном случае мы просто не сможем убедить их использовать эти продукты».

Я спросил Шнайера, что он думает о недавних утечках информации из некоторых американских спецслужб. Он сказал: «В этих данных практически не содержалось того, о чем не знали люди, внимательно следящие за происходящим. Обнародованные сведения были скорее подтверждением. Удивили подробности. Удивила секретность. Я не думаю, что мы смогли бы как-то повлиять на методы спецслужб, если бы знали о них больше, потому что после событий 11 сентября 2001 года любые их методы были бы одобрены. Так что, к сожалению, это не привело к серьезным изменениям, по крайней мере, сразу. Был принят один незначительный закон [запрещающий АНБ собирать метаданные о телефонных переговорах американцев]. Однако утечка спровоцировала публичное обсуждение проблемы, связанной с правительственной слежкой, что привело к изменению общественного мнения. Теперь люди знают и беспокоятся об этом. Может потребоваться еще десять лет, чтобы ощутить все последствия, но в итоге ситуация улучшится».

Я спросил Шнайера, что он считает самой большой проблемой в сфере компьютерной безопасности, и он ответил: «Корпоративная слежка! Корпорации хотят шпионить за людьми даже больше, чем правительства. Facebook5 и Google следят за пользователями, нарушая их интересы, а ФБР может получить доступ к собранным ими данным, хотят того корпорации или нет. Следящий капитализм – вот фундаментальная проблема».

Я спросил Шнайера, над какой книгой он работает (он постоянно что-то пишет). Он рассказал: «Я обдумываю новую книгу, посвященную проблемам кибербезопасности, например связанным с Интернетом вещей и с тем, как все меняется, когда компьютеры действительно становятся опасными. Одно дело, если скомпрометированной оказывается уязвимая электронная таблица, и совсем другое, если речь идет о вашем автомобиле. Прорехи в системе защиты могут привести к человеческим жертвам. Это все меняет! В прошлом месяце я выступал в Конгрессе с докладом на эту тему. Я сказал, что игры кончились, и настало время для серьезной работы. Необходим контроль. На карту поставлены жизни людей! Мы не можем больше мириться со слабо защищенным и полным ошибок программным обеспечением. Но индустрия не готова осознать всю серьезность угрозы, хотя и должна. Как могут люди, работающие над улучшением системы безопасности автомобилей, на самом деле решить эту задачу, если нам до сих пор так и не удалось остановить хакеров и исправить все уязвимости? Необходимы перемены. И они произойдут».

Брюс Шнайер на протяжении нескольких десятилетий является одним из лидеров в области ИБ и остается ключевым участником самых важных дискуссий. Если вас интересует тема информационной безопасности, выберите его в качестве своего неофициального наставника.

Информация о Брюсе Шнайере

Более подробную информацию о Брюсе Шнайере смотрите по ссылкам:

• блог Брюса Шнайера: https://www.schneier.com;

• рассылка Брюса Шнайера Crypto-Gram newsletter: https://www.schneier.com/crypto-gram/;

• книги Брюса Шнайера: https://www.amazon.com/Bruce-Schneier/e/B000AP7EVS/.

4. Социальная инженерия

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

Методы социальной инженерии

Социальная инженерия может быть реализована многими способами, в том числе через Интернет, по телефону, лично или посредством традиционной почты. Ее разновидностей так много, что нередко в списках, претендующих на полноту их перечисления, некоторые из видов или способов отсутствуют. Социальная инженерия, реализуемая с помощью компьютера, использует электронную почту или Интернет, а также службы обмена мгновенными сообщениями и компьютерные программы практически любого типа.

Фишинг

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

Целевой фишинг — это тип фишинга, который нацелен против конкретного человека или группы людей с применением непубличной информации, которой владеет цель атаки. Например, отправка сотрудникам документа по электронной почте якобы от участника проекта: при его открытии файл выполняет вредоносные команды. Целевой фишинг часто упоминается во многих самых громких корпоративных скандалах.

Троянский конь

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

По телефону

Мошенники также звонят пользователям, которым может понадобиться техническая поддержка, от имени популярного разработчика, из государственного учреждения или компании.

Одна из самых популярных афер по телефону – когда мошенник звонит якобы от лица техподдержки, утверждая, что на компьютере пользователя была обнаружена вредоносная программа. Затем он просит загрузить «антивирусную» программу, которая, что неудивительно, обнаруживает множество вредоносных объектов. Мошенник побуждает загрузить и выполнить программу удаленного доступа, которую затем использует для авторизации на компьютере жертвы, чтобы внедрить другое вредоносное ПО. Фиктивные программы технической поддержки достигают кульминации, когда жертва покупает поддельные программы защиты, используя номер своей банковской карты.

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

Мошенничество

Мошенничество – еще одна очень популярная афера, которая осуществляется с людьми, покупающими или продающими товары на веб-сайтах, таких как аукционы или ресурсы, подобные Craigslist.

При мошеннической операции покупатель быстро отвечает, обычно предлагает оплатить полную стоимость покупки плюс доставку и просит продавца использовать своих «доверенных» эскроу-агентов (посредников). Затем они посылают жертве поддельный чек на бо́льшую сумму, нежели та, что была оговорена, и жертва возмещает излишек на счет злоумышленников (к сожалению, банки принимают поддельные чеки, но в итоге жертва теряет деньги). Покупатель просит потерпевшего продавца вернуть уплаченный излишек грузоотправителю по договору или посреднику. Жертва мошенничества обычно теряет как минимум сумму излишка.

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

Личное участие

Некоторые из самых известных афер социальной инженерии были выполнены хакерами лично. В следующей главе речь пойдет об известном хакере Кевине Митнике. Десятилетия назад он был одним из самых наглых социальных инженеров в «черной шляпе». Митник переодевался в мастера по ремонту телефонов или сервисного инженера, чтобы получить доступ в защищенное помещение. Такие мошенники известны походами в банки и установкой специальных устройств на терминалах сотрудников, выдавая себя за системных администраторов. Каким бы недоверчивым ни был человек, он обычно доверяет людям, осуществляющим ремонт оборудования, особенно если слышат фразу типа: «Я слышал, что ваш компьютер стал работать медленнее в последнее время». Кто может опровергнуть это утверждение? Человек, выполняющий ремонт, очевидно, знает о проблеме и, наконец, пришел ее исправить.

Кнут или пряник

Конечному пользователю часто угрожают штрафом за то, что он чего-то не сделает, или обещают вознаграждение за то, что он совершит некие действия. Хитрость начинается с принуждения жертвы, так как люди недостаточно тщательно взвешивают риск в стрессовой ситуации. Они должны либо заплатить штраф, либо сесть в тюрьму. Перед ними встает выбор – запустить программу или рисковать, что компьютер останется зараженным, а банковский счет опустеет; отправить деньги или некий честный человек останется в иностранной тюрьме; изменить пароль на компьютере начальника или быть уволенным.

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

Защита от социальной инженерии

Защита от атак социальной инженерии требует сочетания обучения и технологий.

Обучение

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

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

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

Будьте осторожны при установке ПО со сторонних веб-сайтов

Пользователей следует научить никогда не устанавливать какое-либо программное обеспечение непосредственно с сайта, который они посещают, если это не сайт легитимного разработчика ПО. Если веб-сайт сообщает, что вам нужно установить какое-то программное обеспечение, чтобы продолжить просмотр ресурса, и вы думаете, что это законный запрос, покиньте его и перейдите на сайт разработчика стороннего программного обеспечения, чтобы наверняка установить корректное приложение. Никогда не устанавливайте ПО с чужого веб-сайта, а не с сайта непосредственного разработчика7. Программное обеспечение может оказаться легитимным, но риск слишком велик.

Цифровые сертификаты с расширенной проверкой

Веб-серферам следует научиться применять цифровые сертификаты с расширенной проверкой (https://ru.wikipedia.org/wiki/Сертификат_Extended_Validation) на многих самых популярных сайтах. Веб-сайты с расширенной проверкой часто каким-либо образом выделяются (обычно это выделенное зеленым цветом доменное имя, значок в адресной строке или сама адресная строка), чтобы подтвердить пользователю, что URL-адрес и безопасность сайта были подтверждены доверенной третьей стороной. Для примера расширенной проверки перейдите на https://www.bankofamerica.com/.

Избавьтесь от паролей

Фишинг не сработает, если сотрудник не сможет предоставить свои учетные данные для авторизации. Простые логины с паролями уходят в прошлое с распространением двухфакторной аутентификации (2FA), цифровых сертификатов, устройств авторизации, аутентификации по внешнему каналу и других методов входа в систему, которые не подвержены фишингу.

Технологии против социальной инженерии

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

Социальная инженерия – очень успешный метод взлома. Некоторые специалисты по ИБ скажут, что вы никогда не проведете обучение так, чтобы все сотрудники смогли ей противостоять. Они ошибаются. Сочетание полноценного обучения и правильных технологий может значительно снизить риск ущерба от методов социальной инженерии.

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

5. Профиль: Кевин Митник

При разговоре о компьютерных хакерах большинство людей вспоминает Кевина Митника. В 1970-е, 1980-е и 1990-е годы он был тем самым хакером. Сочетая методы социальной инженерии с низкоуровневым анализом операционных систем, Митник проворачивал всевозможные возмутительные трюки, хотя причиненный им вред вряд ли может сравниться с масштабом ущерба, наносимого современными APT-атаками и программами-вымогателями.

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

Я поместил историю о Кевине в начало этой книги, потому что после совершения множества киберпроступков он посвятил свою жизнь борьбе с компьютерными преступлениями и стал одним из немногих исправившихся «черных шляп», которым я полностью доверяю. Митник написал несколько книг по информационной безопасности (https://www.amazon.com/Kevin-D-Mitnick/e/B001IO9WEW), работает с разными компаниями (в том числе с KnowBe4), управляет собственной консалтинговой фирмой (Mitnick Security Consulting) и стал самым востребованным из известных мне лекторов в сфере ИБ. Он также принимал участие в программе The Colbert Report и даже появлялся в телевизионном шоу Alias. Благодаря Митнику была осознана роль методов социальной инженерии в хакинге и важность защиты от них. В конце концов, если вы хотите остановить преступника, вам не помешает поучиться у того, кто когда-то им был.

Когда я спросил Митника о том, что вызвало у него интерес к хакерству, он сказал: «В детстве я любил магию. Один парень из моей школы показал мне разные трюки с телефоном, в частности, научил тому, как бесплатно звонить по межгороду, как узнать чей-то адрес при помощи одного лишь номера телефона, как переадресовывать звонки и т. д. Он заходил в телефонную будку, набирал номер [телефонной компании], представлялся кем-то другим – и происходило чудо. Тогда я впервые узнал о социальной инженерии, которая показалась мне настоящим волшебством. Я не знал, как это называется. Я знал лишь то, что это весело и интересно, и это захватывало меня все сильнее. Я тратил на это все свое время. Мне наскучила школа, и поскольку по ночам, вместо того чтобы спать, я занимался фрикингом, моя успеваемость начала стремительно ухудшаться».

Я спросил, что думали родители о его хакерских «подвигах». Он ответил: «Ну, поначалу они ничего не знали. Может быть, просто думали, что я вытворяю с телефоном что-то сомнительное. Но моя мать, должно быть, считала, что самое страшное, что можно сделать с телефоном, – это кого-нибудь разозлить. Однако они понятия не имели, чем именно я занимаюсь, пока мама не получила официальное письмо из компании AT&T, уведомляющее об отключении телефонной связи. Она была очень расстроена. Как вы понимаете, это было задолго до появления сотовых телефонов. Домашний стационарный телефон был единственным средством связи. Я попросил ее успокоиться и пообещал все исправить.

С помощью все той же социальной инженерии я восстановил дома телефонную связь. Мы жили в доме № 13. Я позвонил в отдел продаж телефонной компании, представившись жителем дома № 13 “Б”. После трехдневного ожидания, необходимого для регистрации нового адреса в системе, я позвонил в отдел технического обслуживания и попросил установить новый телефон в этом доме. Я даже сходил в магазин и купил там букву Б, чтобы повесить ее на дверь. В ходе телефонного разговора я выдал себя за нового клиента по имени Джим Бонд из Англии. Я сообщил настоящий номер телефона в Англии, который нашел вместе с другой личной информацией, потому что знал, что они не смогут проверить сведения об иностранце. Затем спросил, могу ли я выбрать “красивый номер”, мне дали добро, и я выбрал номер телефона, заканчивающийся на 007. В конце разговора я спросил, можно ли мне использовать сокращение Джим, или им необходимо мое полное имя. Они попросили назвать полное имя, и я сказал, что меня зовут Джеймс. Итак, я был зарегистрирован в AT&T как Джеймс Бонд с номером телефона, заканчивающимся на 007, а у моей матери снова появилась телефонная связь. Представители компании AT&T были в бешенстве, когда моя схема была раскрыта».

В тот момент я понял, что за все интервью он ни разу не упомянул о взломе компьютерных систем. Он говорил только о злоупотреблении телефоном. Я спросил, что подвигло его заняться взломом компьютеров. Он ответил: «Один парень из моей школы узнал, что я занимаюсь телефонным фрикингом, и подумал, что меня заинтересует новый школьный факультатив с углубленным изучением компьютерных наук. Сначала я сказал, что это не мое, но он возразил: “Знаешь, я слышал, телефонные компании начинают использовать компьютеры”. Мне этого было достаточно. Я должен был разобраться в этой теме.

Пришлось пойти к преподавателю, мистеру Крису, и спросить его, могу ли я записаться на факультатив, потому что у меня не было необходимой подготовки (которая тогда предполагала углубленное изучение математики и физики). Кроме того, моя успеваемость ухудшилась из-за постоянного недосыпа. Мистер Крис не хотел меня принимать; тогда я продемонстрировал ему свои навыки фрикинга, назвав его телефонный номер, который не был указан в справочнике, а также номера его детей. Он сказал: “Это волшебство!” и принял меня в группу.

Нашей первой задачей было написание программы на языке Fortran для вычисления последовательности Фибоначчи, которая показалась мне слишком скучной. Я пошел в местный университет в Нортридже и попытался получить доступ к компьютеру. Там использовались те же компьютеры и операционная система, но мне не разрешали проводить за ними более пяти минут. Я попросил руководителя компьютерной лаборатории дать мне больше времени. Он сказал, что я не студент колледжа и вообще не должен там находиться, однако он видел мою заинтересованность в компьютерах, и, чтобы поощрить ее, дал мне для практики логин и пароль своей личной учетной записи. Представляете? Вот так в те дни обращались с компьютерами.

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

Настал день, когда ученики мистера Криса должны были показать ему, сколько чисел Фибоначчи вычислили их программы; у меня не было ничего. Мистер Крис отчитал меня перед классом, напомнив о том, как он, на свой страх и риск, разрешил мне посещать занятия, а теперь я даже ничего не могу ему показать. Все присутствующие смотрели на меня. И тогда я сказал: “Вообще-то, я был слишком занят написанием программы для взлома паролей. Ваш пароль – johnco”. Он спросил: “Как ты это сделал?” Я объяснил ему, и он поздравил меня, объявив всему классу о том, что я компьютерный гений. Он совсем не рассердился. Возможно, это был очень плохой урок для меня с точки зрения этики».

Я спросил Митника, что, по его мнению, стоит делать родителям, если они заметили признаки того, что их ребенок занимается вредоносным хакерством. Вот что он посоветовал: «Покажите им законные способы занятия хакерством. Направьте интерес на такие законные и этичные занятия, как посещение конференций по информационной безопасности и участие в конкурсах типа “захват флага”. Родителю стоит бросить ребенку вызов, сказав что-то вроде: “Итак, ты думаешь, что достаточно хорош, чтобы победить в соревновании по захвату флага?” Таким образом родитель применит к ребенку метод социальной инженерии, а тот получит удовольствие от хакерства, не нарушая при этом закон. Например, сегодня я легально взломал корпоративную сеть, и это показалось мне не менее захватывающим, чем те неэтичные и противозаконные вещи, которыми я когда-то занимался. Хотел бы я, чтобы в мое время существовали те законные способы взлома, которые есть сейчас. Жаль, что я не могу вернуться и все исправить. Знаете, чем отличается незаконный взлом от законного? Написанием отчета!»

Я спросил, как Митник, обладающий жизненным опытом «по обе стороны забора», относится к тому, что правительство считает себя вправе следить за частной жизнью граждан. Вот что он на это сказал: «Я думаю, мы все имеем право на частную жизнь. Моя последняя книга “Искусство быть невидимым” (https://book24.ru/product/iskusstvo-byt-nevidimym-kak-sokhranit-privatnost-v-epokhu-big-data-5255267/) как раз о том, как человек может сохранить тайну своей частной жизни. Я думаю, очень трудно сохранять приватность, если вами интересуется кто-то вроде АНБ или правительства, обладающих неограниченными средствами. Если они не могут взломать ваши зашифрованные сообщения, то могут просто использовать одну из многих известных им уязвимостей нулевого дня и взломать ваш компьютер, либо купить такую уязвимость. За 1,5 млн долларов можно купить уязвимость нулевого дня в системе Apple, за полмиллиона – брешь в системе Android и так далее. Если у вас есть средства и ресурсы, вы получите необходимую информацию. В той книге я написал, что владею способом, который позволяет защититься даже от них, но его сложно осуществить и он включает в себя много шагов. Однако я думаю, что это все-таки можно провернуть таким образом, что даже АНБ и любому правительству будет трудно до вас добраться. Я понимаю, что в определенных случаях правительство должно обладать информацией, например когда речь идет о терроризме, но они хотят видеть и слышать всех и вся. И если за вами наблюдают, вы меняете свое поведение, а это означает ограничение свободы. Я не думаю, что свобода возможна без конфиденциальности».

В конце интервью я напомнил Митнику о том, что мы уже встречались на конференции по вопросам ИБ много лет назад, где он собирался выступить в качестве главного докладчика. Проходя мимо, он сказал, что ему нужен USB-накопитель, чтобы перенести свою презентацию на компьютер, находящийся на сцене. У меня был один в кармане, и я предложил его. Кевин уже собирался взять флешку, но, подумав пару секунд, отказался, заявив, что не доверяет чужим USB-ключам. Несколько человек, стоявших поблизости, посмеялись над его паранойей. В конце концов, USB-устройство не может быть вредоносным. Так, по крайней мере, все тогда считали.

Никто, правда, не знал, что я обнаружил способ автоматического запуска любой программы с любого портативного носителя (используя трюк со скрытым файлом desktop.ini, который позднее использовала вредоносная программа Stuxnet), и предложенный мною USB-накопитель как раз содержал демонстрационную версию этого эксплойта. Я не намеревался заражать систему Митника. Просто в то время этот эксплойт был на всех моих USB-накопителях, включая тот, который я предложил ему.

Паранойя Митника уберегла его от обнаруженной мною уязвимости нулевого дня. Этот пример также показывает, насколько трудно обмануть профессионального социального инженера, по-прежнему находящегося на пике формы.

Информация о Кевине Митнике

Более подробно познакомиться с историей Кевина Митника можно по ссылкам:

• официальный сайт Кевина Митника: https://www.mitnicksecurity.com/;

• «Призрак в Сети. Мемуары величайшего хакера»: https://book24.ru/product/prizrak-v-seti-memuary-velichayshego-khakera-180793/;

• «Искусство быть невидимым»: https://book24.ru/product/iskusstvo-byt-nevidimym-kak-sokhranit-privatnost-v-epokhu-big-data-5255267/;

• The Art of Deception: https://www.amazon.com/Art-Deception-Controlling-Element-Security/dp/076454280X/;

• «Искусство вторжения»: https://www.amazon.com/Art-Intrusion-Exploits-Intruders-Deceivers/dp/0471782661/;

• тренинг Кевина Митника, посвященный вопросам ИБ: https://www.knowbe4.com/products/kevin-mitnick-security-awareness-training/;

• интервью с Кевином Митником: https://news.slashdot.org/story/11/09/12/1234252/Kevin-Mitnick-Answers.

6. Уязвимости программного обеспечения

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

Уязвимые места в ПО ответственны за большой (если не подавляющий) процент взломов в настоящее время, несмотря на то что другие методы взлома (такие как троянские программы и социальная инженерия) зачастую весьма конкурентоспособны. Некоторые эксперты по ИБ считают, что большинство проблем исчезнут, если все программы будут написаны без ошибок. Тем не менее, даже если это не панацея, более надежный код с меньшим количеством уязвимостей сведет на нет значительную часть хакерских проблем и сделает компьютерную среду существенно безопаснее.

Количество уязвимостей программного обеспечения

Существует множество источников для отслеживания уязвимостей общедоступного ПО, хотя список ошибок для каждого из них может существенно отличаться. В среднем каждый год крупные разработчики программного обеспечения и баг-файндеры объявляют о 5–6 тысячах новых уязвимостей ПО, то есть около 15 находках ежедневно. Организация Common Vulnerabilities and Exposures (https://cve.mitre.org/) и публикуемая ею база данных общеизвестных уязвимостей информационной безопасности (https://cve.mitre.org/data/downloads/index.html) считаются инклюзивными, надежными и независимыми источниками и хорошо подходят для отчетности и отслеживания общедоступных уязвимостей. Многие другие разработчики отслеживают либо собственные уязвимости, либо все известные. Прочитайте отчет Microsoft Security Intelligence (https://www.microsoft.com/ru-ru/security/business/security-intelligence-report), чтобы узнать последние цифры и результаты анализа.

Конечно, это всего лишь ошибки, о которых узнает общественность. Многие разработчики не объявляют о каждой из них. Многие не обнародуют ошибки, найденные внутренними ресурсами или исправленные в предрелизном программном обеспечении. Хотя невозможно это подтвердить, большинство экспертов считают, что реальное количество ошибок значительно выше, чем общеизвестные числа.

Примечание. Количество уязвимостей ПО – это только один из аспектов, а не полная картина безопасности программы или системы в целом. Единственное, что действительно имеет значение, – какой урон был нанесен уязвимостями программного обеспечения. Количество таких уязвимостей, вероятно, войдет в историю как объем ущерба, хотя в целом использовать более безопасные программы будет лучше для всех.

Почему уязвимости ПО – по-прежнему большая проблема?

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

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

Когда разработчики выпускают патчи, «белые шляпы» и «черные шляпы» немедленно анализируют их, чтобы найти целевую уязвимость. Затем они создают эксплойты, которые могут ее эксплуатировать. Существуют десятки коммерческих компаний, несколько бесплатных сервисов и неизвестное количество хакеров, которые делают это каждый день. Вы можете приобрести и/или загрузить сканеры уязвимостей, которые будут сканировать устройства и сообщать о незакрытых уязвимостях. Эти сканеры часто содержат тысячи и тысячи эксплойтов. Есть много хакерских веб-сайтов по всему миру с тысячами отдельных эксплойтов, которые вы можете скачать, чтобы эксплуатировать определенную уязвимость. Один из самых популярных бесплатных инструментов – это Metasploit (https://www.metasploit.com/).

Защита от уязвимостей программного обеспечения

Защита от уязвимостей ПО номер один – это квалифицированные разработчики и более безопасные языки программирования.

Жизненный цикл безопасной разработки

Процесс, преследующий цель уменьшить число уязвимостей программного обеспечения, теперь широко известен как жизненный цикл безопасной разработки. Он сосредоточивается на каждом компоненте в жизненном цикле программы ПО, от ее начального создания к исправлению недавно найденных уязвимостей, чтобы реализовать более безопасное программное обеспечение. Компания Microsoft Corporation, вероятно, лучше всего потрудилась в этой области и опубликовала больше свободно доступной информации и инструментов (https://www.microsoft.com/en-us/securityengineering/sdl/), чем любой другой источник. Человеческий фактор гарантирует, что программный код всегда будет иметь эксплуатируемые ошибки, но, следуя жизненному циклу безопасной разработки, мы можем допускать меньше ошибок на то же количество строк кода.

Примечание. Доктор Даниэль Бернштейн (https://en.wikipedia.org/wiki/Daniel_J._Bernstein) – профессор в колледже, который пишет и продвигает невероятно безопасный код. Он создал несколько бесплатных и широко используемых программ, таких как dbjdns и qmail, в которых крайне мало ошибок. Он даже платит за найденные баги из собственного кармана. Даниэль верит, что разработчикам становится стыдно, когда он публично объявляет об ошибках, прежде чем предоставить разработчикам возможность анализировать и исправлять свои продукты.

Более безопасные языки программирования

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

Анализ кода и программы

После разработки версии программы ее всегда следует анализировать на отсутствие известных и распознаваемых ошибок. Это можно сделать вручную или с помощью программных средств. Анализ вручную, как правило, наименее эффективен, так как обнаруживает наименьшее количество ошибок в час, но он чаще находит эксплуатируемые ошибки, которые нельзя отыскать с помощью программы. Программные средства поиска ошибок часто называют «статическими анализаторами» или инструментами «фаззинг-тестирования». Они проверяют исходный код (или программы) на наличие известных программных ошибок в самом коде. Фаззинг-анализаторы вводят случайные (или неправильные, неожиданные) данные и ищут уязвимости в программе во время выполнения. Многие печально известные специалисты, ищущие уязвимости ПО, включая Чарли Миллера, о котором мы поговорим в главе 36, полагались на фаззинг-тестирование во многих своих открытиях.

Более безопасные операционные системы

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

Сторонние средства защиты и надстройки разработчиков

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

Идеальное программное обеспечение не решит все проблемы

Никакая защита не сравнится с ПО, которое изначально разрабатывается с учетом средств защиты и исключением ошибок. Тем не менее идеальное, безошибочное программное обеспечение не решит все проблемы. К сожалению, его уязвимости не единственная наша проблема. Троянские программы срабатывают только потому, что их запускает сам пользователь. Многие хакеры и вредоносные программы используют типичные, часто легитимные возможности данных, языков программирования и других компонентов, чтобы совершать злодеяния. А социальная инженерия может сделать то, на что не способно программное обеспечение. Тем не менее никто не спорит, что более безопасные программы не могут быть панацеей.

В следующих главах мы поговорим о двух экспертах, посвятивших свою жизнь совершенствованию ПО. Глава 7 посвящена Майклу Ховарду, который популяризировал более безопасные методы разработки, а глава 8 фокусируется на Гари Макгроу, одном из лучших специалистов по поиску уязвимостей в истории.

7. Профиль: Майкл Ховард

Майкл Ховард – отличный педагог и энергичный оратор, который за 20 лет работы в сфере ИБ не утратил ни грамма энтузиазма, которым заражает всех, кто с ним сталкивается. Обычно пары минут общения с Майклом достаточно, чтобы собеседник загорелся желанием сделать мир более безопасным с помощью нескольких строк кода. Он получил всемирное признание, написав книгу Writing Secure Code (https://www.amazon.com/Writing-Secure-Code-Michael-Howard/dp/0735615888) вместе с Дэвидом Лебланом. Кроме того, он сделал очень много для того, чтобы компания Microsoft стала приверженцем идеи безопасного программирования. Ховард родом из Новой Зеландии, но сейчас живет в Остине, штат Техас. Он стал соавтором нескольких книг по безопасному программированию и ведет собственный блог.

Примечание. Дэвид Леблан, в соавторстве с которым Ховард написал книгу Writing Secure Code, – еще один прогрессивный специалист по ИБ. Он значительно обезопасил пакет Microsoft Office и создал более безопасную модель браузера, которая в настоящее время используется компаниями Google, Adobe и Microsoft.

Я спросил Ховарда, как он пришел в сферу ИБ. Вот что он ответил: «Я работал над ранними версиями Windows NT в компании Microsoft. Отвечал за такие низкоуровневые аспекты, как контроль доступа, криптография и графические интерфейсы GINA (которые раньше использовались для авторизации в операционной системе Microsoft Windows и других сервисах аутентификации). Это заставило меня задуматься о безопасности как о функции. Примерно в 2000 году стало ясно, что встроенные в продукт защитные функции не делают его по-настоящему безопасным, поэтому мы должны сосредоточиться на разработке безопасных функций, а это совершенно другая дисциплина».

На мой вопрос об истории возникновения концепции SDL в компании Microsoft он сказал: «Со временем различные практики обеспечения безопасности, изученные командами разработчиков. NET Framework, Windows, Office и SQL Server, а также других продуктов, превратились в концепцию SDL (Security Development Lifecycle, жизненный цикл безопасной разработки). Эта концепция помогла популяризировать идею безопасного программирования, и во многом именно благодаря ей компании стали гораздо лучше защищать свое ПО».

Я спросил Ховарда, стала ли концепция SDL результатом совершенствования уже существовавшего подхода или чем-то абсолютно новым, на что он ответил: «Мы все опираемся на работу других людей, однако бо́льшая часть концепции SDL – это результат экспериментов. То, что работает, остается, а то, что не работает или оказывается нецелесообразным, отбрасывается. Иногда я задаюсь вопросом о том, были ли те или иные академические модели опробованы в производственной среде со всеми ее дедлайнами, требованиями к производительности, сроками вывода продукта на рынок, экономическими соображениями, обеспечением обратной совместимости и т. д.

В то время было принято считать, что улучшение качества кода автоматически делает его более безопасным. Но я не видел никаких эмпирических доказательств этой идеи. Вы можете создать функциональный SQL-код, который проходит все функциональные тесты, но он может оказаться уязвим к SQL-инъекциям. Если вы никогда не сталкивались с ними, вы увидите перед собой лишь идеальный код, который делает то, что от него требуется. Безопасная система делает только то, что должна, и не более того, – небезопасной ее делает “дополнительная функциональность”, связанная с уязвимостью к SQL-инъекциям».

Когда я спросил о его роли во внедрении компанией Microsoft концепции SDL, Ховард сказал: «Этому способствовало сочетание различных вещей, над которыми помимо меня работало множество людей. Все началось в конце 2001 года, когда команда разработчиков. NET провела мероприятие, где обсуждались текущие проблемы безопасности и потенциальные риски. Благодаря ему мы многому научились и добавили множество новых средств защиты. Я помню, что для этого мероприятия было заказано несколько футболок с нанесенной на них датой конференции, правда, из-за начавшейся снежной бури ее пришлось отложить… Так что по иронии судьбы на мероприятии, посвященном повышению безопасности кода, мы все ходили в футболках с неправильной датой. Однако уроки, полученные в ходе этой конференции, в итоге были положены в основу концепции SDL. Публикация нашей с Дэвидом книги заставила многих людей задуматься о безопасности кода. В 2001 году система компании Microsoft подверглась множеству атак со стороны хакеров и вредоносных программ. Особенно серьезный ущерб нанесли черви Code Red и Nimda. Билл Гейтс спросил нас о природе уязвимостей в ПО и о том, почему мы до сих пор их не устранили. Будучи частью команды, с которой он встретился, я вручил ему раннюю копию книги Writing Secure Code, и после встречи он написал свою знаменитую заметку «Надежные вычисления» (https://www.wired.com/2002/01/bill-gates-trustworthy-computing/), в которой упомянул нашу книгу, благодаря чему ее продажи выросли в разы! В итоге я перешел на работу во вновь созданное подразделение надежных вычислений Microsoft. После этого был проведен ряд аналогичных мероприятий, посвященных проблемам безопасности ОС Windows, SQL Server и многих других продуктов Microsoft. Все это способствовало проработке концепции SDL, которая обновляется практически ежегодно».

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

Я спросил, почему количество публично анонсируемых уязвимостей не сокращается, несмотря на то, что программисты все больше узнают о проблемах информационной безопасности. Вот что сказал Ховард: «Отчасти это связано с появлением все большего количества программ, содержащих множество строк кода. Однако главная проблема заключается в том, что программистов все еще не обучают методам безопасного программирования, и они плохо осознают основные угрозы. Большинство образовательных программ не отвечают современным потребностям. На днях, просматривая учебную программу по информационной безопасности одного университета, я обратил внимание на то, что почти половина занятий посвящена низкоуровневым сетевым угрозам. Я не обнаружил лекций по обеспечению безопасности облака или безопасному программированию. Наши колледжи все еще выпускают программистов, которые мало что знают об информационной безопасности и разработке безопасного ПО, что довольно странно, учитывая то, что этим выпускникам предстоит создавать критически важные системы, подключенные к Интернету. Я до сих пор нахожу примитивные ошибки в коде других людей. Когда я демонстрирую им весьма распространенную проблему, связанную с повреждением памяти, или уязвимость к SQL-инъекции, на меня смотрят так, будто я совершил нечто невероятное. Программисты, знакомые с основами информационной безопасности, встречаются так редко, что я радуюсь, если кандидат хотя бы проявляет интерес к этой теме. Если программист внимательно слушает, когда я говорю о проблемах ИБ, это делает меня счастливым. Если человек заинтересован, мы можем научить его всему остальному. Но вы даже не представляете, скольким людям нет до этого никакого дела, и одна из главных причин в том, что их этому до сих пор не учат. Или учат, но не тем вещам, делая акцент на сетевой безопасности или каких-нибудь мелочах. Студентам подробно описывают принцип работы алгоритма RSA, но не объясняют, почему он должен использоваться, какие проблемы он решает и для каких целей подходит лучше всего. Умение правильно использовать инструмент для решения реальных проблем безопасности гораздо важнее понимания принципа его работы. Любой человек может разобраться в работе протокола, однако нам нужны люди, осознающие риски и думающие о решениях. Правда, существуют некоторые преподаватели и колледжи, которые придерживаются правильного подхода, например Мэтт Бишоп из Калифорнийского университета в Дэвисе. Он и другие неравнодушные преподаватели – настоящие герои».

Я спросил, что может сделать сам программист, учитывая то, что большинство колледжей недостаточно хорошо готовят студентов в этом отношении. Он посоветовал: «Постоянно учитесь. Я ежедневно выделяю час на учебу. Я читаю, пишу код и экспериментирую с чем-то новым. И занимаюсь этим на протяжении всей своей карьеры. Кроме того, если в вашем учебном заведении нет формального курса по информационной безопасности, разработайте собственную обучающую программу. Перейдите на сайт https://cve.mitre.org/cve/ и внимательно прочитайте о недавно обнаруженных уязвимостях. Затем напишите код, содержащий одну из них, и подумайте, что нужно было сделать для предотвращения ее появления как на техническом уровне, так и на уровне процессов. Выясните, откуда взялась эта уязвимость и как именно попала в код. А затем используйте извлеченные уроки, чтобы предотвратить появление подобных ошибок в вашем собственном коде».

На вопрос о том, что могут сделать компании для создания более безопасного кода, помимо следования текущим принципам SDL и использования доступных инструментов, он ответил: «Сделайте так, чтобы программисты не только понимали теоретические основы, но и осознавали реальные угрозы. Кроме того, вам следует встроить процесс обеспечения безопасности в сам конвейер разработки ПО, чтобы плохой и небезопасный код не мог в него попасть. В Microsoft мы используем так называемые ворота качества. Хороший (не связанный с безопасностью) пример – это написание кода, который предполагает, что все IP-адреса состоят из четырех октетов. Это означает, что такой код никогда не будет работать в чистой среде IPv6. Этот код даже не сможет пройти проверку, поскольку специальный инструмент, работающий в автоматическом режиме, выявит проблему и предотвратит его сохранение в системе. Вот что мы подразумеваем под термином “ворота качества”. В целях обеспечения безопасности этот же подход можно применить для выявления уязвимостей к SQL-инъекциям, угроз, связанных с безопасностью памяти, и всего того, что вы не хотите видеть в своем коде.

Если бы меня попросили назвать несколько основных практик, связанных с обеспечением безопасности, то я выбрал бы следующие:

• разработчики должны приучить себя с недоверием относиться к входным данным и проверять их корректность, желательно с помощью протестированной и проверенной библиотеки. Если длина ожидаемого значения составляет всего 20 байт, ограничьте величину входных данных 20 байтами. Если вы ожидаете получить число, то убедитесь, что входное значение является именно числом, и так далее;

• разработчикам/архитекторам/менеджерам, отвечающим за создание ПО, необходимо освоить методы моделирования угроз и убедиться в том, что их система предусматривает соответствующие средства защиты;

• наконец, тестировщики должны доказать неправоту разработчиков, создавая или приобретая инструменты, которые генерируют вредоносные и/или недействительные данные. Цель в том, чтобы выявить недочеты, допущенные разработчиками, если они есть.

Разумеется, это далеко не все, что требуется для обеспечения безопасности ПО, но, на мой взгляд, это те фундаментальные навыки, которыми должны обладать все инженеры-программисты».

Информация о Майкле Ховарде

Если вы хотите узнать больше о Майкле Ховарде, перейдите по следующим ссылкам:

• книги Майкла Ховарда: https://www.amazon.com/Michael-Howard/e/B001H6GDPW/;

• блог Майкла Ховарда: https://michaelhowardsecure.blog/author/mikehow/;

• Майкл Ховард в Twitter: https://twitter.com/michael_howard.

8. Профиль: Гари Макгроу

Когда я позвонил Гари Макгроу по поводу интервью, он сказал, что минуту назад беседовал с католическим монахом, который проходил мимо его дома на реке Шенандоа в Вирджинии. Спустя несколько секунд он переключился на обсуждение нюансов информационной безопасности. Такого рода парадоксы сопровождают Макгроу всю жизнь. Он начал программировать на своем первом компьютере, Apple II+, в 1981 году, в возрасте 16 лет. В колледже он изучал философию и параллельно получал классическое музыкальное образование. Он даже дважды выступал в Карнеги-холле. Сегодня, будучи одним из лучших в мире экспертов по ИБ, Макгроу с удовольствием готовит, ухаживает за садом и придумывает новые коктейли.

Я спросил Гари о том, как он заинтересовался темой информационной безопасности во время изучения философии в Университете Вирджинии. Он сказал, что интерес к философии сознания привел его на курс под названием «Компьютеры, сознание и мозг», который преподавал Пол Хамфрис. Гари считал идеи профессора Хамфриса ошибочными, но они заставили его глубже задуматься о философии сознания и проблеме искусственного интеллекта. В итоге в ходе занятий он начал применять идеи светила индустрии и обладателя Пулитцеровской премии доктора Дугласа Хофштадтера, что кардинально изменило его карьерный путь. Свой первый курс по информатике Макгроу прошел, уже будучи аспирантом, хотя увлекся программированием еще подростком. Под руководством Дугласа Хофштадтера в Университете Индианы он получил двойную докторскую степень в области когнитивных наук и информатики. Он даже написал десятую главу первой книги, проданной на Amazon. Это была книга Хофштадтера Fluid Concepts and Creative Analogies: Computer Models of the Fundamental Mechanisms of Thought (https://www.amazon.com/Fluid-Concepts-Creative-Analogies-Fundamental/dp/0465024750).

После колледжа Гари присоединился к компании из семи человек, которые в итоге основали Cigital (www.cigital.com). Организация получила крупный грант от Управления перспективных исследовательских проектов Министерства обороны США (DARPA) на проведение исследования в области информационной безопасности, и Макгроу был нанят для работы над этим проектом. В итоге компания выросла до 500 сотрудников и в 2016 году ее приобрела компания Synopsys. В настоящее время в отделе обеспечения безопасности ПО работает около 1000 человек.

Мое первое значимое воспоминание о Макгроу связано с его работой по поиску уязвимостей в языке программирования Java, проделанной им совместно с Эдом Фелтеном, в соавторстве с которым он впоследствии написал книгу. То, что они обнаружили, слегка шокировало сообщество, учитывая то, что компания Sun Microsystems стремилась сделать Java максимально безопасным языком программирования, понимая, что он будет использоваться для разработки веб-приложений, часто подвергающихся хакерским атакам. Релиз Java состоялся в 1995 году, и компания Sun с самого начала делала акцент на безопасности языка, ведь его разработкой занимались такие специалисты, как Гай Стил и Билл Джой. Большинство экспертов по ИБ сомневалось в его безопасности, считая заявление компании Sun очередным громким обещанием. И они оказались правы. Написанные на Java приложения содержали беспрецедентное количество багов. Макгроу был одним из лучших экспертов в деле обнаружения уязвимостей Java, и они с Фелтеном положили начало анализу этого языка на предмет наличия ошибок безопасности. Макгроу познакомился со своим будущим соавтором на конференции, и результатом этой встречи стала их первая книга (https://www.amazon.com/GaryMcGraw/e/B000APFZ2S/). Многие книги Макгроу попадали в список бестселлеров сайта Amazon (одна из них, Exploiting Software, даже оказалась на 16-й строчке), что довольно впечатляюще для книг по компьютерной тематике, а тем более для книг, посвященных информационной безопасности.

Макгроу продолжал размышлять о безопасности ПО и о том, где можно научиться создавать более защищенные приложения. Он спрашивал себя, как остальные программисты могут разрабатывать безопасные программы, если это не удается даже таким специалистам, как Билл Джой и Гай Стил. Он пытался выяснить, что пошло не так в процессе их работы. Гари осознал, что программное обеспечение следует с самого начала разрабатывать с учетом требований безопасности. Примерно тогда он и придумал концепцию Trinity of Trouble («Троица проблем»), с помощью которой попытался объяснить, почему обеспечение безопасности ПО остается столь интересной и сложной задачей. В соответствии с этой концепцией сетевое, сложное и расширяемое приложение всегда будет представлять интерес с точки зрения безопасности, но обеспечить ее будет очень сложно. У Java, к сожалению, были сильно выражены все три аспекта, однако главная проблема, вероятно, заключалась в его сложности. После написания в соавторстве с Джоном Виегой книги Building Secure Software в 1999 году Макгроу посетил многие компании, включая Microsoft, где Майкл Ховард, речь о котором шла в предыдущей главе, работал вместе с Джейсоном Гармсом в новом подразделении Secure Windows Initiative. Он помнит, что на его выступлении присутствовали все менеджеры продуктов Microsoft и что компания явно была готова к внедрению практик, направленных на обеспечение безопасности ее ПО.

Потратив еще несколько лет на практику в сфере обеспечения безопасности ПО (предполагавшую разработку как сервисов, так и технологий), Макгроу стал одним из создателей модели BSIMM (Building Security In Maturity Model). В настоящее время этот инструмент применяет более ста крупных компаний для измерения, отслеживания и понимания своего прогресса в области обеспечения безопасности программного обеспечения.

На вопрос о том, чем именно модель BSIMM отличается от концепции SDL Майкла Ховарда, учитывая акцент обеих на повышении безопасности ПО, Макгроу сказал следующее: «SDL – это методология, а BSIMM – инструмент, позволяющий измерять и сравнивать различные SDL-подобные подходы. Концепция SDL, формализованная и опубликованная компанией Microsoft, – это отличная методология, но далеко не единственная. Достижение Майкла Ховарда, которому я очень симпатизирую, в том, что он разработал формальный подход для огромной организации, где работают десятки тысяч программистов. Он показал, что обеспечением безопасности ПО можно заниматься в чрезвычайно больших масштабах, что очень важно».

Как и остальных людей, у которых я брал интервью для этой книги, я спросил Макгроу о том, что, по его мнению, является самой большой проблемой в сфере ИБ. Его ответ был созвучен мнению Майкла Ховарда, с которым я беседовал ранее. Вот что он сказал: «Несмотря на существование огромного количества информации, касающейся разработки более безопасных систем, относительно малое число программистов обладает достаточной компетентностью в этом вопросе. И хотя некоторые колледжи и коммерческие обучающие центры уже готовят хороших специалистов, абсолютное большинство образовательных учреждений этим практически не занимается».

По его мнению, сам предмет компьютерной безопасности еще недостаточно хорошо проработан. Его любимая книга по разработке безопасного ПО – Security Engineering: A Guide to Building Dependable Distributed Systems Росса Андерсона (https://www.amazon.com/Security-EngineeringBuilding-Dependable-Distributed/dp/0471389226/). Макгроу сказал, что она нравится ему даже больше, чем 12 его собственных книг. По его мнению, «это лучшая книга по безопасности на всей планете».

Макгроу ведет ежемесячный подкаст, посвященный теме безопасности, Silver Bullet Security Podcast (https://www.garymcgraw.com/technology/silver-bullet-podcast/), в рамках которого берет интервью у экспертов и светил индустрии. Недавно он отпраздновал десятилетие своего подкаста, опубликовав юбилейный, 120-й выпуск. В списке опрошенных им экспертов я увидел имена многих из тех людей, о которых написал в этой книге. Как и я, он проявляет неподдельный интерес к истории развития сферы ИБ, любит учиться и делиться знаниями. Когда наше интервью закончилось, я представил, как Макгроу, настоящий человек эпохи Возрождения, прогуливается со своей собакой вдоль реки, думая о новых типах брешей в системе безопасности ПО.

Информация о Гари Макгроу

Более подробно о Гари Макгроу можно узнать на следующих сайтах:

• книги Гари Макгроу: https://www.amazon.com/GaryMcGraw/e/B000APFZ2S/;

• веб-сайт Гари Макгроу: https://www.garymcgraw.com;

• подкаст Гари Макгроу: https://www.garymcgraw.com/technology/silver-bullet-podcast/.

9. Вредоносные программы

Когда я впервые начал работать в области ИБ еще в 1987 году, первым делом мое внимание привлекли вредоносные программы. Первые компьютерные вирусы (например, Elk Cloner для компьютеров компаний Apple и Pakistani Brain) только появились, хотя трояны и черви существовали и раньше. Компьютерные вирусы были настолько новы и редки, что популярные медиаэксперты объявили их мистификациями. Так было до тех пор, пока целые компании не подверглись заражению, и это было прежде, чем Интернет стал таким, каким мы знаем его сегодня. В то время компьютерные вредоносные программы распространялись по телефонным сетям и из рук в руки, когда люди копировали программное обеспечение друг у друга (как легально, так и нелегально). Вредоносные программы – по-прежнему один из самых популярных методов взлома.

Примечание. Первая вредоносная программа, которую я когда-либо видел, была бомба Ansi. Она загружалась на компьютер при содействии «помощника» – файла ansi.sys, так же, как в то время устанавливались многие программы и операционные системы, поэтому было сложно заподозрить с виду безопасную программу во вредоносности.

Типы вредоносных программ

Традиционные типы вредоносных программ – это вирус, червь и троянский конь. Компьютерный вирус – это самореплицирующаяся программа, которая при выполнении ищет другие программы (или иногда, как в случае с макровирусами, данные) для заражения. Компьютерный червь – это программа репликации, которая обычно не изменяет другие программы или данные. Он просто путешествует по устройствам и сетям, руководствуясь собственными закодированными инструкциями, часто эксплуатируя одну или несколько уязвимостей ПО. Троянский конь – программа, которая маскируется под легитимное приложение, обманом заставляя устройство или пользователя активировать ее. Современная вредоносная программа часто представляет собой сочетание двух или более традиционных типов. Например, она может быть первоначально распространена как троян, чтобы получить точку опоры, а затем использовать собственный код для дальнейшего распространения.

Вредоносные программы могут быть достаточно эффективными. Тысячи из них успешно заражают целые сети по всему миру за несколько часов. Сотни вредоносных программ за один день заражают значительную часть компьютеров, подключенных к Интернету. Первое место по скорости заражения по-прежнему принадлежит программе 2003 года SQL Slammer worm (https://securelist.ru/slammer-vsyo/8976/), которая заразила большинство доступных в Интернете уязвимых SQL-серверов примерно за 10 минут. Соответствующий патч был выпущен спустя пять месяцев, но тогда почти никто не реагировал своевременно. Сегодня большинство вредоносных программ являются троянскими и требуют, чтобы конечный пользователь инициировал действие (например, открыл веб-ссылку или вложенный файл) для запуска вредоносного ПО, хотя вовлеченное устройство или пользователь, возможно, не имели никакого отношения к выполнению программы. Это зависит от сценария вредоносного ПО и его распространения.

Количество вредоносных программ

Существуют сотни миллионов различных вредоносных программ и неизмеримое количество новых создается каждый год. Большинство из них – небольшие настраиваемые вариации, создаваемые из нескольких тысяч различных базовых вредоносных программ. Тем не менее каждая вариация должна обнаруживаться антивирусными программами, которые часто используют комбинацию цифровых сигнатур (уникальный набор байтов для каждой вредоносной программы или группы программ) и поведенческого обнаружения. Инструмент защиты от них должен быстро сканировать десятки миллионов файлов на предмет отсутствия кода сотен миллионов вредоносных программ и делать это без значительного замедления работы устройства, на котором он запущен. Реализовать это трудно, и даже если сделать это с максимальной степенью точности, защита может быть пробита одной новой вредоносной программой с единственным измененным байтом.

Примечание. Инструменты против вредоносных программ часто называют антивирусными приложениями, несмотря на то что они обнаруживают и удаляют вредоносные программы нескольких типов, поскольку большинство из них – компьютерные вирусы.

Программы криминального назначения

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

Теперь почти все вредоносные программы создаются в преступных целях. Большинство так или иначе нацелены на кражу денег, будь то прямая финансовая выгода, кража цифровой личности или паролей. В наши дни «вымогатель», то есть вредоносная программа, шифрующая данные и требующая выкуп, чтобы расшифровать их, очень популярен. Другие программы крадут игровые ресурсы, электронную валюту или совершают несанкционированные сделки с акциями. Некоторые проникают в ваш компьютер, чтобы отображать рекламу (или конкретные объявления), или тайно заставляют компьютер заходить на определенные веб-сайты, чтобы увеличить количество посетителей (трафик) для получения доходов от рекламы. Некоторые используются для взлома и кражи конфиденциальной информации. Другие могут применяться для массовых распределенных атак типа «отказа в обслуживании» (см. главу 28). Прошли времена, когда большинство вредоносных программ было создано озорными детьми; эти программы печатали милые маленькие поговорки на экране, играли в Yankee Doodle Dandy на вашем компьютере или просили вас помочь «легализовать марихуану» (например, вирус Stoned boot). Сегодня вредоносное ПО стало профессиональным!

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

Вредоносные программы ответственны за кражи или причинение ущерба в сотни миллионов долларов ежегодно. Каждый опытный человек в сфере ИБ, который борется с ними последние десять лет, предпочел бы иметь дело только с озорными детьми.

Защита от вредоносных программ

Существует много средств защиты от вредоносных программ, большинство из которых также хороши и против нескольких других форм взлома.

Вовремя пропатченное программное обеспечение

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

Обучение

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

Антивирусные программы

Антивирусное ПО необходимо использовать практически в каждой компьютерной системе. Даже лучший антивирус может пропустить вредоносную программу, и ни одна программа не гарантирует 100 %-ную защиту от них, но запуск компьютерной системы без нее – это как езда на машине без тормозов. Вы можете работать в такой системе некоторое время, но в итоге катастрофа все-таки случится. В то же время никогда не верьте обещаниям разработчиков антивирусов о 100 %-ной защите. Это ложь.

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

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

Инструменты пограничной защиты

Брандмауэры и другие типы локальных и сетевых инструментов пограничной защиты (например, виртуальные ЛВС, маршрутизаторы и т. д.) хорошо защищают компьютерное устройство от вредоносного ПО. Большинство операционных систем имеют встроенные локальные брандмауэры, но многие из них не настроены и не включены по умолчанию. Внедрение брандмауэра может значительно снизить риск быть скомпрометированным, особенно при наличии незакрытой уязвимости. Мы рассмотрим их более подробно в главе 17.

Обнаружение вторжений

Сетевая (NID/P) и хостовая (HID/P) системы обнаружения/предотвращения вторжений в программное обеспечение и устройства могут использоваться для распознавания и остановки вредоносных программ в сети или на локальном хосте. Обнаружение вторжений описано в главе 14. Но, как и традиционные антивирусные программы, сетевые и хостовые системы не гарантируют 100 %-ную защиту, и не следует доверять только им.

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

Главы 10 и 11 посвящены Сьюзен Брэдли и Марку Руссиновичу, которые успешно борются с вредоносными программами на протяжении десятилетий.

1.http://rus-linux.net/MyLDP/BOOKS/zip/hackers-heroes.pdf.
2.Читается как «зеро-дэй». – Прим. перев.
3.Шнайдер Б. Прикладная криптография. Протоколы, алгоритмы и исходный код на C. М.: Вильямс, 2016. – Прим. ред.
4.Шнайер Б. Секреты и ложь. Безопасность данных в цифровом мире. СПб.: Питер, 2003. – Прим. ред.
5.Проект Meta Platforms Inc., деятельность которой запрещена на территории РФ.
6.Либо получает подделку или товар намного дешевле. – Прим. перев.
7.Нужно также следить за фишинговыми сайтами, внешне не отличающимися от легитимного ничем, кроме URL-адреса. Кроме того, существует риск перенаправления на вредоносный объект уже после щелчка мышью по ссылке на легитимном сайте. – Прим. перев.

The free sample has ended.