ЧАСТЬ ПЕРВАЯ. ВВОДНАЯ

Глава 1. Хакер: кто он?

"Ежели один человек чего построил, то другой завсегда разломать сможет... "

Известный кузнец из известного фильма

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

Растиражированный западным кинематографом реальный образ хакеров так же далек от реальности, как фильмы о Джеймсе Бонде или бюджет Российской Федерации. В той же мере приближены к реальности крайние точки зрения: хакерство – это хорошо, хакерство – это плохо. Хороший или плохой… Решайте сами! Тем более что, наверное, многие из нас в душе немножечко сами злобные хакеры. Не стану утверждать, что последнее высказывание справедливо в ста процентах случаев.

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

Слово «хакер» сейчас используют в двух значениях:

– это человек, который прекрасно знает компьютер и пишет хорошие программы;

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


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

Английский глагол to hack применительно к компьютерам может означать две вещи – взломать систему или починить ее. В основе этих действий лежит общее начало: понимание того, как устроен компьютер и программ, которые на нем работают. Двусмысленность термина «хакер» ведет к парадоксам. Хакер – это и герой, и хулиган, и расчетливый преступник; мастер киберреальности и угроза компьютеризированному обществу. Отсюда крайности в оценке: хакеры подвергаются либо полной идеализации, либо такому же полному очернению.

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

Третье поколение киберреволюционеров – хакеры начала 80-х гг. XX в. – создали множество прикладных, учебных и игровых программ.

Возможно, кто-то из вас думает, что хакеры – это самые страшные монстры, которых породил на свет Божий безумный XX век. Не стану оспаривать чью-то правоту, а просто постараюсь помочь вам разобраться в самих терминах. А они (это важно!) вводят порой в заблуждение.


Согласно словарю известного Guy L. Steele хакеры подразделяются на следующие виды.

1.Hacker:

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

– энтузиаст программирования; индивидуум, получающий удовольствие от самого процесса программирования, а не от теоретизирования по этому поводу.

2.Cracker. Основная задача кракера состоит в непосредственном осуществлении взлома системы с целью получения несанкционированного доступа к чужой информации, иначе говоря, для ее кражи, подмены или для объявления факта взлома. Кракер (в отечественной терминологии «крякер») по своей сути ничем не отличается от обычного вора, взламывающего чужие квартиры и крадущего чужие вещи. Он взламывает чужие вычислительные системы и крадет чужую информацию.

Кто-то тут же отмахнется! Точно, по телевизору не про тех говорили, мол, «свистнули» чьи-то пароли и продавали халявный доступ в Интернет? Низменность мотивов кракеров приводит к тому, что 90% из них являются «чайниками», которые взламывают плохо администрируемые системы, в основном благодаря использованию чужих программ (обычно эти программы называются exploit). Причем это мнение тех самых 10% профессиональных кракеров. Такие профессионалы – бывшие хакеры, ставшие на ]путь нарушения закона. Их, в отличие от кракеров-«чайников», остановить действительно очень сложно, но отнюдь не невозможно (вспомните того же Митника). Лучше всего, как показывает практика, для установки лучшей безопасности собственного компьютера пригласить в гости… профессионального хакера. И дешевле и в принципе, удобнее. Но и темных лошадок (то бишь кракеров) также ни в коем случае не следует сваливать в одну кучу, обзывая их при этом «ворюгами».

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


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

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

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

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

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

– исследование вычислительной системы с выявлением изъянов в ней;

– разработка программной реализации атаки;

– непосредственное ее осуществление.

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

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


Глава 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).

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

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


Глава 3. Что необходимо знать для понимания хакинга

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


3.1. Языки программирования


Основой хакерства является вовсе не умение картинно сидеть перед экраном монитора, азартно топча клавиатуру, а знание языков программирования. Каких именно? Кратко расскажем о языках, которые используются для хакинга.

Год рождения ARPANET был также годом, когда хакер из «Bell Labs» по имени Кен Томпсон (Ken Thompson) создал Unix. Томпсон был вовлечен в работу по разработке операционной системы, называемой Multics. Multics должна была облегчить использование и программирование ЭВМ, чтобы увеличить производительность работы. Этот проект был выставлен на продажу, но никогда не пользовался таким успехом, как операционная система. Томпсон отказался от среды Multics и начал обыгрывать смесь идей Multics’a со своими собственными.

Другой хакер по имени Деннис Ричи (Dennis Ritchie) придумал новый язык, названный «С», для использования под «изначальным» Unix’oM Томпсона. Подобно Unix, «С» был разработан, чтобы быть естественным и гибким. Интерес к этим инструментам распространился в Bell Labs, и они получили популярность в 1971 г., когда Thompson и Ritchie выиграли тендер на то, что мы теперь называем системой автоматизации делопроизводства для внутреннего использования в фирме.

