МЕНЮ

Как Линукс выглядит изнутри? Linux для начинающих хакеров.

Знание Windows в среде начинающих админов и безопасников уже давненько стало мейнстримом. Грамотного же спеца, в свою очередь, всегда отличало умение работать не только с мелкомягкими, но и Unix-подобными Оськами. Если вы собираетесь заниматься структурной безопасностью или же тестированием на проникновение на постоянной основе, то вам крайне важно изучить всё, что так или иначе связано с работой операционных систем из семейства Linux. В данном видео мы с вами начнём с азов. Познакомимся с файловой системой Linux, поговорим о пользователях и группах, настроим сеть, разберёмся в том, какие существуют дистрибутивы.

Напоследок затронем базовые методы защиты для приложений. Если вам интересна данная тема и вы планируете стать в будущем матёрейшим линуксоидом 60-го уровня, тогда устраивайтесь по удобней.

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

Ну а если вы хотите стать настоящим спецом по кибербезопасности , а не мамкиным хаЦкером, вроде меня, рекомендую вам обратить внимание на обучающий курс «Белый» хакер от онлайн-школы SkillFactory.

Специалисты White Hat ищут уязвимости в программах и приложениях мечтая сделать мир чуточку безопаснее и попутно стать высокооплачиваемыми профессионалами в своём деле.

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

Это довольно популярный игровой формат, где студенты работают в команде и индивидуально. Главная цель — захватить флаг и получить очки. К слову, опыт участия в таких соревнованиях очень ценится работодателями.

Помимо этого, вы отработаете навыки «взлома» и кибератаки на виртуальных машинах, освоите устройство ОС Windows и Linux, научитесь программировать на Python, писать скрипты на Bash и SQL, овладеете методами защиты IT-систем. .

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

В СкиллфЭктори настолько уверены в качестве своего продукта, что вернут деньги за курс если после обучения вы не найдете работу. Поэтому, ребзи, не тратьте драгоценное время зазря. Если хотите уже в этом году стать специалистом, за которым охотятся топовые компании.

Переходите по ссылочке в описании и записывайтесь на курс «Профессия «Белый» хакер». А по моему фирменному промокоду КУРЕЦ еще и скидку в 45% на обучение получите.

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

Так что не тупим. Открываем описание и переходим по первой ссылке, дабы ознакомиться со всеми подробностями по профе. Годнейшая темка. Не пожалеете.

Файловая система Linux

Окей. А теперь давайте вернёмся к основным тезисам нашего видео. Согласно философии Linux, элементом файловой системы может быть документ, аудиоустройство, база данных, консоль, директория и даже процесс.

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

К компонентам файловой системы относятся: пространство имен, API, модель безопасности и реализация.

Первое, о чём важно сказать по теме ФС – это стандарт. Стандарт FHS, он же стандарт иерархии файловой системы, в котором прописано унифицированное расположение основных файлов и каталогов в UNIX-системах.

Т.е. это не только для Linux. К macOS это тоже относится. В первую очередь в стандарте прописаны директории из корневого каталога и их назначения. Например, папка bin содержит основные бинарные утилиты, используемые всеми пользователями.

В boot у нас загрузчик, в dev файлы устройств. Etc это настройки, home соответственно домашние директории пользователей, кроме Rootа. Для него в любой UNIX-подобной ОС выделяется отдельная папка.

Из наиболее важных директорий можно упомянуть usr, которая частично дублирует корень, но содержит уже пользовательские данные. Т.е. инсталлируемое вами ПО будет падать сюда.

И var. Директория хранящая изменяемые файлы программ. Например, /var/mail содержит почтовые файлы. Lib – это библиотеки и модули ядра. Tmp – временный каталог в который частенько монтируется область памяти, очищаемая после ребута машины.

Важным понятие в Linux-системах является монтирование (или mount). Это процесс подготовки раздела диска к использованию в ОС. К параметрам монтирования относится тип файловой системы.

Ext3, 4 или NTFS. Режим ввода-вывода. Чтение или чтение с записью.

И непосредственно точка монтирования. В /mnt или /media. Это всё то, что мы должны передать вышеупомянутой утилите mount.

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

Чуть ниже у нас уже появляется опция t для указания типа файловой системы. RO – это уже непосредственно опция монтирования Read Only. Loop – устройство, это монтаж из файла. В нашем примере iso9660.

Ну и монтаж отдельной директории в дереве файловых систем. Тут всё понятно. Размонтирование, оно же отключение от дерева каталогов осуществляется командой umount.

