Глава 15. Безопасность корпоративных приложений - базы данных и файловые системы

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

Базы данных это некий способ хранения данных структурированным образом для их вставки, обновления или удаления через выполнение запросов к самой базе данных. В то же время файловые системы это способ хранения обычных данных неструктурированным образом.

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

В этой главе мы рассмотрим следующие вопросы:

  • Сетевых протоколов Microsoft - операций и уязвимостей NetBIOS, SMB (Server Message Block) и LDAP (Lightweight Directory Access Protocol)

  • Сетевые протоколы базы данных - операции TDS (Tabular Data Stream) и SQLNet

  • Атаку на серверы SQL

  • Меры противодействия для защиты сетевых протоколов и баз данных

Сетевые протоколы Microsoft – операции, уязвимости и эксплуатация NetBIOS, SMB и LDAP

В современную эпоху организации зависят от Microsoft и её продуктов, потому что они удобны для пользователя и обеспечивают лучшую связь между клиентом и сервером. Далее, для связи между клиентом и сервером требуются различные протоколы для разрешения имён машин, безопасного обмена файлами между ними и, что наиболее важно, для поиска данных и ресурсов об отдельных пользователях и об организации.

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

NetBIOS

NetBIOS может быть определён как Network Basic Input Output System, которая представляет собой устаревший разработанный IBM в начале 1980-х годов для небольших сетей протокол для того, чтобы всякий компьютер в сети мог преобразовать бы преобразовать протокол IP (Internet Protocol) в соответствующее имя хоста, или в целом, имя компьютера.

NetBIOS это 16-digit ASCII символы, назначенные компьютерам в WORKGROUP (рабочей группе) или в неком домене через WINS (Windows Internet Name Service) для разрешения значения имени хоста в его IP адрес. Следующий снимок экрана отображает имя NetBIOS компьютера:

 

Рисунок 15.1


NetBIOS

Как показано на Рисунке 15.1, CONSULTANT11-HO это заданное для компьютера имя, потому как каждый подключённый к одной и той же LAN (Local Area Network, локальной сети) компьютер был способен разрешать значение IP адреса этому названию компьютера.

Служба NetBIOS позволяет вычислительной системе запросто взаимодействовать с сетевыми приложениями, такими как принтеры и машины, подключаемые к локальному Ethernet или LAN. NetBIOS очень важен, ибо некоторые более ранние и наследуемые приложения всё ещё пользуются службами NetBIOS для взаимодействия друг с другом.

NetBIOS предоставляет три службы:

  • NetBIOS-NS (Name Service, службу имён) для регистрации и разрешения имён в сетевой среде через порт 137

  • Службу NetBIOS-DGM (Datagram Distribution, распространения дейтаграмм) для взаимодействия без установления соединения через порт 138.

  • NetBIOS-SSN (Session Service, службу сеанса) для ориентированного на соединение взаимодействие через порт 139.

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

При помощи утилиты nbtstat мы можем получить очень много сведений относительно NetBIOS поверх TCP/IP и статистических данных протокола. Приводимый ниже снимок экрана отображает работу nbtstat:

 

Рисунок 15.2


Сведения nbtstat NetBIOS

Как показано на Рисунке 15.2, при помощи утилиты nbtstat мы имеем возможность выделить все зарегистрированные в сетевом адаптере данного узла машины. Теперь, помимо имени хоста и состояния такой удалённой машины, имеются некоторые интересные сведения в виде шестнадцатеричного кода. Они носят название суффикса NetBIOS. Давайте также взглянем на них:

  • <00> - Unique это название рабочей станции.

  • <00> - Group это название домена.

  • <1C> - Group это либо контроллер домена, или сервер IIS.

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

Далее, теперь, когда мы изучили одну утилиту, давайте взглянем на утилиту NMAP для сбора сведений относительно NetBIOS, что показано на следующем снимке экрана:

 

Рисунок 15.3


Сведения NetBIOS, собранные NMAP

Как отражено на Рисунке 15.3, NMAP предоставляет много сведений относительно сканирования NetBIOS, например, значение имени хоста машины и его контроллер домена. Злоумышленник может воспользоваться этими сведениями для планирования своей последующей атаки. Таким образом, теперь мы ознакомились с NetBIOS и давайте взглянем на SMB, наиболее важный и выступающий самой распространённой целью протокол для злоумышленников.

