Страница:
Имя автора, разумеется, я знал. Я знал также, что она входит в число пользователей одной системы, и знал, каков ее образ жизни. Вычислить ее системный код оказалось невероятно просто, а перебрав десятка два паролей я смог войти в систему, маскируясь под нее. После этого она, по моему совету, изменила свой пароль.
И этот пример вовсе не исключение! Мы с вами ежедневно читаем газетные статьи, журналы и книги, в которых авторы сообщают читателям свои компьютерные адреса, чтобы читатели могли им написать.
Вчера я слушал радиопередачу, в которой ведущий выдал свой адрес в CompuServe всем радиослушателям, которым не удалось дозвониться ему на радио! Мы имеем достаточно информации о многих из этих авторов, чтобы наши догадки насчет их паролей были обоснованы. Даже в случаях, когда автор книги не распространяется насчет своей личной жизни, об этом обычно можно узнать, прочитав статью "Об авторе".
Большую часть компьютерных книг пишут профессора колледжей; нетрудно узнать, в каком колледже они преподают, и у вас появится ниточка, ведущая к паролю.
Если в приведенных примерах программ попадается бейсбольный жаргон, это также может послужить вам подсказкой.
Я хочу, чтобы вы имели в виду - все вышесказанное приведено здесь исключительно в информативных целях. Эти заметки сделаны лишь для того, чтобы указать на некоторые очевидные недостатки существующей компьютерной безопасности. И выбросите из головы любые глупые идеи насчет взлома моих паролей!
Еще одна хитрость - просмотр выпусков "Кто есть кто". Чуть ли не все промышленные отрасли ежегодно издают альманахи "Кто есть кто". Большинство этих изданий выпускаются просто в угоду тщеславию:
люди тратят свои деньги, чтобы о них что-то напечатали. Эти альманахи содержат немало полезных данных. Если этого вам недостаточно, напечатайте свой собственный псевдоофициальный образец анкеты "Кто есть кто" и пошлите по электронной почте нужным вам сотрудникам компании. Проверьте, соответствует ли форма анкеты той, что принята у них в компании; пообещайте, что данные сотрудники будут включены в книгу бесплатно и также бесплатно получат по одной копии книги. Это повысит вероятность того, что их анкеты будут заполнены, а вы получите ценную информацию, которая поможет вам вычислить их пароли.
Вот еще одна уловка - обзавестись друзьями из числа сотрудников компании. Позвоните в их офис и потолкуйте с секретаршей или с каким-либо другим лицом, которому всегда известны все слухи. Скажите, что вы из нового журнала, специализирующегося на достижениях в области бизнеса. Попросите сообщить вам имена людей, возглавляющих основные отделы, дабы вы могли послать им бесплатный талон на ознакомительную подписку. Затем поговорите с секретарями начальников этих отделов. Пусть они заполнят анкеты "маркетинговых исследований", возможно, за некоторое вознаграждение бесплатную подписку, рекламные часы с радио и т. п.
Обычные рыночные анкеты для подписчиков торгового журнала включают вопросы об образовании, присвоенных степенях, производственных достижениях, членство в профсоюзных ассоциациях, военную службу, размер оклада и длительность работы в компании. По мере продолжения вашей беседы начинайте задавать вопросы об их хобби и занятиях в свободное от работы время, любимых видах спорта; узнайте имена их родственников и их домашние адреса. Все эти вопросы вполне может задать исследователь в области рынка, а ответы на них могут дать вам ключи к паролям. Можно сделать проще: позвоните и скажите, что вы являетесь помощником редактора в журнале о торговле и занимаетесь поиском интересных людей, работающих в данной отрасли. - Нет ли у вас кого-нибудь, кто совершил бы нечто совершенно потрясающее, или хотя бы имеет какие-то необычные хобби? - Ответ может оказаться отрицательным. Но не отчаивайтесь: может, у кого-нибудь есть какой-либо специфический талант? Музыкальный, например? Продолжайте в том же духе - в конце концов, вы на что-нибудь наткнетесь и сможете использовать приведенные выше методы, чтобы собрать о данной личности как можно больше сведений.
Узнавание чьих-то личных пристрастий называется созданием личностного профиля (у хакеров - "парольного профиля"). Эта техника применяется тогда, когда хакер хочет получить информацию о конкретном человеке, чьи компьютеры он собирается взломать. Если вы хотите собрать интересующую вас информацию о главном боссе какой-либо корпорации, вам следует поискать его (или ее) интервью для прессы, узнать, каковы его (или ее) пристрастия, и действовать, исходя из полученной информации.
Одну из популярных уловок упоминает в своей "Настольной книге" хакер Хьюго Корнуолл. Она основана на том факте, что зачастую главному лицу организации программное обеспечение преподносится на блюдечке в уже готовом виде - с введенным паролем, - чтобы, упаси Боже, начальство не перенапрягло мозги. Естественно, такой пароль легко угадать, исходя из личных интересов босса, - ведь пароль-то готовился желающими выслужиться подхалимами именно для него. - Вы говорили, мистер Ларсен любит порыбачить? Так введите в качестве пароля слово "рыба".)
Давайте предположим, что хобби или увлечения избранного вами лица уже известны. Как действовать дальше? Для начала можно пойти в библиотеку и взять там все имеющиеся в наличии книги по данному предмету. Затем создайте банк слов, взятых из словарей и каталогов. Людям нравятся большие и, как им кажется, сложные слова или названия из сферы их обожаемых хобби: им кажется, что эти слова больше никому и в голову не придут. Так, студенты-литературоведы используют в качестве паролей имена вроде "Еврипид"; в целом же студенты тяготеют к мешанине из длинных технических терминов. Создав списки слов, начинайте их пробовать вводить к качестве пароля. Если не одно из них не подойдет, можно переходить к другому типу пароля. Аоктор необязательно придумает пароль "перикард". Жизнь человека многопланова, а профессиональная деятельность составляет лишь одну из ее сторон.
Изучение паролеи
Если вы считаете, что все эти разговоры насчет легко отгадываемых паролей - пустая болтовня, поразмыслите хорошенько. Я потратил немало времени на формальное и неформальное изучение данного предмета, прежде чем выяснил, насколько в действительности безопасны создаваемые пользователями пароли. Вот результат одного из подобных экспериментов. Среди 3829 паролей оказалось: 15 обычных ASCII-символов, 72 двузначных пароля, 464 трехзначных, 477 четырехзначных, 706 пятизначных (все они состояли либо из одних строчных, либо из одних прописных букв) и 605 шестизначных (все из строчных букв).
Вывод: то, что хакеры могут просто сидеть и отгадывать пароли - ФАКТ, а не ФИКЦИЯ. Это не только возможно, но зачастую и нетрудно.
Другой пример того, насколько легко взламываются пароли - "червь", который прополз по всему Интернету в 1988 году, "завалив" большую часть сети. У "червя" было два способа размножения, один из которых базировался на взломе пользовательских паролей. Сначала "червь" пробовал типичные пароли, такие, как имя для входа в систему, имя или фамилию пользователя, и тому подобные варианты. Если ни один из них не подходил, "червь" прибегал к помощи словаря, состоявшего из 432 общеупотребительных паролей. И, наконец, если оба этих метода не срабатывали, "червь" обращался к словарю системы UNIX и пробовал каждое слово, пока не находил верное. Результаты показали, что этот метод работал безупречно. Кстати, если вы окажетесь в системе UNIX, и вам понадобится грубая сила для получения более высокого уровня доступа, системный словарь может здорово помочь. Он находится в поддиректории ",usr.dict,". Файл называется "words". Вы также можете переписать этот файл на дискету или скопировать его на другой компьютер, если вам нужен открытый словарный текст для использования на других машинах.
Одно из достоинств (и недостатков) словаря UNIX заключается в том, что содержащиеся там слова не совсем соответствуют общеупотребительному словарю английского языка. В системном словаре превалируют научные термины, что отвечает целям, ради которых был создан данный словарь.
Ограничения для паролей
Большинство операционных систем создавалось не для сверхсекретных задач. Разумеется, в системах разделенного времени вся секретность заключается в основанных на паролях бюджетах. Впрочем, как мы уже заметили, многие пароли крайне легко отгадать.
Ограничения операционной системы UNIX для паролей ограничиваются тем, что пароли должны состоять не менее чем из пяти строчных символов, либо из четырех, при условии, что по крайней мере один из этих символов является прописной буквой или управляющим кодом. Впрочем, если пользователь настаивает на введении более короткого пароля, невзирая на предупреждения о ненадежности, система все же допустит его пароль. Системные операторы знают о том, что большинство паролей не отвечают требованиям секретности. Поэтому многие из них инсталлируют специальные программы, которые запрещают создание слишком "легких" паролей. Пароль должен отвечать определенным требованиям, как то:
а) быть определенной длины;
б) включать в себя как прописные, так и строчные буквы;
в) включать в себя одну и более цифр;
г) включать в себя один нецифровой и неалфавитный символ.
Одно или несколько из этих правил должны соблюдаться.
Программа может также протестировать пароль пользователя, применив список известных ей "плохих" паролей, которые не допускаются к использованию. Запрет на однобуквенные или простые буквенные пароли, конечно, создает определенные трудности при отгадывании, но не слишком большие. Однажды я пытался отгадать пароль некоего человека; мне казалось, что его пароль должен быть "рореуе" ("пучеглаз"), поскольку у него была обширная коллекция классических юмористических книг и в основном его интересовал именно этот комикс. Системное программное обеспечение предлагало вводить в качестве пароля смесь из прописных и строчных букв (кстати, это также дает полезную информацию о том, что система отличает строчные буквы от прописных). Я попробовал ввести следующее: Рореуе PoPeYe popeyE PopEye popEYE рорЕуЕореуЕ PopEYE РоРеуе, а затем ввел инверсную форму каждого из этих сочетаний, превращая PopeyE в pOPEYe (на случай, если пользователь считал заглавные буквы нормой для компьютерной клавиатуры, а строчные исключением). Казалось маловероятным, что этот любитель комиксов придумал нечто из ряда вон выходящее - ввел прописные буквы посреди слова или расставил их бессистемно. (Да и кто из нас, будучи в здравом рассудке, поступит так, если его попросят ввести заглавные буквы в пароль?) В конце концов его пароль оказался "OliveOyl". При первой загрузке пользователя система может попросить его ввести в пароль не заглавные буквы, а числа. И опять же, вряд ли Простой Пользователь станет разбивать слово числами, да и числа введет не длиннее, чем одно-двухзначные. Ведь пользователь обычно рассматривает пароль как слово. И о необходимости включения в него чисел он подумает в последнюю очередь. Таким образом, обычно встречаются пароли следующего вида: пароль#, пар#оль, #пароль. Числа, как правило, берутся легко запоминающиеся, либо те, которые удобно набирать, вроде О или 1. Числа от 1 до 31 встречаются наиболее часто, равно как и числа с повторяющимися цифрами или заканчивающиеся нулями или девятками - 888, 500, 1999 и т. п. Можно ожидать, что автор пароля поставит цифру "1" на место буквы "I" (строчная "L"), если пароль содержит данную букву. Компьютерные фанатики также имеют милую манеру заменять букву "О" нулем, если требуется ввести какую-либо цифру. Если вы подозреваете, что пароль содержит цифры "1 " или "О", вместо букв, то попробуйте набрать вместо "cool" или "computer" следующее: "cOOl" или "cOmputer".
Пароли, создаваемые компьютером: подделка и анализ паролей, генерируемых машиной
Многие из паролей, которые создает сам компьютер, порождены не без участия генератора случайных чисел. Взгляните, например, на приведенный ниже отрывок из сегмента воображаемой программы:
5 Randomize Timer
100 For i = 1 to 6
110 Char=lnt(Rnd*91)
120 If Char ?"
"Разъяснение" гласило, что некий (относительно недавний) пользователь сей BBS, чей псевдоним был Мистер Шутник, ввел в действие "свойство" программного обеспечения данной BBS, создававшее несекретные пароли. В предыдущем году система "вышла из строя, что явилось результатом действий мистера Шутника". Причина или вид поломки подробно не описывались, вероятно, потому, что постоянные пользователи системы уже и так знали эту историю. Как бы то ни было, теперь вы понимаете, каким образом можно получить неплохую информацию, изучая "случайные" пароли. Даже если на первый взгляд вы не можете найти ни одного осмысленного набора символов, это не означает, что его нет вообще. Может присутствовать лишь намек на такой набор, или хотя бы ошибка или странность, которую вам удастся обнаружить.
Например, в первой версии одной программы BBS - настолько жуткой, что через месяц полетела клавиатура - генератор случайных паролей никогда не создавал пароли, в которых присутствовала бы буква А или цифра 0. Знание этой особенности может оказать некоторую услугу: для семизначного пароля типа WXYZ123, где WXYZ - строчные либо прописные буквы, а 123 - цифры, существует только 284,765,630 возможных комбинаций букв и цифр, вместо 456,976,000 - разница в 172,210,630 паролей! Программное обеспечение кишмя кишело ошибками, многие из которых прославились как наихудшие ошибки за всю историю программирования.
Неслучайные пароли, генерируемые машиной
Под конец давайте обсудим неслучайные машинные пароли. Пользователи часто подключаются к системе еще до окончания оформления регистрации, пользуясь временным паролем. Временный пароль может представлять собой какую-то уже известную пользователю информацию, например, номер карточки социального страхования, дату рождения, либо другие личные данные. Предполагается, что потом пользователи заменяют такие мало секретные пароли на более безопасные, но пока им специально не покажут, как это делается, или не посоветуют так поступить, пользователи вряд ли произведут замену.
Вот один некомпьютерный пример, наглядно демонстрирующий эту человеческую слабость. В апреле 1992 года студенты университета в Нью-Ажерси получили послание с информацией о новом классе регистрационных процедур. В послании утверждалось, что код персонального доступа (Personal Access Code РАС), предназначенный для подтверждения личной регистрации, состоит из первых четырех цифр даты рождения данного человека (месяц и день), вводимых вместе с девятой цифрой студенческого номера (а по необходимости - номера Социальной безопасности). В первую очередь меня поразил тот факт, что они сообщили студентам, что их сверхсекретный РАС на самом деле - их день рождения. Такое сообщение сводит на нет все меры по безопасности, которые они пытаются внедрить. Действительно, неужели так уж трудно узнать чью-то дату рождения? Но РАС является только частью пароля, а другая часть студенческий ID. Узнать чей-то ID - проще простого. ID можно легально, или почти легально, узнать в студенческих оздоровительных центрах, прочесть на досках объявлений в компьютерных залах, в идентификационных картах, в списках имеющих право на общежитие - да где угодно! Послание также гласило, что те, кого беспокоит проблема безопасности, могут подойти в регистрационный офис, чтобы изменить свой РАС. Как вы понимаете, никому и в голову не придет куда-то тащиться и что-то менять, коли можно обойтись и без этого. К тому же, замена первых четырех цифр вряд ли сможет отпугнуть опытного хакера. Чтобы отследить изменение пароля, потребуется 10 000 минус одна попыток. Не говоря уже о тех 366 возможных паролях, которые можно перебрать до того, как эта "озабоченная безопасностью" личность сменит свой код. Десять тысяч чисел - это, разумеется, немало, но перебрать их все вполне возможно. Автоматический номеронабиратель способен проделать это примерно за семь минут, если количество попыток ввода кодов на один звонок будет неограниченным. В любом случае, я привел эту историю для того, чтобы проиллюстрировать одну истину: пользователь и пальцем не пошевелит, чтобы изменить коды доступа, если его не заставить.
И, даже если они это сделают, мало что изменится. На что же тогда мы, хакеры? Давайте теперь вернемся к нашему разговору о неслучайных паролях, которые генерирует компьютер; вернее, о тех, которые устанавливает программист или администратор, выбирая их из компьютерных файлов данных.
Компьютер выбирает пароли каждый раз, когда требуется ввести большое количество паролей сразу. В течение первой недели семестра в колледже для студентов, занимающихся в компьютерных классах, создаются тысячи входов. По большей части эти входы-бюджеты устанавливаются с пользовательским именем, соответствующим усеченной или уменьшительной форме настоящего имени пользователя, а пароли представляют собой либо номер карточки социального страхования (НКСС), либо студенческий ID. Итак, если вы решили подвергнуть взлому компьютерную систему колледжа, приступайте к делу в самом начале семестра - пока пользователи не заменили свои пароли на более секретные. НКСС можно отгадать методом прямого перебора.
НКСС (или другие идентификационные номера) также можно получить социальными методами (см. главу о социальной инженерии), или с помощью других хитростей. Я присутствовал на уроке в одном колледже, когда инструктор раздал всем листки бумаги, попросив студентов написать на них свое имя и идентификационный номер. Затем листочки передавались ассистенту преподавателя, который вводил информацию в компьютер, создавая входы-бюджеты в системе. Если вам случится попасть на подобный урок, постарайтесь сесть на заднюю парту, чтобы никто не мог заметить, как вы копируете личные данные других людей. Имена и НКСС нетрудно увидеть в списках посещающих занятия, в классных расписаниях; они обычно содержат сведения об имени и НКСС каждого учащегося. Если расписание не висит на видном месте, это не означает, что его нет. Придумайте какой-либо способ хотя бы мельком взглянуть на него. Например, скажите, что в прошлый раз ваше имя неправильно записали и вы хотите проверить, исправлено ли оно. Профессора обожают рассуждать о промахах образовательной бюрократической системы. Сыграйте на этой слабости!
После нескольких шумных судебных разбирательств был сделан вывод, что указание номера социальной безопасности в совокупности с именем человека в общедоступных средствах неконституционно, так как является вторжением в частную жизнь. С тех пор НКСС все реже и реже используются для идентификации, уступая место устанавливающемуся организациями ID. В этом случае приходится больше полагаться на метод перебора, чтобы получить доступ к массиву личных идентификационных номеров.
Предварительные пользовательские пароли не всегда представляют собой идентификационные номера. Если между администратором системы и пользователем установлена какая-либо иная связь, кроме компьютерной, в качестве временных паролей могут быть назначены другие слова (они изменяются при подсоединении пользователя к системе). Возможен общий пароль для новых пользователей, который дается всем бюджетам и который обычно нетрудно взломать. Но пароль может оказаться также весьма трудным для отгадывания и безопасным - вроде длинной строки случайных символов. Иногда приходится перехватывать электронную почту нового пользователя в поисках конверта с присвоенным этому пользователю паролем.
Программы - тоже люди
Иногда на компьютерных системах устанавливаются программы, имеющие свои собственные пользовательские имена и пароли, точно такие же, как и у любого другого пользователя системы. Если вы входите в систему под именем этой программы, программа начинает выполняться. Эти программы могут представлять собой руководства по сетям, информационные системы, базы данных, системы сообщений или какие-либо программные приложения. Некоторые системы имеют также входы с простыми командами в качестве пользовательского имени, такими как "time", "date" или "who" (эта команда сообщает о том, кто загрузился в систему). Это позволяет людям выполнять некоторые часто использующиеся функции, минуя хлопотный процесс входа в защищенную систему. Зачастую эти командные входы вообще не имеют паролей, что кажется идиотизмом, поскольку некоторым из них даны права доступа суперпользователя. Не исключено, что вам удастся войти в одну из этих программ-пользователей с помощью комбинации имя, пароль, состоящей из следующих слов: guest, demo, help, info, tutorial, tut, menu, data, base, intro, anonymous, database, visit, welcome, hello.
Так, например, "visit" или "visitor" может быть именем пользователя, a "tut" - паролем. Существует также возможность входа под именами "calendar", "cal", "sched", "schedule", "who.is", "ftp", "who", "Ipq", "archiv" и другими схожими именами команд. На многие системы устанавливаются программы общего пользования или даже общедоступные. Доступ можно получить, загрузившись под именем "info", как предложено выше, или другими способами.
Вымышленный университет Вакка Ду может предложить войти в команду под именами: "wdu", "wdu info", "chellowdo", "wdunews", "wdumail", "wel-comewdu", или какой-то иной вариацией аббревиатуры университета.
Если вы избрали этот путь, вас прежде всего следует поздравить с успешным взломом; но что дальше? Если вы заинтересованы в получении более высокого уровня доступа или в выходе из программы, вас ожидает множество трудностей. В следующем разделе предлагаются способы загрузки в обход рамок того или иного уровня доступа.
Методы перебора
Они обычно задают немало работы вашему компьютеру. Они просты, но занимают много времени, и заключаются во введении одного пароля за другим до тех пор, пока наконец, может быть, один из них не сработает, к вашему счастью. Или до тех пор, пока у вас не лопнет терпение, и вы не обратите свои взоры к лучшим методам.
К методам перебора хакер обычно прибегает в начале и в конце своих попыток взломать систему. В первый раз он делает это, наполовину подчиняясь велению чувства. Как хорошо было бы угадать пароль сразу же, или хотя бы после семидесяти пяти или ста попыток! В случае неудачи хакер некоторое время использует другие, более изощренные способы. Если же ни один из них ни к чему не приводит, он вновь возвращается к перебору, стремясь достичь цели. В конце концов метол перебора обязательно срабатывает. Слово "обязательно" как раз и притягивает хакеров, а уточнение "в конце концов" сводит их с ума.
Эти методы требуют очень много времени, и почти ничего больше. Время уходит на исследования, испытания и ошибки, а также написание специальных программ для "бомбардировки" системы паролями.
Метод перебора - не самый элегантный способ взлома, но так как в конце концов он все же себя оправдывает, каждый хакер рано или поздно прибегает к нему в той или иной ситуации. Вы можете оказаться в такой ситуации, когда вам ничего не известно о пользователях конкретной системы; обычные имена и пароли не срабатывают, а уловки не действуют. В таких случаях вам придется прибегнуть к самому "лобовому" приему: написанию небольшой программки, которая станет периодически вступать в диалог с компьютерной системой и вводить новую комбинацию имя, пароль, до тех пор, пока какая-либо комбинация не сработает. Это может продолжаться бесконечно.
Некоторые хакеры используют словарный файл из своих текстовых процессоров или с информационных панелей. Идея неплоха, но только при правильном использовании. Следует отредактировать словарный файл так, чтобы тот включал в себя общеупотребительные названия, имена, все буквы алфавита, имена музыкантов и президентов, марки машин, числа, псевдонимы знаменитостей и тому подобный материал для наиболее употребительных паролей. Избавьтесь от слов вроде "perspectives" ("перспективы")они слишком вычурны для пароля. Если вы хотите ускорить процесс своей работы, придерживайтесь тех же принципов и в отношении числовых паролей. Если вы живете в Нью-Йорке, следует начать свою атаку с нью-йоркских НКСС.
Существует много способов сократить число потенциальных паролей, которые вам необходимо проверить. Военные используют автоматическую систему TACACS для проверки законности пользования компьютерами их сети. Коды доступа TACACS выглядят как строки, состоящие из буквенно-цифровых символов - но эти строки никогда не содержат цифр 0 и 1, а также букв Q и Z. Основой для такого решения послужила теория о том, что когда пользователь читает свой код доступа на кодовой карте, он легко может спутать единицы, нули, Q и Z с другими цифрами и буквами.
Когда вы отредактируете свой словарь, оставив в нем только те пароли, которые кажутся вам наиболее подходящими, или определите, какие коды наиболее вероятны в данном случае, напишите маленькую программу на любом известном вам языке, чтобы та вступала в диалог с модемом, и раз по разу вводила слова, одно за другим, делая все новые и новые попытки. И еще. И еще... Такую программу нетрудно написать, но если у вас нет подобного опыта, вы можете найти множество похожих программ на BBS.
Вот что следует учитывать при написании программы. Сколько раз компьютерная система позволит вам вводить неверное имя, пароль, пока не отсоединит вас? Три? Восемь? Если она даст вам всего лишь три попытки, а потом распрощается, убедитесь, что ваша программа выдала именно три комбинации имя, пароль, прежде чем снова набрать номер. Дистанционные компьютеры часто принимают введенные символы еще до того, как на экране появляется приглашение. Если так происходит с системой, в которую вы пытаетесь проникнуть, вам необходимо вставить в вашу программу цикл задержки, дабы быть уверенным в том, что пароли не будут введены до того, как на экране возникнет курсор.
И этот пример вовсе не исключение! Мы с вами ежедневно читаем газетные статьи, журналы и книги, в которых авторы сообщают читателям свои компьютерные адреса, чтобы читатели могли им написать.
Вчера я слушал радиопередачу, в которой ведущий выдал свой адрес в CompuServe всем радиослушателям, которым не удалось дозвониться ему на радио! Мы имеем достаточно информации о многих из этих авторов, чтобы наши догадки насчет их паролей были обоснованы. Даже в случаях, когда автор книги не распространяется насчет своей личной жизни, об этом обычно можно узнать, прочитав статью "Об авторе".
Большую часть компьютерных книг пишут профессора колледжей; нетрудно узнать, в каком колледже они преподают, и у вас появится ниточка, ведущая к паролю.
Если в приведенных примерах программ попадается бейсбольный жаргон, это также может послужить вам подсказкой.
Я хочу, чтобы вы имели в виду - все вышесказанное приведено здесь исключительно в информативных целях. Эти заметки сделаны лишь для того, чтобы указать на некоторые очевидные недостатки существующей компьютерной безопасности. И выбросите из головы любые глупые идеи насчет взлома моих паролей!
Еще одна хитрость - просмотр выпусков "Кто есть кто". Чуть ли не все промышленные отрасли ежегодно издают альманахи "Кто есть кто". Большинство этих изданий выпускаются просто в угоду тщеславию:
люди тратят свои деньги, чтобы о них что-то напечатали. Эти альманахи содержат немало полезных данных. Если этого вам недостаточно, напечатайте свой собственный псевдоофициальный образец анкеты "Кто есть кто" и пошлите по электронной почте нужным вам сотрудникам компании. Проверьте, соответствует ли форма анкеты той, что принята у них в компании; пообещайте, что данные сотрудники будут включены в книгу бесплатно и также бесплатно получат по одной копии книги. Это повысит вероятность того, что их анкеты будут заполнены, а вы получите ценную информацию, которая поможет вам вычислить их пароли.
Вот еще одна уловка - обзавестись друзьями из числа сотрудников компании. Позвоните в их офис и потолкуйте с секретаршей или с каким-либо другим лицом, которому всегда известны все слухи. Скажите, что вы из нового журнала, специализирующегося на достижениях в области бизнеса. Попросите сообщить вам имена людей, возглавляющих основные отделы, дабы вы могли послать им бесплатный талон на ознакомительную подписку. Затем поговорите с секретарями начальников этих отделов. Пусть они заполнят анкеты "маркетинговых исследований", возможно, за некоторое вознаграждение бесплатную подписку, рекламные часы с радио и т. п.
Обычные рыночные анкеты для подписчиков торгового журнала включают вопросы об образовании, присвоенных степенях, производственных достижениях, членство в профсоюзных ассоциациях, военную службу, размер оклада и длительность работы в компании. По мере продолжения вашей беседы начинайте задавать вопросы об их хобби и занятиях в свободное от работы время, любимых видах спорта; узнайте имена их родственников и их домашние адреса. Все эти вопросы вполне может задать исследователь в области рынка, а ответы на них могут дать вам ключи к паролям. Можно сделать проще: позвоните и скажите, что вы являетесь помощником редактора в журнале о торговле и занимаетесь поиском интересных людей, работающих в данной отрасли. - Нет ли у вас кого-нибудь, кто совершил бы нечто совершенно потрясающее, или хотя бы имеет какие-то необычные хобби? - Ответ может оказаться отрицательным. Но не отчаивайтесь: может, у кого-нибудь есть какой-либо специфический талант? Музыкальный, например? Продолжайте в том же духе - в конце концов, вы на что-нибудь наткнетесь и сможете использовать приведенные выше методы, чтобы собрать о данной личности как можно больше сведений.
Узнавание чьих-то личных пристрастий называется созданием личностного профиля (у хакеров - "парольного профиля"). Эта техника применяется тогда, когда хакер хочет получить информацию о конкретном человеке, чьи компьютеры он собирается взломать. Если вы хотите собрать интересующую вас информацию о главном боссе какой-либо корпорации, вам следует поискать его (или ее) интервью для прессы, узнать, каковы его (или ее) пристрастия, и действовать, исходя из полученной информации.
Одну из популярных уловок упоминает в своей "Настольной книге" хакер Хьюго Корнуолл. Она основана на том факте, что зачастую главному лицу организации программное обеспечение преподносится на блюдечке в уже готовом виде - с введенным паролем, - чтобы, упаси Боже, начальство не перенапрягло мозги. Естественно, такой пароль легко угадать, исходя из личных интересов босса, - ведь пароль-то готовился желающими выслужиться подхалимами именно для него. - Вы говорили, мистер Ларсен любит порыбачить? Так введите в качестве пароля слово "рыба".)
Давайте предположим, что хобби или увлечения избранного вами лица уже известны. Как действовать дальше? Для начала можно пойти в библиотеку и взять там все имеющиеся в наличии книги по данному предмету. Затем создайте банк слов, взятых из словарей и каталогов. Людям нравятся большие и, как им кажется, сложные слова или названия из сферы их обожаемых хобби: им кажется, что эти слова больше никому и в голову не придут. Так, студенты-литературоведы используют в качестве паролей имена вроде "Еврипид"; в целом же студенты тяготеют к мешанине из длинных технических терминов. Создав списки слов, начинайте их пробовать вводить к качестве пароля. Если не одно из них не подойдет, можно переходить к другому типу пароля. Аоктор необязательно придумает пароль "перикард". Жизнь человека многопланова, а профессиональная деятельность составляет лишь одну из ее сторон.
Изучение паролеи
Если вы считаете, что все эти разговоры насчет легко отгадываемых паролей - пустая болтовня, поразмыслите хорошенько. Я потратил немало времени на формальное и неформальное изучение данного предмета, прежде чем выяснил, насколько в действительности безопасны создаваемые пользователями пароли. Вот результат одного из подобных экспериментов. Среди 3829 паролей оказалось: 15 обычных ASCII-символов, 72 двузначных пароля, 464 трехзначных, 477 четырехзначных, 706 пятизначных (все они состояли либо из одних строчных, либо из одних прописных букв) и 605 шестизначных (все из строчных букв).
Вывод: то, что хакеры могут просто сидеть и отгадывать пароли - ФАКТ, а не ФИКЦИЯ. Это не только возможно, но зачастую и нетрудно.
Другой пример того, насколько легко взламываются пароли - "червь", который прополз по всему Интернету в 1988 году, "завалив" большую часть сети. У "червя" было два способа размножения, один из которых базировался на взломе пользовательских паролей. Сначала "червь" пробовал типичные пароли, такие, как имя для входа в систему, имя или фамилию пользователя, и тому подобные варианты. Если ни один из них не подходил, "червь" прибегал к помощи словаря, состоявшего из 432 общеупотребительных паролей. И, наконец, если оба этих метода не срабатывали, "червь" обращался к словарю системы UNIX и пробовал каждое слово, пока не находил верное. Результаты показали, что этот метод работал безупречно. Кстати, если вы окажетесь в системе UNIX, и вам понадобится грубая сила для получения более высокого уровня доступа, системный словарь может здорово помочь. Он находится в поддиректории ",usr.dict,". Файл называется "words". Вы также можете переписать этот файл на дискету или скопировать его на другой компьютер, если вам нужен открытый словарный текст для использования на других машинах.
Одно из достоинств (и недостатков) словаря UNIX заключается в том, что содержащиеся там слова не совсем соответствуют общеупотребительному словарю английского языка. В системном словаре превалируют научные термины, что отвечает целям, ради которых был создан данный словарь.
Ограничения для паролей
Большинство операционных систем создавалось не для сверхсекретных задач. Разумеется, в системах разделенного времени вся секретность заключается в основанных на паролях бюджетах. Впрочем, как мы уже заметили, многие пароли крайне легко отгадать.
Ограничения операционной системы UNIX для паролей ограничиваются тем, что пароли должны состоять не менее чем из пяти строчных символов, либо из четырех, при условии, что по крайней мере один из этих символов является прописной буквой или управляющим кодом. Впрочем, если пользователь настаивает на введении более короткого пароля, невзирая на предупреждения о ненадежности, система все же допустит его пароль. Системные операторы знают о том, что большинство паролей не отвечают требованиям секретности. Поэтому многие из них инсталлируют специальные программы, которые запрещают создание слишком "легких" паролей. Пароль должен отвечать определенным требованиям, как то:
а) быть определенной длины;
б) включать в себя как прописные, так и строчные буквы;
в) включать в себя одну и более цифр;
г) включать в себя один нецифровой и неалфавитный символ.
Одно или несколько из этих правил должны соблюдаться.
Программа может также протестировать пароль пользователя, применив список известных ей "плохих" паролей, которые не допускаются к использованию. Запрет на однобуквенные или простые буквенные пароли, конечно, создает определенные трудности при отгадывании, но не слишком большие. Однажды я пытался отгадать пароль некоего человека; мне казалось, что его пароль должен быть "рореуе" ("пучеглаз"), поскольку у него была обширная коллекция классических юмористических книг и в основном его интересовал именно этот комикс. Системное программное обеспечение предлагало вводить в качестве пароля смесь из прописных и строчных букв (кстати, это также дает полезную информацию о том, что система отличает строчные буквы от прописных). Я попробовал ввести следующее: Рореуе PoPeYe popeyE PopEye popEYE рорЕуЕореуЕ PopEYE РоРеуе, а затем ввел инверсную форму каждого из этих сочетаний, превращая PopeyE в pOPEYe (на случай, если пользователь считал заглавные буквы нормой для компьютерной клавиатуры, а строчные исключением). Казалось маловероятным, что этот любитель комиксов придумал нечто из ряда вон выходящее - ввел прописные буквы посреди слова или расставил их бессистемно. (Да и кто из нас, будучи в здравом рассудке, поступит так, если его попросят ввести заглавные буквы в пароль?) В конце концов его пароль оказался "OliveOyl". При первой загрузке пользователя система может попросить его ввести в пароль не заглавные буквы, а числа. И опять же, вряд ли Простой Пользователь станет разбивать слово числами, да и числа введет не длиннее, чем одно-двухзначные. Ведь пользователь обычно рассматривает пароль как слово. И о необходимости включения в него чисел он подумает в последнюю очередь. Таким образом, обычно встречаются пароли следующего вида: пароль#, пар#оль, #пароль. Числа, как правило, берутся легко запоминающиеся, либо те, которые удобно набирать, вроде О или 1. Числа от 1 до 31 встречаются наиболее часто, равно как и числа с повторяющимися цифрами или заканчивающиеся нулями или девятками - 888, 500, 1999 и т. п. Можно ожидать, что автор пароля поставит цифру "1" на место буквы "I" (строчная "L"), если пароль содержит данную букву. Компьютерные фанатики также имеют милую манеру заменять букву "О" нулем, если требуется ввести какую-либо цифру. Если вы подозреваете, что пароль содержит цифры "1 " или "О", вместо букв, то попробуйте набрать вместо "cool" или "computer" следующее: "cOOl" или "cOmputer".
Пароли, создаваемые компьютером: подделка и анализ паролей, генерируемых машиной
Многие из паролей, которые создает сам компьютер, порождены не без участия генератора случайных чисел. Взгляните, например, на приведенный ниже отрывок из сегмента воображаемой программы:
5 Randomize Timer
100 For i = 1 to 6
110 Char=lnt(Rnd*91)
120 If Char ?"
"Разъяснение" гласило, что некий (относительно недавний) пользователь сей BBS, чей псевдоним был Мистер Шутник, ввел в действие "свойство" программного обеспечения данной BBS, создававшее несекретные пароли. В предыдущем году система "вышла из строя, что явилось результатом действий мистера Шутника". Причина или вид поломки подробно не описывались, вероятно, потому, что постоянные пользователи системы уже и так знали эту историю. Как бы то ни было, теперь вы понимаете, каким образом можно получить неплохую информацию, изучая "случайные" пароли. Даже если на первый взгляд вы не можете найти ни одного осмысленного набора символов, это не означает, что его нет вообще. Может присутствовать лишь намек на такой набор, или хотя бы ошибка или странность, которую вам удастся обнаружить.
Например, в первой версии одной программы BBS - настолько жуткой, что через месяц полетела клавиатура - генератор случайных паролей никогда не создавал пароли, в которых присутствовала бы буква А или цифра 0. Знание этой особенности может оказать некоторую услугу: для семизначного пароля типа WXYZ123, где WXYZ - строчные либо прописные буквы, а 123 - цифры, существует только 284,765,630 возможных комбинаций букв и цифр, вместо 456,976,000 - разница в 172,210,630 паролей! Программное обеспечение кишмя кишело ошибками, многие из которых прославились как наихудшие ошибки за всю историю программирования.
Неслучайные пароли, генерируемые машиной
Под конец давайте обсудим неслучайные машинные пароли. Пользователи часто подключаются к системе еще до окончания оформления регистрации, пользуясь временным паролем. Временный пароль может представлять собой какую-то уже известную пользователю информацию, например, номер карточки социального страхования, дату рождения, либо другие личные данные. Предполагается, что потом пользователи заменяют такие мало секретные пароли на более безопасные, но пока им специально не покажут, как это делается, или не посоветуют так поступить, пользователи вряд ли произведут замену.
Вот один некомпьютерный пример, наглядно демонстрирующий эту человеческую слабость. В апреле 1992 года студенты университета в Нью-Ажерси получили послание с информацией о новом классе регистрационных процедур. В послании утверждалось, что код персонального доступа (Personal Access Code РАС), предназначенный для подтверждения личной регистрации, состоит из первых четырех цифр даты рождения данного человека (месяц и день), вводимых вместе с девятой цифрой студенческого номера (а по необходимости - номера Социальной безопасности). В первую очередь меня поразил тот факт, что они сообщили студентам, что их сверхсекретный РАС на самом деле - их день рождения. Такое сообщение сводит на нет все меры по безопасности, которые они пытаются внедрить. Действительно, неужели так уж трудно узнать чью-то дату рождения? Но РАС является только частью пароля, а другая часть студенческий ID. Узнать чей-то ID - проще простого. ID можно легально, или почти легально, узнать в студенческих оздоровительных центрах, прочесть на досках объявлений в компьютерных залах, в идентификационных картах, в списках имеющих право на общежитие - да где угодно! Послание также гласило, что те, кого беспокоит проблема безопасности, могут подойти в регистрационный офис, чтобы изменить свой РАС. Как вы понимаете, никому и в голову не придет куда-то тащиться и что-то менять, коли можно обойтись и без этого. К тому же, замена первых четырех цифр вряд ли сможет отпугнуть опытного хакера. Чтобы отследить изменение пароля, потребуется 10 000 минус одна попыток. Не говоря уже о тех 366 возможных паролях, которые можно перебрать до того, как эта "озабоченная безопасностью" личность сменит свой код. Десять тысяч чисел - это, разумеется, немало, но перебрать их все вполне возможно. Автоматический номеронабиратель способен проделать это примерно за семь минут, если количество попыток ввода кодов на один звонок будет неограниченным. В любом случае, я привел эту историю для того, чтобы проиллюстрировать одну истину: пользователь и пальцем не пошевелит, чтобы изменить коды доступа, если его не заставить.
И, даже если они это сделают, мало что изменится. На что же тогда мы, хакеры? Давайте теперь вернемся к нашему разговору о неслучайных паролях, которые генерирует компьютер; вернее, о тех, которые устанавливает программист или администратор, выбирая их из компьютерных файлов данных.
Компьютер выбирает пароли каждый раз, когда требуется ввести большое количество паролей сразу. В течение первой недели семестра в колледже для студентов, занимающихся в компьютерных классах, создаются тысячи входов. По большей части эти входы-бюджеты устанавливаются с пользовательским именем, соответствующим усеченной или уменьшительной форме настоящего имени пользователя, а пароли представляют собой либо номер карточки социального страхования (НКСС), либо студенческий ID. Итак, если вы решили подвергнуть взлому компьютерную систему колледжа, приступайте к делу в самом начале семестра - пока пользователи не заменили свои пароли на более секретные. НКСС можно отгадать методом прямого перебора.
НКСС (или другие идентификационные номера) также можно получить социальными методами (см. главу о социальной инженерии), или с помощью других хитростей. Я присутствовал на уроке в одном колледже, когда инструктор раздал всем листки бумаги, попросив студентов написать на них свое имя и идентификационный номер. Затем листочки передавались ассистенту преподавателя, который вводил информацию в компьютер, создавая входы-бюджеты в системе. Если вам случится попасть на подобный урок, постарайтесь сесть на заднюю парту, чтобы никто не мог заметить, как вы копируете личные данные других людей. Имена и НКСС нетрудно увидеть в списках посещающих занятия, в классных расписаниях; они обычно содержат сведения об имени и НКСС каждого учащегося. Если расписание не висит на видном месте, это не означает, что его нет. Придумайте какой-либо способ хотя бы мельком взглянуть на него. Например, скажите, что в прошлый раз ваше имя неправильно записали и вы хотите проверить, исправлено ли оно. Профессора обожают рассуждать о промахах образовательной бюрократической системы. Сыграйте на этой слабости!
После нескольких шумных судебных разбирательств был сделан вывод, что указание номера социальной безопасности в совокупности с именем человека в общедоступных средствах неконституционно, так как является вторжением в частную жизнь. С тех пор НКСС все реже и реже используются для идентификации, уступая место устанавливающемуся организациями ID. В этом случае приходится больше полагаться на метод перебора, чтобы получить доступ к массиву личных идентификационных номеров.
Предварительные пользовательские пароли не всегда представляют собой идентификационные номера. Если между администратором системы и пользователем установлена какая-либо иная связь, кроме компьютерной, в качестве временных паролей могут быть назначены другие слова (они изменяются при подсоединении пользователя к системе). Возможен общий пароль для новых пользователей, который дается всем бюджетам и который обычно нетрудно взломать. Но пароль может оказаться также весьма трудным для отгадывания и безопасным - вроде длинной строки случайных символов. Иногда приходится перехватывать электронную почту нового пользователя в поисках конверта с присвоенным этому пользователю паролем.
Программы - тоже люди
Иногда на компьютерных системах устанавливаются программы, имеющие свои собственные пользовательские имена и пароли, точно такие же, как и у любого другого пользователя системы. Если вы входите в систему под именем этой программы, программа начинает выполняться. Эти программы могут представлять собой руководства по сетям, информационные системы, базы данных, системы сообщений или какие-либо программные приложения. Некоторые системы имеют также входы с простыми командами в качестве пользовательского имени, такими как "time", "date" или "who" (эта команда сообщает о том, кто загрузился в систему). Это позволяет людям выполнять некоторые часто использующиеся функции, минуя хлопотный процесс входа в защищенную систему. Зачастую эти командные входы вообще не имеют паролей, что кажется идиотизмом, поскольку некоторым из них даны права доступа суперпользователя. Не исключено, что вам удастся войти в одну из этих программ-пользователей с помощью комбинации имя, пароль, состоящей из следующих слов: guest, demo, help, info, tutorial, tut, menu, data, base, intro, anonymous, database, visit, welcome, hello.
Так, например, "visit" или "visitor" может быть именем пользователя, a "tut" - паролем. Существует также возможность входа под именами "calendar", "cal", "sched", "schedule", "who.is", "ftp", "who", "Ipq", "archiv" и другими схожими именами команд. На многие системы устанавливаются программы общего пользования или даже общедоступные. Доступ можно получить, загрузившись под именем "info", как предложено выше, или другими способами.
Вымышленный университет Вакка Ду может предложить войти в команду под именами: "wdu", "wdu info", "chellowdo", "wdunews", "wdumail", "wel-comewdu", или какой-то иной вариацией аббревиатуры университета.
Если вы избрали этот путь, вас прежде всего следует поздравить с успешным взломом; но что дальше? Если вы заинтересованы в получении более высокого уровня доступа или в выходе из программы, вас ожидает множество трудностей. В следующем разделе предлагаются способы загрузки в обход рамок того или иного уровня доступа.
Методы перебора
Они обычно задают немало работы вашему компьютеру. Они просты, но занимают много времени, и заключаются во введении одного пароля за другим до тех пор, пока наконец, может быть, один из них не сработает, к вашему счастью. Или до тех пор, пока у вас не лопнет терпение, и вы не обратите свои взоры к лучшим методам.
К методам перебора хакер обычно прибегает в начале и в конце своих попыток взломать систему. В первый раз он делает это, наполовину подчиняясь велению чувства. Как хорошо было бы угадать пароль сразу же, или хотя бы после семидесяти пяти или ста попыток! В случае неудачи хакер некоторое время использует другие, более изощренные способы. Если же ни один из них ни к чему не приводит, он вновь возвращается к перебору, стремясь достичь цели. В конце концов метол перебора обязательно срабатывает. Слово "обязательно" как раз и притягивает хакеров, а уточнение "в конце концов" сводит их с ума.
Эти методы требуют очень много времени, и почти ничего больше. Время уходит на исследования, испытания и ошибки, а также написание специальных программ для "бомбардировки" системы паролями.
Метод перебора - не самый элегантный способ взлома, но так как в конце концов он все же себя оправдывает, каждый хакер рано или поздно прибегает к нему в той или иной ситуации. Вы можете оказаться в такой ситуации, когда вам ничего не известно о пользователях конкретной системы; обычные имена и пароли не срабатывают, а уловки не действуют. В таких случаях вам придется прибегнуть к самому "лобовому" приему: написанию небольшой программки, которая станет периодически вступать в диалог с компьютерной системой и вводить новую комбинацию имя, пароль, до тех пор, пока какая-либо комбинация не сработает. Это может продолжаться бесконечно.
Некоторые хакеры используют словарный файл из своих текстовых процессоров или с информационных панелей. Идея неплоха, но только при правильном использовании. Следует отредактировать словарный файл так, чтобы тот включал в себя общеупотребительные названия, имена, все буквы алфавита, имена музыкантов и президентов, марки машин, числа, псевдонимы знаменитостей и тому подобный материал для наиболее употребительных паролей. Избавьтесь от слов вроде "perspectives" ("перспективы")они слишком вычурны для пароля. Если вы хотите ускорить процесс своей работы, придерживайтесь тех же принципов и в отношении числовых паролей. Если вы живете в Нью-Йорке, следует начать свою атаку с нью-йоркских НКСС.
Существует много способов сократить число потенциальных паролей, которые вам необходимо проверить. Военные используют автоматическую систему TACACS для проверки законности пользования компьютерами их сети. Коды доступа TACACS выглядят как строки, состоящие из буквенно-цифровых символов - но эти строки никогда не содержат цифр 0 и 1, а также букв Q и Z. Основой для такого решения послужила теория о том, что когда пользователь читает свой код доступа на кодовой карте, он легко может спутать единицы, нули, Q и Z с другими цифрами и буквами.
Когда вы отредактируете свой словарь, оставив в нем только те пароли, которые кажутся вам наиболее подходящими, или определите, какие коды наиболее вероятны в данном случае, напишите маленькую программу на любом известном вам языке, чтобы та вступала в диалог с модемом, и раз по разу вводила слова, одно за другим, делая все новые и новые попытки. И еще. И еще... Такую программу нетрудно написать, но если у вас нет подобного опыта, вы можете найти множество похожих программ на BBS.
Вот что следует учитывать при написании программы. Сколько раз компьютерная система позволит вам вводить неверное имя, пароль, пока не отсоединит вас? Три? Восемь? Если она даст вам всего лишь три попытки, а потом распрощается, убедитесь, что ваша программа выдала именно три комбинации имя, пароль, прежде чем снова набрать номер. Дистанционные компьютеры часто принимают введенные символы еще до того, как на экране появляется приглашение. Если так происходит с системой, в которую вы пытаетесь проникнуть, вам необходимо вставить в вашу программу цикл задержки, дабы быть уверенным в том, что пароли не будут введены до того, как на экране возникнет курсор.