Два года назад я сидел на том же месте, где сидите вы сейчас. Ноль строчек в трудовой по ИБ, диплом не по специальности, зато - десятки пройденных машин на HackTheBox, куча write-ups на GitHub и один скрипт на Python, который автоматизировал разведку поддоменов. Именно этот набор артефактов принёс мне первый оффер на позицию junior-пентестера. Не диплом. Не сертификат. Конкретное портфолио по информационной безопасности без опыта в коммерческих проектах.
С тех пор я провёл через менторство пять человек - от полного нуля до трудоустройства. И знаю точно: у новичков ступор не в нехватке знаний. Ступор в том, что они не понимают, что именно положить в портфолио и как это оформить, чтобы нанимающий менеджер не закрыл вкладку через три секунды.
Эта статья - конкретный чеклист. Без «развивайте скиллы» и «будьте проактивны». Каждый раздел - действие, результат и место, куда этот результат выложить.
Почему портфолио начинающего специалиста ИБ важнее резюме
Сразу к реальности рынка. Российский рынок кибербезопасности - кадровый голод: десятки тысяч вакансий висят незакрытыми, а значительная часть соискателей сыпется на техническом собеседовании.Что это значит для вас: компании отчаянно ищут людей, но не готовы брать кого угодно с парой строчек «прошёл курс по ИБ» в резюме. Как человек, который сидел на стороне найма и просматривал отклики, скажу прямо - резюме без портфолио летит в корзину. Резюме с ссылкой на живой GitHub, где задокументированы проекты - уходит в шортлист.
Первая работа в кибербезопасности достаётся не тому, кто больше знает. А тому, кто может показать, что знает. Разница - как между «я умею плавать» и видео с заплыва.
Вот что конкретно оценивает нанимающий менеджер, когда открывает ваш GitHub:
- Умеете ли вы доводить задачу до конца, а не бросать после первого коммита
- Понимаете ли вы, что делаете - README объясняет подход, а не просто копипаст
- Есть ли системность - структура репозиториев, а не хаос из папок
test1иlab - Можете ли вы документировать находки - отчёты, write-ups
Структура GitHub-профиля: ваша витрина для работодателя
GitHub - не «хранилище кода». Это ваше цифровое резюме, которое работает 24/7. Каждый репозиторий - отдельный проект для резюме по информационной безопасности. Но чтобы это работало, нужна структура.Как назвать и организовать репозитории
Плохо:test1, script, lab, homework. Я такое видел десятки раз - и каждый раз закрывал вкладку.Хорошо: осмысленные имена, по которым сразу понятен контекст.
| Тип проекта | Пример названия репозитория | Что внутри |
|---|---|---|
| Home lab | homelab-soc-elk-stack | Документация стенда, конфиги, скриншоты |
| CTF write-ups | ctf-writeups-2025 | Папки по платформам, Markdown-файлы |
| Автоматизация | recon-subdomain-scanner | Скрипт, README с примерами запуска |
| Исследование | xss-filter-bypass-research | PoC, описание методологии, выводы |
| Bug bounty | responsible-disclosure-reports | Деперсонализированные отчёты |
README как мини-отчёт
Каждый репозиторий обязан иметь README.md. Вот шаблон, который я даю своим менти:
Markdown (GitHub flavored):
# Название проекта
## Цель
Одно предложение: что делает этот проект и зачем.
## Стек / Инструменты
- Kali Linux
- Nmap, Burp Suite
- Python 3.x
## Как запустить
Конкретные команды для воспроизведения.
## Что я узнал
2-3 ключевых вывода. Это показывает рефлексию - работодатели ценят.
## Скриншоты / Результаты
Визуальное подтверждение работы.
Home lab: фундамент вашего портфолио
Home lab кибербезопасность - не опционально. Это обязательный пункт. Собственная лаборатория показывает, что вы умеете разворачивать инфраструктуру, изолировать среды и работать с инструментами на уровне, приближённом к боевому. Лично у меня первый стенд жил на ноутбуке с 8 ГБ RAM - и этого хватало за глаза.Минимальный стенд за один вечер
Вам понадобится машина с 8+ ГБ RAM и VirtualBox (бесплатно). Вот пошаговый план:Шаг 1. Установите гипервизор и создайте изолированную сеть
Bash:
# В VirtualBox создайте Host-Only сеть:
# File → Host Network Manager → Create
# Адресация: 192.168.56.0/24, DHCP выключен
# Все VM подключаете к этой сети - трафик не выходит наружу
Шаг 2. Разверните атакующую машину
Скачайте Kali Linux (образ для VirtualBox с kali.org). Подключите к Host-Only сети. Проверьте:
Bash:
ip addr show
# Ищите интерфейс с адресом из диапазона 192.168.56.x
# Имя интерфейса может быть eth0, enp0s3, enp0s8 и т.д.
ping 192.168.56.1
# Хост должен отвечать - если молчит, что-то не так с адаптером
Начните с двух:
- Metasploitable 2 - классическая уязвимая VM с десятками открытых сервисов. Там дыр столько, что можно месяц ковырять.
-
Ссылка скрыта от гостей- современное уязвимое веб-приложение (запускается через Docker:
docker run -p 3000:3000 bkimminich/juice-shop, или через Node.js)
Вот что кладёте в репозиторий
homelab-soc-elk-stack или homelab-pentest-lab:- Схема сети (нарисуйте в draw.io - пять минут работы, а выглядит профессионально)
- Список VM с IP-адресами и назначением
- Конфигурационные файлы
- Скриншоты запущенного стенда
Продвинутый стенд: SOC-лаборатория
Если целитесь в SOC-аналитика, добавьте компонент мониторинга. Разверните ELK Stack (Elasticsearch + Logstash + Kibana) или Wazuh - open-source SIEM. Настройте сбор логов с целевых машин, создайте правила детекции и задокументируйте процесс.Такой стенд - это уже уровень, который выделяет вас среди 90% junior-кандидатов на позицию в SOC. Большинство приходят со словами «я прошёл курс» - а у вас живая лаба с алертами.
CTF для начинающих ИБ: как превратить решения в портфолио
Участие в CTF само по себе ничего не даёт для трудоустройства. Ценность появляется, когда вы документируете решения в формате write-up. Именно write-ups показывают ваш мыслительный процесс - то, что невозможно подделать.Где начать
| Платформа | Сложность | Особенность |
|---|---|---|
| TryHackMe | Начальная | Пошаговые комнаты с подсказками |
| HackTheBox | Средняя | Реалистичные машины, активное коммьюнити |
| HackerLab | Начальная-средняя | Русскоязычная платформа, CTF-задания |
| VulnHub | Средняя | Скачиваемые VM для локального развёртывания |
Формат write-up, который впечатляет
Я видел сотни write-ups. Большинство - бесполезный мусор в стиле «запустил Nmap, нашёл порт, получил флаг». Ноль мышления, чистая последовательность команд. Вот формат, который реально работает:
Markdown (GitHub flavored):
# HackTheBox - Machine Name
## Разведка
### Сканирование портов
Начинаю с быстрого сканирования всех портов, затем детальное
сканирование обнаруженных сервисов:
nmap -sC -sV -oN nmap_initial.txt 10.10.10.x
### Результат
- 22/tcp - OpenSSH 8.2
- 80/tcp - Apache 2.4.41
- 8080/tcp - Node.js Express
### Анализ
Порт 8080 интересен - нестандартный сервис. Начинаю с него.
## Получение начального доступа
[Описание шагов с объяснением ПОЧЕМУ вы сделали каждый шаг]
## Повышение привилегий
[Шаги + логика]
## Выводы и защита
- Какая уязвимость эксплуатировалась
- Как бы я защитился на месте администратора
- Ссылки на MITRE ATT&CK (если применимо)
Привязывайте техники к фреймворку
Ссылка скрыта от гостей
там, где уместно. Эксплуатировали уязвимость в веб-приложении для начального доступа? Это Exploit Public-Facing Application (T1190, тактика Initial Access). Использовали найденные SSH-ключи для перемещения - T1021.004 Remote Services: SSH. Для доступа пригодились легитимные учётки к VPN или RDP - External Remote Services (T1133). Эксплуатировали дыру в самом RDP-сервисе (тот же BlueKeep) - снова T1190. Такие ссылки показывают, что вы мыслите не на уровне «нажал кнопку в Metasploit», а на уровне структурированного анализа угроз.Сколько write-ups нужно
Минимум - 10 штук. По моему опыту, именно после десятого write-up GitHub начинает выглядеть как осознанное портфолио, а не случайный набор файлов. Стремитесь к 15-20 за первые три месяца активной практики. Звучит как много, но если решать по 2 задачки в неделю - набегает быстро.Проекты для резюме по информационной безопасности: автоматизация на Python
Скрипты автоматизации - то, что отличает «я прохожу CTF» от «я умею создавать инструменты». Даже простой скрипт показывает: вы думаете как инженер, а не как пользователь чужих утилит.Проект 1: Сканер открытых портов с экспортом
Скрипт-обёртка для Nmap - типичный проект для начинающих, но с нюансами:
Python:
import subprocess
import json
import sys
from datetime import datetime
def quick_scan(target, ports="21,22,80,443,8080,8443"):
"""
Быстрый скан указанных портов через Nmap.
Результат: список открытых портов с сервисами.
С sudo выполняется SYN-сканирование (быстрее и незаметнее),
без sudo - TCP connect scan.
python3 scanner.py 192.168.56.101
"""
cmd = ["nmap", "-sV", "--open", "-p", ports, "-oX", "-", target]
try:
result = subprocess.run(cmd, capture_output=True, text=True, timeout=120)
return result.stdout
except subprocess.TimeoutExpired:
print(f"[!] Таймаут при сканировании {target}")
return None
except FileNotFoundError:
print("[!] Nmap не найден. Установите: sudo apt install nmap")
sys.exit(1)
def save_report(target, raw_output):
"""Сохраняет результат в JSON для дальнейшего анализа."""
report = {
"target": target,
"scan_date": datetime.now().isoformat(),
"raw_xml_length": len(raw_output) if raw_output else 0,
"raw_xml": raw_output
}
filename = f"scan_{target}_{datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
with open(filename, "w") as f:
json.dump(report, f, indent=2)
print(f"[+] Отчёт сохранён: {filename}")
if __name__ == "__main__":
# Пример для демонстрации концепции - используйте только в своей лаборатории
target = sys.argv[1] if len(sys.argv) > 1 else "192.168.56.101"
output = quick_scan(target)
if output:
save_report(target, output)
recon-port-scanner, добавьте README с примерами запуска и скриншотами вывода.Проект 2: Чекер IoC через VirusTotal API
Этот проект показывает умение работать с API и автоматизировать рутину анализа угроз - навык, ценный и для Red Team (разведка), и для SOC-аналитиков (проверка индикаторов компрометации):
Python:
import requests
import os
import sys
def check_virustotal(ip_address):
"""
Проверка IP-адреса через VirusTotal API v3.
API-ключ берётся из переменной окружения - никогда не хардкодьте ключи!
"""
api_key = os.getenv("VIRUSTOTAL_API_KEY")
if not api_key:
print("[!] Установите переменную: export VIRUSTOTAL_API_KEY='ваш_ключ'")
sys.exit(1)
url = f"https://www.virustotal.com/api/v3/ip_addresses/{ip_address}"
headers = {"x-apikey": api_key}
try:
response = requests.get(url, headers=headers)
response.raise_for_status()
data = response.json()
stats = data.get("data", {}).get("attributes", {}).get(
"last_analysis_stats", {}
)
malicious = stats.get("malicious", 0)
harmless = stats.get("harmless", 0)
suspicious = stats.get("suspicious", 0)
print(f"IP: {ip_address}")
print(f" Malicious: {malicious}")
print(f" Suspicious: {suspicious}")
print(f" Harmless: {harmless}")
if malicious > 3:
print(" [ALERT] Высокий уровень подозрительности!")
except requests.exceptions.RequestException as e:
print(f"[!] Ошибка запроса: {e}")
if __name__ == "__main__":
# Пример использования в лабораторной среде
target_ip = sys.argv[1] if len(sys.argv) > 1 else "8.8.8.8"
check_virustotal(target_ip)
.gitignore с исключением .env - базовая гигиена, которая показывает, что вы понимаете принципы безопасной разработки. (Я видел репозитории, где ключи от VirusTotal лежали прямо в коммите. Не надо так.)Проект 3: Парсер логов для обнаружения брутфорса
Python:
import re
from collections import Counter
def parse_auth_log(filepath="/var/log/auth.log"):
"""
Анализ auth.log на предмет неудачных SSH-попыток.
Выводит IP-адреса с наибольшим числом ошибок.
"""
failed_pattern = re.compile(
r"Failed password.*from (\d+\.\d+\.\d+\.\d+)"
)
ip_counter = Counter()
try:
with open(filepath, "r") as f:
for line in f:
match = failed_pattern.search(line)
if match:
ip_counter[match.group(1)] += 1
except FileNotFoundError:
print(f"[!] Файл {filepath} не найден")
return
print("Top-10 IP по неудачным SSH-попыткам:")
print("-" * 40)
for ip, count in ip_counter.most_common(10):
flag = " << BRUTE FORCE" if count > 50 else ""
print(f" {ip:20s} - {count} попыток{flag}")
if __name__ == "__main__":
# Пример для демонстрации концепции
parse_auth_log()
Bug bounty для новичков: первые шаги и документация
Bug bounty - мощный артефакт для портфолио, но только если подходить правильно. Не нужно находить критическую RCE в Google. Достаточно найти один валидный баг и корректно его задокументировать.С чего начать
- Зарегистрируйтесь на HackerOne или Bugcrowd
- Выберите программу с широким скоупом и пометкой «Beginner Friendly»
- Начните с поиска простых уязвимостей: открытые директории, IDOR, информационные утечки в заголовках
Как документировать находку для портфолио
Даже если баг не приняли или заплатили 0 - сам отчёт имеет ценность. Создайте деперсонализированную версию (уберите название компании и конкретные URL) и добавьте в репозиторий. Следуйте принципам
Ссылка скрыта от гостей
:
Markdown (GitHub flavored):
# Security Finding: IDOR in User Profile API
## Severity
Medium (CVSS ~6.5)
## Description
API endpoint /api/v1/users/{id}/profile returns full profile data
for any user ID without verifying that the requesting user
is authorized to access this data.
## Steps to Reproduce
1. Authenticate as User A
2. Send GET request to /api/v1/users/{USER_B_ID}/profile
3. Observe: full profile of User B is returned
## Impact
Any authenticated user can access profile data of other users,
including email addresses and phone numbers.
## Remediation
Implement authorization check: verify requesting user's ID
matches the requested profile ID, or user has admin role.
## Timeline
- [Date]: Reported to vendor
- [Date]: Acknowledged
- [Date]: Fixed
Сертификаты ИБ для начинающих: что реально помогает при трудоустройстве
Сертификаты - не замена портфолио, а дополнение. Вот что имеет смысл для junior-позиции, ранжировано по соотношению «польза / затраты»:| Сертификат | Стоимость | Для кого | Практический экзамен |
|---|---|---|---|
| CompTIA Security+ | ~$400 | Универсальный старт | Нет, тесты |
| TryHackMe certificates | Бесплатно / $14/мес | Практики, CTF | Да |
| HackTheBox CPTS/CBBH | ~$200-500 | Пентестеры | Да, 100% практика |
| eJPT (INE) | ~$250 | Пентестеры | Да, практика |
Мой совет: если бюджет ограничен - вкладывайте время в бесплатные платформы и портфолио. Один живой GitHub с десятью write-ups стоит больше, чем сертификат без подтверждённых навыков. Сертификат без GitHub - красивый фантик. GitHub без сертификата - рабочий инструмент.
Как попасть в ИБ без опыта: пошаговый план на 90 дней
Конкретный план, по которому я проводил своих менти. Каждую неделю - измеримый результат.Недели 1-2: фундамент
- Создайте GitHub-аккаунт с профессиональным профилем (фото, био, ссылки)
- Установите VirtualBox, разверните Kali Linux + Metasploitable 2
- Задокументируйте стенд в репозитории
homelab-pentest-lab - Пройдите первые 3 комнаты на TryHackMe (Pre Security path)
Недели 3-6: набор артефактов
- Решайте по 2 CTF-задания в неделю, пишите write-ups
- Напишите первый Python-скрипт (сканер портов или чекер IoC)
- Пройдите комнату по веб-уязвимостям (OWASP Top 10 на TryHackMe или Juice Shop)
Недели 7-10: углубление
- Начните проходить машины на HackTheBox (Easy-уровень)
- Расширьте home lab: добавьте Windows Server для изучения Active Directory или ELK Stack для SOC-направления
- Зарегистрируйтесь на bug bounty платформе, изучите 2-3 программы
Недели 11-12: упаковка и выход на рынок
- Убедитесь, что на GitHub минимум 5 репозиториев с качественными README
- Обновите резюме: в каждом пункте - ссылка на конкретный репозиторий
- Начните откликаться на вакансии junior специалист информационная безопасность
Чеклист готовности портфолио
Перед первым откликом проверьте:- GitHub-профиль заполнен: аватар, био, закреплённые (pinned) репозитории
- Минимум 10 CTF write-ups в едином формате
- Минимум 2 скрипта автоматизации с README и примерами
- Home lab задокументирован: схема сети, список VM, скриншоты
- Нет захардкоженных паролей и API-ключей в коде (проверьте
git log- бывает, ключ удалили из файла, но он остался в истории коммитов) - Файл
.gitignoreприсутствует в каждом репозитории - Все README написаны грамотно - орфография и структура
Трудоустройство в ИБ без опыта работы: где искать и как подавать
Стратегия «отправил 100 одинаковых резюме на hh.ru» не работает. Вот что работает:Стажировки. Positive Technologies, Лаборатория Касперского, VK Education регулярно набирают стажёров. Программы длятся 3-6 месяцев с менторством. Успешные стажёры часто получают оффер.
Telegram-каналы и чаты по ИБ. Значительная часть вакансий в кибербезопасности не попадает на hh.ru. Их публикуют в профильных чатах, где можно напрямую написать тимлиду. Это совсем другой уровень контакта.
Нетворкинг на конференциях. Стартапы часто ищут людей прямо на мероприятиях. Их требования к формальному опыту ниже, а готовность вкладываться в рост сотрудника - выше.
Под каждый отклик адаптируйте сопроводительное письмо. Не пишите «я хочу развиваться в ИБ» - это пустой звук. Пишите: «В моём GitHub есть 15 write-ups по веб-уязвимостям и скрипт автоматизации разведки поддоменов - вот ссылка. Готов обсудить на собеседовании». Конкретика переводит вас из категории «ещё один джуниор» в категорию «этот человек уже что-то делает».
Что дальше: от портфолио к карьере
Портфолио - не разовый артефакт. Это привычка документировать свою работу, которая останется с вами на всю карьеру. Каждая новая машина на HackTheBox, каждый найденный баг, каждый автоматизированный процесс - ещё одна строчка в реальном резюме.Как стать специалистом по ИБ с нуля - вопрос не таланта и не денег на дорогие курсы. Это вопрос дисциплины: каждую неделю создавать что-то, что можно показать. Через три месяца такого режима ваш GitHub будет говорить за вас громче любого сертификата. А через шесть - вы уже будете на позиции, где наконец начнёт копиться тот самый «коммерческий опыт», которого от вас так ждали.
Хватит читать. Откройте терминал, запустите
VBoxManage startvm kali --type headless, и начните документировать. Ваше портфолио по информационной безопасности без опыта начинается прямо сейчас.