Искусство подбирать чужие пароли
В культовом фильме начала двухтысячных «Рыба-меч» талантливому хакеру необходимо подобрать пароль в течение одной минуты. В этом ему помогает приятель, который заботливо держит пистолет у виска и темпераментная блондинка, прячущаяся под столом. Что делать, если таких друзей поблизости нет, а пароль подобрать необходимо? Например, в ходе тестирования на проникновение…
Небольшое, но важное предупреждение: если предлагаемым в статье подходом пользоваться не в рамках проектов по тестированию защищенности, то ваши действия легко могут подпасть под статью 272 УК РФ (Неправомерный доступ к компьютерной информации).
Чтобы придумать эффективную стратегию подбора паролей, этичному хакеру надо постараться залезть в головы пользователей и администраторов.
Какие же факторы влияют на наш выбор паролей?
Можно назвать, как минимум, следующие три:
- легкость запоминания;
- ограничения на выбор пароля, накладываемые системой;
- количество людей, использующих данный пароль в своей деятельности.
Что пользователи легко могут запомнить?
Рассмотрим те вещи, которые нам легче всего запомнить:
1) То, что перед глазами.
Перед нашим взором чаще всего предстают торговые марки мониторов, ноутбуков, компьютерных мышей и клавиатур, надписи «password:». Говорят, что выбор руководителем предвыборной кампании Хилари Клинтон такого тривиального пароля, как «password», гибельно отразился на результатах американских выборов.
2) То, что важно.
Для человека важны:
- приятные воспоминания и связанные с ними даты: например, дата свадьбы;
- отношения: имя любимой. Наполеон выбрал бы милую josephine;
- собственность: марка автомобиля. Джеймс Бонд не изменил бы себе и выбрал aston, а если бы изменил, то bmv;
- привязанность: кличка домашнего животного. Эмиль из Леннеберги увековечил бы кличку своего маленького друга: svinushok;
- мечта: отпуск в каком-то определенном месте. Темпераментная девушка из фильма наверняка выбрала бы чудесное bali;
- работа: название организации или ее тип. Братья Леманы сделали бы однозначный выбор — bank.
- увлечения: спорт, коллекционирование, музыка. Ну кто не любит beatles?
3) То, что помнят пальцы:
- геометрическая фигура на клавиатуре: qwerty;
- последовательность символов: 12345678.
4) Что за система/сайт:
- название системы;
- слова, ассоциированные с бизнес-процессом, который она автоматизирует. Например, летом 2015 года произошла утечка паролей пользователей любителей сходить налево, ищущих горячих спутников и спутниц через сайт Ashley Madison. Среди паролей нередко попадаются варианты, наподобие: 67lolita, 68cougar, love69pussies, lovesex.
В 2014-м году произошла большая утечка паролей Gmail, Yandex и Mail.ru. Списки паролей были проанализированы varagian в статье «Анализ утёкших паролей Gmail, Yandex и Mail.Ru» и можно увидеть, что пользователи выбирают пароли именно по рассмотренной схеме.
Как ограничения парольной защиты влияют на выбор паролей пользователями?
Чтобы обезопасить пользователей во многих системах разработчиками предусмотрен механизм парольной политики, который, к сожалению (для этичных хакеров — к счастью), не всегда используется. Рассмотрим ограничения и то, как они выполняются/обходятся креативными пользователями.
Типовые ограничения парольной политики:
- длина пароля (обычно не менее 8);
- использование символов в различных регистрах;
- использование комбинаций букв и цифр;
- использование спецсимволов;
- запрет на использование предыдущего пароля.
Придумать пароль длиной более 8 символов не представляет сложности, а вот использовать символы в различных регистрах — уже сложно, так как нужно помнить, для какого символа в своем пароле был выбран верхний регистр. Самое очевидное и вероятное решение: выбрать первый или последний символ.
Если система заставляет добавить цифры, то здесь пользователи чуть более изобретательные:
- Добавляют цифры в начало или конец. Как правило, от одной до 4-х. Соответственно, это может быть просто одна цифра, как в распространенном пароле «Password1», если две, то пользователь скорее всего выберет год или возраст, как в пароле »68cougar» из нашего эротического примера. Если три цифры, то они могут быть просто последовательностью »123». В случае, если пользователь захочет добавить 4 цифры, то это будет уже год в полном написании: «Alexander2018».
- Заменяют буквы на похожие цифры: A = 4, E = 3, I = 1, O = 0. Особо креативные пользователи могут полноценно использовать l33t
В случае необходимости применения спецсимволов, пользователи, как правило, используют один из наиболее известных спецсимволов, как это видно на следующей иллюстрации:
Ничто так не раздражает как запрет на использование старого пароля, и пользователи научились обходить это ограничение, внося минимальные изменения, например, увеличивая цифру в конце своего пароля на 1: было «Alexander2018», стало «Alexander2019».
Понимая эти маленькие хитрости пользователей, этичному хакеру довольно просто сузить список слов-кандидатов на пароль.
Количество пользователей пароля
В случае если пароль будет использоваться многими пользователями, например, системными администраторами или слушателями в учебном классе, то его, как правило, специально делают не очень сложным (например, совпадающим с именем учетной записи), а зачастую оставляют таким, каким он был установлен вендором по умолчанию.
Стратегия подбора пароля
Разобравшись с нюансами выбора пароля пользователями, мы можем разработать и стратегию подбора пароля в ходе тестирования на проникновение.
Зафиксируем исходные условия:
- проводим тестирование на проникновение (исключительно этичный хакинг);
- имеются системы с механизмом авторизации по паре логин-пароль;
- хотим скомпрометировать максимальное количество учетных записей пользователей в максимальном количестве систем;
- рассматриваем только онлайн-подбор паролей (взлом хешей не рассматриваем).
Шаг 1. Определение имен учетных записей пользователей
Для успешной авторизации одного пароля, как правило, недостаточно, нужно еще знать и имя учетной записи. Разберемся, как ее получить.
Вариант 1. Получение списка учетных записей, используя уязвимость в системе.
Например, контроллер домена Windows может быть сконфигурирован таким образом, что позволяет анонимному пользователю получать список учетных записей пользователей.
Любой может проверить свой контроллер домена на эту возможность, например, воспользовавшись утилитой командной строки rpcclient из состава «Сканер-ВС»:
- Подключаемся к контроллеру домена и на запрос ввести пароль просто нажимаем Enter:
rpcclient -U » IP-адрес_контроллера_домена - Запускаем встроенную команду enumdomusers
rpcclient $> enumdomusers
Вариант 2. Формирование списка на основе «разведданных» и анализа.
Имена пользователей даже в небольших организациях задаются администраторами на основе некоторого стандарта. Эти правила легко вычислить, взглянув на корпоративный email сотрудника организации. Самые распространенные варианты: первая буква имени + фамилии: adorofeev, тоже самое, но через точку a.dorofeev, полное имя + фамилия: alexander.dorofeev. Также часто имена внутренних учетных записей совпадают с учетной записью электронной почты, соответственно правило формирования имени пользователя можно определить просто «погуглив» адреса сотрудников, засветившихся в интернете, а полный перечень сформировать на основе списка сотрудников, который можно получить из внутреннего телефонного справочника, а также социальных сетей. В крайнем случае можно формировать комбинации наиболее часто встречающихся имен и фамилий по наиболее распространенным правилам формирования имен учетных записей.
Вариант 3. Наиболее распространенные учетные записи и записи по умолчанию.
Во многих системах есть учетные записи по умолчанию. Как минимум, это admin или administrator. В некоторых системах их довольно много, так в СУБД Oracle можно встретить SYSTEM, SYS, ANONYMOUS, CTXSYS, DBSNMP, LBACSYS, MDSYS, OLAPSYS, ORDPLUGINS, ORDSYS, OUTLN, SCOTT, WKSYS, WMSYS, XDB. Соответственно, имеет смысл заглянуть в руководства администраторов систем, которые вы хотите тестировать.
Зачастую, в системах появляются учетные записи, которые очень легко вычислить, например, если в компании есть учебный класс, то вероятность наличия учетных записей teacher и student довольно высока. А много ли систем в которых, кто-нибудь да не создал учетную запись test?
Шаг 2. Первичный подбор паролей
Понимая какие учетные записи в каких системах в тестируемой ИТ-инфраструктуре мы планируем скомпрометировать, можем определить последовательность систем для атаки:
№ | Класс систем | Учетные записи | Пароли |
---|---|---|---|
1 | Контроллер домена | Учетные записи сотрудников, административные, типовые. | Самые распространенные. |
2 | Бизнес-приложения | Учетные записи сотрудников, административные, типовые. | Самые распространенные. |
3 | СУБД | Учетные записи сотрудников, административные, типовые, по умолчанию. | Самые распространенные, по умолчанию |
4 | Специальные системы и сервисы: backup, ftp и т.п. | Административные, по умолчанию. | Самые распространенные, по умолчанию. |
5 | Активное сетевое оборудование | Административные, по умолчанию. | Самые распространенные, по умолчанию. |
В случае если в системах включена блокировка учетных записей после нескольких неудачных попыток (как правило, выбирают число 5), а время на тестирование ограничено, и мы не можем выставлять таймаут между попытками для сброса счетчика, то имеет смысл «пробежаться» по всем пользователям, проверяя следующие вероятные пароли:
- qwerty;
- совпадающий с именем учетной записи;
- пустой.
Шаг 3. Расширение зоны влияния
Подобрав пароли к учетным записям, первое что должен сделать этичный хакер, так это авторизоваться и посмотреть, к чему он получил доступ.
В случае, если доступ получен к файловой системе, то необходимо провести поиск следующих файлов:
- файлы конфигурации, которые могут содержать информацию об IP-адресах и учетных записях;
- резервные копии систем, образы ОС для «накатывания» на новые машины. Из них часто можно извлечь хеши паролей;
- SQL-скрипты, которые также часто содержат полезную информацию.
Подобранные пароли и учетные записи для одной системы необходимо проверить и для других, так как пользователи, в том числе администраторы, любят использовать одни те же пароли в разных системах.
Этичному хакеру на заметку: в крупных организациях часто встречаются среды для тестирования, в которых используются данные, восстановленные из не очень старой резервной копии БД боевой системы. При этом тестовые среды, как правило, плохо защищены, например, может быть несколько административных учетных записей администраторов и простые пароли. Компрометация подобной системы ведет к тому, что специалисты по тестированию получают доступ к хешам паролей пользователей, которые зачастую актуальны для боевой системы.
Инструменты и словари для онлайн-подбора паролей
Классическим инструментом для онлайн-подбора паролей является утилита командной строки thc-hydra, а для этичных хакеров и администраторов, любящих комфорт, данный функционал с интуитивно понятным интерфейсом имеется в нашем комплексе «Сканер-ВС»:
Также ключевым фактором успешного подбора пароля является доступность хорошо составленных словарей, а вот с этим бывают проблемы. Словари, поставляемые вместе с современными отечественными средствами анализа защищенности не всегда содержат действительно полезные наборы слов. Например, включают стандартный словарь, распространяемый с одной бесплатной утилитой. Решение, конечно, простое, но не очень эффективное. Разве можно представить себе российского пользователя, выбравшего такие пароли, как: soccer, cutiepie, maganda или mustang. Как много в среднем российском городе счастливых обладателей Ford Mustang? Иногда включают замечательный словарь, основанный в основном на паролях, оставляемых по умолчанию, но совершенно забывают про обычных пользователей и их любимые пароли.
Мы решили исправить эту досадную ситуацию и составили свои списки паролей, которые теперь доступны не только пользователям нашего комплекса тестирования защищенности «Сканер-ВС», но и всем желающим на сайте нашего решения в разделе «Пароли»:
Списки паролей:
- TOP-157
- TOP-25
- Числовые последовательности
- Даты
- Клавиатурные последовательности
- Распространенные мужские имена
- Распространенные женские имена
Списки учетных записей:
- Пользовательские мужские: первая буква имени + фамилия
- Пользовательские мужские: первая буква имени + точка +фамилия
- Пользовательские мужские: имя + точка +фамилия
- Пользовательские женские: первая буква имени + фамилия
- Пользовательские женские: первая буква имени + точка +фамилия
- Пользовательские женские: имя + точка +фамилия
Заключение
Хакеру из фильма «Рыба-меч» повезло и, несмотря на отвлекающие факторы и хаотичный стиль работы, он смог подобрать пароль и остаться в живых. Пользуясь структурированным подходом, этичные хакеры увеличивают свои шансы на успех в тестировании на проникновение и в меньшей степени полагаются на удачу. Данный подход будет работать, пока пароли будут выбираться людьми.