Для многих игроков основной целью CTF (Capture The Flag) является изучение новых трюков, а не скоростной бег.
Действительно, вы должны быть в числе 25-30 лучших игроков (это число может варьироваться в зависимости от платформы), чтобы получить дополнительные очки или занести свое имя в зал славы. В остальном результат будет одинаковым независимо от того, решите ли вы ее за 1 час или за 7 дней.
Тем не менее, на мой взгляд, скорость — одна из лучших метрик для оценки вашего уровня. Кроме того, если ваша цель — стать пером-тестером, это, безусловно, имеет значение.
Сила практики
Опытные игроки обычно быстрее новичков. Они знают распространенные ловушки и способы выявления повторяющихся паттернов.
Кроме того, они владеют множеством инструментов, в то время как новички могут испытывать трудности с базовыми командами. Однако все дело только в практике, поэтому не отказывайтесь от борьбы.
Изучите несколько языков программирования
Говорят, что для решения CTF не обязательно владеть каким-либо языком программирования. Хотя я понимаю эту идею, позволю себе с ней не согласиться. Вам не обязательно быть экспертом, но владение, например, Python или Bash — это серьезное преимущество.
Кроме того, я не понимаю, как кто-то может использовать ошибки и уязвимости, не имея ни малейшего представления о программировании и написании сценариев. Многие машины, особенно самые сложные, требуют манипулирования переменными, процессами или взлома известных библиотек.
Наиболее трудоемкие задачи
- полное сканирование nmap и другие тяжелые перечисления (например, большие списки слов)
- некоторые атаки методом перебора, которые могут даже превратиться в кроличьи норы (~ неправильные пути)
- хитрые инъекции (использование слепых инъекций вместо этого часто является лучшим выбором)
- ручные локальные или удаленные включения файлов (вместо этого используйте автоматизированные инструменты fuzzing и специальные списки слов)
- сложные поиски сокровищ (чаще всего нет короткого пути, и вы должны найти что-то где-то, чтобы попасть в другое место, где вы найдете что-то, что приведет в другое место, и так далее)
- безумная расшифровка, сочетающая несколько алгоритмов (используйте cyberchef, чтобы ускорить процесс)
- создание скриптов вручную (вы не сможете постоянно находить существующие скрипты в Google).
Наиболее распространенные ошибки
- не делать заметки
- пропуск очевидных подсказок (все здесь не просто так*)
- не сохранять результаты выполнения команд в файлах (например, результаты перечисления)
- пропуск основных команд для повышения привилегий, таких как
sudo -l
(требуется пароль) - выполнение ручных тестов на повышение привилегий (вместо них используйте скрипты типа linpeas)
- пропуск процессов (используйте такие инструменты, как pspy)
- использование ограниченного shell, пока вы можете породить Bash или добавить свой открытый ключ в файл
authorized_keys
.
* Будьте осторожны, так как более сложные CTF, скорее всего, попытаются ввести вас в заблуждение.
Об уровнях CTF
Многие игроки критикуют то, как платформы оценивают уровень CTF.
Имейте в виду, что у каждой хакерской платформы своя методология. Один и тот же вид CTF может быть помечен как «легкий» или «трудный» в зависимости от платформы! Не будьте слишком самоуверенны ^^. Аналогично, то, что вы можете считать очень сложным, может оказаться довольно легким для более опытных игроков.
Я читал комментарии вроде «худшая коробка в истории» или «эта комната до смешного сложна и не должна быть отмечена как легкая». Я предпочитаю играть по наиболее реалистичным сценариям, но никогда не забываю, что CTF — это все-таки игра.
Хотя найти уязвимости для эксплуатации обычно проще, чем защитить системы, иногда эксплуатировать нечего. В реальной жизни никто не даст вам дополнительных подсказок и не скажет атаковать определенный CVE.
Я знаю, что некоторые платформы предоставляют очень реалистичные задачи, созданные реальными предприятиями, но, насколько я знаю, то, что делает большинство CTF немного нереалистичными, это не их фактическая сложность.
Игра пропускает многие шаги для удобства, и вам не нужно заметать следы или уклоняться от продвинутых средств обнаружения. Некоторые функции отключены или активированы специально, чтобы позволить эксплойт.
Одним словом, есть интересные вещи, но не принимайте их за чистую монету.
Завершение
CTF делают хакерство более увлекательным. Однако заявленная сложность может ввести в заблуждение новичков. «Легко» не обязательно означает, что любой сможет решить ее за несколько минут, используя готовые скрипты.
На мой взгляд, CTF можно считать «легким», если есть известные CVE, связанные с публичными POC, или если он включает классические атаки, независимо от его технической сложности. Напротив, самые сложные CTF часто требуют творческого подхода и нестандартных решений.