Операции, уязвимости и эксплуатация SMB

Протокол SMB (Server Message Block, блока серверных сообщений) был разработан в начале 1980-х исследователями IBM. Этот протокол SMB выступает протоколом клиент- серверного взаимодействия, применяемого для доступа к открытым совместным ресурсам, файловым серверам, принтерам и многим прочим ресурсам во внутренней сетевой среде.

Основная функциональность SMB состоит в совместном применении файлов между клиентом и сервером. Протокол SMB работает по порту 445, однако изначально он был разработан для работы через порт 139 поверх протокола TCP (Transmission Control Protocol ).

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

 

Рисунок 15.4


Архитектура клиент- сервер SMB

Как отображено на Рисунке 15.4, наш клиент запрашивает свой SMB на доступ к некому ресурсу, а после успешной аутентификации, его сервер предоставляет этому клиенту доступ к ресурсу:

  • Аутентификация SMB: Для доступа к совместному ресурсу в домене или сети нашему клиенту необходимы учётные данные домена и соответствующие требования ACL (Access Control Lists, списков контроля доступа). Вот имеющиеся диалекты протокола SMB:

    • SMBv1: Эта версия протокола была разработана в 1984 году для совместного применения файлов, а Microsoft в дальнейшем внесла в SMBv1 расширения, опубликованные в 1990.

    • CIFS: Common Internet File System (Общая межсетевая файловая система): Это другой диалект SMB, причём с иными соглашениями именования. Он был разработан в 1996 для совместного использования бо́льших файлов.

    • SMBv2: Данная версия была разработана для улучшения значений скорости и эффективности совместного применения бо́льших файлов. Она была предложена в самый первый раз в 2006 году в Windows Vista.

    • SMBv2.1: Эта версия была введена в Windows 7 с некоторыми расширениями.

    • SMBv3: Данный протокол была предложен в Windows 8 с большим числом расширений, включая повсеместное шифрование при SMB взаимодействии.

    • SMBv3.02: Эта версия SMB была введена в Windows 8.1 для увеличения безопасности и предложения полного отключения SMBv1.

    • SMBv3.1.1: Эта версия протокола была разработана в 1984 году для совместного применения файлов, а Microsoft в дальнейшем внесла в SMBv1 расширения, опубликованные в 1990.

    • SMBv1: Данная версия была реализована в Windows 10 для расширения производительности и безопасности, например, для добавления AES-128.

Приводимый далее снимок экрана показывает при помощи такого средства отслеживания сети как Wireshark запрос и отклик аутентификации клиент- сервера SMB для доступа к совместному ресурсу ADMIN$:

 

Рисунок 15.5


Зашифрованное взаимодействие SMB2

Как демонстрирует Рисунок 15.5, наш клиент запрашивает совместный ресурс ADMIN$, его сервер проверяет целостность данного пользователя и его учётной записи и, если этот пользователь прошёл аутентификацию, данный сервер предоставляет доступ к запрошенному совместному ресурсу ADMIN$. На данный момент мы достаточно глубоко изучили SMB, давайте взглянем на уязвимости SMB и их соответствующее использование.

 

Уязвимости

