Распыление паролей может привести к получению доступа к системам и, возможно, закреплению в целевой сети. Атака включает попытку входа в уязвимую службу с использованием одного общего пароля и более длинного списка имен пользователей или адресов электронной почты. Имена пользователей и электронные письма, возможно, были собраны во время этапа тестирования на проникновение OSINT или наших первоначальных попыток перечисления. Помните, что тест на проникновение не является статичным, но мы постоянно повторяем несколько методов и процессов по мере обнаружения новых данных. Часто нам приходится работать в команде или выполнять несколько TTP (такти-техники-процедуры) одновременно, чтобы эффективно использовать наше время. По мере продвижения мы обнаруживаем, что многие из наших задач, таких как сканирование, попытки взломать хэши и другие, занимают довольно много времени. Нам нужно убедиться, что мы используем наше время эффективно и творчески, потому что большинство оценок ограничены по времени. Таким образом, пока у нас выполняются попытки отравления, мы также можем использовать имеющуюся у нас информацию, чтобы попытаться получить доступ с помощью ввода пароля. Теперь давайте рассмотрим некоторые рекомендации по распределению паролей и то, как составить наш целевой список на основе имеющейся у нас информации.
Распыление паролей может быть очень эффективным способом закрепиться внутри компании. Много раз эта техника помогала мне закрепиться во время моих проектов. Имейте в виду, что эти примеры взяты из оценок "серого ящика", когда у меня был доступ к внутренней сети с виртуальной машиной Linux и списком диапазонов IP-адресов в пределах видимости, и ничего больше.
В этом первом примере специалист выполнил все свои стандартные проверки и не смог найти ничего полезного, такого как нулевой сеанс SMB или анонимная привязка LDAP, которые могли бы позволить ему получить список пользователей. Итак, он решил использовать Kerbrute
инструмент для создания целевого списка имен пользователей путем перечисления действительных пользователей домена. Чтобы создать этот список, он взял jsmith.txt
список имен пользователей из репозитория GitHub со статистически вероятными именами пользователей и объединил это с результатами, которые он получил от поиска в LinkedIn. Имея в руках этот объединенный список, он перечислил действительных пользователей с помощью Kerbrute
, а затем использовал тот же инструмент для подбора пароля с помощью общего пароля Welcome1
. Он получил два обращения с этим паролем для пользователей с очень низкими привилегиями, но это дало ему достаточно доступа в домене, чтобы запустить BloodHound и в конечном итоге определить пути атаки, которые привели к компрометации домена.
Во второй оценке пентестер столкнулся с аналогичной настройкой, но перечисление действительных пользователей домена с помощью общих списков имен пользователей и результатов LinkedIn не дало никаких результатов. Он обратился к Google и поискал PDF-файлы, опубликованные организацией. Его поиск выдал множество результатов, и он подтвердил в свойствах документа 4 из них, что внутренняя структура имени пользователя была в формате F9L8
случайно сгенерированных идентификаторов GUID, использующих только заглавные буквы и цифры (A-Z and 0-9
). Эта информация была опубликована вместе с документом в поле Author
- это показывает важность очистки метаданных документа перед публикацией чего-либо в Интернете. Отсюда короткий скрипт Bash может быть использован для генерации 16 679 616 возможных комбинаций имен пользователей.
Код: bash
#!/bin/bash
for x in {{A..Z},{0..9}}{{A..Z},{0..9}}{{A..Z},{0..9}}{{A..Z},{0..9}}
do echo $x;
done
Затем он использовал сгенерированный список имен пользователей с помощью Kerbrute
для перечисления каждой отдельной учетной записи пользователя в домене. Эта попытка перечисления имен пользователей привела к тому, что он смог перечислить каждую отдельную учетную запись в домене из-за предсказуемого используемого GUID в сочетании с метаданными PDF, которые он смог найти, и это значительно облегчило атаку. Обычно специалисты могу идентифицировать только 40-60% действительных учетных записей, используя список, такой как jsmith.txt
. В этом примере пентестер значительно увеличил свои шансы на успешную атаку с использованием паролей, начав атаку со ВСЕХ учетных записей домена в его целевом списке. Отсюда он получил действительные пароли для нескольких учетных записей. В конце концов, он смог проследить сложную цепочку атак, включающую ограниченное делегирование на основе ресурсов (RBCD) и атаку с использованием теневых учетных данных, чтобы в конечном итоге получить контроль над доменом.
Хотя атаки на пароли полезны для тестировщиков на проникновение или red teamer, неосторожное использование может нанести значительный вред, например, заблокировать сотни производственных учетных записей. Одним из примеров являются попытки взлома с целью определения пароля для учетной записи с использованием длинного списка паролей. Напротив, распыление паролей - это более взвешенная атака, использующая очень распространенные пароли в различных отраслях. В приведенной ниже таблице показан набор паролей.
Attack | Username | Password |
---|---|---|
1 | [email protected] | Welcome1 |
1 | [email protected] | Welcome1 |
1 | [email protected] | Welcome1 |
DELAY | ||
2 | [email protected] | Passw0rd |
2 | [email protected] | Passw0rd |
2 | [email protected] | Passw0rd |
DELAY | ||
3 | [email protected] | Winter2022 |
3 | [email protected] | Winter2022 |
3 | [email protected] | Winter2022 |
Это предполагает отправку меньшего количества запросов на вход для каждого имени пользователя и с меньшей вероятностью приведет к блокировке учетных записей, чем атака методом перебора. Однако использование пароля по-прежнему сопряжено с риском блокировок, поэтому важно ввести задержку между попытками входа. Внутреннее распыление паролей может использоваться для горизонтального перемещения внутри сети, и применяются те же соображения, что и в отношении блокировки учетных записей. Однако может оказаться возможным получить политику паролей домена с внутренним доступом, что значительно снизит этот риск.