Сканер портов на PowerShell

Сканер портов

В копилку маленьких но нужных инструментов пентестера можно добавить еще одно. В этой статье хочу познакомить вас с интересной тулзой — сканер портов на PowerShell.

Еще по теме: Лучшие инструменты сисадмина

Написанный на чистом PowerShell, этот небольшой, но мощный сканер портов TCP и UDP, будет полезен в ситуации, когда не представляется возможным использование обычных сканеров портов.

Сканер портов на PowerShell

Существует множество отличных сканеров портов: Nmap, Masscan, Angry IP Scanner, ZMap и т.д. Все они обладают богатым функционалом, и это с одной стороны плюс, но с другой — минус. В некоторых ситуациях, не требуется богатый функционал.

Написание сканера портов может потребоваться, например, когда мы выполняем пентест в строго ограниченной среде, где мы не можем использовать какие-либо стандартные инструменты пентеста. Например, при тестировании изолированной среды VDI / Citrix, в которую мы не можем ничего загружать. В таких случаях лучше создать свой инструмент.

Сканер портов TCP и UDP в PowerShell

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

Чтобы сохранить небольшой размер, я разделил сканер на два отдельных независимых модуля:

Так что это два сканера портов, а не один. Оба сканера можно найти в репозитории GitHub:

Список возможностей сканера портов PowerShell

Оба сканера имеют следующие особенности:

  • Обнаружение открытых, закрытых и фильтруемых портов (как TCP, так и UDP).
  • Возможность сканирования отдельного хоста, диапазона сети или списка хостов в файле из файла.
  • Настраиваемые значения тайм-аута для эффективного и надежного сканирования портов.
  • Не обнаруживается никаким антивирусом и EDR

С точки зрения дизайна:

  • Маленький размер.
  • Написан на чистом PowerShell (дополнительных модулей не требуется).
  • Возобновление сканирования.
  • Умеет пропускать просканированные хосты / порты.

Давайте посмотрим, как пользоваться этими сканерами.

Типичный сценарий использования

Поскольку сканеры портов написаны на PowerShell, мы должны иметь возможность запускать команды PowerShell в системе.

Сканер TCP-портов:

Сканер портов UDP:

Давайте посмотрим на несколько примеров использования на практике.

Сканирование портов отдельного хоста

Поиск открытых портов на удаленном хосте порт tcp / 445:

PowerShell сканирование портов отдельного хоста и порта

Сканирования одного хоста на предмет выбранных TCP-портов:

PowerShell сканирование портов отдельного хоста для выбранных портов

Сканирование портов сетевого диапазона

Сканирования портов в диапазоне 192.168.204.0/24 для порта tcp / 445:

PowerShell сканирование портов диапазона для одного порта

Сканирования диапазона 192.168.204.0/24 для выбранных TCP-портов:

PowerShell сканирование портов в диапазоне сети для выбранных портов

Список хостов в файле

Есть также возможность сканирования хостов из файла.

Например, в корпоративных сетях с развертыванием Active Directory (AD) мы могли бы извлечь список компьютеров из AD с помощью командлетов PowerShell:

Теперь мы можем идентифицировать все живые хосты Windows с помощью сканирования порта tcp / 445:

PowerShell сканирование портов компьютеров, найденных в активном каталоге, с использованием входного файла

Получение результатов

Оба сканера сохраняют отчет в файл scanresults.txt, который создается в рабочем каталоге. Это позволяет проверять результаты в любое время, даже во время текущего сканирования.

Например, вот как мы можем получить список хостов с открытым портом tcp / 445:

Результаты сканирования портов - хосты с открытым портом tcp / 445

Если бы мы хотели перечислить только первый столбец, мы могли бы легко сделать это с помощью PowerShell следующим образом:

Извлечение списка хостов с открытым портом tcp / 445

Теперь можно открыть список в программе для брутфорса SMB, и попытаться взломать найденные хосты Windows.

Требования и ограничения

Совместимость. Сканер TCP поставляется в двух версиях, но с той разницей, что используется метод TcpClient.ConnectAsync (). Этот метод, доступный в .NET 4.5, дает сканеру возможность различать «закрытые» и «отфильтрованные» порты. Совместимая версия сканера (для более старых систем) не может распознать это и просто сообщает обо всех таких случаях как «Закрыто».

Скорость. Оба сканера портов (TCP и UDP) не поддерживают многопоточность. Таким образом, скорость сканирования ограничена. Минимальная скорость — 1 сканирование порта в секунду, в зависимости от значений тайм-аута, которые также можно изменить.

Снижение скорости. Следует иметь в виду, что сканеры могут немного замедлиться через некоторое время, из-за большого количества результатов.

Заключение

Эти сканеры портов не идеальны, но в некоторых ситуациях именно их функционала достаточно, да и размер в некоторых ситуация имеет значение.

Еще по теме: Выбираем лучший сканеров уязвимостей

QUASAR

Этичный хакер и компьютерный ниндзя. Новые статьи в нашей Телеге!

Добавить комментарий