Используем PowerShell для автоматизации пентеста

Используем PowerShell для автоматизации пентеста

В первой части на 5 примерах, используя PowerShell, я рассказал вам про то, почему полезно изучать возможности CLI (Интерфейс командной строки) и что умение пользоваться PowerShell может сэкономить вам кучу времени. Идём дальше.

Идея

Поскольку мой канал посвящён кибербезопасности, в этой статье я покажу на конкретном примере, как можно использовать PowerShell для автоматизации рутинной работы начинающего пентестера в Windows. Идея такая: у нас есть сайт, который мы защищаем. Каждый раз, когда мы включаем компьютер, наш сайт должен автоматически проверяться на уязвимости и в определённую папку на рабочем столе должен сохраняться отчёт. Соответственно - нам остаётся только бегло просмотреть отчёт, чтобы убедиться, что никаких новых уязвимостей на нашем сайте не появилось, либо, если появились - срочно предпринимать необходимые действия для актуализации его защиты.

Выбор инструмента для сканирования

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

  • Инструмент должен быть бесплатным, чтобы любой мог его тут же скачать и повторить всё то, что я описываю в данной статье;
  • Инструмент должен быть современным и актуальным, а также постоянно обновляться, чтобы мы были точно уверены, что наш сайт проверяется с учётом всех современных угроз;
  • Инструмент должен быть быстрым, т.е. проверка нашего сайта не должна занимать больше 2 минут;
  • Инструмент должен позволять управлять собой из командной строки без необходимости запуска графического интерфейса.

Знаете такой инструмент? Я знаю!

ZAP

Используем PowerShell для автоматизации пентеста

Zed Attack Proxy (ZAP) — это простой в использовании интегрированный инструмент тестирования на проникновение и нахождения уязвимостей в веб-приложениях. Он создан для использования людьми с различным опытом в сфере безопасности, поэтому он идеален для новичков в тестировании на проникновение.

Важно то, что его развитие активно поддерживается сообществом OWASP (Open Web Application Security Project), а всё, что создаётся и публикуется этим сообществом - обязательно к изучению всем, кто интересуется кибербезопасностью!

Качаем ZAP, устанавливаем, запускаем и обновляем.

Также я рекомендую через "Marketplace" ZAP установить дополнение "Technology Detection", которое позволяет определить технологии, которые используются в сканируемом сайте.

В магазине дополнений много интересных плагинов, развиваемых сообществом. Хотя это и называется магазином, по факту, все дополнения бесплатны.
В магазине дополнений много интересных плагинов, развиваемых сообществом. Хотя это и называется магазином, по факту, все дополнения бесплатны.

Больше нам ZAP пока не нужен - закрываем его.

Итак, ZAP бесплатный, современный и активно развивается cообществом. А что насчёт скорости и работы из командной строки?

ZAPit

В конце 2023, в версию ZAP 2.14 был добавлен функционал, который так и описали: "a new -zapit command line option to perform a quick ‘reconnaissance’ scan of the URL specified". Его и будем использовать.

Написание и сохранение скрипта

Далее я приведу код скрипта PowerShell, где я прокомментировал каждую строчку, чтобы у вас не возникло никаких вопросов по тому, что, как и зачем я делаю:

# Путь к файлу zap.bat. Замените путь, если установили ZAP в другую папку $zapPath = "C:\Program Files\ZAP\Zed Attack Proxy\" # Переходим в эту папку cd $zapPath # URL для сканирования. Впишите сюда свой сайт $url = "vashsite.ru" # Путь к папке ZAPSCAN на рабочем столе, куда будут сохраняться отчёты $outputDir = "$env:USERPROFILE\Desktop\ZAPSCAN" # Проверяем, существует ли папка ZAPSCAN, если нет - создаем её if (-not (Test-Path $outputDir)) {New-Item -ItemType Directory -Path $outputDir | Out-Null} # Формируем имя файла отчёта в формате сегодняшняядата_url.txt $date = Get-Date -Format "yyyyMMdd_HHmmss"$outputFile = "$outputDir\$($date)_$($url -replace '[^\w]', '_').txt" # Выполняем команду zapit для нашего сайта и сохраняем результат в файл .\zap.bat -zapit $url -cmd | Out-File -FilePath $outputFile

