Практика Linux-терминала для пентестера

По теме: обучение пентесту, этапы пентеста, кто такой пентестер, как стать Application Security Engineer, менторинг.

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

Для успешной работы в пентесте и Application Security (AppSec) терминал Linux необходим ежедневно. Даже если ваша основная специализация — исследование веб-приложений и API, в определённый момент вы получаете доступ к серверу или контейнеру и должны быстро собрать контекст окружения.

1. Kali Linux, Parrot OS или чистый Debian/Ubuntu

Kali Linux и Parrot OS — это стандартные дистрибутивы на базе Debian, в которые заранее предустановлен набор специализированного ПО. Однако сам по себе факт установки Kali не делает человека специалистом.

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

Самопроверка базовой подготовки

Возьмите чистую установку Ubuntu или Debian без предустановленных инструментов безопасности и проверьте способность выполнить следующие шаги:

  • Найти конфигурационные файлы интересующего сервиса в каталоге /etc.
  • Расшифровать символьную строку прав доступа (например, rwxr-xr-x).
  • Определить, какой конкретно процесс и под какой учётной записью слушает локальный сетевой порт.
  • Отфильтровать логи сервиса с помощью стандартных утилит CLI.
  • Сделать HTTP-запрос через curl, перехватить заголовки и сохранить результат в файл.

Если эти действия выполняются на автомате, прохождение практических лабораторий (Hack The Box, TryHackMe, локальные стенды) пройдёт без лишних задержек.

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

pwd        # Просмотр текущей рабочей директории
ls -la     # Вывод всех файлов, включая скрытые, с подробными правами и владельцами

Скрытые файлы и важные директории

Особое внимание следует уделять скрытым файлам и каталогам (начинающимся с точки). В них часто содержатся учётные данные, истории команд и ключи доступа:

  • .env — конфигурационные файлы с паролями и токенами API.
  • .bash_history, .zsh_history — история введённых команд предыдущих пользователей.
  • .ssh/ — приватные ключи, известные hosts и файл авторизованных ключей (authorized_keys).
Директория Назначение и контекст для проверки
/homeДомашние каталоги пользователей системы.
/etcГлавный каталог конфигурационных файлов системы и установленных сервисов.
/var/logСистемные логи и журналы веб-серверов, СУБД, авторизации.
/var/www, /optМесто размещения исходного кода веб-приложений и стороннего ПО.
/tmp, /var/tmpВременные каталоги, доступные на запись всем пользователям (место для загрузки скриптов и поиска остаточных файлов).

Базовые команды CLI

Для анализа файлов используются стандартные утилиты: cd, cat, less, head, tail, file.

Поиск конфигурационных файлов без вывода ошибок доступа:

find /home -type f -name "*.conf" 2>/dev/null

Перенаправление 2>/dev/null отсекает сообщения Permission denied, оставляя только релевантный вывод.

Обязательно проверяйте карту пользователей в /etc/passwd:

cat /etc/passwd

Каждая строка содержит: имя пользователя, зашифрованный пароль (x), UID, GID, описание, домашний каталог и системную оболочку (shell).

Проверка собственной учётной записи:

whoami    # Текущее имя пользователя
id        # UID, GID и список групп
groups    # Группы, в которых состоит текущий пользователь

3. Права доступа, SUID-бит и sudo

Разграничение прав в Linux основано на трёх категориях субъектов: Владелец (Owner), Группа (Group), Остальные (Others).

Команда ls -l выводит права в виде символьной строки:

-rwxr-xr-- 1 root www-data 4096 Aug 11 12:00 script.sh
  • r (read) — чтение файла / просмотр содержимого директории.
  • w (write) — изменение файла / создание и удаление файлов в директории.
  • x (execute) — запуск файла / вход в директорию.

Изменение прав и владельцев выполняется командами chmod и chown. Применение прав chmod 777 к исполняемым скриптам или конфигурациям является критической ошибкой конфигурации, так как даёт право записи абсолютно всем пользователям системы.

SUID-бит (Set User ID)

SUID — это специальный флаг прав доступа. Если он установлен на исполняемом файле, программа запускается с правами владельца файла (часто root), а не с правами пользователя, который её вызвал.

Поиск файлов с установленным SUID-битом:

find / -perm -4000 -type f 2>/dev/null

Проверка прав sudo

Команда sudo -l показывает, какие именно команды текущий пользователь может запускать от имени root или других пользователей без ввода пароля (или с паролем):

sudo -l

Анализ вывода этой команды позволяет определить возможность легитимного повышения привилегий или выполнения административных задач.

4. Процессы, сервисы и системные логи

Для понимания состояния системы необходимо отслеживать активные процессы и службы.

Анализ процессов

ps aux    # Полный список запущенных процессов с указанием пользователей и аргументов
ps -ef    # Альтернативный формат вывода дерева процессов

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

Управление службами (systemd)

systemctl status <service_name>         # Проверка статуса конкретной службы
systemctl list-units --type=service     # Список всех активных сервисов

Чтение логов