Традиционно операционные системы писались на ассемблере, чтобы извлечь максимально возможную эффективность (КПД) из хост-машин. Томпсон и Ричи были среди первых, кто понял, что аппаратные средства и технология компилирования стали достаточно хороши, чтобы операционная система полностью могла быть написана на «С», и к 1974 г. среда целиком была успешно перенесена на несколько машин различных типов.

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

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

В начале 1996 г. появился новый язык программирования – «Java». На домашней странице Consortium Java была внесена в список так называемых Мобильных кодов – одного из перспективных направлений развития технологии World Wide Web. И вот в конце 1996 г. на Западе начался бум Java, который к моменту проведения выставки Unix-Expo-96 докатился и до нашей страны. Согласно истории технология Java (кофе) роди-лась из проекта Oak (дуб), основной целью которого была разработка объектно-ориентированных средств описания и коммуникации различного рода электронных устройств. Из-за неудачи Oak в 1994 г. опыт, накопленный в рамках его реализации, было решено применить к продуктам, ориентированным на применение в Интернете. С апреля 1995 г. по сети свободно распространяется Hotjava – интерфейс просмотра страниц World Wide Web для платформ Sun.

Буквально через месяц Netscape Communication – тогдашний законодатель моды в разработке программ-интерфейсов Интернета – покупает лицензию на Java. С этого момента начинается золотое время для этой технологии. В настоящее время Hotjava реализована не только для Sun-. OS и Solaris, но и для многих других платформ и Windows.

Система программирования на Java позволяет компилировать программы для компьютерной платформы, на которой она стоит в том же ключе, как и любая другая, например С или C++. В этом случае основным отличием Java-программ, которые называются Java-applications, является использование библиотеки Java-классов, которые обеспечивают разработку безопасных, распределенных систем. При этом утверждается, что язык позволяет делать гораздо меньше ошибок при разработке программ. Главным при этом является тот факт, что в Java напрочь отсутствует адресная арифметика. Гораздо более интересным является разработка мобильных Java-байт-кодов, которые в терминах Java-технологии называются applets.

Известный в свое время язык программирования Модула-2 был создан Н. Виртом в 1979 г. и впервые реализован на мини-ЭВМ PDP-11. В 1970-х гг. Паскаль получил широкое признание у пользователей ЭВМ и преподавателей, однако первоначально он был разработан для обучения программированию и как язык разработки програмного обеспечения имел много недостатков. В Модуле-2 эти недостатки были устранены, но при этом сохранены логическая структура и характерные черты его предшественника. Кроме того, в Модуле-2 были введены новые мощные языковые средства.

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

Первые версии языка программирования Си++ (тогда он назывался «Си с классами») были разработаны в начале 1980-х гг. Бьярном Страуструпом, сотрудником знаменитой AT&T Bell Labs, где ранее были разработаны операционная система Unix и язык программирования Си. По признанию самого автора языка, Си++ никогда не разрабатывался на бумаге. Проектирование, реализация и документирование новых возможностей происходили фактически одновременно. Единственной целью разработки было создание языка, на котором было бы удобно программировать автору и его друзьям. За основу был взят популярный в среде профессиональных разработчиков язык программирования Си. Первыми средствами, которыми был расширен Си, стали средства поддержки абстракций данных и объектно-ориентированного программирования. Как это принято в AT&T, описание нового языка не было опубликовано сразу. Первыми его пользователями стали сами сотрудники Bell Labs.

Perl. Когда встает вопрос о создании приложений системного уровня, в частности сценариев Web-cepвepoв, на первый план выходит язык программирования Perl -прежде всего благодаря своей проверенности и богатству возможностей. Perl (Practical Extraction and Reporting Language, или, как иногда расшифровывают это название создатель Perl и другие его фанатичные приверженцы, – Pathologically Eclectic Rubbish Lister) является одним из наиболее мощных и популярных языков программирования.