Как нам известно, SMB это одна из самых востребованных служб, а потому давайте попробуем выяснить уязвима ли запущенная служба SMB:

  • Воспользовавшись утилитой NMAP запустите сканирование портов служб для выявления типа запущенных служб SMB, как это отражено на снимке экрана далее:

     

    Рисунок 15.6


    Сканирование служб SMB

    Как показано на Рисунке 15.6, при сканировании службы SMB выявлено очень много сведений, например, имя NetBIOS нашей удалённой системы, тип ОС и вид аутентификации, однако не было выявлено какая именно версия SMB поддерживается. Поэтому, давайте осуществим сканирование версии SMB.

  • При помощи утилиты NMAP выполните сканирование версии протокола, как это показано на следующем снимке экрана:

     

    Рисунок 15.7


    Сканирование версии SMB

    Как отображает Рисунок 15.7, поддерживается SMBv1. Поэтому, давайте запустим сканирование имеющихся уязвимостей SMB, как это показано на снимке экрана ниже:

     

    Рисунок 15.8


    Сканирование уязвимостей SMB

    Как видно из Рисунка 15.8, даже хотя поддерживается лишь SMBv1, наш удалённый сервер подправлен самыми последними заплатками. Поэтому давайте предпримем иной подход эксплуатации этой службы SMB.

  • Итак, из своего первоначального сканирования службы SMB мы можем сделать вывод, что для доступа к SMB поддерживается аутентификация пользователя. А потому давайте попробуем простым перебором найти применяемые учётные данные SMB, воспользовавшись атакой SMB простого перебора Metasploit, как это видно из следующего снимка экрана:

     

    Рисунок 15.9


    Атака SMB простым перебором

    Как мы замечаем из Рисунка 15.9, мы успешно взломали своего пользователя SMB Administrator. Давайте попытаемся скомпрометировать свой удалённый сервер при помощи этих учётных данных, что отражено на идущем следом снимке экрана:

     

    Рисунок 15.10


    Компрометация удалённого сервера

    Как это явствует из Рисунка 15.10, злоумышленник оказался способным скомпрометировать удалённый сервер при помощи SMB. Теперь, этот злоумышленник имеет возможность запросто перебирать совместные ресурсы, выдавать дамп из службы LSASS (Local Security Authority Subsystem Service, службы подсистемы локальной авторизации безопасности), создавать золотую квитанцию (golden ticket), компрометировать прочие домены и тому подобное.

К тому же существует ещё один способ взлома учётных данных домена при помощи атаки ретрансляции NTLM в сочетании с доступом к совместному файловому ресурсу SMB. Конкретно для этой атаки доступно несколько средств, таких как smb_relay, mitm_relay и Metasploit, а также коды сценариев ретрансляции, которые имеются в Python, Responder и т.п. Именно для данной главы мы воспользуемся утилитой Responder, которая предварительно установлена в Kali Linux:

 

Рисунок 15.11


Перехваченный хэш NTLMv1

Как мы видим из Рисунка 15.11, по причине ретрансляции SMB, когда наш зарегистрированный в своей машине пользователь Administrator пытается выполнять доступ к сетевому совместному ресурсу, утилита Responder немедленно перехватывает значение хэша NTLM. После этого злоумышленник может воспользоваться этим хэшем NTLM для передачи требуемого хэш- значения для регистрации в машине 10.172.19.51.

Операции, уязвимости и эксплуатация LDAP

Lightweight Directory Access Protocol (облегчённый протокол службы каталогов), или, для краткости , просто LDAP, как и предполагает его название, протокол не просто для доступа к объектам AD (Active Directory ), но к тому же для аутентификации и управления веб приложениями. Тем самым, в случае его компрометации службы LDAP выступают шлюзом к сведениям о золотом руднике, таким как названия, идентификационные номера, персональные сведения, подробности карты, локальные учётные данные и учётные записи.

Следовательно, как и при внедрении SQL, в случае их эксплуатации, инъекции LDAP способны разоблачать гигантский объём сведений относительно инфраструктуры организации и они даже способный снабжать злоумышленников доступом к серверам баз данных и внутренним системам.

Теперь, чтобы собрать сведения о внутренней инфраструктуре, имеется в доступности множество средств, таких как сценарии ldapsearch, NMAP, Python или Perl. Для целей этой главы мы воспользуемся сценариям NMAP чтобы выделить сведения LDAP:

 

Рисунок 15.12


Выделенные сведения LDAP

Как показано на Рисунке 15.12, при помощи сценария ldap-rootdse, выводится дамп большого объёма важных сведений относительно текущего исполняемого домена; злоумышленник для построения сценариев атак может пользоваться этой информацией.

Затем, в этом месте можно выполнить несколько прочих вещей, например, атаки LDAP простым перебором, которые мы уже рассматривали в разделе атак на SMB. Таким образом, мы оставляем вам самостоятельно попрактиковаться с этим в вашей встроенной лаборатории.

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

Сетевые протоколы баз данных - операции TDS и SQLNet

Базы данных или, для краткости, DB (Databases) это собрания структурированных сведений, которые пребывают в безопасности, легко доступны, причём в режиме 24/7. Базы данных хранят любые виды информации, например, персональные данные пользователей, зашифрованные учётные сведения, финансовые записи и промышленные сведения. Таким образом, когда выявляется любая мало-мальски неверная настройка, злоумышленник воспользуется ею для дампа конфиденциальных сведений.