Скопируйте данный скрипт в текстовый файл, придумайте название (я назвал scanscript) и сохраните, например, на рабочем столе с расширением ps1. Расширение ps1 используется для скриптов автоматизации PowerShell.

Так скрипт выглядит у меня. URL для сканирования нужно не забыть заменить
Так скрипт выглядит у меня. URL для сканирования нужно не забыть заменить

Теперь давайте проверим, что скрипт работает корректно - запустим его. Для этого в PowerShell переходим в папку, где лежит наш скрипт и для его запуска пишем: ".\scansсript.ps1" и нажимаем "Enter".

Вот так выглядит запуск и отработка скрипта в PowerShell
Вот так выглядит запуск и отработка скрипта в PowerShell

Если команда отработала успешно, то на рабочем столе должна появиться папка ZAPSCAN и в ней txt-файл. Давайте посмотрим содержимое.

Пример отчёта отработки ZAPit. 7 предупреждений, благо нет критичных, а также определены технологии, на которых построен сайт
Пример отчёта отработки ZAPit. 7 предупреждений, благо нет критичных, а также определены технологии, на которых построен сайт

Обратите внимание, если перед сайтом вы не укажите http:\\ или https:\\, то ZAPit проверит оба варианта.

Мы видим в отчёте по нашему сайту: используемые технологии, выявленные ошибки (благо нет критических уязвимостей) и некоторую дополнительную информацию.

Далее давайте посмотрим, как же нам запускать наш скрипт каждый раз при загрузке компьютера. И тут нам поможет стандартный инструмент Windows, который я рекомендую каждому изучить и использовать для автоматизации.

Планировщик задач

Планировщик задач (Task Scheduler) в Windows — это встроенный инструмент, который позволяет автоматизировать выполнение различных задач на компьютере. С его помощью можно настроить запуск программ, скриптов, отправку электронных писем, выполнение команд и других действий по расписанию или в ответ на определенные события.

Используем PowerShell для автоматизации пентеста

Автоматизируем запуск скрипта при загрузке:

  • Нажмите Win + R, введите taskschd.msc и нажмите Enter
  • Или найдите "Планировщик задач" через поиск в меню "Пуск"
  • В правой панели выберите "Создать задачу"
Используем PowerShell для автоматизации пентеста

4. Настройте общие параметры:

- В поле "Имя" введите название задачи, например, "Scanscript";

- В разделе "Параметры безопасности" установите галочку "Выполнять с наивысшими правами".

5. Настройте триггер:

- Перейдите на вкладку "Триггеры" и нажмите "Создать";

- В поле "Начать задачу" выберите "При входе в систему" и нажмите "ОК". Тут можете сами экспериментировать и настроить тот триггер, который больше соответствует вашим задачам.

Используем PowerShell для автоматизации пентеста

6. Настройте действие:

- Перейдите на вкладку "Действия" и нажмите "Создать";

- В поле "Действие" выберите "Запуск программы";

- В поле "Программа или сценарий" введите: powershell.exe

- В поле "Добавить аргументы (необязательно)" введите: -ExecutionPolicy Bypass -File "C:\Users\chumi\Desktop\scanscript.ps1" (Путь к скрипту конечно же надо указать свой);

- Нажмите "ОК".

7. Настройте дополнительные параметры:

- На вкладке "Параметры" настройте дополнительные параметры, например, я, для тестирования, установил галочку "Выполнять задачу по требованию", которая позволяет запускать задачу вручную.

Используем PowerShell для автоматизации пентеста

8. Нажмите "ОК", чтобы сохранить задачу.

Итого

Теперь, при каждом входе в свою учётную запись (или как вы сами настроили), будет запускаться скрипт, который после отработки сохраняет отчёт с результатами сканирования. Скрипт работает быстро, при этом, сам сканер - современное популярное решение.

В следующей, уже в 3 части, мы дальше разовьём скрипт и попытаемся повторить сцену из культовой первой части Матрицы 1999 года. Догадались о какой сцене я? Если да, напишите в комментах!

Поставьте мне лайк, если статья вам понравилась и подписывайтесь на мой Телеграм!

1
Начать дискуссию