СТАТЬЯ

Writeup HTB для резюме пентестера: гайд

Сергей Попов
Сергей Попов Red Team · 6,7 тыс. сообщений
Подписаться
676
[ обложка статьи ]
Режим чтения
Тёмный стол исследователя ночью: на экране ноутбука открыт GitHub-репозиторий с мануалом по Kerberoasting, рядом блокнот со схемой атаки от руки. На втором мониторе светится терминал Hack The Box,...


На третьем техническом собеседовании тимлид открыл мой GitHub, нашёл writeup по retired-машине с HTB и спросил, почему я выбрал Kerberoasting вместо очевидного SMB relay. Пятнадцать минут мы разбирали один writeup - и стандартное тестовое задание отменили. Это был мой первый оффер на junior-пентестера: три опубликованных разбора перевесили и диплом, и сертификат. Ниже - конкретный план, как превратить writeup HTB для резюме пентестера в работающее конкурентное преимущество.

Что рекрутер и техлид реально оценивают в writeup'е​

Рекрутер в ИБ-компании тратит на первичный просмотр резюме от 30 секунд до двух минут. Ссылки на CTF-площадки - маркер, по которому он решает, передавать ли резюме дальше. Показательный эксперимент провела лид рекрутинга компании "Бастион" (Habr, 2024): фейковое резюме пентестера со ссылками на Bug Bounty, CTFtime, TryHackMe и Hack The Box за две недели получило 123 просмотра от 51 компании и 25 откликов. Ни один рекрутер не спросил про конкретные кейсы - хотя в резюме было прямо указано "готов рассказать по запросу". Ссылки сработали как сигнал: человек практикуется, а не просто "интересуется ИБ". Подробнее - в нашем руководстве по карьера в кибербезопасности.

Когда резюме доходит до техлида - критерии другие. Его интересует не количество решённых машин, а ход мысли:
  • Методология - есть ли системный подход (recon -> enumeration -> exploitation -> post-exploitation -> reporting), или кандидат тыкается наугад
  • Обоснование решений - почему выбран этот вектор, а не альтернативный
  • Качество документирования - сможет ли человек написать отчёт, понятный клиенту без технического бэкграунда
  • Глубина понимания - знает ли кандидат, почему exploit сработал, а не просто воспроизводит чужие команды
Согласно рекомендациям HTB Blog, при найме в кибербезопасность решает "evidence of your passion and persistence". Writeup - самый прямой способ это показать.

Где публиковать writeup HTB и TryHackMe​

1791280660197.webp

GitHub портфолио для пентестера: минимальная структура​

GitHub-профиль - первое место, куда техлид идёт после прочтения резюме. В примерах резюме от HTB ссылка на GitHub стоит в шапке наравне с email, а в образце entry-level резюме для аналитика указываются конкретные цифры: "HTB machine completions include 14 retired boxes""В число пройденных HTB машин входят 14 отстранённых машин.".

Минимальная структура репозитория:
Код:
pentesting-writeups/
├── README.md            # Оглавление с кратким описанием
├── HTB/
│   ├── machine-name-1/
│   │   ├── writeup.md
│   │   └── screenshots/
│   └── machine-name-2/
├── TryHackMe/
│   └── room-name-1/
└── tools/
    └── custom-enum.sh   # Самописные скрипты
Правила оформления, без которых не взлетит:
  • README.md с навигацией - рекрутер не будет копаться в папках. Таблица: название машины, ОС, сложность, ссылка на writeup
  • Дата и сложность в каждом writeup'е - показывает прогрессию от Easy к Hard
  • Скриншоты рядом с текстом, а не на внешнем хостинге, который через полгода отвалится
  • Самописные скрипты в отдельной папке - даже простой bash для автоматизации enumeration показывает навык, который ценят работодатели
Антирекомендация: GitHub с нулём коммитов и единственным форком "awesome-hacking-tools". Такой профиль хуже, чем отсутствие ссылки вообще. Серьёзно - лучше вообще не давать ссылку.

Блог по кибербезопасности для резюме: площадки и выбор​

GitHub хранит writeup'ы, но не продвигает их. Для видимости нужна площадка с аудиторией.

