ОБСУЖДЕНИЕ На проверке 

Терминал для пентестера: алиасы, AI и автоматизация

AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Ноутбук на тёмном столе с подсветкой циан, экран показывает терминал zsh с автодополнением команды recon и панель ответа AI-модели янтарного цвета.


Последние полтора года я впихиваю LLM в свои терминальные цепочки - результат, мягко говоря, неоднозначный. На одном engagement'е Ollama с mistral:7b сгенерировала рабочий awk-парсер для вывода nmap за 15 секунд - руками я бы ковырял минут пять. На следующем проекте ChatGPT уверенно предложил флаг --no-tls-validation для gobuster, которого не существует (корректный флаг - -k). Терминал для пентестера - та точка, где эксперименты с AI разбиваются о реальность: правильно настроенный шелл, алиасы для recon-цепочек и tmux-сессии, которые переживают обрыв SSH. Без этого фундамента любой AI-ассистент - генератор текста, а не рабочий инструмент.

Никакой маркетинговой мишуры: конкретные конфиги и команды, которые копируются в .zshrc и проверяются за пять минут. Всё проверено на Kali 2024.x/2025.x и Parrot OS 6.x с zsh 5.9+.

Zsh и Oh-My-Zsh - настройка терминала для пентеста​

1789068703320.webp

Kali с 2020 года поставляется с zsh по умолчанию, но из коробки он настроен слабо. Oh-My-Zsh с правильным набором плагинов превращает терминал в полноценный инструмент пентестера, а не просто окно с курсором.

Плагины для ежедневной работы​

Три плагина, которые реально стоят внимания.
  • zsh-autosuggestions подсказывает команды из истории серым текстом - жмёшь стрелку вправо и получаешь полную команду, которую набирал вчера. Для повторяющихся сканов nmap с длинными флагами - экономия 30-40 нажатий на каждую команду.
  • zsh-syntax-highlighting подсвечивает валидные команды зелёным, невалидные красным: видишь ошибку до нажатия Enter.
  • fzf - fuzzy-поиск по истории через Ctrl+R, вместо линейного перебора bash получаешь интерактивный фильтр по всей истории.

Установка стандартная: git clone каждого плагина в ~/.oh-my-zsh/custom/plugins/, затем добавление имён в массив plugins=() файла ~/.zshrc. На свежей Kali 2024.x всё ставится за две минуты. Отдельно - тема powerlevel10k: она показывает текущую директорию, git-ветку и статус последней команды прямо в промпте. Когда открыто десять панелей tmux, это помогает не запутаться, в какой ты вообще директории.

Кастомный промпт с IP VPN-сессии - не украшение, а навигация. Добавляем в .zshrc подстановку $(ip -4 addr show tun0 2>/dev/null | grep -oP 'inet \K[\d.]+') в переменную RPROMPT. Когда работаешь одновременно с несколькими клиентскими VPN, видеть адрес прямо в промпте - must have. На трёх engagement'ах из последних пяти я ловил себя на том, что гнал трафик через неправильный туннель. После добавления IP в промпт проблема исчезла.

Алиасы Linux для пентестера - recon одной командой​

Алиасы - не про лень, а про скорость. На типичном engagement'е одни и те же команды с одними и теми же флагами набираются десятки раз. Вместо nmap -sC -sV -oA каждый раз - алиас ns, и пальцы свободны для анализа.

Набор, который живёт в моём .zshrc последние три года и дорабатывается после каждого проекта:
Bash:
# Recon
alias ns='nmap -sC -sV -oA nmap_default'
alias nf='nmap -sC -sV -p- -oA nmap_full'
alias nu='sudo nmap -sU --top-ports 50 -oA nmap_udp'
# Web
gob() { gobuster dir -u "$1" -w /usr/share/wordlists/dirb/common.txt -o gobuster.txt -t 50; }
alias ff='feroxbuster -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt'
# Quick checks
alias myip='curl -s ifconfig.me && echo'
alias serve='python3 -m http.server 8888'
alias listener='rlwrap nc -lvnp'
Пара комментариев. nmap_default и nmap_full - фиксированные имена выходных файлов, потому что скрипт-обёртка (о ней ниже) ищет их для автоматического парсинга. serve - моментальный HTTP-сервер для доставки инструментов на целевой хост. По классификации MITRE ATT&CK это техника Ingress Tool Transfer (T1105, Command and Control) - атакующий поднимает веб-сервер на своей машине и скачивает с него утилиты на скомпрометированный хост через wget или curl. В контексте пентеста - стандартная операция после initial access. listener с rlwrap добавляет readline-обёртку к netcat: стрелки вверх-вниз и history работают в реверс-шелле. Кто хоть раз пытался нажать стрелку вверх в голом nc - знает, какая это боль.

Bash-функции для сложных задач​

