1. Введение
Вкратце расскажу немного о себе и о ситуации, которая сподвигла написать данную статью.
Я работаю руководителем недавно образовавшегося направления RedTeam в крупнейшей организации, в состав которой входят многочисленные производственные предприятия, разбросанные по стране. В составе есть даже градообразующие предприятия. Я специально сделал на этом акцент, чтобы читающий понял, на сколько все критично. И речь идет не совсем о нарушении ФЗ №187 в отношении критически важной инфраструктуры. Есть высокие риски не только финансовых потерь из-за остановки производства, но и нарушение жизнеобеспечения целых городов (свет, тепло, водоснабжение). И на этих самых предприятиях требования ИБ исполняются не должным образом. Мы пробовали:
Итак, приступим.
2. Ограничения и определение области действия
Главным ограничением, которое я установил перед командой - все должно происходить без остановки технологического процесса предприятий. Потому что простои – это всегда серьезные убытки и последствия.
Дополнительные ограничения, которые я так же озвучил – не использовать уже имеющиеся у нас знания о наших предприятиях, а именно:
3. Footprinting
Несмотря на то, что уже частично определена область действия, мы все же не отказались от данного этапа. В ходе футпринтинга мы выявили очень интересные вещи, о которых не знали ранее:
На этом этапе мы использовали простые доступные инструменты и сервисы такие, как Goolge, Shodan, theHarvester. Почему простые? Потому что они доступны каждому бесплатно, и их использование очень легко.
Используя сайт 2ip.ru или его аналоги, по имени внешнего сайта компании определяем IP-адрес. А по нему находим контактную информацию (фамилия, имя, телефон рабочий и мобильный) того, на кого зарегистрированы IP-адреса компании.
Заходим на сайт shodan.io. В строке поиска вводим найденный IP-адрес и получаем информацию о сертификатах, заголовках, портах и сервисах. В заголовках можно увидеть много чего интересного если они настроены «криво». Например, версию веб-сервера. А иногда этого достаточно, чтобы найти нужный эксплоит.
Используя theharvester, одной командой можно собрать еще больше информации и использовать ее опять же в shodan. Например, вот такой командой, получаем все IP-адреса, принадлежащие компании, и далее в shodan смотрим, какие порты и сервисы доступны.
theharvester –d site.com –l 200 –b all
-d – указываем домен компании, информацию о которой мы хотим найти
-l – указывается ограничение числа результатов поиска. На моей практике всегда было достаточно и 200 строк.
-b – указываем, где искать. Если указать all, то поиск будет выполняться по всем известным харвестеру источникам. Можно ограничиться только google или yandex.
Результаты харвестера показываются в терминале. Для удобства рекомендую экспортировать все в html, указав параметр –f
theharvester –d site.com –l 500 –b all –f harvester.html
По результатам данного этапа у нас не только появилась необходимая информация для возможной атаки (DOS, Phishing), но и реализовали новый кейс в нашем SOC (Security Operation Center), связанный с появлением новой информации в интернете о нашей компании или о сотрудниках. Не могу раскрыть все детали кейса, т.к. они под грифом конфиденциальности.
4. Scanning и Enumeration
Можно было организовать фишинговую рассылку на обнаруженные электронные адреса. Обязательно найдется кто-то, кто перейдет по вредоносной ссылке. Но не смотря на результаты футпринтинга, мы решили поехать на предприятие и физически «пощупать» его. Назначили встречу с ИТ, прилетели. Рекомендую, когда приезжаешь на предприятие, сразу же сообщить, что планируется посещение производственных площадок. Тогда вас заставят пройти технику безопасности. Да, вы потеряете 1-2 часа, но зато по окончанию вводного инструктажа вам выдадут спецодежду. Она нам пригодится в дальнейшем. Так же посещение ТБшников полезно тем, что на пути к ним мы перемещаемся по зданию и наблюдаем обстановку. Лично я увидел коридорные принтеры, WiFi точки доступа, а мой коллега был еще более внимателен. Он заметил одну розетку RJ45 и оставленный в принтере распечатанный приказ, содержащий электронный адрес автора документа и ФИО работников, которым необходимо выйти на работу в выходные дни.
Далее, находясь на совещании, мы просим подключить нас к гостевой WiFi точке доступа. Именно к гостевой, которая должна быть отделена от офисной сети. После подключения сразу же проверяем какой IP мы получили и запускаем сканирование с помощью ZenMap (он же NMap, только под Windows). Я сканировал «ближайшие» ко мне подсети, а коллега сканировал «красивые».
Например, если мы получили 192.168.13.28, то ближайшие к нам – это 192.168.12.1/24 – 192.168.15.1/24. В таком случае цель для скана будет выглядеть так:
Ближайшие, потому что под разные WiFi подсети как правило для удобства используются подсети подряд.
«Красивые» подсети – это 1, 11, 22, 111, 222 и т.д.. Я заметил, что ИТшники часто выбирают такие подсети для серверов, сетевого оборудования, принтеров, а также для себя любимых, чтобы легче было запоминать адреса и хвастаться перед коллегами. Для некоторых это тоже самое, что и купить себе крутой гос. номер для авто.
Как оказалось, мы не видим ни одной подсети, кроме той, в которой находимся. Неудача!
Далее коллега, глубоко извиняясь, выходит якобы в туалет и берет с собой ноутбук. Вместо пиджака одевает верхнюю часть спецодежды. Никого это не смутило. Специалисты ИТ подразделения продолжали рассказывать, как у них «все хорошо». В коридоре коллега подключает ноутбук к свободной сетевой розетке. Не получает никакого IP-адреса. Видимо, розетка нерабочая или порт на коммутаторе был отключен. Снова неудача!
Затем коллега подключает ноутбук к розетке, к которой был подключен сетевой принтер. IP-адрес был получен. Бинго! Фильтрация по MAC-адресу не настроена. Тут же был запущен скан ближайших подсетей.
Скан запускали в режиме Ping, чтобы просто понять, до каких подсетей мы можем достучаться. В результатах ZenMap/NMap мы видим, что есть доступ до определенных хостов из других подсетей. В таком случает ZenMap/NMap рапортует «Host is up».
И запускаем уже более подробный скан обнаруженных IP адресов, чтобы понять, какие порты слушаются. Команда будет выглядеть примерно так:
nmap -Pn -sS -sV 192.168.1.92
-Pn - Расценивать все хосты как работающие - пропустить обнаружение хостов
-sS - TCP SYN сканирование или Stealth Scan
-sV - Исследовать открытые порты для определения информации о службе/версии
В результатах ZenMap/NMap будут указаны все доступные нам порты и их описание если ZenMap/NMap смог их определить:
Т.к. прошло уже более 30 минут, коллеге пришлось вернуться, но уже имелась информация о трех хостах с открытыми портами 445 (SMB), 80 (http), 443 (https) и другими. Пока совещание продолжалось, коллега на своем ноутбуке настроил скан этих хостов в сканере уязвимостей Nessus. Создаем новый скан типа Advanced.
В targets указываем IP-адреса обнаруженных хостов. Все остальное оставляем по умолчанию.
Использовалась триальная версия сканера Nessus, которая была установлена заранее. Рекомендую делать это заблаговременно, т.к. при первом старте сканера запускается компиляция и обновление плагинов. На нашем ноутбуке это заняло более часа.
Затем коллега снова вышел в коридор, сразу же направился к принтеру, подключил ноутбук и запустил сканирование. Оно длилось не более 10 минут. Ура! У нас есть отчет по трем хостам. Идем на обед.
После обеда, пока все курили или спали в своих кабинетах (некоторые реально спали), спокойно анализируем отчет сканера. Ищем критические уязвимости, особенно на портах 445, 80, 443. Находим уязвимость MS17-010. Подробная информация для тех, кто не запомнил номер этой нашумевшей уязвимости можно прочитать здесь
https://ru.wikipedia.org/wiki/EternalBlue
https://www.exploit-db.com/exploits/42315
5. System Hacking и Privilege Escalation
Приступаем к самому интересному. Достаем ноутбук с установленной операционной системой KaliLinux. Можно попробовать KaliLinux установить на виртуалку. Вот здесь очень подробно описано, как Kali устанавливается на VirtualBox https://itsfoss.com/install-kali-linux-virtualbox/
В таком случае, рекомендуется в настройках виртуальной машины сетевую карту настроить бриджом, чтобы она получила свой IP.
В данном случае мы не использовали Metasploit в Kali, запущенной на виртуалке. Для этого у нас был отдельный ноутбук. В ходе второй части совещания, коллега в спецодежде опять вышел в коридор, подключился вместо принтера и начала проверять, действительно ли хосты подвержены уязвимости MS17-010, как показал сканер.
Запускаем Metasploit командой msfconsole
Проверяем, есть ли в нашем Metasploit необходимые эксплоиты под MS17-010 командой
search ms17
Auxiliary – это модули для сканирования сети или проверки подверженности той или иной уязвимости. Поэтому сначала используем его.
В результатах видно, что хост повержен данной уязвимости. Приступаем непосредственно к эксплуатации.
Запускаем все это дело командой run и ждем магии. Если все успешно, то мы увидим слова WIN и Meterpreter
После получения доступа к хосту повышаем свои привилегии до системных командой getsystem и сразу же командой getuid проверяем получилось ли это сделать:
Если вы видите NT AUTHORITY\система – значит все получилось. Мы на удаленном хосте и далее возможно выполнять любые действия с хостом, включая удаление данных и его остановку.
С помощью sysinfo смотрим информацию о системе.
Сразу же возник вопрос, почему хост с Windows 7 не в домене, а в рабочей группе WORKGROUP? Ладно будем разбираться дальше.
Смотрим запущенные процессы на удаленном хосте командой ps
Выбираем один из процессов и пробуем мигрировать в него, например, в explorer.exe командой migrate 3392, где 3392 это PID процесса explorer.exe. Миграция прошла успешно.
Следующим шагом собираем информацию по системе командой run winenum
В итоге мы получаем информацию по настройкам системы, спискам пользователей и многое другое.
6. Cracking Passwords
Собираем Hash паролей командой hashdump
В результате получаем имена учетных записей и хэши их паролей. Отмечу, что цифра 500 всегда обозначает встроенного администратора, а 501 – гостя. Так что, если их кто-то переименует, то для вас это не помеха.
С помощью онлайн сервисов или программы hashcat расшифровываем хэши паролей.
Hashcat поддерживает очень большое количество алгоритмов. Подробное описание можно прочитать здесь https://hashcat.net/hashcat/. В ходе пентеста может понадобиться разнонаправленное использование данной утилиты. Видео с подробным объяснением можно посмотреть здесь
Если все хорошо, то мы увидим статус Cracked
Так же у Hashcat есть GUI. Новичкам им пользоваться проще и быстрее.
https://hashkiller.co.uk/Tools/HashcatGUI
А вот так выглядит тот же результат одного из многих онлайн сервисов.
https://www.onlinehashcrack.com/
В итоге получаем пароли. Значение «empty string» означает, что пароль пустой.
При сканировании ZenMap/Nmap так же был обнаружен установленный VNC сервер на удаленной машине на портах 5800 и 5900
Для взлома пароля VNC необходимо в реестре атакуемой машины найти зашифрованный пароль. Для этого получаем Shell и находим нужную ветку в реестре командой «reg query»
Пароль сохранен в переменной Password в зашифрованном виде. К счастью есть специальная утилита VNC Password Recovery для расшифровки
7. Продолжение атаки
Мы не стали подключаться к хосту по VNC, чтобы не наследить лишний раз. Далее делаем скриншот с удаленного хоста командой screenshot
Открываем скриншот и понимаем, почему данный хост не в домене. На скриншоте мы увидели систему АСУТП, которая управляла конвейерами, весами и опрокидами. Как правило АСУТП системы выводят в отдельный сегмент сети и там никакие требования ИБ не применяют. На очередном перекуре мы с коллегой попытались понять, почему же этот хост в офисной сети, а не в отдельной. Ноутбук все это время стоял возле принтера. Странно, что никто из ИТ этого не заметил. Мы решили, что будем дальше искать другие АСУТП хосты. Проверяем, какие сетевые интерфейсы есть на удаленном хосте командой ipconfig
Оказалось, что у этого хоста есть второй интерфейс из другой подсети. Проверяем какие еще хосты доступны с обоих интерфейсов командой arp –a
Со второго интерфейса было видно очень много хостов, видимо это был весь АСУТП сегмент. Дальше можно просто повторять все по кругу. Каждый найденный хост проверить на наличие открытых портов и пробовать подключаться к ним.
В завершение пробуем скопировать файл с удаленного хоста к себе. Командой dir смотрим, какие директории есть
Видим много непонятных каталогов, которых по умолчанию нет на хостах с операционной системой windows. Переходим в каталог XML, смотрим ее содержимое.
Пробуем скопировать на свой ноутбук файл из папки XML командой
Download file_name.xml -> /root/Documents
Файл скопирован успешно. Открываем полученный XML файл в Excel и видим некий отчет о тех же конвейерах, весах и опрокидах. Это стало понятно из названия столбцов.
8. Clean-up
Т.к. мы не создавали никаких учетных записей на удаленном хосте, то и подчищать было нечего. Мы даже не стали проверять, какие логи пишет ОС и есть ли там следы нашего подключения. Понятно, что там наверняка ничего не настроено. Сетевой кабель обратно подключили к принтеру, выключили его. Если у кого-то возникнут вопросы почему он не работал почти весь день, то увидят, что он просто был выключен.
9. Результат
Отчет по данному пентесту был направлен руководству ИТ – реакции сначала не было никакой. Затем отчет был озвучен на совещании с топ менеджментом. И было во всей красе продемонстрировано, как прям сейчас можно остановить производство. И только после этого началась хоть какая-то работа по исполнению требований ИБ со стороны ИТ подразделения.
10. Выводы
Нам нужно закрывать все возможные «дыры» в инфраструктуре, а злоумышленнику достаточно найти только одну, чтобы проникнуть в сеть. Вот так просто, пока ИТ подразделение «рассказывает сказки».
Кто-то скажет: «Да это же пентест в стиле WhiteBox!». Возможно этот человек будет прав, но учитывая те ограничения, о которых говорилось в начале статьи, я бы сказал, что это BlackBox. Хочу отметить, что любой может «прикинуться» каким-нибудь подрядчиком или очередным поставщиком оборудования и так же назначить встречу на территории предприятия.
Кто-то наверняка читает эту статью и задается вопросом: «А спецодежда зачем?». Ответ простой. В момент нахождения возле принтера мимо проходили люди, и никто не поинтересовался КТО это и ЧТО он делает. Наверное, они подумали, что это кто-то из ИТ подразделения. И как раз принтер сегодня не работает, наверняка ИТшники уже в курсе и пытаются его починить. Если бы человек был в пиджаке, то возможно так просто не получилось все это провернуть.
Всем спасибо за внимание!
Вкратце расскажу немного о себе и о ситуации, которая сподвигла написать данную статью.
Я работаю руководителем недавно образовавшегося направления RedTeam в крупнейшей организации, в состав которой входят многочисленные производственные предприятия, разбросанные по стране. В составе есть даже градообразующие предприятия. Я специально сделал на этом акцент, чтобы читающий понял, на сколько все критично. И речь идет не совсем о нарушении ФЗ №187 в отношении критически важной инфраструктуры. Есть высокие риски не только финансовых потерь из-за остановки производства, но и нарушение жизнеобеспечения целых городов (свет, тепло, водоснабжение). И на этих самых предприятиях требования ИБ исполняются не должным образом. Мы пробовали:
- Описывать все необходимые требования в регламентирующих документах каждого предприятия;
- Проводить периодические проверки состояния ИБ каждого предприятия с предоставлением отчетов отделу управления рисками и ИТ руководству головной компании;
- Обращаться к топ-менеджменту компании;
- Делать оценку рисков с отчетом опять же для топ-менеджеров;
- Проводить совещания с руководством ИТ предприятий и фиксировать в протоколе проблемы с конкретными сроками их устранения.
Итак, приступим.
2. Ограничения и определение области действия
Главным ограничением, которое я установил перед командой - все должно происходить без остановки технологического процесса предприятий. Потому что простои – это всегда серьезные убытки и последствия.
Дополнительные ограничения, которые я так же озвучил – не использовать уже имеющиеся у нас знания о наших предприятиях, а именно:
- Нельзя использовать отчеты используемых в компании сканеров уязвимостей.
- Нельзя использовать наши (ИБшные) серверы компании, с которых имеется доступ ко всем сегментам сети. Например, тот же самый сканер уязвимостей или SIEM система.
- Нельзя обращаться к ИТ подразделению с просьбой отключить что-либо, чтобы это не мешало атаке.
- Нельзя использовать схемы сетей и наши текущие знания со сегментации сети.
- Нельзя использовать какие-либо выгрузки, полученные путем исполнения наших прямых должностных обязанностей. Например, для регулярных проверок мы выгружаем списки рабочих станций, серверов, пользователей и т.д..
- Нельзя использовать адресную книгу всех работников Компании – очень ценная информация при атаке.
3. Footprinting
Несмотря на то, что уже частично определена область действия, мы все же не отказались от данного этапа. В ходе футпринтинга мы выявили очень интересные вещи, о которых не знали ранее:
- Лишние порты доступны снаружи;
- VPN сервис возможно использовать в обход 2FA (двухфакторная аутентификация);
- Возможно намеренно блокировать учетные записи через сервис OWA (Outlook Web Access).
На этом этапе мы использовали простые доступные инструменты и сервисы такие, как Goolge, Shodan, theHarvester. Почему простые? Потому что они доступны каждому бесплатно, и их использование очень легко.
Используя сайт 2ip.ru или его аналоги, по имени внешнего сайта компании определяем IP-адрес. А по нему находим контактную информацию (фамилия, имя, телефон рабочий и мобильный) того, на кого зарегистрированы IP-адреса компании.
Заходим на сайт shodan.io. В строке поиска вводим найденный IP-адрес и получаем информацию о сертификатах, заголовках, портах и сервисах. В заголовках можно увидеть много чего интересного если они настроены «криво». Например, версию веб-сервера. А иногда этого достаточно, чтобы найти нужный эксплоит.
Используя theharvester, одной командой можно собрать еще больше информации и использовать ее опять же в shodan. Например, вот такой командой, получаем все IP-адреса, принадлежащие компании, и далее в shodan смотрим, какие порты и сервисы доступны.
theharvester –d site.com –l 200 –b all
-d – указываем домен компании, информацию о которой мы хотим найти
-l – указывается ограничение числа результатов поиска. На моей практике всегда было достаточно и 200 строк.
-b – указываем, где искать. Если указать all, то поиск будет выполняться по всем известным харвестеру источникам. Можно ограничиться только google или yandex.
Результаты харвестера показываются в терминале. Для удобства рекомендую экспортировать все в html, указав параметр –f
theharvester –d site.com –l 500 –b all –f harvester.html
По результатам данного этапа у нас не только появилась необходимая информация для возможной атаки (DOS, Phishing), но и реализовали новый кейс в нашем SOC (Security Operation Center), связанный с появлением новой информации в интернете о нашей компании или о сотрудниках. Не могу раскрыть все детали кейса, т.к. они под грифом конфиденциальности.
4. Scanning и Enumeration
Можно было организовать фишинговую рассылку на обнаруженные электронные адреса. Обязательно найдется кто-то, кто перейдет по вредоносной ссылке. Но не смотря на результаты футпринтинга, мы решили поехать на предприятие и физически «пощупать» его. Назначили встречу с ИТ, прилетели. Рекомендую, когда приезжаешь на предприятие, сразу же сообщить, что планируется посещение производственных площадок. Тогда вас заставят пройти технику безопасности. Да, вы потеряете 1-2 часа, но зато по окончанию вводного инструктажа вам выдадут спецодежду. Она нам пригодится в дальнейшем. Так же посещение ТБшников полезно тем, что на пути к ним мы перемещаемся по зданию и наблюдаем обстановку. Лично я увидел коридорные принтеры, WiFi точки доступа, а мой коллега был еще более внимателен. Он заметил одну розетку RJ45 и оставленный в принтере распечатанный приказ, содержащий электронный адрес автора документа и ФИО работников, которым необходимо выйти на работу в выходные дни.
Далее, находясь на совещании, мы просим подключить нас к гостевой WiFi точке доступа. Именно к гостевой, которая должна быть отделена от офисной сети. После подключения сразу же проверяем какой IP мы получили и запускаем сканирование с помощью ZenMap (он же NMap, только под Windows). Я сканировал «ближайшие» ко мне подсети, а коллега сканировал «красивые».
Например, если мы получили 192.168.13.28, то ближайшие к нам – это 192.168.12.1/24 – 192.168.15.1/24. В таком случае цель для скана будет выглядеть так:
Ближайшие, потому что под разные WiFi подсети как правило для удобства используются подсети подряд.
«Красивые» подсети – это 1, 11, 22, 111, 222 и т.д.. Я заметил, что ИТшники часто выбирают такие подсети для серверов, сетевого оборудования, принтеров, а также для себя любимых, чтобы легче было запоминать адреса и хвастаться перед коллегами. Для некоторых это тоже самое, что и купить себе крутой гос. номер для авто.
Как оказалось, мы не видим ни одной подсети, кроме той, в которой находимся. Неудача!
Далее коллега, глубоко извиняясь, выходит якобы в туалет и берет с собой ноутбук. Вместо пиджака одевает верхнюю часть спецодежды. Никого это не смутило. Специалисты ИТ подразделения продолжали рассказывать, как у них «все хорошо». В коридоре коллега подключает ноутбук к свободной сетевой розетке. Не получает никакого IP-адреса. Видимо, розетка нерабочая или порт на коммутаторе был отключен. Снова неудача!
Затем коллега подключает ноутбук к розетке, к которой был подключен сетевой принтер. IP-адрес был получен. Бинго! Фильтрация по MAC-адресу не настроена. Тут же был запущен скан ближайших подсетей.
Скан запускали в режиме Ping, чтобы просто понять, до каких подсетей мы можем достучаться. В результатах ZenMap/NMap мы видим, что есть доступ до определенных хостов из других подсетей. В таком случает ZenMap/NMap рапортует «Host is up».
И запускаем уже более подробный скан обнаруженных IP адресов, чтобы понять, какие порты слушаются. Команда будет выглядеть примерно так:
nmap -Pn -sS -sV 192.168.1.92
-Pn - Расценивать все хосты как работающие - пропустить обнаружение хостов
-sS - TCP SYN сканирование или Stealth Scan
-sV - Исследовать открытые порты для определения информации о службе/версии
В результатах ZenMap/NMap будут указаны все доступные нам порты и их описание если ZenMap/NMap смог их определить:
Т.к. прошло уже более 30 минут, коллеге пришлось вернуться, но уже имелась информация о трех хостах с открытыми портами 445 (SMB), 80 (http), 443 (https) и другими. Пока совещание продолжалось, коллега на своем ноутбуке настроил скан этих хостов в сканере уязвимостей Nessus. Создаем новый скан типа Advanced.
В targets указываем IP-адреса обнаруженных хостов. Все остальное оставляем по умолчанию.
Использовалась триальная версия сканера Nessus, которая была установлена заранее. Рекомендую делать это заблаговременно, т.к. при первом старте сканера запускается компиляция и обновление плагинов. На нашем ноутбуке это заняло более часа.
Затем коллега снова вышел в коридор, сразу же направился к принтеру, подключил ноутбук и запустил сканирование. Оно длилось не более 10 минут. Ура! У нас есть отчет по трем хостам. Идем на обед.
После обеда, пока все курили или спали в своих кабинетах (некоторые реально спали), спокойно анализируем отчет сканера. Ищем критические уязвимости, особенно на портах 445, 80, 443. Находим уязвимость MS17-010. Подробная информация для тех, кто не запомнил номер этой нашумевшей уязвимости можно прочитать здесь
https://ru.wikipedia.org/wiki/EternalBlue
https://www.exploit-db.com/exploits/42315
5. System Hacking и Privilege Escalation
Приступаем к самому интересному. Достаем ноутбук с установленной операционной системой KaliLinux. Можно попробовать KaliLinux установить на виртуалку. Вот здесь очень подробно описано, как Kali устанавливается на VirtualBox https://itsfoss.com/install-kali-linux-virtualbox/
В таком случае, рекомендуется в настройках виртуальной машины сетевую карту настроить бриджом, чтобы она получила свой IP.
В данном случае мы не использовали Metasploit в Kali, запущенной на виртуалке. Для этого у нас был отдельный ноутбук. В ходе второй части совещания, коллега в спецодежде опять вышел в коридор, подключился вместо принтера и начала проверять, действительно ли хосты подвержены уязвимости MS17-010, как показал сканер.
Запускаем Metasploit командой msfconsole
Проверяем, есть ли в нашем Metasploit необходимые эксплоиты под MS17-010 командой
search ms17
Auxiliary – это модули для сканирования сети или проверки подверженности той или иной уязвимости. Поэтому сначала используем его.
- Запускаем командой
- Смотрим, какие опции можно настроить
- В переменную RHOSTS устанавливаем уже известный нам IP-адрес, например:
- Запускаем проверку командой run
В результатах видно, что хост повержен данной уязвимости. Приступаем непосредственно к эксплуатации.
- В этот раз запускаем уже сам эксплоит EternalBlue
- Смотрим, какие опции можно настроить
- В переменную RHOSTS устанавливаем тот же IP-адрес, например:
- В переменную LHOST устанавливаем IP-адрес нашего ноутбука, например:
- Устанавливаем полезную нагрузку для получения сессии meterpreter
Запускаем все это дело командой run и ждем магии. Если все успешно, то мы увидим слова WIN и Meterpreter
После получения доступа к хосту повышаем свои привилегии до системных командой getsystem и сразу же командой getuid проверяем получилось ли это сделать:
Если вы видите NT AUTHORITY\система – значит все получилось. Мы на удаленном хосте и далее возможно выполнять любые действия с хостом, включая удаление данных и его остановку.
С помощью sysinfo смотрим информацию о системе.
Сразу же возник вопрос, почему хост с Windows 7 не в домене, а в рабочей группе WORKGROUP? Ладно будем разбираться дальше.
Смотрим запущенные процессы на удаленном хосте командой ps
Выбираем один из процессов и пробуем мигрировать в него, например, в explorer.exe командой migrate 3392, где 3392 это PID процесса explorer.exe. Миграция прошла успешно.
Следующим шагом собираем информацию по системе командой run winenum
В итоге мы получаем информацию по настройкам системы, спискам пользователей и многое другое.
6. Cracking Passwords
Собираем Hash паролей командой hashdump
В результате получаем имена учетных записей и хэши их паролей. Отмечу, что цифра 500 всегда обозначает встроенного администратора, а 501 – гостя. Так что, если их кто-то переименует, то для вас это не помеха.
С помощью онлайн сервисов или программы hashcat расшифровываем хэши паролей.
Hashcat поддерживает очень большое количество алгоритмов. Подробное описание можно прочитать здесь https://hashcat.net/hashcat/. В ходе пентеста может понадобиться разнонаправленное использование данной утилиты. Видео с подробным объяснением можно посмотреть здесь
Если все хорошо, то мы увидим статус Cracked
Так же у Hashcat есть GUI. Новичкам им пользоваться проще и быстрее.
https://hashkiller.co.uk/Tools/HashcatGUI
А вот так выглядит тот же результат одного из многих онлайн сервисов.
https://www.onlinehashcrack.com/
В итоге получаем пароли. Значение «empty string» означает, что пароль пустой.
При сканировании ZenMap/Nmap так же был обнаружен установленный VNC сервер на удаленной машине на портах 5800 и 5900
Для взлома пароля VNC необходимо в реестре атакуемой машины найти зашифрованный пароль. Для этого получаем Shell и находим нужную ветку в реестре командой «reg query»
Пароль сохранен в переменной Password в зашифрованном виде. К счастью есть специальная утилита VNC Password Recovery для расшифровки
7. Продолжение атаки
Мы не стали подключаться к хосту по VNC, чтобы не наследить лишний раз. Далее делаем скриншот с удаленного хоста командой screenshot
Открываем скриншот и понимаем, почему данный хост не в домене. На скриншоте мы увидели систему АСУТП, которая управляла конвейерами, весами и опрокидами. Как правило АСУТП системы выводят в отдельный сегмент сети и там никакие требования ИБ не применяют. На очередном перекуре мы с коллегой попытались понять, почему же этот хост в офисной сети, а не в отдельной. Ноутбук все это время стоял возле принтера. Странно, что никто из ИТ этого не заметил. Мы решили, что будем дальше искать другие АСУТП хосты. Проверяем, какие сетевые интерфейсы есть на удаленном хосте командой ipconfig
Оказалось, что у этого хоста есть второй интерфейс из другой подсети. Проверяем какие еще хосты доступны с обоих интерфейсов командой arp –a
Со второго интерфейса было видно очень много хостов, видимо это был весь АСУТП сегмент. Дальше можно просто повторять все по кругу. Каждый найденный хост проверить на наличие открытых портов и пробовать подключаться к ним.
В завершение пробуем скопировать файл с удаленного хоста к себе. Командой dir смотрим, какие директории есть
Видим много непонятных каталогов, которых по умолчанию нет на хостах с операционной системой windows. Переходим в каталог XML, смотрим ее содержимое.
Пробуем скопировать на свой ноутбук файл из папки XML командой
Download file_name.xml -> /root/Documents
Файл скопирован успешно. Открываем полученный XML файл в Excel и видим некий отчет о тех же конвейерах, весах и опрокидах. Это стало понятно из названия столбцов.
8. Clean-up
Т.к. мы не создавали никаких учетных записей на удаленном хосте, то и подчищать было нечего. Мы даже не стали проверять, какие логи пишет ОС и есть ли там следы нашего подключения. Понятно, что там наверняка ничего не настроено. Сетевой кабель обратно подключили к принтеру, выключили его. Если у кого-то возникнут вопросы почему он не работал почти весь день, то увидят, что он просто был выключен.
9. Результат
Отчет по данному пентесту был направлен руководству ИТ – реакции сначала не было никакой. Затем отчет был озвучен на совещании с топ менеджментом. И было во всей красе продемонстрировано, как прям сейчас можно остановить производство. И только после этого началась хоть какая-то работа по исполнению требований ИБ со стороны ИТ подразделения.
10. Выводы
Нам нужно закрывать все возможные «дыры» в инфраструктуре, а злоумышленнику достаточно найти только одну, чтобы проникнуть в сеть. Вот так просто, пока ИТ подразделение «рассказывает сказки».
Кто-то скажет: «Да это же пентест в стиле WhiteBox!». Возможно этот человек будет прав, но учитывая те ограничения, о которых говорилось в начале статьи, я бы сказал, что это BlackBox. Хочу отметить, что любой может «прикинуться» каким-нибудь подрядчиком или очередным поставщиком оборудования и так же назначить встречу на территории предприятия.
Кто-то наверняка читает эту статью и задается вопросом: «А спецодежда зачем?». Ответ простой. В момент нахождения возле принтера мимо проходили люди, и никто не поинтересовался КТО это и ЧТО он делает. Наверное, они подумали, что это кто-то из ИТ подразделения. И как раз принтер сегодня не работает, наверняка ИТшники уже в курсе и пытаются его починить. Если бы человек был в пиджаке, то возможно так просто не получилось все это провернуть.
Всем спасибо за внимание!