Habr - главная техническая площадка рунета. Индексация в поиске, комментарии от практиков с реальным опытом, возможность попасть в корпоративный блог ИБ-компании. Из минусов: порог входа по качеству текста, негативная карма демотивирует (но закаляет). Для русскоязычного портфолио пентестера - наиболее весомая площадка.

Medium - английскоязычная аудитория, теги InfoSec и CyberSecurity с десятками тысяч подписчиков. Международная видимость, если целитесь в вакансии за рубежом. Минус: paywall отпугивает часть читателей.

Личный блог на Hugo или Jekyll с хостингом на GitHub Pages. Полный контроль и демонстрация навыков работы с git и CI/CD. Минус - нет встроенной аудитории, продвигать придётся самому.

Telegram-канал - специфика рунета, работает как дополнительный канал дистрибуции. Ссылку стоит указывать в резюме, если в канале есть хотя бы 10-15 постов с техническим разбором, а не репосты новостей.

Оптимальная комбинация: GitHub как хранилище всех writeup'ов + одна блог-площадка для публикации лучших. По roadmap-гайду Total Cyber Academy, минимальное портфолио для junior-роли включает 8-12 writeup'ов по разным классам уязвимостей и 3 якорных проекта: полный аудит веб-приложения, разбор внутренней сети и самописный инструмент автоматизации.

Как писать writeup HTB, который работает на резюме​

1791280731484.webp

Структура writeup от разведки до рекомендаций​

Каждый writeup TryHackMe или HTB должен зеркалить структуру реального пентест-отчёта. Работодатель через writeup оценивает, сможет ли кандидат писать отчёты для клиентов. Чек-лист по разделам:
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Пример сильной фразы в writeup'е: "Нашёл writable crontab, задание запускается от root каждые 5 минут. Вместо стандартного reverse shell через Metasploit написал однострочник на bash - в реальном проекте это снизило бы вероятность срабатывания EDR, а клиенту показало бы, что детект зависит не от конкретного инструмента".

Плохой writeup vs хороший - конкретные примеры​

Плохой writeup (так делают большинство новичков):
  • "Запустил nmap. Нашёл порт 80. Открыл сайт. Нашёл SQLi. Использовал sqlmap. Получил shell. Забрал флаг"
  • Один скриншот - финальный флаг
  • Команды без пояснений
  • Нет раздела с рекомендациями
По сути это лог действий, а не анализ. Техлид посмотрит и закроет - ему непонятно, думал ли кандидат вообще.

Хороший writeup:
  • Каждый шаг объяснён: "Выбрал ручную эксплуатацию SQL-инъекции вместо sqlmap, чтобы показать понимание UNION-based injection (OWASP A03:2021 - Injection)"
  • Скриншоты ключевых этапов с аннотациями (не скриншот терминала на весь экран, а обрезанный фрагмент с выделением важного)
  • Описаны тупиковые ветки: "Попробовал X, не сработало по причине Y - переключился на Z"
  • Раздел Remediation с ссылками на OWASP, MITRE ATT&CK, конкретные CWE
  • Ссылки на официальную документацию инструментов, а не на рандомный пост в интернете
Тупиковые ветки - особенно ценная часть. Техлид на собеседовании хочет видеть, что кандидат умеет работать с неопределённостью, а не просто идёт по готовому exploit chain. Я бы даже сказал, что один хорошо описанный тупик стоит двух успешных эксплойтов.

Сколько writeup'ов нужно для портфолио пентестера​

1791280771059.webp

Конкретные ориентиры на основе рекомендаций для junior-пентестеров:
Принципиальный момент: публикуйте writeup'ы только по retired-машинам HTB. Публикация разборов активных машин нарушает правила платформы и мгновенно уничтожает доверие к автору. На TryHackMe проверяйте условия конкретной комнаты - большинство допускает публикацию после завершения.

КатегорияЧто это даёт работодателюИнструменты для writeup
Web (SQLi, XSS, SSRF)Понимание OWASP Top 10Burp Suite, sqlmap, manual testing
Active DirectoryНавыки внутреннего пентестаBloodHound, Impacket, Rubeus
GNU/Linux PrivEscСистемное мышлениеLinPEAS, GTFOBins, ручной анализ
Windows PrivEscРабота с PowerShell и WinPEASWinPEAS, PowerUp, SharpUp
PWN / BinaryБазовые навыки reversingGhidra, pwntools, GDB

