Глава 2. Как все начиналось. Хакеры и сеть
Глава 2. Как все начиналось. Хакеры и сеть
2.1. Червь Интернет
1 ноября 1988 г. – это, несомненно, самая печально известная дата в биографии Интернета. Около 18:00 по восточному стандартному времени студент Корнеллского университета запустил в сеть компьютерную программу-червя (worm). Это был первый значительный вирус из всех, когда-либо поражавших Интернет. Почти мгновенно червь поразил компьютеры на территории всей Америки. В течение часа вирус остановил работу многих основных национальных и международных исследовательских центров. К счастью, все пораженные рабочие места (4000-6000 компьютеров) в сумме составляли от 5 до 7 % от общего количества компьютеров, работающих в Интернете. Стоит отметить, что на то время Интернет связывал приблизительно 80 000 компьютеров.
Специалисты из числа оставшихся непострадавших пользователей тут же включились в борьбу с червем. Почти сразу образовалась группа добровольцев под названием VirusNet; ее члены круглосуточно работали над тем, чтобы остановить червя.
Члены VirusNet поддерживали контакт друг с другом по телефону и через сетевые шлюзы, которые червь не мог поразить. Программист из Бостона нашел ошибку в тексте червя, и впоследствии ее использовали для уничтожения вируса. Программист из Чикаго обнаружил, что червь поражает операционные системы Unix благодаря одной из их уязвимых частей, и немедленно предложил способ исправления этого недостатка. В Новом Орлеане несколько программистов создали копию червя на изолированной от сети машине и наблюдали за его активностью. Через 24 часа благодаря объединенным усилиям вирус был остановлен. Через неделю все пораженные компьютеры снова были в рабочем состоянии. Несмотря на потенциальные возможности, скрытые в черве, общий вред, нанесенный им, был минимален.
Червь был первой ласточкой в бесконечной череде последующих. Этот эпизод продемонстрировал всем, что связанный с Интернетом риск – это реальность, и не стоит им пренебрегать.
В скором времени ранее никому не известные «лабораторные крысы», которые уничтожили программу-вирус, были приглашены для выступления на телевидении. После телевизионного интервью последовал «разбор полетов», проведенный должностными лицами из Национального института стандартов и технологии, Агентства оборонных коммуникаций, Министерства энергетики, Лаборатории баллистических исследований, Национальной лаборатории Лоуренса Ливермора, ЦРУ, ФБР и Национального центра компьютерной безопасности.
Червь Интернета взволновал не только сотрудников университетов и правительственных агентств, использующих Сеть, но также и многих представителей деловых кругов, проявлявших к Интернету возрастающий интерес. Вирусы писались и раньше. Компьютеры исправно ими заражались, но в большинстве своем вирусы заносились при помощи дискет. В самом худшем случае пользователь машины должен был переформатировать один-единственный жесткий диск (диск этой машины).
Червь Интернета был первым истинно сетевым червем (networking worm), теоретически способным разрушить большинство компьютерных систем, работающих под управлением операционной системы Unix. Более того, благодаря небольшой модификации, червь мог бы атаковать и системы, разработанные компанией Novell – единственным серьезным конкурентом Unix.
Способ, которым вирус-червь приостановил работу такого большого количества систем, относительно прост.
Проникнув в компьютер, червь заставил операционную систему создать отдельный поток для своей работы. Сначала он занимался поиском внешней сетевой связи. Если связь существовала, червь отсылал копию самого себя на тот компьютер, с которым эта связь была установлена. После этого червь размножался, т. е. создавал другой процесс, являющийся точной копией первоначального. Другими словами, червь создавал точную копию самого себя в памяти компьютера.
Теперь уже две программы-черви требовали обработки операционной системой. Оба червя отслеживали внешние соединения, после чего каждый из них снова копировал самого себя, и теперь операционная система обрабатывала четырех червей. Червь продолжал копировать самого себя при каждом обращении операционной системы к потоку червя.
Понятно, что через некоторое время число копий червя становилось очень большим. Для обработки всех его копий операционная система должна была создавать так много потоков, что никакой другой процесс уже не могла обрабатывать. Операционная система «замораживала» работу пользователей, системных администраторов и в конечном счете прекращала обработку своих процессов.
Студент Корнеллского университета Роберт Т. Моррис-младший, написавший червя, был приговорен к трем годам условного заключения, а также к выплате штрафа в размере 10 000 долларов и 400 часам общественных работ. Он стал первым хакером сети Интернет. По одной из версий он почти сразу раскаялся и попросил своих друзей поместить его рекомендации по уничтожению вируса на электронную доску объявлений. К сожалению, червь привел BBS в негодность раньше, чем кто-либо сумел воспользоваться советами Морриса.
Хотя червь Морриса не принес большого вреда, его появление стало началом новой эры – эры обеспечения безопасности работы сетей.
Так же, как первые угоны самолетов в 1960-х гг. послужили толчком к созданию средств безопасности в аэропортах, так и эта первая попытка «кибертерроризма» открыла новую эпоху осознания необходимости защиты компьютерных сетей, в первую очередь тех, которые связаны с Интернетом. С ростом количества компьютерных сетей, соединенных с Интернетом, увеличивалось и число связанных с этим видов опасностей и, соответственно, средств защиты.
2.2. Потери возрастают
В начале марта 1997 г. Институт средств компьютерной безопасности города Сан-Франциско, представляющий собой международную ассоциацию специалистов по вопросам защиты компьютеров, сообщил данные последнего опроса 249 американских компаний. Результаты опроса показали, что эти компании потеряли более 100 млн долл. из-за преступлений, связанных со взломом средств защиты компьютерной информации. Если умножить эту цифру на число компаний, чья основная сфера деятельности схожа с опрошенными, общая цифра потерь будет исчисляться миллиардами долларов.
Последняя обобщенная и достаточно достоверная информация по этому вопросу публиковалась в 2001 г. Уже тогда цифра потерь приближалась к 20 млрд долл. После этого публиковались данные, которые не отражают картины целиком. Видимо, потери стали настолько огромны, что трубить о них уже просто опасно.
В соответствии с сообщениями независимых источников из Министерства безопасности США (DOD – Department of Defense) к 88 % компьютеров министерства возможен доступ извне. 96 % случаев проникновения хакеров в компьютерные системы этого министерства были обнаружены его специалистами. Становится ясно, что кем бы вы ни были – системным администратором, специалистом по вопросам защиты информации, менеджером по информационным технологиям или создателем Web-страниц – вы должны уметь определить грозящие вам опасности и предпринять соответствующие меры.
2.3. Интернет
В настоящий момент Интернет является самой известной всемирной компьютерной сетью. Точнее, он является связующим звеном для большинства существующих сетей. Интернет состоит из миллионов компьютеров, связанных между собой с помощью общих стандартов и протоколов передачи данных. Протоколы позволяют пользователям всего мира обмениваться друг с другом информацией в различных ее проявлениях. Он включает в себя огромное количество локальных сетей (local-area networks – LAN), принадлежащих промышленным предприятиям, крупным компаниям, учебным заведениям и правительственным учреждениям. LAN – это группа компьютеров, связанных между собой непосредственно или через центральный компьютер, который называется сервером (server). Все эти компьютеры находятся на близком расстоянии друг от друга. Примеры локальных сетей можно увидеть в большинстве компаний мира. У каждого пользователя LAN есть свой рабочий персональный компьютер. Каждый пользовательский компьютер оснащен сетевой картой, тип которой зависит от конфигурации компьютера. Сетевая карта может находиться внутри компьютера (внутренняя), а может быть подключена к порту компьютера (внешняя). Связь между сетевыми картами (а, следовательно, компьютерами) и сервером (или серверами) осуществляется по проводам с помощью электронных устройств. На рис. 1 показана наиболее стандартная конфигурация LAN.
Параллельно с LAN существуют и глобальные компьютерные сети (wide-area networks – WAN), количество которых увеличивается с каждым днем. WAN – это сеть, связывающая индивидуальные компьютеры или даже локальные сети, находящиеся на большом расстоянии друг от друга. Вообще любая сеть, связывающая два компьютера, расстояние между которыми больше мили, является глобальной. Однако зачастую многие сети, связывающие компьютеры, находящиеся в одном здании или квартале, тоже являются глобальными. WAN могут связывать компьютеры, находящиеся в одном городе, а могут соединять компьютеры межнациональной корпорации, филиалы которой находятся в разных частях света.
Интернет не только связывает между собой тысячи сетей, но и соединяет миллионы отдельных пользователей. Чтобы получить доступ к Интернету, они пользуются услугами так называемых фирм-провайдеров. Провайдер услуг Интернет (Internet Service Provider – ISP) – это организация, имеющая один или несколько сетевых серверов, обладающих доступом к Интернету. Каждый сервер ISP поддерживает множество модемов. Пользователи связываются с ISP-сервером по телефонным линиям из своего дома или офиса. После соединения пользователя с ISP он становится по существу удаленным клиентом сервера ISP и пользуется для соединения с Интернетом телефонными линиями и модемом.
Вышеописанный способ соединения применяется частными пользователями в России почти в 95 % случаев. В Европе этот процент ниже – около 50 %.
Существуют также другие способы организации доступа к сети: по выделенным линиям, радиоканалу и т. п. В нашей стране эти способы мало используются частными лицами. Для организаций они подходят больше.
Итак, каждый сервер, соединенный с Интернетом, – это часть Интернета. Иначе говоря, Интернет представляет собой множество соединенных друг с другом серверов LAN, WAN и ISP, через которые осуществляют выход в сеть отдельные пользователи.
Несколько слов о концепции доменов в сети. Имя домена (domain name) вместе с предшествующим ему идентификатором протокола передачи данных (protocol identifier) и любым стандартным префиксом протокола представляют собой базовый универсальный указатель ресурса, или URL (universal resource locator). Пример имени домена – yandex.ru. Этому домену принадлежит все, что начинается с символов yandex.ru, а также все службы домена. Среди различных служб, предоставляемых доменами, отмечу протоколы HTTP (hypertext transport protocol), FTP (file transport protocol), услуги Telnet и т. д.
Например, чтобы попасть на главную Web-страницу сервера jamsa.com, нужно отправиться по адресу http://www.yandex. Аббревиатура «http» сообщает браузеру, что для передачи данных следует использовать протокол HTTP, а символы www обозначают стандарт протокола (protocol-standard). Более того, любая Web-страница, URL которой является расширением адреса указанной выше страницы, содержится в домене yandex.ru. Префикс «ftp» сообщает браузеру, что связь должна Осуществляться именно с помощью этого протокола.
Каждый домен может содержать несколько серверов, а большинство доменов обладают множеством внутренних адресов. Несмотря на то что многие компании название своей Web-страницы начинают с имени домена, это справедливо далеко не во всех случаях. Например, можно зарегистрировать имя вашего домена, как МуСоm-pany.ru. Но если вдруг вам покажется, что адрес http://www.Free-Mail-Service.com/ выглядит привлекательнее, можно зарегистрировать оба имени доменов и высокоуровневых URL с помощью Internik или той организации, которая занимается регистрацией доменов в вашей стране. После этого можно использовать оба имени доменов.
Увеличение количества индивидуальных пользователей, имеющих доступ к Интернету, представляется еще более важным, чем увеличение количества серверов, имеющих выход в Интернет. В течение последних 6 лет число индивидуальных пользователей Интернета удваивается каждые 9 месяцев. В настоящее время число пользователей Сети увеличивается каждый месяц приблизительно на 250 000. В часы «пик» в сети одновременно находятся до 70 млн пользователей одновременно!
Как уже было отмечено ранее, основу Интернетом составляет множество сетей. Любой пользователь может соединиться с Интернетом с помощью телефонных сетей и модема через- ISP или через корпоративный компьютер, подключенный к локальной или глобальной компьютерной сети. Для работы с миллионами пользователей Интернет должен пользоваться некими средствами передачи информации. Как каждая радиостанция ведет свои передачи на уникальной частоте, чтобы не создавать помех для других радиостанций, так и каждый сетевой компьютер должен передавать данные (иначе говоря, связываться с другими компьютерами), используя свою уникальную «частоту». Разумеется, «частота», на которой компьютер передает данные, определяется не так, как для радиостанций.
Для передачи информации компьютеры используют уникальный для каждого сетевого компьютера адрес. Подавляющее большинство сетей управляет передачей данных с помощью метода, называемого коммутацией пакетов (packet switching). Более того, принцип коммутации пакетов используется и в Интернете.
С конца 1960-х гг. технологии начали взрывообразно развиваться и увеличение скорости процессоров стало обычным явлением. Способность процессора обрабатывать команды быстрее и с большей надежностью (robust-ness) (надежность – субъективная характеристика качества выполнения программы) открывала новые перспективы для контроля и передачи информации. С появлением новых способов хранения данных пользователи осознали необходимость объединения компьютеров в сеть – так будет легче обмениваться информацией.
Медленно работающие, тяжеловесные компьютеры очень скоро начали представлять интерес лишь с историко-антикварной точки зрения. К сожалению, проектировщики систем (у которых, похоже, были бы проблемы и при работе с современными технологиями) поначалу просто не знали, каким должен быть следующий этап в развитии компьютерных технологий. Они рассматривали способы создания возможности мгновенного, или почти мгновенного, соединения большого количества компьютеров с одним головным компьютером.
После длительных исследований был предложен так называемый принцип коммутации пакетов – модель передачи сообщений, которая с конца 1960-х гг. легла в основу работы многих сетей, включая сеть Интернет.
В сети, работа которой основана на принципе коммутации пакетов, сетевое программное обеспечение разбивает данные на отдельные части (пакеты). Затем это программное обеспечение отправляет пакеты компьютеру-получателю. Кроме пересылаемых данных, каждый пакет содержит адрес источника (адрес компьютера-отправителя) и адрес назначения (адрес компьютера-получателя). Таким образом, пакет представляет собой как бы контейнер, внутри которого находится часть передаваемой информации, а сверху написаны адреса назначения и источника.
Компьютер-отправитель посылает пакет, используя электронное оборудование и физический канал связи. Первоначально предполагали, что пакет должен «путешествовать» по каналам, которые повторяют физическую структуру сети. Каждый сетевой компьютер должен проверить адрес назначения пакета. Если компьютер не является получателем пакета, то пакет передается дальше по сети к следующему компьютеру.
После того как пакет достигает пункта своего назначения, программное обеспечение компьютера-получателя преобразует все пакеты в один файл данных. Сетевое программное обеспечение каждого компьютера контролирует поток пакетов и распределяет их, отводя каждому тот канал, который окажется свободным. Для этого используется процесс коммутации. Однако этот процесс абсолютно не похож на работу железнодорожных стрелок: для каждого поезда отводится свой путь, контролируется поток поездов и избегаются столкновения.
Если один из каналов выходит из строя или по каким-то причинам становится недоступным, сетевое программное обеспечение старается автоматически перераспределить пакеты на соседние свободные каналы. В устройстве большинства сетей предусмотрено выделение отдельного компьютера для управления процессом движения пакетов. В большинстве случаев сообщения, переданные другими входящими в сеть компьютерами, могут достичь лишь этого управляющего компьютера, который называется сетевым сервером (network server computer). Обычно специалисты употребляют для обозначения сетевых серверов термин «коммутатор пакетов» (packet switch) или, более формально, «процессор интерфейсов сообщений» (Interface Message Processor).
Принципы коммутации пакетов легли в основу подавляющего большинства сетевых коммуникаций. Однако именно коммутация является источником многих проблем, связанных с безопасностью передачи сообщений по сети.
Как было объяснено в предыдущем разделе, сетевой сервер передает пакет по тому каналу, который в данный момент наиболее доступен. В локальных сетях коммутатор передает пакеты, не заботясь о защите информации от доступа извне. Однако, когда информация передается по Интернету, может возникнуть следующая ситуация: при передаче пакета из компьютера, находящегося у вас дома, на компьютер, стоящий у вас в офисе, пакет может пройти сквозь сервер, принадлежащий фирме-конкуренту. В следующих главах вы узнаете, как шифровать сообщения и информацию, чтобы защитить их от перехвата при передаче.