Когда нужно передать аргумент в середину команды, алиас не справляется - нужна функция. В .zshrc: quickscan() { nmap -sC -sV -oA scan_$1 $1 && grep "open" scan_$1.nmap | awk '{print $1}'; }. Вызов - quickscan 10.10.10.1. Результат - файлы scan_10.10.10.1.* плюс список открытых портов в stdout. Примитивно, но экономит два шага на каждом хосте.

Ещё одна функция из практики - webcheck. Принимает URL, делает curl -sI с выводом заголовков, потом whatweb для fingerprinting технологий, потом nuclei -silent -t cves/ для быстрой проверки известных CVE. Три инструмента одним вызовом - базовый fingerprinting конкретного хоста за секунды.
1789069172190.webp

Tmux для пентестера - сессии, которые переживут обрыв SSH​

Tmux (терминальный мультиплексор) решает три проблемы. Первая - обрыв SSH-соединения не убивает длинные сканы. Вторая - параллельная работа в нескольких панелях без переключения окон. Третья - именованные сессии для разных клиентов: tmux attach -t clientname возвращает ровно тот контекст, с которым работали вчера.

На форуме уже есть статья про этот отличный инструмент

На каждый engagement создаётся сессия tmux new -s projectname с фиксированной раскладкой: верхняя панель - активная работа (exploit, enumeration), нижняя левая - tail -f логов или вывод долгого скана, нижняя правая - listener для реверс-шеллов. Переключение между панелями - Ctrl+b и стрелки, хотя я перебиндил prefix на Ctrl+a (привычка из screen, да и нажимать удобнее).

Две строки в ~/.tmux.conf, без которых жить нельзя. Первая - set -g history-limit 50000. По умолчанию tmux хранит 2000 строк scrollback, и вывод длинного nmap-скана просто исчезает за границей буфера. Вторая - set -g mouse on, чтобы скроллить мышью и выделять текст. Tmux 3.x поддерживает обе настройки из коробки.

Для автоматизации раскладки удобно писать shell-скрипт: tmux new-session -d -s $1, затем серия split-window и send-keys. Запустил ./pentest-tmux.sh clientname - получил готовое рабочее пространство. Ещё один приём: tmux pipe-pane -o 'cat >> ~/logs/#{session_name}_#{window_name}.log' пишет весь вывод панели в файл. Это лог каждой команды и её результата - бесценная штука при написании отчёта, когда нужно восстановить, что именно ты делал во вторник в 3 ночи.

Автоматизация пентеста скриптами - обёртки для цепочек​

📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

по .nmap ищет строки с open - это работает с дефолтным nmap-форматом. Если используете -oG (grepable output), паттерн будет другим.

Такие shell-скрипты для пентеста со временем обрастают проверками: существует ли цель, не запущен ли уже скан, нужно ли включить UDP. У меня в рабочем репозитории таких обёрток около двадцати - каждая заточена под конкретный тип engagement'а: внутренний, внешний, web-only.

Отдельный совет - заведите Python venv для каждого проекта. Как отмечается в воркфлоу Penligent (penligent.ai), helper-скрипты для парсинга ответов и нормализации вывода сканеров лучше запускать в изолированном окружении: python3 -m venv .venv && source .venv/bin/activate. Зависимости не конфликтуют между проектами, и при написании отчёта можно воспроизвести окружение точно.

AI-ассистенты для пентестеров - что реально работает в терминале​

Три подхода: локальные LLM, API-интеграции и специализированные open-source агенты.

Ollama - локальная LLM без утечки scope​

Ollama позволяет запустить LLM локально на рабочей машине. Для пентестера это критично: scope клиента, IP-адреса, найденные credentials - всё это нельзя отправлять в облачный API. Установка на Kali - curl -fsSL https://ollama.com/install.sh | sh, затем ollama pull mistral для загрузки модели. Предусловие: GPU с 8 ГБ+ VRAM для модели 7B, либо 16 ГБ RAM для CPU-инференса (будет медленно, но работает).

Практическое применение - генерация однострочников прямо из терминала:
Bash:
# .zshrc - запрос к локальной LLM
ask() {
  ollama run mistral "Ты пентестер. Ответь кратко. $*" 2>/dev/null
}
# ask "напиши awk для извлечения IP из nmap gnmap"
# ask "объясни вывод: SNMP public community string"
Модель mistral:7b отвечает за 3-5 секунд на GPU для простых запросов, для генерации кода - дольше. Для задач уровня «сгенерируй regex для парсинга», «объясни вывод этой команды», «предложи wordlist для API endpoint» - работает хорошо. Для анализа кода на 200+ строк контекстного окна 7B-модели не хватает: теряет нить после третьего блока. Тут нужна ollama pull llama3:70b, но это уже 48 ГБ RAM минимум.

Галлюцинации - главная беда. LLM периодически выдумывает флаги и опции инструментов. Каждую сгенерированную команду проверять через man или --help перед запуском на реальной цели - без исключений. Я на этом обжёгся не раз.