Итак, прежде чем переходить к атакуемым базам данных, давайте вначале разберёмся с некоторыми их основами. Многие организации предоставляют такие базы данных:

  • MySQL

  • Oracle DB

  • MSSQL - Microsoft SQL

  • PostgreSQL

  • MongoDB

Компании выбирают собственные базы данных согласно своим требованиям, но, как правило, среди организаций наиболее популярны MSSQL и Oracle. В данной главе мы в первую очередь сосредоточимся на MSSQ:, поскольку это наиболее распространённая в организациях база данных. Итак, давайте взглянем на MSSQL и некоторые её запросы:

  1. На своём следующем снимке экрана мы видим, что модуль PowerShell PowerUPSQL показывает установленным в нашем домене в настоящее время сервер MSSQL:

     

    Рисунок 15.13


    Установленный в домена экземпляр базы данных

    Как отображено на Рисунке 15.13, наш сервер SQL 13.2.5026.0 установлен в машине WIN-0I0N2Fit2B1.

  2. Идущий далее снимок экрана отражает помимо установленных по умолчанию баз данных SQL дополнительно сконфигурированные базы данных:

     

    Рисунок 15.14


    Имеющиеся в SQL сервере базы данных

    Как видно из рисунка 15.14, помимо устанавливаемых по умолчанию баз данных, таких как master, tempdb, model и msdb, имеется и иная настроенная пользователем база данных с названием pentest.

  3. Приводимый ниже снимок экрана показывает присутствующих в этой базе данных пользователей:

     

    Рисунок 15.15


    Присутствующие в базе данных пользователи

    Как мы наблюдаем на Рисунке 15.15, в наличии имеются два пользователя: пользователь по умолчанию, sa, который по вопросам безопасности должен отключаться, и пользователь базы данных, deep.

  4. Ещё один снимок экрана отражает присутствующие в этом сервере SQL роли базы данных:

     

    Рисунок 15.16


    Роли базы данных

    Рисунок 15ю16 отражает представленных для каждой из ролей базы данных пользователей. С точки зрения безопасности, в основном мы сосредоточимся на таких ролях базы данных:

    • db_securityadmin

    • public

    • db_accessadmin

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

     

    Рисунок 15.17


    Цепочки ссылок базы данных

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

TDS

TDS, или Tabular Data Stream (поток табличных данных) это протокол базы данных уровня приложения, используемый для передачи данных между сервером базы данных и клиентом базы данных. Основная проблема TDS состоит в том, что имеющееся соединение между соответствующими клиентом и сервером не зашифрованы, а тем самым, любой злоумышленник способен изменять запросы SQL и добавлять/ модифицировать или удалять столбцы, таблицы, пользователей и тому подобного.

Давайте разберёмся с этим на неком образце:

 

Рисунок 15.18


Расшифрованный запрос TDS

Как показывает Рисунок 15.18, этот запрос найти зарегистрированных пользователей выполняет отслеживание в обычном текстовом виде и всякий злоумышленник может им воспользоваться для осуществления MITM (Man in The Middle) и прослушивать запросы SQL. Теперь давайте перейдём к другому протоколу SQL.

SQLNet

SQLNet, более широко известный как SQLNet.ora, это файл конфигурации в обычном текстовом виде и он содержит сведения относительно зашифрованных строк, соединения маршрутов, варианты трассировки, а потому служит для принятия решений как будут соединяться и сервер Oracle, и клиент. Как и TDS, SQLNet осуществляет взаимодействие в обычном тексте, который способен отслеживать злоумышленник и применять для изменения запросов с целью эксплуатации серверной основы.

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

Атака на базы данных SQL

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

Перебор серверов SQL в домене

Перечисление (enumeration) определяется как получение сведений относительно цели или целей. Также перечисление определяет собирает информацию, которая осень важна на самых ранних этапах, ибо она предоставляет в точности сведения относительно уязвимостей или неверных настроек для эксплуатации такого сервера баз данных SQL. Итак, давайте приступим к сбору сведений.

Перебор серверов SQL обычно осуществляется тремя методами:

  • Сканирование портов TCP/ UDP (User Datagram Protocol)

  • Сканирование перечислением локальных экземпляров

  • Сканирование перебором домена

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

 

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

