Операционные системы настолько огромны, что просто невозможно толком проверить их, дабы ликвидировать все малейшие дефекты. Порой компьютерные менеджеры изменяют ОС, включая в них свойства или функции, которые им понравятся, и тем самым создают лазейки в системной зашите. Иногда мульти программисты, работающие над различными частями ОС, даже не советуются между собой по жизненно важным аспектам, что в конечном итоге может привести к системному конфликту, когда эти программные блоки соединяются друг с другом.
   Случайный пользователь не помнит о возможных нарушениях компьютерной зашиты. Хакер тоже может не помнить о них; но, если он обладает фундаментальными знаниями ОС, которая лежит в основе всех этих нарушений, то сможет, подумав, обнаружить лазейки и использовать их. В данной книге я не собираюсь углубляться в изучение технических аспектов каждой операционной системы, да настоящим хакерам это и не нужно. Найдите любую ОС, с которой сможете ознакомиться. Изучите основные команды и узнайте, как они запрограммированы. Вычислите способы, с помощью которых можно сымитировать команду, не набирая ее непосредственно в ответ на приглашение ОС. Что происходит с памятью при использовании команды? Можно ли изменить память? Вот такие веши важны для хакера, который хочет, чтобы его заветные мечты стали реальностью.
   В оставшейся части этой главы приведены примеры подобных технически ориентированных ха-керских методов. Причина проста и неоспорима:
   ничто хорошее в этой жизни не дается даром. Вам придется немало поработать, чтобы вершить великие дела, попав в систему. Конечно, никто не мешает просто изучать определенные веши, только когда приспичит, - например, какой-нибудь командный язык, или метод работы прикладной программы. Но, не обладая знаниями об основных принципах работы ОС, вы станете совершать свои взломы вслепую, и все особенности и дефекты системы пройдут мимо вашего внимания, как и любого обычного пользователя.
   А теперь давайте вернемся к началу главы: что же все-таки делать после того, как вы окажетесь внутри?
   оглядитесь ВОКРУГ
   Что можно обнаружить, взломав систему или сеть? Да что угодно!
   Там могут быть файлы для чтения, программы, которые можно запустить, пути соединения одного компьютера с другими, или одной сети с другими сетями.
   Поищите резервные файлы или файлы с автоматическим сохранением через определенный промежуток времени. Некоторые текстовые редакторы оставляют подобные файлы, которые может прочесть каждый, кто на них наткнется, и, если системный администратор недавно редактировал с помощью такого редактора файл, содержащий ценную информацию, например, файл с паролями, значит, вам повезло. Электронная почта тоже не всегда уничтожается автоматически, а скапливается в файлах на диске (возможно, спрятанных). Уничтоженные недавно файлы порой могут не уничтожаться немедленно, а становиться спрятанными, или переноситься в специальную директорию.
   Вы можете обнаружить журналы регистрации. При загрузке неопытные пользователи часто набирают пароли в окне приглашения к вводу имени, и в журналах встречаются сообщения о подобных ошибках. Например, если Джордж Вашингтон пытается войти в свой бюджет в UNIX, используя свой пароль "cherrytree", но набирает его слишком поспешно, происходит следующее:
   WashingtonUs1ername:cherrytree2Password:
   Джордж соображает, что поторопился. Он напечатал свое имя еще до того, как появилось входное приглашение, и его пароль, отнюдь не в виде звездочек, появился в строке пользовательского имени. Он несколько раз нажимает3, чтобы очистить экран, но ошибка-то уже сделана. Где-то в административных директориях появился регистрационный файл следующего содержания:
   Unsuccessful login of user cherrytree @ Tue, Mar 24,1992, 14:16:03
   Теперь вам остается только перебрать различных пользователей системы, пока вы не найдете того, кому принадлежит этот пароль.
   Журналы системных операторов иногда содержат также записи отосланных и полученных файлов, ошибки, явившиеся результатом ввода несанкционированных команд, новых бюджетов или очередных пользователей, получивших статус привилегированного пользователя.
   Если говорить о безопасности, первое, что вы должны сделать, загрузившись в чей-либо бюджет, - сразу же постараться узнать, кому он принадлежит (если вы еще не знаете этого). При загрузке вам, скорее всего, будет выдано сообщение о том, когда произошло последнее обращение к бюджету, и, возможно, данные о том, откуда пользователь устанавливал связь.
   Если легальный пользователь, бюджет которого вы взломали, только что загружался сам, у вас могут возникнуть проблемы. Заметьте, в какое время дня пользователь входил в бюджет, и сами постарайтесь входить в это же время. Постарайтесь войти в бюджет одновременно с двух разных компьютеров - не появится ли на втором компьютере сообщение об ошибке. Можете ли вы распознать присутствие в бюджете вашего "конкурента"? Вам необходимо узнать обо воем этом, поскольку вам необходимо иметь возможность использовать бюджет, не вызывая подозрений со стороны его владельца.
   Например, произошло так, что вы загрузились в бюджет, а в тоже время легальный пользователь, пытаясь сделать то же самое, получает сообщение:
   "Пользователь такой-то уже установил связь через вход 11 б". Вы не сможете узнать, что это произошло, но вы можете подготовиться к такому случаю. Пошлите настоящему пользователю сообщение якобы от системного менеджера, и оставьте не прочтенным. Когда настоящий владелец бюджета войдет в систему, его будет ждать нечто вроде:
   Message #01
   From 1513 SuperUser
   То Al-l.USERS@calli.poo.mil
   В подразделе группы С системы локальной сети произошла техническая неполадка, что привело к проблемам с работой нескольких из наших схем соединительных портов. Если во время загрузки вы получите сообщение о том, что вы уже вошли в систему, просим вас повторить свой вызов через несколько минут.
   Мы приносим свои извинения по поводу возникших проблем и постараемся устранить неисправность как можно скорее, но наладка займет некоторое время. Нам пришлось выбирать между временными неудобствами и полным выключением системы. Мы надеемся, вы согласитесь, что лучше иметь систему с временными недостатками, чем не иметь системы вообще.
   Мы ожидаем, что проблема будет решена к 3 марта. Спасибо за сотрудничество.
   Пользователи часто хранят в своей директории личные ретроспективные журналы регистрации. Это могут быть ретроспективные отчеты о вводе команд, чтении новостей из определенных групп, передаче или уничтожении файлов. Из них вы сможете узнать, когда и как пользователь работает в системе, а также уровень его пользовательской компетентности.
   Если взломанный вами бюджет используется нечасто, можете особенно не опасаться его настоящего владельца - разве что системный менеджер заподозрит неладное, заметив внезапно повысившуюся активность загрузки в бюджет, который никогда не отличался "посещаемостью".
   Но, с другой стороны, если обладатель бюджета работает в нем, как говорится, днем и ночью, вам следует опасаться его больше, чем системного оператора, который вряд ли распознает ваши сеансы входа среди множества других.
   какие команды следует искать и использовать
   Большинство ОС снабжены обширной помощью онлайн. В UNIX, чтобы посмотреть страницу помощи для определенной команды, следует набрать "man" (имя команды). Набрав "apropos" (слово), вы сможете просмотреть список команд, связанных с тем словом, которое вы зададите. Так, "apropos password" перечислит вам все команды, программы и переменные, которые имеют хоть какое-то отношение к паролям. А с помощью "man" (имя команды) вы сможете узнать, что означает каждая из этих команд.
   В машинах TOPS можно набрать "help" или "help commandname" для получения информации онлайн.
   Команды процесса сообщают о том, что происходит в системе и кто в ней работает. В UNIX команда "ps
   f" позволяет узнать, как работают на компьютере другие пользователи. Используя эти команды, вы поймете, какие из опций вам доступны. Вы также сможете выяснить, какие пользователи обладают доступом к другим компьютерам, если они соединялись с этими компьютерами с того же компьютера, за которым сидите вы. Если вам очень повезет, вы можете обнаружить в списке процессов шифровальный ключ, который может находиться там непродолжительное время перед тем, как шифровальная программа уберег его оттуда. Если некто набрал что-то вроде "crypt key [ filename", то вся команда, в том числе и ключ, появится в листинге. К сожалению, шифровальная программа стирает ключ из листинга, когда ключ задействуегся, но на непродолжительный период ключ становится общедоступен, и его может увидеть кто угодно. Такие случаи вам поможет обнаружить программа-"даемон" (см. глоссарий).
   Соединяться с другими компьютерами позволяет программа "Telnet". Я уже упоминал, что взломанный вами бюджет, скорее всего, является бюджетом низкого уровня доступа. У хакеров есть причина заниматься сначала бюджетами обычных пользователей:
   им необходимо безопасное место, откуда можно совершать НАСТОЯЩИЕ взломы. Находясь в бюджете с низким уровнем, вы сможете делать все то, что никогда не стали бы делать, находясь в своем собственном бюджете, например, соединиться с помошыо "Telnet" с компьютерами Пентагона и начать атаку методом перебора. В UNIX имеется также команда "cu" (Call Up), которая дает возможность пользователю вызвать определенный телефонный номер.
   Вызов одного компьютера с другого позволяет хакеру избежать выслеживания. Это также хорошее практическое решение проблемы связи с определенным компьютером, так как некоторые компьютеры можно вызвать только из других сетей.
   протокол передачи Файлов (FTP)
   FTP - это программа, которая позволяет копировать файлы с одного компьютера на другой (соединенный с ним обычно посредством Интернет), и наоборот. Непосредственным пользователям BITNET приходится вместо FTP использовать для передачи файлов электронную почту.
   Чтобы запустить программу, следует набрать "ftp"; затем можно ввести адрес любого компьютера и попытаться с ним связаться. У вас запросят имя пользователя и пароль. Зачастую на компьютерах предлагаются также анонимные FTP-директории: для получения доступа к текстовым файлам и программам, которые сделал доступными местный администратор, можно загружаться под именем "anonymous".
   Входящая директория в анонимных FTP, как правило, установлена с разрешением на запись и использование, но не на чтение. Пользователи могут загружать файлы, которые они хотят использовать совместно с другими пользователями, без ведома последних. Системный оператор определяет, какие файлы можно сделать общедоступными.
   Распространенный недостаток анонимных FTP состоит в том, что в их бюджете часто размешаются две вспомогательные директории "etc." и "bin". Если они не защищены от записи, любой пользователь имеет возможность загрузить свои собственные враждебные версии системных программ и пакетов.
   игры
   На взломанном вами компьютере могут оказаться Xtrek иди Empire, и любые другие многопользовательские игры для режима онлайн, особенно, если компьютер стоит в колледже. Так как игры являются многопользовательскими, для входа в них необходим пароль, но такие пароли не столь уж секретны, и часто хранятся в обычных текстовых файлах. Просмотрите эти файлы пользователи могут применять одни и те же пароли везде, где у них имеется доступ.
   сеть пользователей (USENET)
   USENET представляет собой то же самое по отношению к локальным BBS, что и Тадж-Махал по отношению к муравейникам.
   USENET - это BBS Интернет, которая управляет тысячами конференций. USENET - не просто "компьютерная" доска объявлений. В ней есть разделы, в которых можно разговаривать о программном и аппаратном обеспечении, вирусах, хакерах, индивидуальных операционных системах, принтерах, и об электронных таблицах, и об этике, и ... дополните список сами. Каждая область называется группой новостей (newsgroup) или конференцией. Существуют конференции, посвященные музыке, автомобилям, сексу, преступлениям, парашютизму, книгам, телевидению и многому другому - с ума сойдешь, пока перечислишь все эти темы.
   Некоторые конференции подвергаются специальному цензурированию. Имеется в виду, что некая контролирующая организация просматривает их и решает, каким из них дать экранное время. Большинство групп не просматривается таким образом, и является общедоступными.
   Получить доступ в USENET можно, запустив такие программы как "readnews", "news" или "nn". Вы сможете прочесть посланные кем-то сообщения, или написать свое собственное. Каждое сообщение посылается на все узлы связи, так что, вы, задав какой-либо вопрос, выносите его на громадный международный форум, и сможете выбрать подходящий ответ.
   КАК стать привелигерованным пользователем
   Проникновение в систему может стать бесполезным, если вы окажетесь в пустой корневой директории с таким низким уровнем доступа, что нельзя сделать ничего интересненького. Если вы взломали бюджет низкого уровня, принадлежащий, например, секретарю, вводящему данные, вы не сможете особенно развернуться, и вам захочется, по возможности, повысить свой уровень доступа. Это можно осуществить с помощью исследований изнутри, мистификации, программистских уловок, либо социальной инженерии.
   Завершив свои исследования" осмотрите систему, в которую только что проникли, и выясните, какие опции доступны для вас. Прочтите все файлы, запустите все программы. Большинство технических взломов совершаются благодаря ошибкам в солидном, казалось бы, программном обеспечении. Большинство таких программ какимлибо образом связано с бюджетами других пользователей. Программы электронной почты и "бесед" доступны, равно как и текстовые редакторы. Если вы найдете любой язык программирования, вы должны быть на седьмом небе, поскольку существуют сотни различных программистских уловок, с помощью которых можно получить более высокий уровень. Давайте начнем с мистификации.
   МИСТИФИКАЦИЯ
   Мистификация обычно заключается в том, что вы посылаете электронную почту таким образом, что кажется, будто ее послал кто-то другой. Этим термином обозначают также любое действие хакера, с помощью которого он выдает себя за кого-то другого. Но давайте сперва остановимся на первом, более распространенном, значении, и рассмотрим некоторые способы, посредством которых мистифицированная электронная почта может услужить имеющему низкий уровень доступа хакеру добиться чего-то большего.
   Один из типичных примеров мистификации - послание якобы от системного администратора. Susie User {Пользователь Сюзи), весьма влиятельное лицо в системе, занимается своими обычными делами в режиме онлайн. Она проверяет свой почтовый ящик и с удивлением обнаруживает там письмо от системного администратора. В письме говорится о том, что ввиду наличия прорех в компьютерной безопасности пароли пользователей будут теперь изменяться каждые шесть недель: "Ваш новый пароль D4YIL", - написано в полученном Сюзи послании. - "Вы можете изменить его сами с помощью команды "SETPASS". He забудьте его! Не раскрывайте его никому! Компьютерная безопасность - очень важный аспект, которым нельзя пренебрегать!"
   Через несколько секунд вы замечаете, что Сюзи набрала команду "SETPASS", а еще немного погодя загружаетесь под ее именем, получая, таким образом, все привилегии ее более высокого уровня. И это срабатывает всегда! Но вся хитрость в том, что необходимо знать, как именно следует проделать мистификацию.
   Прежде чем вы сможете послать мистифицированную электронную почту, вам следует понять, каким образом это возможно. Итак, если вы когда-либо пользовались любой из программ электронной почты, на мэйнфрэйме, или же на локальной BBS, то вы знаете, что, чтобы послать электронное письмо, пользователь, как правило, вводит три порции информации: пункт назначения, тему и текст письма. Некоторые "почтовые" программы допускают еще большее усложнение, например, включение других текстовых файлов или программ, уведомление о получении, и т. д., но давайте остановимся на наиболее примитивном виде программ электронной почты, так как они используются чаше всего.
   Когда вы посылаете электронное письмо другому пользователю, компьютер автоматически помешает заголовок в начало письма, чтобы идентифицировать письмо как пришедшее от вас. Для мистификации вам понадобится изменить этот заголовок таким образом, чтобы письмо казалось присланным одним из тех, кто отвечает за систему.
   Электронную почту обычно посылают, запуская специальную программу. Программа включает в себя текстовый редактор и устройство для отправки почты другим пользователям. Но во многих случаях для отправки почты можно и не использовать специальную программу. Обычно существует основная команда процессора, позволяющая послать текст или файл в директорию файлов другого пользователя. То же самое делает и программа электронной почты: посылает текст вашего сообщения в специальный файл под названием MAIL.TXT или что-то в этом духе, и когда пользователь Сюзи запускает свою программу электронной почты, она показывает содержание этого файла.
   Вам не составит труда открыть текстовый файл, напечатать заголовок, похожий на заголовки посланий системного администратора и добавить в коней файла свой собственный текст. Затем с помощью команды "send file" поместите этот файл в директорию пользователя с более высоким уровнем доступа, чем ваш.
   Иногда ОС сама выполняет подобные действия. Так, один из протоколов Интернет предполагает участие двух компьютеров в передаче почты, для составления заголовков писем. Чтобы мистифицировать Интернет, можно соединиться с главным компьютером через порт 25, который отвечает за доставку электронной почты. Обычно таким путем соединяются только два компьютера; на месте могут присутствовать средства зашиты, но, если таковых не имеется, вы можете сыграть роль компьютера, посылая команды для генерации электронного сообщения. Они включают в себя "mail from" и "rcpt", которые устанавливают, кем являются отправитель и получатель. Чтобы получше разобраться в этом, используйте "help".
   Многие многопользовательские системы дают пользователям возможность общаться друг с другом с помощью команд TALK, WRITE и т. п. Когда вы набираете команду TALK, на экране реципиента появляется сообщение о том, что вы хотите с ним побеседовать. Если другой пользователь разделяет ваше желание, он тоже набирает команду TALK. После этого все, что вы будете печатать у себя на экране, станет появляться на экране вашего собеседника, и наоборот. С помошыо команды TALK можно проделать множество трюков. Одним из популярных трюков является передача с помощью TALK сообщения типа:
   "Сбой в системе. Прошу выключить ваш терминал, не прерывая связи с системой, для предотвращения дальнейших нарушений. Системный администратор" на экран другого пользователя. Пока его терминал будет отключен, вы сможете беспрепятственно копаться в его бюджете.
   Как и в случае с мистификацией электронной почты, с помощью TALK можно помешать текст на экран другого пользователя. Вам следует обратиться к исходному коду программы TALK, узнать, каким образом она посылает текст на другой экран, и использовать те же команды. Такие маневры в обход средств зашиты являются неотъемлемым свойством команды TALK. Если вы используете настоящую команду TALK, чтобы послать приведенное в качестве примера сообщение об ошибке, получатель увидит, что это ВЫ, а вовсе не системный администратор, послали это сообщение. Вам следует эмулировать заголовок TALK, в котором сообщается имя пользователя, пославшего текст. Вам придется также спуститься к основным операторам "send text", так как вам совсем не нужно, чтобы пользователь использовал опцию отказа от общения с вами.
   Известно, что мистификацию можно достаточно легко применять в большинстве систем - достаточно войти в режим онлайн и разобраться в исходных программах и руководствах. Еще одна хитрость - послать с помощью TALK сообщение, которое сможет понять "умный" терминал. При использовании TALK вы не вводите слова в ответ на приглашение ОС - ОС просто помешает то, что вы набираете, на экран удаленного терминала. Один из способов обойти это основан на использовании удаленного аппаратного обеспечения. Некоторые "умные" терминалы обладают управляющей последовательностью Send или Enter, которая говорит терминалу, что необходимо послать текущую строку в систему так, будто пользователь ввел ее с клавиатуры. Можно использовать TALK, чтобы послать сообщение, содержащее подходящую управляющую последовательность для выполнения разных гнусностей, вроде отправки к вам конфиденциальных документов и т. п.
   Хакер может использовать в своих целях не только электронную почту и команду TALK, но и любую другую команду, которая позволяет взаимодействовать с другим терминалом. Если вам попадется команда, дозволяющая такое взаимодействие, изучите ее внимательно, чтобы посмотреть, как можно ее применить.
   Просмотрите также программы - нельзя ли с их помощью связаться с другими директориями на вашей собственной машине. Текстовый редактор GNU-EMACS, используемый в UNIX, позволяет переслать файл, с которым вы работаете, в директорию другого пользователя. Если вы назвали свой файл o.loginn(2), то, когда бы ни загрузился тот пользователь, будет запускаться этот резервный файл. Если этот файл включает в себя передачу по электронной почте в ваш бюджет секретных данных того пользователя - тем лучше для вас.
   шифрование и дешифровка
   Возвращаясь к старым уловкам: атака с помощью перебора может дать вам возможность дешифровать файлы с паролями, когда и как вам будет угодно. Даже если у вас бюджет с низким уровнем доступа, вы сможете скопировать зашифрованный файл с взломанной вами машины на более безопасный носитель. Во всяком случае, вам удастся хотя бы просмотреть содержание пусть даже закодированного файла с паролями.
   После этого откомпилируйте копию зашифрованной программы, изменив ее таким образом, чтобы она читалась в терминах специально подготовленного словаря, используйте словарь в качестве ключа, а результат распечатайте. Листинги исходных программ UNIX доступны для любого вида ОС. Даже если вы не можете найти дешифратор, который использовался компьютером для шифрования скопированного вами файла, вы всегда можете заглянуть в руководство, найти там алгоритм искомого шифра, и самостоятельно написать по нему программу. Метод перебора в случае с ключами к зашифрованным файлам с паролями действует гораздо эффективнее, чем атака самих паролей для входа в систему. Вскоре вы наверняка найдете ключ для расшифровки, и станете обладателем пароля привилегированного пользователя!
   Атака с помощью перебора не всегда является необходимостью. Говорят о существовании известной инверсии шифровального алгоритма, использующегося в некоторых ОС, включая старые версии VMS. К сожалению, сам я не знаю, в чем заключается данный метод инверсии, но я знаю, что существуют способы алгоритмического обратного преобразования команды "crypt" в UNIX. Эта команда использует шифровальный алгоритм World War II Enigma, который был превосходен для своего времени, но не представляет собой загадки для современных суперкомпьютеров. Конечно, для расшифровки вам все же потребуется какое-то время, но она не затруднит ваш компьютер, если у него достаточно "лошадиных сил".
   Впрочем, команда шифрования не очень широко используется из-за своей общеизвестной уязвимости. В основном "crypt" избегают по сентиментальным причинам. Шифр, наиболее часто использующийся для кодирования паролей, является версией государственного стандарта шифрования данных (Data Encryption Standart - DES). Вариант DES в UNIX не подходит для атаки с помощью перебора из-за невероятно сложных шифровальных ключей. Каким же образом версия в UNIX защищена от атак методом перебора?
   Как известно, файлы паролей в UNIX доступны для чтения, копирования и печати, но сами пароли хранятся в зашифрованной форме. Однако это не совсем так: на самом деле файл паролей ВООБЩЕ не содержит никаких паролей. Когда новый пользователь входит в систему и вводит пароль, UNIX использует первые восемь символов этого пароля в качестве шифровального ключа для кодирования некоей константы (например, большого случайного числа).
   Еще одна причина, по которой DES был избран для шифрования паролей, заключается в следующем: когда такой алгоритм используется в программном варианте, он действует медленно. А значит, атака с помощью метода перебора займет больше времени.
   Говоря об этой теме, необходимо заметить, что стандарт шифрования данных может быть и не настолько безопасным, как некогда считалось. Основой DES стала система безопасности под названием "Аю-иифер", разработанная IBM в 1973 году для Национального бюро стандартов. Прежде чем DES был принят в качестве официального (стандартного) шифра США, сверхсекретное Агентство по национальной безопасности (NSA) вмешалось в это дело, понизив сложность шифровального алгоритма и скрыв основные аспекты его устройства. Это выглядело весьма подозрительно! Зачем бы NSA объявлять код безопасным, в то же время делая его менее безопасным? Критики предупреждали, что в систему, возможно, была встроена лазейка.
   В начале 1992 года два израильских ученых объявили, что они нашли способ победить систему. Если содержание зашифрованного сообщения кому-либо известно, с помощью определенных математических приемов можно вычислить ключ, использованный для шифровки сообщения. Затем не составит труда прочесть тексты, зашифрованные с помощью того же ключа.