Помимо операций, которые мы можем делать в консоли и которые сбиваются при перезагрузки системы, существует также file systems table, он же файл fstab, предназначенный для автоматического монтирования дисков при старте системы.

Он использует определённый формат. Путь к устройству, точка монтирования, тип файловой системы, опции. И новые для нас параметры dump и fsck, это истории отвечающие за частоту резервного копирования и нюансы проверки файловой системы при загрузке.

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

И то и другое абстракция какого-либо устройства, хранилища, подключённого к операционной системе.

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

Файлы символьных устройств и произвольного доступа. Например, это могут быть аудиоустройства. Тот же микрофон. Мы можем считывать из него непрерывно потоки данных, но не можем их поменять.

Помимо этого, есть файлы, предназначенные для межпроцессорного взаимодействия. Это файлы-сокеты, каналы, ссылки. Сокет файл может быть использован для взаимодействия программы с другой программой.

Она может подключиться к этому сокету. Слушать на нём локальные соединения. Клиентская программа в свою очередь может использовать сокет для подключения к серверной части. При этом используются популярные сетевые протоколы tcp/udp.

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

И наконец файлы ссылки – это по сути аналоги Windows’овских ярлыков. Т.е. файлы, ссылающиеся на другие файлы в системе. К слову о файлах. Каждый файл имеет определённые атрибуты владения.

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

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

Атрибуты делятся на 3 группы. Каждая группа имеет одинаковый набор атрибутов. Первая определяет права доступа для владельца файлов, вторая для группы владельца файла и третья определяет права доступа для всех остальных пользователей.

Каждой из групп может быть поставлен 1 из 3 флагов. Это права на чтение, запись и на выполнение файла.

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

Ладненько. Не буду вас сильно душить. Для базового понимания этой информации более чем достаточно. Ещё важно запомнить, что для изменения прав доступа используется утилита change mod или попросту chmod.

В неё можно передать, как десятичную форму записи, так и человекочитаемый вариант. Плюс – добавление прав, минус – удаление. G-владелец, o – other. Собственно как-то так происходит процесс управления атрибутами доступа в Linux.

Пользователи и группы

Для хранения всех пользователей в системе существует файл /etc/passwd. В нём список пользователей представлен в формате: пользователь – юид (т.е. его идентификатор) – гуид (идентификатор его группы) – полное имя – домашний каталог и оболочка, которая будет использоваться для него при заходе в систему.

Речь о bash’е, shell’е. По обеим я уже делал ролики, так что можете посмотреть, если не гнушаетесь саморазвитием на досуге. Пароли пользователей в свою очередь хранятся в /etc/shadow.

По сути, этот файл дублирует /etc/password с той лишь разницей, что в shadow появляются засоленные хэшированные пароли и очень ограничен доступ на чтение. По факту он доступен только для root’а.

Что же касается групп, то в Linux’е все они прописаны в файлы /etc/group вместе с соответствующими IDшниками (groupID). У каждого пользователя есть основная группа и набор из групп в которые он дополнительно входит.

Для редактирования групп применяются команды: groupadd для создания, groupmod для изменения и groupdel соответственно для удаления. Пользователи для групп заводятся вариацией утилиты useradd.

Можно использовать её дефолтные настройки или задавать определённые параметры при создании пользюка. Но даже если вы накосячили, эту историю всегда можно отредактировать usermod’ом.

Сеть

До того, как появилась система доменных имён (она же DNS) исторически использовалось статическое разрешение имён. Т.е. в файле /etc/hosts банально перечислялись IP-адреса и те имена, которые должны в них разрешаться.

Файл hostname, размещающийся всё в том же, одноимённом каталоге содержит информацию о названии текущей машины. Настройки сетевой карты на Linux раньше всегда задавались посредством команды ifconfig из пакета nettools.

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

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

С её помощью можно добавлять и удалять сетевые устройства, настраивать их параметры, отображать и т.д. Для просмотра интерфейсов используют ip link show, но в целом рекомендую ознакомиться с man’ом по данной утильке.

Что же касается настройки сети автоматом при запуске системы. Как например в Debian. Можно использовать файл /etc/network/imterfaces. Или же вообще сконфигурировать всё посредством графического интерфейса через NetworkManager.

На серверах я её не припомню, но для пользовательских систем вполне себе. Но если вы всё же адепт терминала, можно использовать её консольный вариант nmcli.

Для просмотра маршрутов в Linux используется netstat с самыми разными вариантами ключиков, ну и конечно же ip route. Она же помогает добавлять и изменять эти самые маршруты в реальном времени.

Отладка сети осуществляется с помощью tcpdump. Это важная утилита-сниффер, позволяющий трассировать сетевое взаимодействие в системе и выводить эту историю на экран.