Как нам известно, сервер SQL запускается по порту 1433, в настоящее время наш сервер SQL запущен на службе UDP. Поэтому, воспользовавшись модулем PowerShell PowerUPSQL, запускаем команду Get-SQLInstanceScanUDP, как это показано на приводимом ниже снимке экрана:

 

Рисунок 15.19


UDP сканирование SQL Express

Как видно на Рисунке 15.19, в нашем домене установлен SQLExpress, а имя его компьютера определяется как hackme.pal.

Аналогичный подход с применением сборок .NET можно использовать для выполнения сканирования чтобы выявлять имеющиеся серверы SQL, что отображено на этом снимке экрана:

 

Рисунок 15.20


UDP сканирование сборки SQLEXPRESS .NET

Из Рисунка 15.20 видно, что наша сборка .NET перечисляет запущенные в нашем домене серверы SQL. Давайте теперь просканируем ту систему, в которой исполняется сервер SQL как локальный экземпляр.

 

Сканирование перечислением локального экземпляра

Данное сканирование очень удобно когда мы приземляемся на машину с запущенным сервером SQL или компрометируем её. Даже если злоумышленник не обладает правами администратора, он всё ещё способен скомпрометировать запущенные в локальной машине экземпляры сервера SQL.

Таким образом, воспользовавшись сценарием PowerShell PowerUpSQL, отсканируем свою локальную машину с запущенными экземплярам как это показано ниже:

 

Рисунок 15.21


Сканирование локального экземпляра сервера SQL

Как мы наблюдаем на Рисунке 15.21, в данной машине нет запущенных экземпляров локального сервера SQL. Итак, давайте запусти очень мощной сканирование перечисления серверов SQL во всём нашем домене.

 

Сканирование перечислением домена

Сканирование перебора домена выполняется путём сканирования SPNs (Service Principal Names, имён главных служб), которые зарегистрированы в одном из конкретных контроллеров домена SQL или же во множестве контроллеров домена для разделения баз данных. Приводимый далее снимок экрана отражает перечисление нашего домена SQL с применением сценария PowerShell PowerUPSQL:

 

Рисунок 15.22


Перечисление серверов SQL домена

Как видно из Рисунка 15.22, MSSQLSvc это зарегистрированное в нашем контроллере домена имя SPN, а также в этом домене обнаружен сервер SQL.

Итак, раз мы успешно выявили серверы SQL, давайте осуществим простой аудит для идентификации удалённых неверных настроек при помощи PowerUPSQL, NMAP, Nessus, Nishang, SQL scanner или прочих доступных через Интернет средств. Для целей данного курса мы будем целиком полагаться на PowerUPSQL, однако не стесняйте себя и воспользуйтесь и прочими утилитами.

Аудит неверных настроек

Аудит неверных настроек сервера SQL, также именуемый более ранним термином сканированием уязвимостей, имеет направленность применения для серверов SQL.

Воспользовавшись модулем PowerShell PowerUpSQL давайте выполним сканирование аудита, как это отображено на следующем снимке экрана:

 

Рисунок 15.23


Сканирование аудита неверных настроек сервера SQL

Как видно из предыдущего Рисунка 15.23, активирована команда аудита SQL. Давайте проверим полученные результаты как это показано на снимке экрана далее:

 

Рисунок 15.24


Проведённый аудит неверных настроек сервера SQL

Как мы наблюдаем на Рисунке 15.24, в нашем сервере разрешены общедоступные полномочия главы EXECUTE с плохими паролями. На данный момент времени наш настроенный сервер SQL исправлен заплатками, что устраняет великое множество неверных настроек, однако в промышленных средах реального масштаба времени будет присутствовать огромный перечень уязвимостей, которыми можно воспользоваться.

Тогда давайте применим некоторые из таких неверных настроек и скомпрометируем свой сервер.

Эксплуатация сервера SQL

Итак, после того как мы осуществили аудит неверных настроек, давайте сначала идентифицируем зарегистрированных в этом SQL сервере пользователей при помощи модуля PowerShell PowerUpSQL.

Приводимый ниже снимок экрана отображает подключённых в данный момент времени пользователей в исследуемом SQL сервере при помощи сканирования SPN:

 

