Читать книгу Секреты и ложь. Безопасность данных в цифровом мире (Брюс Шнайер) онлайн бесплатно на Bookz (18-ая страница книги)
bannerbanner
Секреты и ложь. Безопасность данных в цифровом мире
Секреты и ложь. Безопасность данных в цифровом миреПолная версия
Оценить:
Секреты и ложь. Безопасность данных в цифровом мире

3

Полная версия:

Секреты и ложь. Безопасность данных в цифровом мире

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

Один недостаток CGI позволил злоумышленникам загружать секретную персональную информацию с различных сайтов. Другие сценарии CGI использовались, чтобы взломать веб-сервер. В конце 1999 года были предприняты две атаки – атака Poison Null («отравленный» нуль), позволившая хакерам просматривать и изменять файлы на веб-сервере, и атака Upload Bombing (бомбежка при пересылке), наводнившая веб-серверы бесполезными файлами, которые очень быстро превращались в атаки-сценарии, так что любой мог при желании их использовать[35].

Включения на стороне сервера (Server Side Includes, SSI) – это указания для вебсерверов, встроенных в HTML-страницы. Непосредственно перед отправкой страницы браузеру веб-сервер выполняет все SSI, содержащиеся на странице, и помещает на нее результаты своей работы. Атаковать SSI так же выгодно, как и все остальное.

Можно атаковать уязвимые места в стороннем программном обеспечении: на специфических веб-серверах, в их приложениях. Сюда относятся приложения для баз данных, программы «корзины», сервер транзакций и другие. Эти атаки зависят не от того, как сайт использует приложение, а от самого приложения (СУБД Oracle, например). Злоумышленники могли бы загрузить исходную программу с веб-сервера, разрушить сервер, получить привилегии доступа на уровне администратора для входа на сервер, запустить на сервере произвольную программу и т. п. В отличие от прорех безопасности, вызванных сценариями CGI, установление уязвимых мест в дополнительных приложениях не находится под контролем сайта; это обязанность поставщиков стороннего программного обеспечения.

Существует множество похожих атак. Внося изменения в скрытые поля на некоторых веб-страницах (эти поля можно увидеть при просмотре начала страницы), есть шанс взломать сценарии CGI и заставить некоторые программы «корзин» изменить цены предлагаемых товаров. (Вплоть до «назовите свою цену».) Некоторые атаки направлены на cookies: порча cookie. Злоумышленники входят на сервер и вручную меняют свои аутентификационные cookies на cookies других пользователей. Иногда эти cookies зашифрованы, но часто не очень надежно.

Некоторые атаки носят название написания перекрестных сценариев. Это довольно неудачное название: атаки заключаются не столько в написании сценариев, и речь не идет о пересечении. То, что они так называются, сложилось исторически. Суть в том, что Веб скрывает в себе множество мелких хитростей; когда вы смешиваете сценарии CGI, JavaScript, фреймы и cookies, cookies и SSL, итог может оказаться неожиданным и нежелательным. Использование различных платформ одновременно – это спорный путь, в результате нетрудно получить непредсказуемое взаимодействие различных компонентов сложных систем.

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

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

Веб – конфиденциальность

Номинально веб-просмотр анонимен. В реальности существует много способов идентифицировать пользователя. Я уже говорил, что по cookies можно следить за перемещением пользователя с сайта на сайт и даже включить в cookie адрес электронной почты или другую личную информацию (если пользователь заполняет анкету или отвечает на электронное сообщение).

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

Конечно, IP-адрес пользователя – это все же не имя пользователя, но многие веб-браузеры установлены на машинах с единственным пользователем, напрямую подключенных к Всемирной паутине. Те пользователи, которым приходится дозваниваться, обладают большей анонимностью, чем пользователи с кабельным модемом или DSL-соединением (Digital Subscriber Line, цифровая абонентская линия), но часто для идентификации достаточно установить провайдера. Например, в 1999 году неизвестный угрожал бомбой, отправив сообщение с регистрационной записи Hotmail. Электронная почта Hotmail содержит IP-адреса веб-браузеров, с которых отправляли почту. IP-адрес принадлежал America Online, и полиция, сравнив его и записи Hotmail, смогла проследить электронное сообщение до индивидуального пользователя America Online.

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