Ключей у неё очень много. A – это вывод содержимого в текстовом виде, -s0 снимает ограничение на размер. Остальные на память признаться не помню. Слишком ситуативно они применяются.

Дистрибутивы

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

Т.е. каждый производитель, во-первых, выбирает определённую версию ядра Linux и при необходимости дорабатывает её под себя: добавляя модули, усиливая безопасность и т.д.

Во-вторых, выбирает систему инициализации (Systemd, OpenRC и т.д.). Компилирует пакеты (сервера, графические приложения, инструменты разработки) и предоставляет инфраструктуру репозиториев (включая проверку безопасности).

Ну и само-собой выпускает патчи и обновления. Существуют, как коммерческие, так и OpenSourcе’ные дистрибутивы. В зависимости от задач можно выделить те у которых есть качественная поддержка – это RedHat и CentOS.

Удобные для конечного пользователя – Debian и Ubuntu. Минималистичные: например, Alpine. Весит всего 5 метров. Заточенные под требования законодательства (привет Astra Linux и вариации Alt’а).

Исследовательские – DEFT, CAINE, NST. ХаЦкерские – старая добрая Kali, BlackArch, Parrot. Ну и конечно же спец. решения на базе Linux для коммутаторов и маршрутизаторов.

Отдельно стоит упомянуть Linux From Scratch. Это образовательный проект, который предоставляет пошаговые руководства по созданию собственной сборке дистрибутива.

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

AppArmor

AppArmor – это модуль ядра Linux, обеспечивающий управление доступом на основе имен. Т.е. для каждой программы создается свой профиль, в котором указываются уровни доступа к каталогам, программам и системным ресурсам.

Команда для установки представлена на экране. Если не забуду – закину в описание ссылку на проект gitlab. AppArmor предусматривает набор профилей, которые пишутся непосредственно разработчиками.

Если ввести команду apparmor_status, мы увидим загруженные профили и для каких утилит эти профили вообще существуют. Профили могут функционировать в двух режимах.

Обучения (complain) и ограничения. Первый сообщает о действиях приложения записывая в лог факты нарушения и при этом никак не ограничивает работу процесса.

А второй enforce (режим ограничения), соответственно уже ограничивает эту работу. Собственно, увидеть подробный вывод мы можем набрав apparmor_status.

Система сообщит нам сколько процессов имеют профили и в какой режиме защиты они запущены в данный момент.

Сейчас покажу вам пример листинга. Здесь мы берём утилиту man и делаем её резервную копию.

После этого мы копируем содержимое утилиты ping в man, таким образом вместо man будет вызываться содержимое Ping. Соответственно когда мы включим заранее заданную политику для утилиты man, её запуск будет предотвращён.

Отключить или выгрузить профили службы AppArmor можно с помощью утилиты service. Ибо Armor работает как системная служба. В принципе можно и systemctl юзать. Тут уж кому как нравится.

Окей, друзья. Нынче мы рассмотрели аспекты работы файловой системы Linux, поговорили про монтирование и размонтирование, подробно затронули атрибуты и то, как хранятся группы, пользователи и их пароли.

Разобрали, как настраивается сеть и как работают наиболее популярные сетевые утильки. В том числе сниффер tcpdump. Ну и в завершении разобрали основы мандатной системы контроля доступа AppArmor.

Я намеренно попытался сделать ролик технически сложным и одновременно легковосприимчивым для тех, кто в теме Линухи, что называется продвинутый новичок.

В качестве домашнего задания я вам предлагаю рассмотреть фрагмент записи из файла /etc/shadow и с помощью утилиты HashCat вычислить парольную комбинацию.

Вы же любите хаЦкинг, правда? Вот и поиграйтесь. Напоминаю, что все домашние задания к урокам выложены на моём сайте. Ссылка на него есть в описании к каждому ролику из цикла «Информационная безопасность с нуля до джуна».

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

Искренне надеюсь, что ролик вам нормально зашёл и вы подчерпнули для себя, что-то новенькое и интересное. Само собой, привязываю всех, кто наткнулся на видео путешествия по рекам ютубчика – подписаться кликнув на колокольчик. Это будет лучшая благодарность.

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

 

Не можешь понять, куда делись видео по взломам и хакингу? Они переехали в наш уютный паблик в телеге

telegram chanel

Хочешь больше контента? Подписывайся на YouTube-канал!

Курс «Диплом за неделю»

Пособие «Библия вардрайвинга»

Курс Cisco «CCNA: Introduction to Networks»

© 2024. IT-спец. Денис Курец.