Рисунок 15.25


Зарегистрировавшийся пользователь

Как мы наблюдаем на Рисунке 15.25, в настоящее время в данной машине зарегистрирован пользователь домена deep1792. Таким образом, давайте взломаем deep1792 простым перебором.

 

Атака простым перебором

Атака простым перебором (brute-force) вовлекает предсказывание пароля пользователя для компрометации удалённой машины или учётной записи пользователя с целью выполнения вредоносных действий.

Аналогичный подход можно применять в случае серверов SQL при помощи большого числа утилит, сценариев или инструментов. Конкретно для данной главы мы воспользуемся тем же самым модулем PowerShell PowerUpSQL, применяя такую команду:


Command - $Accessible | Invoke-SQLAuditWeakLoginPw -UserFile usernames -PassFile pass.txt | Out-GridView
 	   

На снимке экрана ниже показан получаемый вывод:

 

Рисунок 15.26


Слабый пароль

Как видно из Рисунка 15.26, наш пользователь deep1792 настроен с плохим паролем (password@123), а потому давайте выполним регистрацию и воспользуемся этим сервером SQL на его этапе эксплуатации по завершению.

 

Эксплуатация по завершению

Таким образом, раз мы успешно взломали учётные данные пользователя deep1792, теперь мы можем здесь воспользоваться двумя подходами: либо открыть снабжённый оболочкой сеанс применяя PowerShell и модуль PowerUPSQL, либо воспользовавшись утилитой HeidiSQL. Для данного раздела я остановлюсь на HeidiSQL, но будьте вольны также применять и указанный модуль PowerShell:

  1. По завершению регистрации давайте проверим вошедших на данный момент пользователей, как это показано на снимке экрана далее:

     

    Рисунок 15.27


    Зарегистрированные в данный момент пользователи

    Как мы наблюдаем на Рисунке 15.27, в настоящее время зарегистрированными пользователями являются deep, public и dbcreator. Далее давайте убедимся присутствующих пользователей можно спародировать.

  2. Наш следующий снимок экрана показывает, что пользователь sa настроен неверно и под него можно подстроиться:

     

    Рисунок 15.28


    Неверная настройка для исполнения роли пользователя sa

    Рисунок 15.28 демонстрирует, что пользователь sa доступен для того чтобы можно было выступать от его имени. Этого можно достичь либо воспользовавшись модулем PowerUpSQL или через HeidiSQL.

  3. На снимке экрана ниже показано, что пользователь deep подделался под пользователя sa:

     

    Рисунок 15.29


    Пользователь deep исполняет роль с правами пользователя sa

    Как отражено на Рисунке 15.29, пользователь deep выдаёт себя за пользователя sa со всем его правами золотого уровня.

    Тем самым, мы на данный момент скомпрометировали исследуемый сервер SQL и давайте теперь воспользуемся этим и скомпрометируем всю ту систему, в которой установлен этот сервер базы данных.

  4. Наш идущий следом снимок экрана отображает как злоумышленник успешно открывает xp_cmdshell и получает возможность запуска системных команд:

     

    Рисунок 15.30


    Включена xp_cmdshell

    Как это продемонстрировано на Рисунке 15.30, включён xp_cmdshell и злоумышленник скомпрометировал данный сервер и обладает возможностью запускать любые системные команды. Теперь мы либо можем запускать такие команды отсюда, или же мы способны получить в своей системе обратную оболочку (reverse shell, в сетевой среде или во внешнюю сеть), а затем планировать последующие атаки.

    [Замечание]Замечание

    Если xp_cmdshell не включена, пожалуйста, выполните в HeidiSQL такие команды:

    
    EXEC sp_configure 'show advanced options',1 – to check whether cmdshell is enabled
    RECONFIGURE
    EXEC sp_configure 'xp_cmdshell',1 – to enable xp_cmdshell
    RECONFIGURE
     	   
  5. На следующем снимке экрана показано что злоумышленник успешно воспользовался для компрометации данной машины в удалённую машину обратной оболочкой:

     

    Рисунок 15.31


    Открытый сеанс netcat

    Как покаывает Рисунок 15.31, открыта оболочка netcat. Давайте запустим закодированный в одну строку PowerShell в коде base64 обратного TCP из этого сервера SQL, как отражает снимок экрана далее:

     

    Рисунок 15.32


    Команда PowerShell открытия обратной оболочки

    Как видно из Рисунка 15.32, кодированное в одну строку обратное соединение TCP активируется при помощи HeidiSQL. Ещё следующий снимок экрана отображает, что злоумышленник получил возможность открыть обратную оболочку и скомпрометировать всю машину, размещающую это сервер SQL:

     

    Рисунок 15.33


    Скомпрометированная машина SQL сервера

    Как мы наблюдаем на Рисунке 15.33, злоумышленник смог выполнять контроль с удалённой машины. Теперь этот злоумышленник будет способен планировать дальнейшую атаку выдавая дамп LSASS для захвата хэшей DA (Администратора домена, Domain Admin) и выполнения горизонтальных смещений для компрометации всего AD.