Такой набор закрывается за 3-4 месяца при практике 3-5 часов в неделю. На резюме это отражается конкретными цифрами - как в примере entry-level резюме: "Completed 180+ TryHackMe rooms (Top 5% globally). HTB machine completions include 14 retired boxes""Завершено 180+ комнат на TryHackMe (Топ 5% в глобальном рейтинге). Завершённые HTB машины имеют 14 пройденных машин.".

Ошибки в CTF writeup публикации, которые убивают портфолио​

Публикация флагов и credentials. Не просто нарушение правил площадки. Техлид, увидевший root-флаг в writeup'е, делает однозначный вывод: кандидат не понимает базовый OPSEC. В MITRE ATT&CK техника T1593.003 (Code Repositories, reconnaissance) описывает целенаправленный поиск злоумышленниками чувствительных данных в публичных репозиториях. Writeup с реальными хешами, API-ключами или скриншотами credentials - прямой вектор для атакующего. Замените флаги на [REDACTED], хеши обрезайте. Для тех кто в танке: если вы показываете флаг HTB в публичном репо - вы буквально демонстрируете утечку данных в своём портфолио пентестера.

Copy-paste из чужих writeup'ов. Техлид проверит - поиск находит совпадения за секунды. Один обнаруженный плагиат ставит под вопрос всё портфолио. Если использовали чужой разбор как подсказку - упомяните честно: "Застрял на этапе X, подсмотрел подход у автора Y, адаптировал под свою ситуацию". Честность здесь работает лучше, чем попытка казаться умнее.

Список команд без контекста. Сухая последовательность nmap -> gobuster -> searchsploit -> exploit без объяснений показывает, что кандидат умеет копировать из терминала, но не понимает, что происходит. Одно предложение перед каждым ключевым шагом: зачем именно это действие.

Неработающие ссылки и битые скриншоты. Проверяйте каждую ссылку перед отправкой резюме. Битая ссылка на GitHub Pages - аналог помятого бумажного резюме. Я перед каждым откликом прохожу по всем ссылкам в портфолио - занимает пять минут, экономит нервы.

Отсутствие README. Репозиторий с десятком папок без оглавления - не портфолио пентестера, а файлопомойка. README.md - первый файл, который открывает рекрутер.

Отдельный момент для тех, кто целится в международные компании: writeup'ы стоит писать на английском. Если работаете на российский рынок - русский язык допустим, но техническая терминология (SQL injection, privilege escalation, lateral movement) остаётся на английском. Так устроена профессиональная лексика и поисковая выдача.

Резюме в ИБ с нуля без ссылки на портфолио в 2025 году - как резюме разработчика без GitHub. Даже фейковое резюме с правильными ссылками на CTF-площадки получило 25 откликов за две недели. Но ссылка работает только если за ней стоит реальный контент: writeup - самый доступный формат, который не требует ни коммерческого опыта, ни сертификата, ни разрешения работодателя.

Вижу одну повторяющуюся проблему: люди пишут 15-20 одинаковых writeup'ов по Easy-машинам и считают, что количество компенсирует глубину. Не компенсирует. Техлид после третьего однотипного разбора закрывает вкладку и переходит к следующему кандидату. Шесть разных writeup'ов - web, AD, Linux privesc, Windows privesc, binary exploitation через Ghidra, самописный скрипт автоматизации - дают в разы больше, чем двадцать вариаций на тему nmap -> gobuster -> exploit-db -> root.txt. Покажите, что умеете думать, а не повторять.

Второе наблюдение: writeup без раздела remediation - это CTF-отчёт, а не пентест-артефакт. На собеседовании обязательно спросят: "А что вы порекомендуете клиенту?" Если в голове только exploitation - разговор заканчивается быстро. Привычка писать рекомендации к каждой найденной уязвимости (даже учебной) формирует мышление пентестера, а не CTF-игрока. Именно это видит техлид, когда листает ваш GitHub.

И последнее: не ждите момента, когда writeup'ов станет "достаточно". Публикуйте первый после решения первой Medium-машины. Он будет несовершенным - и это нормально. Git-история покажет рост, а это ценнее безупречного текста, написанного разом. Если параллельно идёте к OSCP и нужна системная подготовка по веб-части - на WAPT эту цепочку проходят в первых модулях с лабами.
Полезно · 2

Комментарии

0