История «Perl» началась в 1987 г., когда человек по имени Ларри Уолл занялся разработкой языка, необходимого ему для решения проблем системного программирования, с которыми он сталкивался как администратор Unix-систем. Несмотря на такое скромное начало, Perl вырос в полнофункциональный сложный язык. Он привлекателен тем, что заполняет разрыв между методами программирования коммандного процессора Unix и С-приложениями, обладая простотой первых и функциональностью последних. Уолл характеризует его так: «Perl – это интерпретируемый язык, оптимизированный для сканирования произвольных текстовых файлов, извлечения информации из этих файлов и печати отчетов на основе этой информации. С его помощью также можно решать многие задачи системного управления. При разработке этого языка целью была не столько красота (небольшой объем, элегантность и оптимальность), сколько практичность (простота в использовании, эффективность и полнота)». Уолл указывает также, что синтаксис выражений Perl находится в полном соответствии с синтаксисом выражений языка С; Perl не ограничивает произвольно объем ваших данных – «если вы располагаете памятью, Perl может загрузить в нее весь ваш файл как одну строку»; рекурсия может быть неограниченной глубины, а кроме того, язык применяет изощренные методы сопоставления с образцом для быстрого сканирования больших объемов данных.


3.2. Почему ломают сети?


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

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

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

В 1997 г. ФБР обратилось к правоохранительным органам России. Дело в том, что американские глобальные коммерческие информационные сети, такие как America Online и Microsoft Network, за 4 месяца 1996 г. понесли ощутимые убытки от хакеров, использующих для входа в сеть фальшивые кредитные карточки. Проследив линки, службы безопасности указанных сетей передали всю информацию ФБР, так как было выявлено, что большинство незаконных подключений производится со стороны России. Если честно, то в Интернете определить источник подключения достаточно просто, но дорого (приходится держать дополнительный штат сотрудников). В АОЛ и МСН такие подразделения существуют. Ну и что? Первым делом начинается проверка всех официальных точек входа в сеть, т. е., если в городе имеется официальное представительство сети со своим номером телефона для подключения к конкретной сети, все подключения начинают контролировать автоматически. При этом работает АОН или CID (если набор тональный). Если абонент официально подключен к сети – все нормально. Если номер не определяется – абонента «выкидывает с линии». Если номер телефона не совпадает с базой данных официальных пользователей – соединение автоматически берется на контроль. Не спасает и подключение через Интернет (через промежуточные сети), так как текущий линк всегда фиксируется при соединении (этот момент используется сетью для автоматического роуминга пакетов данных). Только в Москве в 1996 г. было выявлено более 360 человек, незаконно использующих коммуникационные услуги. Тут есть юридическая тонкость – сидя дома, человек совершает преступление на территории США. Требование привлечь их к ответственности в соответствии с законодательством США даже в наши маразматические времена – дикость. Тут можно годами разбираться. Теоретически здесь применимы статьи УК РФ, касающиеся финансовых преступлений, т. е., если хакера нельзя привлечь за взлом сети, его можно привлечь к уголовной ответственности по другим статьям (например, за хулиганство, подделку денежных знаков и т. п.).

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


3.3. Протокол TCP/IP


Семейство протоколов TCP/IP широко применяется во всем мире для объединения компьютеров в сеть Интернет. Более подробную информацию о протоколах TCP/IP можно найти в RFC (Requests For Comments) – специальных документах, выпускаемых Сетевым Информационным Центром (Network Information Center – NIC).

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

Администратор присваивает IP-адреса машинам в соответствии с тем, к каким IP-сетям они подключены. Старшие биты 4-байтного IP-адреса определяют номер IP-сети. Оставшаяся часть IP-адреса – номер узла (хост-номер). Существуют 5 классов IP-адресов, отличающиеся количеством бит в сетевом номере и хост-номере. Класс адреса определяется значением его первого байта. Из этих 5 классов широко используются только первые три.

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

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


Класс Начало диапазона Конец диапазона Маска
А 10.0.0.0 10.255.255 255.255.0.0.0
В 172.16.0.0 172.31.255 255.255.255.0.0
С 192.168.1120 192.168.112.255 255.255.255.0

Прежде чем вы начнете использовать сеть с TCP/IP, вы должны получить один или несколько официальных сетевых номеров. Выделением номеров (как и многими другими вопросами) в Интернете занимается DDN Network Information Center (NIC). Выделение номеров производится бесплатно и занимает около недели. Вы можете получить сетевой номер вне зависимости от того, для чего предназначена ваша сеть. Даже если ваша сеть не имеет связи с объединенной сетью Интернет, получение уникального номера желательно, так как в этом случае есть гарантия, что в будущем при включении в Интернет или при подключении к сети другой организации не возникнет конфликта адресов. Адрес для вашей сети может предоставить ваш провайдер. Чаще всего так и делается.

Адресное пространство сети может быть разделено на непересекающиеся части – «подсети», с каждой из которых можно работать, как с обычной сетью TCP/IP. Таким образом, единая IP-сеть организации может строиться как объединение подсетей.

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


3.4. Порты


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