Глава 11

Сетевая безопасность

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

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

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

Как работает сеть

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

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

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

Эти пакеты посылаются через сеть по маршрутам. Есть разные протоколы – Ethernet, TCP и другие, – но базовые принципы их работы одинаковы. Маршрутизаторы перенаправляют пакеты по указанным в них адресам. Они могут не знать точно местонахождения адресата, но имеют некоторые представления о том, в каком направлении следует отправить пакет. Это несколько напоминает почтовую систему. Почтальон приходит в ваш дом, забирает всю исходящую корреспонденцию и доставляет ее в местное почтовое отделение. Там могут вовсе не знать, где находится дом 173 по Питтерпат Лэйн, Фингербон, Айдахо, в котором проживает мистер X, но располагают сведениями, что конверт вместе со всей остальной корреспонденцией нужно погрузить в автомобиль, который едет в аэропорт. Служащие почты аэропорта также не осведомлены, где живет мистер X, но знают, что должны отправить письмо самолетом в Чикаго. В почтовом отделении аэропорта Чикаго знают, что должны переложить письмо в самолет, вылетающий в Бойсе. В почтовом отделении города Бойсе знают, что письмо нужно доставить к поезду, который идет в Фингербон. И наконец, на почте Фингербона имеют точную информацию, где находится указанный адрес, и почтальон доставит письмо.

Безопасность IP

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

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

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

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

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

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

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

Фактически в Интернете уже реализуется шифрование пакетов. Программы типа SSH шифруют и аутентифицируют внешние связи пользователя с другими компьютерами через сеть. Протоколы типа SSL могут шифровать и подтверждать подлинность веб-трафика в Интернете. Протоколы типа IPsec, возможно, будут способны шифровать все и аутентифицировать всех.

Безопасность DNS

Domain Name Service[37] (DNS) – система доменных имен (механизм, используемый в Интернете и устанавливающий соответствие между числовыми IP-адресами и текстовыми именами), – по существу, огромная распределенная база данных. Большинство компьютеров в Интернете – узлы, маршрутизаторы и серверы – имеют доменные имена, вроде brokenmouse com или anon penet fi. Эти имена созданы для удобства запоминания и использования, например, в указателях информационного ресурса (URL) или адресах электронной почты. Компьютеры не понимают доменных имен; они понимают IP-адреса, наподобие 208.25.68.64. IP-адреса используются при отправке пакетов по сети.

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

Проблема в том, что система службы доменных имен не имеет никакой защиты. Таким образом, когда компьютер посылает запрос серверу DNS и получает ответ, он воспринимает ответ как верный и сервер DNS как подлинный. Фактически при этом нет никакой гарантии, что сервер DNS не взломан. И ответ, который компьютер получает от сервера службы доменных имен, мог прибыть вовсе не с этого узла – он может быть сфальсифицирован. Если нападающий произведет изменения в таблицах DNS (фактических данных, которые переводят домены в IP-адреса и наоборот), компьютер будет всецело доверять измененным таблицам.

Несложно представить себе виды нападений, которые могут быть осуществлены при таком состоянии дел. Нападающий способен убедить компьютер, что ему можно доверять (изменив таблицы службы доменных имен так, чтобы компьютер нападающего выглядел как заслуживающий доверия IP-адрес). Нападающий в состоянии завладеть сетевым подключением (изменив таблицы таким образом, что кто-нибудь, желающий подключиться к legitimate company com, в действительности получит соединение с evil hacker com). Нападающий может сделать все что угодно. У серверов DNS есть процедура обновления информации: если один сервер службы доменных имен изменит запись, он сообщит об этом другим серверам DNS, и они поверят ему. Таким образом, если нападающий сделает изменения в нескольких точках, есть вероятность распространения этих поправок по всему Интернету.