Когда scope не запрещает облачные сервисы (lab-среда, CTF, собственные проекты), ChatGPT API через curl закрывает задачи, которые локальные модели тянут плохо: анализ больших фрагментов кода, генерация сложных payload'ов, написание Sigma-правил для detection. Но отправка реальных данных клиента в OpenAI API - нарушение NDA в подавляющем большинстве контрактов. Только на своих стендах.

Open-source AI-агенты для пентеста​

В 2025-2026 годах появилось несколько зрелых open-source проектов, которые автоматизируют пентест комплексно, а не просто отвечают на вопросы. По данным spark42.tech и ostorlab.co, три проекта заслуживают внимания.

Nebula (BerylliumSec) - CLI-ассистент, который интегрируется с nmap, sqlmap, metasploit. Поддерживает self-hosted LLM через Ollama - решает проблему утечки данных. По оценке spark42.tech, один из самых зрелых проектов с хорошей документацией и простым деплоем.

CAI (Cybersecurity AI) - фреймворк с multi-agent архитектурой. Позволяет запускать нескольких агентов параллельно - один делает recon, другой анализирует результаты. Ряд обозревателей считают CAI более зрелой альтернативой PentestGPT.

PentestGPT - пионер направления (2023), использует LLM через три модуля: Reasoning (стратегия), Generation (команды), Parsing (анализ вывода инструментов). По сути proof-of-concept: для production-задач CAI может быть предпочтительнее.

Все три работают в режиме «human-in-the-loop» - агент предлагает действия, решение остаётся за пентестером. Это ключевое ограничение и одновременно преимущество: AI ускоряет автоматизацию рутинных задач пентестера, но не подменяет экспертную оценку risk appetite и бизнес-контекста цели.

OPSEC терминала - когда shell history становится уязвимостью​

Терминал bash/zsh - инструмент атаки, и настраивать его нужно с учётом OPSEC. По классификации MITRE ATT&CK техника Shell History (T1552.003, Credential Access) описывает сценарий, при котором атакующий или защитник извлекает credentials из истории команд. Набрали mysql -u root -pSecretPass123 на целевом хосте - пароль остаётся в .bash_history. Классика.

На своей рабочей машине это тоже актуально. Файл ~/.zsh_history содержит полную историю за engagement: IP целей, credentials тестовых аккаунтов, пути к эксплойтам. Если ноутбук компрометируется - это полный слив данных клиента.

Базовые меры. Переменная HISTCONTROL=ignorespace в .zshrc - команды, начинающиеся с пробела, не записываются в историю. Набрали mysql -u root -p'пароль' (с пробелом перед командой) - в history не попадёт. Второй вариант - HISTIGNORE='[I]password[/I]:[I]secret[/I]:[I]token[/I]' для автоматического исключения команд с чувствительными словами.

После завершения проекта - очистка. Техника Clear Command History (T1070.003, Defense Evasion) применяется и атакующими для заметания следов, и пентестерами для OPSEC. Команда history -c && rm ~/.zsh_history на своей машине - обязательный пункт в чек-листе закрытия engagement'а.

Ещё один момент - GTFOBins. Утилиты awk, bash и даже cat, согласно каталогу gtfobins.github.io, используются для privesc и обхода ограничений при наличии SUID или sudo-доступа. Те же бинарники, которыми мы пользуемся для автоматизации, - потенциальный вектор privilege escalation на нашей рабочей машине. Стоит периодически проверять find / -perm -4000 -type f 2>/dev/null и на собственной Kali. (Да, я тоже долго думал, что «ну это же моя машина» - а потом нашёл SUID на python3, который там оставил скрипт двухлетней давности.)

По моим ощущениям за четыре года пентеста, дискуссия «AI заменит пентестеров через два года» vs «AI - бесполезная игрушка для CTF» - ложная дихотомия. Обе позиции игнорируют рутину. AI-ассистенты в терминале экономят заметную часть времени на операциях, которые никто не любит: парсинг вывода, генерация однострочников, шаблонные скрипты для отчётов. Но они не принимают решений. Не понимают бизнес-контекст заказчика, не оценивают risk appetite, не решают - эксплуатировать уязвимость или остановиться перед production-базой с реальными данными. За всё это время я не видел ни одного случая, где AI самостоятельно обнаружил бы уязвимость, которую пропустил подготовленный специалист. Зато видел десятки случаев, где правильно настроенный терминал - zsh с алиасами, tmux с сохранёнными сессиями, bash-обёртки для recon-цепочек - давал больший прирост productivity, чем любая LLM. Мой прогноз: AI-агенты типа CAI и Nebula станут стандартной частью toolkit'а, но не заменой. Точка роста - не в том, чтобы AI «пентестил сам», а в том, чтобы он ускорял рутину: документирование, парсинг, отчётность. Кто автоматизирует это быстрее - тот выигрывает engagement'ы. На HackerLab есть задачи, где автоматизация recon - не украшение резюме, а единственный способ уложиться в таймер и довести цепочку до конца.
 
Последнее редактирование модератором:

Ещё по теме