Анализ логов помогает понять поведение системы и найти следы работы сервисов:

  • journalctl -u ssh — просмотр логов конкретного сервиса через systemd.
  • /var/log/auth.log (или /var/log/secure) — логи аутентификации и попыток входа.
  • /var/log/nginx/ или /var/log/apache2/ — access и error логи веб-серверов.

Использование grep и less позволяет сузить выборку до нужных событий:

grep -i "error" /var/log/nginx/error.log | less

5. Сетевая диагностика из терминала

Пентестеру и AppSec-инженеру необходимо уметь быстро оценивать сетевое состояние хоста изнутри.

Проверка сетевых интерфейсов и маршрутов

ip a    # Список сетевых интерфейсов и IP-адресов
ip r    # Таблица маршрутизации

Анализ открытых сокетов и портов

Для проверки слушающих портов используется утилита ss (современный аналог netstat):

ss -tulpn
  • -t — TCP сокеты
  • -u — UDP сокеты
  • -l — только слушающие порты (listening)
  • -p — показать PID и имя процесса
  • -n — отображать порты в виде цифр, а не имён служб

Это позволяет мгновенно обнаружить сервисы, которые висят на 127.0.0.1 (localhost) и недоступны из внешней сети.

Взаимодействие с веб-сервисами через curl

curl -I https://example.com                 # Получение только HTTP-заголовков ответа
curl -i -X POST -d "param=value" http://target/api  # POST-запрос с передачей данных
curl -k -L https://target                   # Игнорировать ошибки SSL и следовать по редиректам

Для проверки работы DNS используются утилиты dig или nslookup:

dig A example.com +short

6. Базовые концепции Bash

Сложные скрипты на старте не требуются, но необходимо свободно владеть конвейером (pipes) и перенаправлением потоков.

Перенаправление потоков и пайплайны

  • | (pipe) — передаёт стандартный вывод (stdout) первой команды на стандартный ввод (stdin) второй.
  • > — перенаправляет вывод в файл с перезаписью.
  • >> — дописывает вывод в конец файла.
  • 2>/dev/null — подавляет вывод стандартного потока ошибок (stderr).

Пример комбинации:

cat access.log | grep "POST" | awk '{print $1}' | sort | uniq -c | sort -nr

Этот конвейер извлекает IP-адреса, делавшие POST-запросы, подсчитывает их количество и сортирует по убыванию.

Конструкции циклов

Простой цикл for для последовательного выполнения проверок:

for ip in $(cat targets.txt); do curl -s -I "http://$ip" | head -n 1; done

7. Четырёхнедельный план практического освоения

Неделя Фокус обучения Практические задачи
Неделя 1Навигация и файловая системаНастройка чистой Ubuntu/Debian. Практика команд cd, ls -la, find. Изучение структуры /etc, /var/log, /home. Сбор карты системы в заметки.
Неделя 2Практика прав доступа и SUIDРазбор chmod, chown, маски прав. Поиск SUID-файлов. Анализ sudo -l. Составление краткого отчёта по найденным небезопасным правам на тестовой ВМ.
Неделя 3Процессы, логи и сетьМониторинг процессов (ps aux), служб (systemctl). Анализ сетевых сокетов (ss -tulpn). Работа с curl и фильтрация логов с помощью grep, awk.
Неделя 4Комплексная проверка на учебном боксеПрохождение одной beginner-машины (TryHackMe / HTB) с ограничением: первые 45 минут работать исключительно встроенным shell, без запуска автоматических сканеров.

8. Типичные ошибки начинающих

  • Замена базовых знаний установкой инструментов: скачивание сотни утилит из меню Kali без умения прочитать конфигурационный файл вручную.
  • Пассивный просмотр туториалов: чтение статей и просмотр видео без параллельного выполнения команд в терминале.
  • Отсутствие ведения заметок: проведение проверок без фиксации выполнившихся команд, путей к файлам и полученных результатов.
  • Игнорирование потока ошибок: игнорирование сообщений системного вывода при несработавших командах вместо анализа причин (нехватка прав, неверный путь, отсутствие бинарника).
  • Слепое копирование чужих скриптов: запуск комплексных Bash/Python скриптов на целевой системе без понимания выполняемых ими действий.

9. Обучение и контакты

Если вам требуется системная подготовка по направлению Application Security и практическому пентесту (включая работу с Linux, Web/API и подготовку профессиональных отчётов), ознакомьтесь с деталями программы на странице Application Security Engineer.

Индивидуальный план подготовки под ваш текущий бэкграунд (QA, разработка, системное администрирование) можно обсудить в Telegram: @faroeman. Формат работы подробно описан в разделе менторинг по кибербезопасности.

Ещё по теме: обучение пентесту, этапы пентеста, кто такой пентестер, как стать Application Security Engineer, менторинг.

Похожие статьи

Разбираю Linux-базу, web/API и отчёты под вход в AppSec и пентест. Нужен план под ваш бэкграунд? Напишите в Telegram.

Смотреть программу Application Security · пишите в @faroeman.

Подписаться на Telegram-канал