Сообщения должны содержать запрос на предоставление услуг. Они отправляются процессами-клиентами. Например, сервер SMTP всегда ожидает поступлений сообщений в порт 25. Если клиент SMTP желает получить услугу, он посылает запрос в порт 25 на машину, где работает сервер. Данный номер порта является общеизвестным, т. е. фиксированным номером, официально выделенным для услуг SMTP. Подобные общеизвестные номера определяются стандартами Интернета.


Глава 4. Глобальная сеть — место больших возможностей

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

Для доступа к информации компьютера, находящегося в сети, используется множество способов, но все их можно подразделить условно на две большие группы:

– взлом «снаружи». Взлом с использованием удаленного доступа;

– взлом «изнутри». Взлом с помощью какого-либо ПО, находящегося на взламываемом компьютере.

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

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

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

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

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

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

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

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


Несколько советов по защите серверов и машин, использующих сеть.

1. Следует ограничить число людей, имеющих удаленный доступ к управлению вашим Web-сервером, и тщательно следить за этим доступом. Дистанционное администрирование (как и доступ к корневому каталогу) - хороший подарок хакеру.

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

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

4. Установите систему обнаружения вторжений, которая немедленно будет ставить в известность администратора сети обо всех проблемах, требующих устранения.

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

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

6.Неправильно написанные, сконфигурированные и установленные на сервере скрипты Perl и CGI (Common Gateway Interface) могут стать причиной возникновения «дыр» в системе защиты. Этими средствами надо поль пзоваться крайне аккуратно; все скрипты должны проверяться опытными специалистами.

7.Следует обеспечить аутентификацию администраторов. Все большее распространение получают различные биометрические средства идентификации по голосу, отпечаткам пальцев и узору сетчатки, если, конечно, ценность информации достаточно велика (они стоят примерно по 300 долл. в расчете на одного пользователя).

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


Теперь еще несколько советов для укрепления безопасности. Они обойдутся вам очень дешево, но время доказало эффективность этих мер.

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

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

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

4. Предоставляйте администраторские права только тем людям, которым они реально нужны. Помните, что каждый раз, когда вы даете такие привилегии, в системе защиты появляется еще одна потенциальная «дырка».

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

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

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

8. Внимательно изучайте все продукты, обеспечивающие информационную безопасность. Убедитесь, что они работают именно так, как было обещано производителем. Подумайте, можно ли укрепить систему защиты, не устанавливая новый продукт, который потребует от вас определенных усилий.

9. Уполномочьте кого-либо из сотрудников принимать оперативные меры в случае угрозы информационной безопасности – от аварийной остановки Web-сервера до вызова охраны для удаления проштрафившегося сотрудника за пределы организации.


4.1. Как обманывают провайдера?


Для хакера выбор провайдера – это отправная точка, с которой он начинает свой путь по стезе порока. Хакеры, как правило, глупыми не бывают. Как говорили на Диком Западе, «либо ты быстрый, либо мертвый». Так же и тут: либо умный, либо совсем даже и не хакер. Однако наличие ума не означает отсутствия лени, и вот таких ленивых хакеров и должен отлавливать провайдер, чтобы не позволить им грабить нормальных клиентов фирмы и распугивать всю клиентуру.

Разумеется, хакеры учитывают то обстоятельство, что практически все провайдеры требуют идентификации их личности (Ф.И.О., паспортные данные и т. д. ), и принимают различные меры предосторожности.

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

Для начала хакер берет любую телефонную базу, например КОТИК или ее Online-версию: http:// www.xland.ru:8088/tel_win/owa/tel. form, и вводит любую выдуманную им фамилию. Он не станет вводить тривиальные фамилии вроде Иванов, Петров, Смирнов, Андреев, Алексеев и т. д. Как правило, берется что-то не совсем обычное, первое, что приходит в голову: Левашов, Дубинин, Авдотин и т. п. Плюс ко всему необходимо выдумать левые паспортные данные: серию, номер, кем выдан, когда.

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

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

Если АОН есть, но хакеру все же надо остаться анонимным, то он воспользуется АнтиАОНом. Функции АнтиАО-На присутствуют практически во всех телефонных аппаратах с АОН (например, в аппаратах «Русь» или в «Phone Master»). Аппаратура АОН имеется у всех провайдеров, использующих модемы «Zyxell» (например, «Deol»), у всех провайдеров, производящих оплату в кредит (МТУ-Ин-форм, ГОТ и др.). Это не самая дорогая аппаратура, однако она помогает моментально вычислить паршивую овечку в стаде Интернет-клиентов.

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


4.2. Кто и как нас ломает?


На глобальную сеть Интернет постоянно совершаются нападения, причем на разные серверы. В связи’ с этими «виртуальными сбоями» страдают и обычные клиенты, и солидные фирмы. Чем грозят пользователям эти взломы?

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