В 1999 году было совершено такое нападение: кто-то взломал систему службы доменных имен для того, чтобы трафик к Network Solutions – так называлась одна из компаний регистрации доменных имен – был переадресован другим компаниям, занимающимся аналогичной деятельностью. Подобная же атака, рассчитанная на огласку, была проведена в 1997 году. Это случилось до того, как регистрация домена стала предметом конкурентной борьбы. Евгений Кашпурев, владелец альтернативного сайта AlterNIC, в качестве акции протеста перенаправил трафик Network Solutions на свой собственный сайт. Он был арестован, осужден и получил два года условно.

В 2000 году злоумышленники получили обманным путем доступ к таблицам службы доменных имен и присвоили домашнюю страницу RSA Security. Это не то же самое, что внедриться на веб-сайт и стереть страницу. Нападающий создает фальшивую домашнюю страницу и переадресует на нее весь трафик посредством манипулирования записями DNS. Хакер осуществляет вторжение, взламывая не DNS-сервер RSA, а серверы DNS в направлении, противоположном основному потоку в Сети. Умно и очень легко. Получение обманным путем доступа к записям службы доменных имен – это тривиальный путь взлома реального веб-сайта. И чтобы дела «похищенного» сайта обстояли еще хуже, взломщик вводит людей в заблуждение: они думают, что взломан веб-сайт компании А, в то время как на самом деле злоумышленниками контролируется сервер службы имен домена компании В.

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

Нападения типа «отказ в обслуживании»

В сентябре 1996 года неизвестный хакер или группа хакеров атаковали компьютеры нью-йоркского интернет-провайдера Panix. Они посылали сообщения hello (пакеты синхронизации SYN) на компьютеры Panix. Обычно предполагается, что удаленный компьютер отправляет Panix приветственное сообщение, ожидает ответа и после этого продолжает сеанс связи. Нападавшие фальсифицировали обратный адрес удаленных компьютеров, так что Panix пытался синхронизироваться с компьютерами, которые в действительности не существовали. Компьютеры Panix 75 секунд ожидали ответа удаленного компьютера, прежде чем прервать связь. Хакеры «топили» Panix со скоростью более 50 сообщений в секунду. Это превышало возможности компьютеров Panix, что и привело их к аварийному отказу. Такое нападение называется атакой синхронизации (SYN flooding).

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

Существует возможность вызвать «отказ в обслуживании» обычного почтового сервиса: злоумышленник подписывает жертву на все каталоги почтовых заказов и на прочие издания, которые только могут прийти на ум. Жертва получает так много корреспонденции, допустим, 200 единиц в день, что шансы потери полезной почты среди ненужного хлама увеличиваются соответственно. Теоретически так обязательно и случится. Единственный способ воспрепятствовать этому нападению – ограничить количество рассылок ненужного хлама. А в Интернете почтовые серверы по определению рассылают почту. В 1995 году Фронт освобождения Интернета (Internet Liberation Front – это, скорее всего, вымышленное название, с тех пор о нем не было упоминаний) направил поток сообщений по электронной почте в журнал Wired и его автору Джошуа Квиттнеру. Поток был так велик, что компьютеры перестали работать.

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

Есть другие нападения, приводящие к отказу в обслуживании. Некоторые нацелены на компьютеры, подобно только что описанному нападению на сервер электронной почты. Другие ориентированы на маршрутизаторы. Некоторые настроены на вебсерверы. Основная идея – та же самая: завалить цель таким большим количеством хлама, что он остановит ее работу. WinNuke может привести к аварийному отказу компьютеров с операционной системой Windows 95 и более ранней. Одиночное нападение в Интернете в апреле 1999 года вызвало сбой 6000 компьютеров с Windows 95.

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

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


Вы ознакомились с фрагментом книги.

bannerbanner