Основы баз данных для хакеров, часть 1: Начало работы

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
153
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие кибервоины!
Несмотря на множество различных типов хакеров и методов взлома, их общая цель — база данных. Я часто называю базу данных Святым Граалем хакера , или высшей наградой за эффективный взлом.
Это связано с тем, что база данных — почти по определению — является хранилищем всех «ценностей», за которыми гонится хакер. Эти ценности могут включать данные кредитных карт, персональные данные (PII), имена пользователей и пароли, а также интеллектуальную собственность. Каждый из этих элементов можно продать за значительные суммы на чёрном рынке.
Например, номера кредитных карт можно продать за 5–50 долларов в зависимости от качества (золотые и платиновые карты стоят дороже обычных) и кредитного лимита. Таким образом, взлом, позволяющий получить 200 000 номеров кредитных карт, стоит от 1 до 10 миллионов долларов!
6a4a49_fed52b124fe447ac81e148e3c97c8a8c~mv2.jpg

Учитывая важность баз данных в информационной безопасности/кибербезопасности, я счёл целесообразным начать серию, посвящённую основам баз данных. Как и моя книга « Основы Linux для хакеров» , эта серия будет посвящена основам баз данных, включая работу с ними, а также их слабые места и уязвимости. Она не предназначена для того, чтобы сделать из вас администратора или разработчика баз данных, а скорее для того, чтобы дать вам фундаментальное понимание баз данных, необходимое для их защиты и атак.
Что такое база данных?
База данных — это система программного обеспечения для хранения и извлечения информации в структурированном формате. Ранние базы данных представляли собой простые файлы, похожие на большие файлы Excel. По мере роста объёма баз данных эта простая структура становилась неэффективной.
В результате учёный из IBM, доктор Кодд, разработал структуру, получившую название модели реляционной базы данных . Именно эту модель сегодня используют около 97% всех баз данных, включая все крупнейшие компании-разработчики программного обеспечения.
Основой реляционной модели является то, что данные должны размещаться в отдельных таблицах с уникальными ключами, которые связывают таблицы, чтобы избежать дублирования данных и облегчить поиск этих данных.
Структура базы данных
Эта модель реляционной базы данных связывает данные из отдельных таблиц с помощью общего столбца, или «ключа». На диаграмме ниже представлена простая модель реляционной базы данных, в которой все таблицы связаны столбцом «ID».
6a4a49_2938efaf6f0c4922b57c9ad719d22175~mv2.jpg

Основные поставщики на рынке баз данных
На рынке корпоративных баз данных представлено множество поставщиков, предлагающих продукты, которые решают одну и ту же задачу, но разными способами. Основные игроки на этом рынке:
Oracle — настоящий монстр на этом рынке, занимая почти 50% рынка. Компания владеет несколькими различными программными продуктами для баз данных, включая одноименную MySQL. Oracle — ведущий мировой разработчик программного обеспечения для баз данных, а её флагманский продукт пользуется популярностью у крупных корпораций и финансовых учреждений благодаря своей масштабируемости. Вы можете бесплатно скачать Oracle с их веб-сайта.
6a4a49_087d54076e434c08aa87f68a9e8063bc~mv2.jpg

Microsoft SQL Server . Компания Microsoft вышла на этот рынок в начале 90-х, объединившись с Sybase для разработки корпоративной базы данных. В результате MS SQL Server и Sybase по-прежнему имеют много общего. Изначально Microsoft работала только на рынке малого бизнеса, но постепенно набирает популярность на рынке крупных корпораций. Вы можете скачать и использовать пробную версию Microsoft SQL Server на 180 дней здесь.
6a4a49_41b4cc7b2b0046c48676dad16c59a085~mv2.jpg

MySQL/Maria . Это база данных с открытым исходным кодом, которую вы найдете на множестве веб-сайтов, отчасти потому, что она бесплатна. Именно эта база данных изначально использовалась на многих крупных веб-сайтах, таких как Google, Amazon и Facebook (поскольку MySQL имеет открытый исходный код, каждая из этих компаний усовершенствовала и адаптировала MySQL под свои нужды). В последние годы разработчики MySQL начали разрабатывать новую систему управления базами данных Maria, которая имеет много общих функций с MySQL. В большинстве случаев эти базы данных взаимозаменяемы. MySQL/Maria встроена в вашу Kali и полностью функциональна. Вы можете запустить ее, введя:
kali > sudo systemctl start mysql
6a4a49_ce99afd5eb9949c6bcca8a3e62eb74dc~mv2.png