Но каким образом такое могло произойти? У каждого пользователя Интернета есть свой адрес, например www.microsoft.com – адрес компании «Microsoft». При взломе меняется адрес, соответствующий интернетовскому имени пользователя, а его собственное имя присваивается другому адресу, и с этого момента все сообщения идут по ложному адресу. В нашем случае хакеры заменили слово в имени «ИнфоАрт» (www.ritmpress.ru) на имя сервера, где находится порнография, на, извините, www.free.ru. Поэтому те, кто интересовался в Интернете погодой или финансовыми новостями через привычный сервер, наталкивались на… хм, ну, понятно, что. Неприятности, которые, согласитесь, можно пережить. Но, к сожалению, сам факт «перемены адресов» в Интернете может иметь значительно более серьезные последствия. Что означает на самом деле взлом сервера и изменение адреса? Что конкретно еще могут сделать такие злоумышленники? Можно взять и создать липовую фирму в Интернете, при помощи которой каждый из нас как будто бы может заказать себе авиабилеты на нужный рейс в любую точку земного шара. Фирма вроде бы и есть, но реально она никаких услуг не оказывает. Мы перевели деньги на счет несуществующей компании и после этого можем до бесконечности долго ожидать, когда же эти самые билеты окажутся у нас на руках. В это время наши деньги уже давно перекочевали на счет компании-«призрака».

Взломав сервер, можно выйти и на банковскую компьютерную систему, подключенную к Интернету. Но, слава Богу, не все банки работают в режиме он-лайн. А что, если какому-нибудь «взломщику» придет-таки в голову мысль «исправить» счет банка? И все наши денежки потекут по компьютерным сетям на какой-то совсем другой счет, в какой-нибудь банк далекой Швейцарии?

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

Существует определенная методика взлома сетей. Разумеется, они недоступны без пароля. А поэтому хакер прежде всего проникает в известное ему место и выискивает там работающий пароль к сайту, который хочет взломать. Затем он должен войти в этот сайт, например так: http: //www. chat.ru/index. html. Удаляет слово index.html и набирает, скажем, .htaccess, например www.chat.ru/.htaccess. Если ему повезет, он получит следующее: AuthUserFile/www/chat. ru/.htpasswd ‹ – место, где лежит файл с паролями AuthGroupFile/dev/null ‹ – место, где лежит groupfile AuthName Chat Only Directory ‹ – место, где находится popup, который просит его ввести password/login AuthType Basic ‹ – другие типы авторизации apache btw Limit GET POST PUT ‹ – require valid-user ‹ -


Но реально все это не нужно для начала. Если. htaccess прошел сразу, вместо него пишут. htpasswd и все ОК.

Находят passwordfile (.htpasswd). Удаляют, htaccess и вместо набирают (.htpasswd ).

После этого хакер получит файл паролей. Пароли будут зашифрованы. Это будет выглядеть примерно так: ocean: ORJFyfmfoetf. sydgator: 458mLs4euQHwo de-mil: o7ad9QtJIklTY demi2: Fx93hhGP/oTs6Y 233244: ZXEHRGfdsL9E346.

Первое слово – логин, остальное – пароли. Чтобы декодировать пароли, хакеру надо будет сначала скачать программу-декодер. Искать эту программу несложно, она свободно лежит по адресу http: //astalavi-sta. box.sk/.

Сохранив полученные логины и пароли, хакер разархивирует John The Ripper и набирает (предварительно поместив текстовой файл в директорию, где лежит ripper): John xxx. txt-single (это самый быстрый способ и самый простой алгоритм); John xxx. txt-wordfi-le: password. 1st (это посложней); John xxx. txt-incre-mental (это самый сложный алгоритм и занимает время, зато самый надежный). Этим описанием хотелось бы привлечь внимание разработчиков и провайдеров к необходимости разработки более совершенной системы шифровки паролей.

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


Оказывается, глупые юзеры сами готовы рассказать всем свои пароли! Для этого им нужен лишь маленький толчок. Для начала хакеры выбирают свою жертву. Это может быть сосед по лестнице, или друг по чату, или еще кто-нибудь. Выбрав жертву, хакер старается узнать как минимум две вещи, а именно: название провайдера, через которого подключается его жертва, и его логин. Благо, обе эти вещи сильно никем не скрываются и поэтому диалог: – А кто твой провайдер? – Я подключаюсь через провайдера Super Internet Provider, – не вызовет никакого подозрения. Теперь, зная провайдера, хакер узнает логин юзера. Часто (читай: почти всегда) логин пользователя такой же, как и адрес электронной почты, т. е. если электронный адрес пользователя выглядит так: LAMMER@super-provider.ru, то его логин с вероятностью в 99 % будет – «LAMMER».

