СТАТЬЯ

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

Сергей Попов
Сергей Попов Red Team · 6,7 тыс. сообщений
Подписаться
4,4 тыс.
[ обложка статьи ]
Режим чтения
2faae1aa-6268-4736-9a6f-4d5724393389.webp


Два года назад я сидел на том же месте, где сидите вы сейчас. Ноль строчек в трудовой по ИБ, диплом не по специальности, зато - десятки пройденных машин на HackTheBox, куча write-ups на GitHub и один скрипт на Python, который автоматизировал разведку поддоменов. Именно этот набор артефактов принёс мне первый оффер на позицию junior-пентестера - хотя, если смотреть шире, портфолио это лишь один элемент в полной карте специализаций и плана роста. Не диплом. Не сертификат. Конкретное портфолио по информационной безопасности без опыта в коммерческих проектах.

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

Эта статья - конкретный чеклист. Без «развивайте скиллы» и «будьте проактивны». Каждый раздел - действие, результат и место, куда этот результат выложить.

Почему портфолио начинающего специалиста ИБ важнее резюме​

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

Что это значит для вас: компании отчаянно ищут людей, но не готовы брать кого угодно с парой строчек «прошёл курс по ИБ» в резюме. Как человек, который сидел на стороне найма и просматривал отклики, скажу прямо - резюме без портфолио летит в корзину. Резюме с ссылкой на живой GitHub, где задокументированы проекты - уходит в шортлист.

Первая работа в кибербезопасности достаётся не тому, кто больше знает. А тому, кто может показать, что знает. Разница - как между «я умею плавать» и видео с заплыва.

Вот что конкретно оценивает нанимающий менеджер, когда открывает ваш GitHub:
  • Умеете ли вы доводить задачу до конца, а не бросать после первого коммита
  • Понимаете ли вы, что делаете - README объясняет подход, а не просто копипаст
  • Есть ли системность - структура репозиториев, а не хаос из папок test1 и lab
  • Можете ли вы документировать находки - отчёты, write-ups

Структура GitHub-профиля: ваша витрина для работодателя​

GitHub - не «хранилище кода». Это ваше цифровое резюме, которое работает 24/7. Каждый репозиторий - отдельный проект для резюме по информационной безопасности. Но чтобы это работало, нужна структура.

Как назвать и организовать репозитории​

Плохо: test1, script, lab, homework. Я такое видел десятки раз - и каждый раз закрывал вкладку.

Хорошо: осмысленные имена, по которым сразу понятен контекст.

Тип проектаПример названия репозиторияЧто внутри
Home labhomelab-soc-elk-stackДокументация стенда, конфиги, скриншоты
CTF write-upsctf-writeups-2025Папки по платформам, Markdown-файлы
Автоматизацияrecon-subdomain-scannerСкрипт, README с примерами запуска
Исследованиеxss-filter-bypass-researchPoC, описание методологии, выводы
Bug bountyresponsible-disclosure-reportsДеперсонализированные отчёты

README как мини-отчёт​

Каждый репозиторий обязан иметь README.md. Вот шаблон, который я даю своим менти:
Markdown (GitHub flavored):
# Название проекта

## Цель
Одно предложение: что делает этот проект и зачем.

## Стек / Инструменты
- Kali Linux
- Nmap, Burp Suite
- Python 3.x

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

## Что я узнал
2-3 ключевых вывода. Это показывает рефлексию - работодатели ценят.

## Скриншоты / Результаты
Визуальное подтверждение работы.
Профиль GitHub - первое, на что смотрит технический менеджер. Отнеситесь к нему как к портфолио начинающего специалиста ИБ, а не как к помойке для учебного кода.

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 подключаете к этой сети - трафик не выходит наружу
Критически важно: используйте Host-Only или Internal Network адаптеры. Одна из типичных ошибок новичков - Bridged-адаптер, который выставляет атакующую VM в домашнюю сеть. Это не просто небезопасно - это потенциально незаконно, если ваш Nmap-скан уйдёт к соседскому роутеру. Не надо так.

Шаг 2. Разверните атакующую машину

Скачайте Kali Linux (образ для VirtualBox с kali.org). Подключите к Host-Only сети. Проверьте:
Bash:
ip addr show
# Ищите интерфейс с адресом из диапазона 192.168.56.x
# Имя интерфейса может быть eth0, enp0s3, enp0s8 и т.д.
ping 192.168.56.1
# Хост должен отвечать - если молчит, что-то не так с адаптером
Шаг 3. Добавьте уязвимые цели

Начните с двух:
  • Metasploitable 2 - классическая уязвимая VM с десятками открытых сервисов. Там дыр столько, что можно месяц ковырять.
  • OWASP Juice Shop - современное уязвимое веб-приложение (запускается через Docker: docker run -p 3000:3000 bkimminich/juice-shop, или через Node.js)
Шаг 4. Задокументируйте стенд

Вот что кладёте в репозиторий 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 (если применимо)
Ключевое отличие - секция «Выводы и защита». Она показывает, что вы не просто «ломаете», а понимаете обе стороны. Для работодателя это сигнал зрелости.

Привязывайте техники к фреймворку 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)
Казалось бы - обёртка над Nmap, зачем? Но тут добавлена структура: таймауты, обработка ошибок, экспорт в JSON. Положите его в репозиторий 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)
Обратите внимание: API-ключ берётся из переменной окружения, а не захардкожен в файле. Добавьте .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()
Три таких проекта в GitHub - и вы уже выделяетесь среди 95% кандидатов на junior-позицию. Каждый скрипт решает конкретную задачу, которая встречается в реальной работе.

Bug bounty для новичков: первые шаги и документация​

Bug bounty - мощный артефакт для портфолио, но только если подходить правильно. Не нужно находить критическую RCE в Google. Достаточно найти один валидный баг и корректно его задокументировать.

С чего начать​

  1. Зарегистрируйтесь на HackerOne или Bugcrowd
  2. Выберите программу с широким скоупом и пометкой «Beginner Friendly»
  3. Начните с поиска простых уязвимостей: открытые директории, IDOR, информационные утечки в заголовках

Как документировать находку для портфолио​

Даже если баг не приняли или заплатили 0 - сам отчёт имеет ценность. Создайте деперсонализированную версию (уберите название компании и конкретные URL) и добавьте в репозиторий. Следуйте принципам Responsible Disclosure:
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
Такой отчёт показывает: вы умеете находить уязвимости, грамотно описывать impact и предлагать remediation. Это то, чем пентестер занимается каждый рабочий день.

Сертификаты ИБ для начинающих: что реально помогает при трудоустройстве​

Сертификаты - не замена портфолио, а дополнение. Вот что имеет смысл для 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, и начните документировать. Ваше портфолио по информационной безопасности без опыта начинается прямо сейчас.
Полезно · 6

Комментарии

1
Preparing for the PMP exam? ExamsVCE offers PMP practice questions, answers, and explanations in a downloadable PDF, plus a simulated test interface to help you practice under timed conditions. Use these resources to review key project management topics and build confidence, while checking the latest official exam requirements before you study.

Start Your Journey to Exam Mastery Here!>>>> PMI PMP VCE Practice Test Questions Answers by ExamsVCE