IBM DB2 . IBM была первым поставщиком корпоративных баз данных и внесла множество важных изменений в проектирование баз данных, но, как и всё в IBM, в последние десятилетия она пришла в упадок.
6a4a49_b62038dd8c5943f894a01aa42f4e2e0f~mv2.png

sqlite – это легковесная реляционная база данных с открытым исходным кодом. Благодаря своему лёгкому размеру и эффективности она встраивается практически во все мобильные устройства и браузеры, где требуется хранить и извлекать данные, потребляя при этом мало энергии и ресурсов процессора. Хотя взлом таких баз данных не был непопулярным среди хакеров, я подозреваю, что по мере того, как всё больше данных перемещается на наши мобильные устройства, она будет становиться всё более популярной и ценной.
6a4a49_857c8e82d3ef4ea2bb7a30adc85696ba~mv2.png

postgresql
PostgreSQL, или иногда просто Postgres, — это бесплатная система управления базами данных с открытым исходным кодом. Некоторые предпочитают её за функции корпоративного уровня, такие как ACID (атомарность, согласованность, изоляция и долговечность) и масштабируемость. Это база данных по умолчанию на MacOS Server, но она также доступна для Windows, Linux, FreeBSD и OpenBSD. Она установлена по умолчанию практически во всех версиях Kali. Её можно запустить в Kali, введя:
kali > sudo systemctl start postgres
Среди других крупных поставщиков — Sybase, SAS и многие другие. Как правило, как и в случае с любым взломом, для успешного проведения проверки необходимо провести тщательную разведку, чтобы определить используемое программное обеспечение и его версию, поскольку большинство взломов баз данных привязаны к конкретному поставщику.
Порты, используемые СУБД
Один из основных способов определить, содержит ли система или сеть базу данных, — это сканирование портов с помощью такого инструмента, как nmap . Каждая система управления базами данных по умолчанию использует свой порт. Если порт по умолчанию открыт в системе, вероятно, база данных там и находится. Я говорю «вероятно», потому что базы данных, как и любое приложение, могут работать на любом порту. Большинство администраторов не указывают порт по умолчанию из соображений удобства. В основных системах управления базами данных есть следующие порты по умолчанию.
[td]Оракул
[/td]
[td]1521,1830
[/td]
[td]MS SQL-сервер
[/td]
[td]1433, 1434
[/td]
[td]MySQL/Мария
[/td]
[td]3306
[/td]
[td]PostgreSQL
[/td]
[td]5432
[/td]
Если вы просканируете уязвимую систему Windows с помощью nmap , вы можете увидеть результаты, похожие на приведенные ниже, указывающие на то, что на порту 3306 запущена служба mysql.
6a4a49_24cbe9dfd8504c32b6f97b2918cf0547~mv2.png

Графические интерфейсы
Практически каждый пользователь и разработчик этих систем баз данных использует графический интерфейс для доступа к ним. Практически каждая система управления базами данных имеет свой собственный графический интерфейс: от Oracle SQL Developer до Microsoft SQL Server Management Studio (SSMS), MySQL Workbench и некоторых других. Графический интерфейс для SQLite встроен в Kali по умолчанию.
Однако существует несколько универсальных графических интерфейсов, таких как TOAD и DB Beaver. TOAD — отличный инструмент для работы с различными СУБД, но он довольно дорогой. DB Beaver почти так же хорош, работает со всеми основными СУБД, имеет открытый исходный код и бесплатен.
6a4a49_754c12ec535844a8b08508a3991da408~mv2.png

В этой серии мы будем использовать DB Beaver с MySQL. Вы можете получить его из репозитория Kali, введя
kali > sudo apt install dbeaver
Язык структурированных запросов (SQL)