Теперь, зная провайдера и логин юзера у этого провайдера, настает время узнать e-mail службы поддержки у этого провайдера. Чаще всего этот адрес выглядит как support@super-provider.ru или admin@super-provi-der. ru. И еще, если есть возможность, следует посмотреть хотя бы одно письмо от этой самой службы поддержки, чтобы знать форму обращения к юзеру и всякие стандартные приветствия типа «Здравствуйте, дорогой наш пользователь LAMMER!!!» и прощания. Они нам пригодятся. Шаг второй. Когда хакер знает весь необходимый минимум, приходит время для создания почтового адреса на каком-нибудь бесплатном сервере, так как оттуда можно будет забирать почту бесплатно, не звоня провайдеру, и потому что можно получить адрес с доменом @ru. ru (но это мелочи). Но создает он адрес не от «фонаря». Он не называет свой ящик die_you_lammers@.., а скромненько так пишет support-super-provider(r).., или admin-su-per-provider(r).., или что-нибудь в этом роде (содержащее или название провайдера, или слова admin или support). Итак, сделав все вышеописанное, хакер приступает к самой ответственной части – написанию письма глупому юзеру. В принципе, в письме он может написать любую чушь типа: «Уважаемый пользователь! К сожалению, на вашем счету был обнаружен факт двойного доступа к нашему серверу, т. е. в одно и то же время, используя ваш аккаунт, в систему вошли 2 (два) пользователя. Вследствие чего возникла необходимость в смене вашего текущего пароля доступа к нашей сети. Вам необходимо ответить на это письмо, используя следующий формат: log: ваш логин ор: ваш старый пароль npl: ваш новый пароль пр2: ваш новый пароль em: ваш e-mail Эти сведения должны находиться в начале вашего сообщения. Обратите внимание на то, что новый пароль должен быть повторен дважды! Это необходимо для точной идентификации Вашего аккаунта. Рекомендуется прислать свои сведения до 13.06.2002 г., так как по истечении этого срока возможно отключение вашего аккаунта. Желаем вам успехов! С уважением, администрация сервера http://www.super-internet-provider.ru.

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

У хакеров обычно богатое воображение, они и не такое придумывают. Последний рывок и… После того как текст письма готов, хакер начинает скрупулезно подделывать заголовок письма. В принципе, все очень просто: в строке «от» он пишет: From: «Super Provider Support» support@super-provider. ru. Если юзер вздумает посмотреть, от кого пришло письмо, он увидит РЕАЛЬНЫЙ адрес службы поддержки. В строке «кому» он пишет: То: lammer@super-provider.ru. И теперь самое интересное: в строке «ответить туда-то» находится следующее: Reply-To: «Super Provider Support» support-super-provider@ru.ru. Видите, «support-super-provider@ru. ru» – это адрес хакерского мыла (который он создал), и при ответе почтовая программа отправит именно по этому адресу. В теме письма пишут что-то типа Subject: Внимание. И в целом заголовок письма выглядит следующим образом: Reply-To: «Super Provider Support» From: «Super Provider Support» To: lammer@super-provider.ru Subject: Внимание. Date: Tue, 13 Jim 2000 13:13:13 +0000 MIME-Version: 1. 0 Content-Type: text/plain; charset= «koi8-r» Content-Transfer-Encoding: 8bit. Дальше идет служебная информация. Заканчиваем наше занятие! Все! Отправляем письмо.

Вот и все… Ах да, вот еще что: пароли можно добывать не только у провайдера. Как говорится, «легко изменив текст письма», можно «попросить» пользователя выслать пароли от своего почтового ящика и т. д. Смех смехом, но срабатывает в поразительном числе случаев. Для достижения наилучшего результата рассылают письма не одному адресату, а нескольким – кто-нибудь да клюнет.

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

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

Теперь только в дешевых фильмах увидишь некоего гражданина, копающегося в мусорной корзине своей будущей жертвы в надежде узнать имена, фамилии, даты рождения всех родственников таковой вплоть до десятого колена, а также всех их собак, кошек, крыс, хомяков и прочей живности. И не без успеха! А как же еще: что вам, например, первым приходит на ум? Конечно, имя вашей (или не вашей) подруги или кличка вашей собаки, ну, или слово какое непотребное (но это уже от воспитания зависит).

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


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

На этом наше лирическое вступление заканчивается, и начинается уже сугубо технология. Где хранятся пароли в Windows? Зашифрованные пароли в Windows 95, как известно, хранятся в основном каталоге, в файлах с расширением PWL. С учетом того, что не только «у нас здесь», но и «у них там» бывают персональные компьютеры коллективного пользования, да и сети локальные местами встречаются, на каждого пользователя заводится свой PWL.