На данный момент мы успешно скомпрометировали исследуемый сервер SQL. Помимо этого существует большое число прочих неверных настроек, таких как CLR (Common Language Runtime, среда времени исполнения распространённого языка программирования), заслуживающих доверия баз данных и тому подобных, но все они выходят за рамки данной главы. Тем не менее, будьте свободны от ограничений и попробуйте попробовать и их.

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

Контрмеры защиты сетевых протоколов и баз данных

Ниже приведены меры противодействия, которые следует считать приоритетными для защиты серверов SQL от внедрения неверных конфигураций и от сетевых атак:

  • Сохраняйте свою операционную систему и сервер SQL в актуальном состоянии для защиты от множества известных угроз.

  • Отключите SMBv1.

  • Запретите каналы LLMR (Local Multicast Name Resolution), NetBIOS и WPAD (Web Proxy Autodiscover).

  • Отключите NTLMv1.

  • Запретите устанавливаемого по умолчанию пользователя sa, к тому же учётные данные самой службы не должны применяться для сервера SQL.

  • Постоянно осуществляйте аудит серверов SQL после выполнения новых настроек и на ежемесячной основе.

  • Для пользователя домена и пользователя сервера SQL применяйте строгие учётные данные.

  • Отключайте опасные хранимые процедуры.

Выводы

В данной главе мы изучили весьма углублённые вопросы, которые обычно обязаны применяют участники красной команды для компрометации операций AD и Swift, включая базу данных SQL Swift. Следовательно, очень важно осознавать подход злоумышленника когда какая- либо машина во внутренней сети скомпрометирована удалённым нападающим. В этой главе мы рассмотрели атаку простым перебором SMB, ретрансляцию для компрометации хэша NTLM и неверные настройки SQL сервера через подмену пользователя и xp_cmdshell.

Наша следующая глава сосредоточится на атаках VOIP (Voice Over IP), включая разнообразные технологии компрометации серверов VOIP и сетевых сред VOIP, а также посредника в промежутке (MITM).

Вопросы

  1. Какая из версий SMB опасна и влечёт за собой множество известных атак?

    1. SMBv2

    2. SMBv1

    3. CIFS

    4. Все перечисленные

  2. Для чего применяется SMB?

    1. Совместного использования файлов

    2. Доступа к серверу совместных файловых ресурсов

    3. Взаимодействия клиент- сервер

    4. Для всего этого

  3. Для компрометации чего применяется ретрансляция SMB?

    1. Удалённых машин

    2. Учётных записей пользователей

    3. Хэшей NTLM/ NTLMv2

    4. Ни для чего из приведённого

  4. Что из этого высупает неверной настройкой сервера SQL?

    1. xp_cmdshell

    2. Слабые учётные данные

    3. Заслуживающие доверия базы данных

    4. Всё это

  5. Какое из средств применяется для исполнения команд SQL?

    1. PowerUp

    2. PowerUpSQL

    3. Приглашение командной строки

    4. NMAP

  6. Какую из этих команд применять для аудита сервера SQL?

    1. Invoke-SQLAudit

    2. Nmap -sT -T4 <ip address>

    3. Responder -I eth0

    4. Ни одна из них

  7. Для чего применяется Responder?

    1. Выявления уязвимостей в удалённых серверах

    2. Поиска открытых портов

    3. Для перехвата хэшей NTLM/NTLMv2

    4. Ни для чего из перечисленного