Накопление знаний

nmap-upnp - мы не верим людям

В моменты аудита ты вынужден опрашивать людей, а так как людям свойственно

  • максимально упрощать и использовать собственные "аббревиатуры"
  • рассказывать только про свои боли, а не в целом про архитектуру

отсюда мы формально проводимые интервью мы можем сохранить в виде "строк таблицы" - Ынтырвью

PUT /index/known_hosts_by_interview
{ serice_name, service_type,service_description}

противоречие номер раз:


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

соответственно - архиектура подвержена постоянной энтропии, ежесекундной...

противоречие номер два:


да... мой опыт общения с аудиторами Центробанка говорит мне о том, что существует целый пласт инструментов, который позволяет определить программно архитектуру сети. И возможно даже сервисов.
.
классическим представителем данного пласта ПО является nmap
Если взять XMLOutput - то опять же мы уже можем понять архитектуру сети

PUT /index/known_host_by_nmap
{ip, mac, {nmap_result}}

но противоречие в том, что nmap сканирует сеть в диапазоне и порты, пытаясь определить сервис которые запущен на том или ином порту. Нам этого мало...

тут на помощь нам приходится уже не знание "инфраструкуры", а программных решений. А также знание такой парадигмы как #DocOps

Отсюда задача на создание такого документатора архитектуры

  • проверить серые подсети - 192.168-тую, 172-тую и 10-тку
  • выявить действующие маршруты и DNS сервера, проверим обратные PTR записи
  • отсканировать порты от "нуля" до 65-тыщ
  • сформировать диаграмму сети и налицествующих сервисов

Но дальше нам нужно уже "думать" как аудитор, и тут нам на помощь приходят сервисы - которые как мы надеямся администратор включил

  • UPnP - и тут важным моментом должно стать знание о том что nmap умеет вызывать скрипты, которые сообщество "ЭнМаперов" нарабатывает как часть экосистемы. https://nmap.org/nsedoc/scripts/upnp-info.html
  • SNMP - а тут мы уже имеем библиотечку которая позволяет "прогуляться" по SNMP датчикам https://docs.sharpsnmp.com/
.

Итого


Остается только попробовать еще обернуть это в C#/Mono/Oscript и вот Вам готовый аудитор

Архитектор = Новый КонтроллерРеальнойАрхитекутуры(СохранятьИсторию = Истина);
ТекущаяСеть = Архитектор.ЗапуститьСканерСети();
ИзвестныеУстройстваSNMP = Архитекор.SNMPWalker(ТекущаяСеть);
ИзвестныеУстройстваUPnP = Архитекор.UPNP(ТекущаяСеть);
ИзвестныеСервисы = Архитектор.НайтиОткрытыеИПонятныеПорты();
НепонятныеСервисы = Архитектор.НайтиОткрытыеИНепонятные();

Рисовалка = Новый Диаграммер(Формат = "draw.io")
ФайлАрхитектуры = Рисовался.НарисоватьАрхитектуру(
ТекущаяСеть, ИзвестныеУстройстваSNMP, ИзвестныеУстройстваUPnP,ИзвестныеСервисы, НепонятныеСервисы
);


Ну а "файл архитектуры" мы уже ПулРеквестим или просто делаем DiFF - а также можем просто смотреть с VSСode (смотри ссылка внизу)

Здесь бы записать видео о том как это классно выглядит, но пока нужно найти нормальную библиотеку для NMap и C# - а то вот это как-то мертвовато https://github.com/thomdixon/SaltwaterTaffy

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

Думается что еще лучше всего сделать проверку PTR записей по полученным IP шникам - это также позволит сократить время интервьюирования при аудите.

"Вообщем" будет трудиться дальше...

Полезные ссылки на сегодня