Кстати, название файла соответствует логину данного пользователя. Зашифрованы эти файлы, в принципе, достаточно прилично. Если кому-либо интересно, то, взяв в руки какой-нибудь дизассемблер (HIEW, QVIEW), можно посмотреть процедуру шифрования. Она находится в файле MSPWL32. DLL. в версии OSR2pus со смещением 488(hex). Вот уж где накручено! Имеется счетчик (назовем его N) от нуля до «сколько надо». Имеются три таблицы. В соответствии со счетчиком N берется байт из первой таблицы (X). По смещению X+N, урезанному до 8 бит, из второй таблицы берется другой байт (Y). Затем по адресу X+Y, опять же урезанному до 8 бит, из третьей таблицы берется третий байт (Z). После столь хитрых манипуляций командой XOR с байтом Z шифруется байт информации, после чего счетчик инкременти-руется и все повторяется сначала. Кстати, таблиц на самом деле может оказаться и две, и одна (используются несколько раз на разных этапах). Расшифровывается все это аналогично (и той же процедурой), ибо команда XOR обратима. Если же у вас стоит какая-то другая версия Windows, не 95 или 98, то это дела принципиально не меняет. Видели хакеры лилипутов и покрупнее.

Не знаю уж, в чьих нездоровых мозгах могла появиться мысль использовать для шифрования команду xor byte ptr [eax+ebp], cl. Может, запутать хотели? Но команда уникальна, такие команды в обычных программах еще поискать надо. Стало быть, ищем соответствующую ей комбинацию 30h, OCh, 28h – и все дела. Дальше – просто. Берем MSPWL32. DLL и со смещения 511 h (или там, где найдем) ставим 90h, 90h, 90h – команды NOP (пустая операция). И все! – команда не выполняется! Что при этом произойдет? Как ни странно, ничего страшного и даже не очень страшного. И даже никто ничего не заметит!!! Все останется как всегда, с одним лишь исключением: ВСЕ логины/пароли будут видны, так сказать, невооруженным глазом!

Тут, правда, есть два неприятных момента. Во-первых, во время работы Windows вам не удастся подобным образом надругаться над их «святая святых»: писать в этот файл нельзя. Значит, придется перегружаться в режиме эмуляции MS-DOS, а это лишнее время, которого может не быть. Во-вторых, а это еще хуже, вам надо будет стереть все PWL’bi, иначе даже в Windows не пустят: а вот тут у законных пользователей могут возникнуть лишние вопросы и подозрения.

А можно проще? Без дизассемблеров и «насильственных действий»? Можно! И вот здесь я скажу то, за что (и за многое, увы, другое) Windows 95 иначе, как MustDie, по праву никто не называет. Вы, наверное, думаете, что пароли расшифровываются только тогда, когда это надо, а затем «выжигаются» из памяти «каленым железом»? Ну вот еще… Открытые пароли ПОСТОЯННО хранятся в системе – с момента ВХОДА в Windows данного пользователя и до момента его ВЫХОДА! Вот вам и безопасность. Но этого мало: они доступны ЛЮБЫМ приложениям через API Windows. И вот результат: появляется программа PWLVIEW, которая спокойно показывает вам «всю подноготную» вашей (или не вашей) машины. В том числе и DialUp, и сетевые пароли. Формат выдаваемой информации таков: *Rna\l-e соедине-ние\1-й логин 1-й пароль *Rna\2-e соединение\2-й логин 2-й пароль и т. д.

Да, это все хорошо, но она работает в окне DOS. Но есть еще одна штука, PEEPER называется. Эта идет еще дальше. Пароль, как вы можете заметить, не показывается, вместо него звездочки. Так вот: запускаем PEEPER, запускаем соединение, наводим мышь на звезды и в окне PEEPER видим… правильно, открытый пароль. Вы скажете: у меня нет ни времени, ни возможности ковыряться в чужой машине, нельзя ли стянуть у соседа этот самый PWL, а потом дома разобрать? Можно, только это вам ничего не даст: не будет он у вас работать. Вернее, он ОДИН не будет. Нужно унести еще и USER. DAT. После чего дома «создать» User’a с именем из PWL, заменить свой USER. DAT на цельнотянутый и еще добавить в Windows тянутый PWL. После чего войти в Windows под соответствующим именем и… Дальше в игру вступает PWLVIEW. Я все так и сделал, скажете вы, а вот тот User в Windows с паролем входил, а мне теперь не войти – пароля-то я не знаю. Что делать? Не беда! Уносим ТОЛЬКО USER. DAT! А теперь еще раз: Windows‘95 – MustDie! Как вам известно, кроме интерактивного доступа в Интернет, провайдеры предлагают еще и e-mail. Так вот, чтобы залезть в ваш почтовый ящик, в тот, что у вас на лестнице, нужен ключ (или лом). Чтобы залезть в ваш e-mail, нужен пароль (или виртуальный лом). И тут я скажу откровенно: мало кто из отечественных провайдеров заслуживает доброго слова! Пароль к РОРЗ-ящику всегда и у всех тот же, что и DialUp! «Ну и что?» – спросите вы. А дело в том, что пароль e-mail находится не в PWL’e, а в USER.DAT, и зашифрован он не так сильно, вернее, почти совсем не зашифрован!