Когда IBM разрабатывала первые базы данных, они также разработали язык программирования для управления и обработки этих данных. Они назвали его «языком структурированных запросов», или, как его обычно называют, SQL.
Это простой язык, в котором английские слова используются так же, как их используют люди, говорящие по-английски. Например…
  • SELECT означает «выбрать некоторые данные из столбцов таблицы»
  • FROM означает «получить данные из этой таблицы»
  • ГДЕ означает выбор данных, соответствующих этому условию (фамилия = 'smith').
Более того, такие слова, как UPDATE , INSERT и DROP, означают в SQL именно то, что вы от них ожидаете.
SQL не требователен к синтаксису, но требователен к логике. Хотя рекомендуется писать все ключевые слова (SELECT, FROM, WHERE) ЗАГЛАВНЫМИ буквами, это не обязательно. Кроме того, пробелы игнорируются. Однако все SQL-выражения, кроме Microsoft, требуют, чтобы SQL-выражение заканчивалось точкой с запятой (;). В продуктах Microsoft это необязательно.
SQL стандартизирован ANSI, но эта стандартизация охватывает лишь около 80% языка или его ядра. Разработчики программного обеспечения могут свободно добавлять дополнительные команды и функции, не входящие в стандарт. Иногда это может затруднять перенос SQL-кода между СУБД. Кроме того, перед атакой крайне важно провести тщательную разведку базы данных, чтобы узнать производителя и версию, поскольку атаки часто направлены на конкретного производителя и версию.
Каждая из СУБД может работать из командной строки, но у каждой есть свой графический интерфейс. Недавно MySQL выпустила новый графический интерфейс под названием Workbench, как показано в предыдущем разделе.
Oracle, Microsoft и другие компании имеют схожие графические интерфейсы, которые позволяют администратору получать доступ к своим системам.
Базовый SQL-запрос
Когда нам нужно извлечь данные из базы данных, говорят, что мы «запрашиваем» её.
Поскольку базы данных являются хранилищами данных, возможность извлекать и запрашивать данные является одной из важнейших функций. Как хакеры, мы хотим извлечь данные, поэтому запрос критически важен для получения результата.
Базовая структура запроса выглядит так:
ВЫБРАТЬ <столбцы>
ИЗ <таблицы>
ГДЕ <условия>

В этом операторе говорится: «Предоставьте мне данные в столбцах, перечисленных в операторе SELECT из таблицы, которая следует после ключевого слова FROM, но предоставьте мне только те строки, которые соответствуют условиям, указанным после ключевого слова WHERE».
Итак, если бы мы хотели получить имя, фамилию, имя пользователя и пароль из таблицы персонала для сотрудников с фамилией «Хиллер», мы могли бы построить следующий оператор:
ВЫБЕРИТЕ имя, фамилию, имя пользователя, пароль
ОТ сотрудников
ГДЕ last_name = 'Хиллер”;

Как вы можете видеть на снимке экрана ниже, мы извлекли запись Майка Хиллиера из таблицы персонала с его именем пользователя и паролем (пароль на самом деле является хэшем его пароля).
6a4a49_6c6eec57359540cc966e164b005ba82d~mv2.jpg

Заявления СОЮЗА
SQL-запросы можно объединять в так называемый оператор UNION. Оператор UNION объединяет два SQL-запроса. Оба запроса должны обращаться к одним и тем же столбцам. Операторы UNION являются ключевым элементом некоторых атак с использованием SQL-инъекций, поскольку их сообщения об ошибках могут использоваться для перечисления имён столбцов в таблице.
Заявление СОЮЗА выглядит следующим образом:
ВЫБРАТЬ <столбец 1>, <столбец 2>, <столбец 3>
ИЗ <таблицы 1>
ГДЕ <условие>
СОЮЗ
ВЫБРАТЬ <столбец 1>, <столбец 2>, <столбец 3>
ИЗ <таблицы 2>
ГДЕ <условие>
Краткое содержание

В большинстве случаев хакеры пытаются получить доступ к базе данных в сети, поскольку она содержит ключевую информацию, имеющую ценность для целей национальной безопасности или для перепродажи в даркнете. Таким образом, каждый начинающий кибервоин должен быть знаком с основами баз данных, если он собирается атаковать или защищать их.
В будущих публикациях мы более подробно рассмотрим язык SQL и уязвимости основных СУБД.
 
Назад
Сверху Снизу