Дело в том, что метод «шифрования» сильно UUE-кодирование напоминает, иначе говоря, из трех байтов делают четыре или из восьми битов – десять. Весь исходный пароль разбивается на части по три байта. В результирующей строке на один символ отводится 10 битов. Теперь к каждому байту исходной строки прибавляется ЗОН, если сумма больше, чем 7Ah, то он становится равен ЗОН, а к паре 9 и 10 битов добавляется единица.

Есть исключения. Если общая длина строки пароля не кратна трем, то она дополняется байтами 3Dh. Судя по всему, это ODh (конец строки)+30(1). В конце строки ODh, OAh: стандартное завершение. На мой взгляд подобрать пароль вручную проще, чем написать соответствующую программу: не каждый же день вы эти пароли подбираете! Где находится пароль – смотрите ниже, оттуда его и берем. А принцип прост: запускаем Internet Mail, заходим в Сообщение. Параметры. Сервер. Запускаем REGEDIT и переходим в HKEY_CURRENT_USER?Software?Microsoft?In-ternetMail and News?Mail?POP3?‹Bam сервер›: где и смотрим Password. (*) Удаляем пароль в Internet Mail. Первый подбираемый символ влияет на первый и второй байты, второй – на второй и третий, третий – на третий и четвертый. Теперь подбираем символ так, чтобы первый байт совпал с оригиналом, а второй или совпал, или был самый большой, но меньше оригинала. Аналогично для второго и третьего символов. С подбором третьего символа все четыре байта должны совпасть! Если нет – извините, вы ошиблись.

Естественно, после каждой замены символа нажимаем «Применить». Результат контролируем REGEDITOM, переходя выше/ниже для обновления информации. Когда первые три символа подобраны, возвращаемся к (*) для следующих трех, и так далее до конца. Разумеется, байт(ы) 3Dh подбирать не нужно! После некоторой тренировки на все это уходит меньше 15 минут. А где это счастье хранится? И, кстати, ведь кроме логина и пароля еще многое нужно знать, а откуда? Не звонить же провайдеру? – не надо никому звонить! Все в нем, в USER.DAT.

HKEY_CURRENT_USER?RemoteAccess?Addresses: и мы имеем список подключений. Да, но там ничего не понятно. Правильно! Выбираем байт, которого больше всего, и дешифруем им все остальные (обычный XOR). В результате, в куче всякой ерунды получаем ASCII-строку с номером модемного телефона провайдера.

HKEY_CURRENT_USER?RemoteAccess?Profile -Хподключение›?1Р: со смещения ОСЬ четыре байта задом наперед – первичный DNS, затем еще четыре – вторичный и т. д.

HKEY_CURRENT_USER?RemoteAccess?Profile -› ‹подключение›?юзер: логин. HKEYCURRENTUS-ER?Software?Microsoft?Windows -› CurrentVersion?In-ternetSettings?ProxyServer: Proxy- сервер и порт. Н К Е Y_CURRENT_USER?Software?Microso ft?Internct Mail and News? Mail: ?DefaultPOP3Server: ?DefaultSMTPServer: ?SenderEMail: ?Name: ?Organi-zation: это все и так понятно.

7РОРЗ -г ‹РОРЗ-сервер›: ?Account: ЭТО ПОНЯТНО.

?Password: Ну вот и он!

А что делать, если пользователь – мазохист и не хранит пароли в компьютере, а вводит их каждый раз с клавиатуры? И этому горю можно помочь. Существуют программы типа SPYWIN или KEYBOARD SPY. Они записывают все действия, производимые на компьютере. Достаточно подсадить одну из них и… если вам потом не лень будет разбирать те десятки килобайт, которые будут порождены этими шпионами. Естественно, их можно использовать и для других целей.

Специально привожу пример с последовательностью действий для устаревшей «Винды». Поверьте, в новых версиях (2000 и ХР) тоже можно поломать и прочитать пароли.


Загрузка...