Добавить в корзинуПозвонить
Найти в Дзене
Цифровая Переплавка

GTFOBins: когда tar превращается в отмычку

Представь: ты только что получил доступ к Linux-системе. Шелл ограниченный, sudo нет, утащить свои бинари негде. Казалось бы, тупик. Но на сервере лежит обычный find. Или vim. Или даже безобидный less. И через тридцать секунд у тебя уже root — причём с помощью утилит, которые любой админ установил бы сам, не задумываясь. Именно эту тёмную сторону повседневных Unix-команд каталогизирует GTFOBins — справочник, без которого сегодня не обходится ни один серьёзный пентест. Аббревиатура расшифровывается как Get The F*** Out Binaries — буквально «бинарники, помогающие выбраться». На сайте gtfobins.org собраны несколько сотен стандартных Unix-исполняемых файлов с описанием того, как легитимная функциональность каждого из них может быть использована не по назначению. Не уязвимости. Не баги. Именно фичи — ровно те, ради которых эти утилиты и пишут. Проект был запущен в 2018 году исследователями Эмилио Пинной и Андреа Кардачи и с тех пор вырос в community-driven базу с десятками контрибьюторов. Т
Оглавление

Представь: ты только что получил доступ к Linux-системе. Шелл ограниченный, sudo нет, утащить свои бинари негде. Казалось бы, тупик. Но на сервере лежит обычный find. Или vim. Или даже безобидный less. И через тридцать секунд у тебя уже root — причём с помощью утилит, которые любой админ установил бы сам, не задумываясь.

Именно эту тёмную сторону повседневных Unix-команд каталогизирует GTFOBins — справочник, без которого сегодня не обходится ни один серьёзный пентест.

Что это вообще такое

Аббревиатура расшифровывается как Get The F*** Out Binaries — буквально «бинарники, помогающие выбраться». На сайте gtfobins.org собраны несколько сотен стандартных Unix-исполняемых файлов с описанием того, как легитимная функциональность каждого из них может быть использована не по назначению. Не уязвимости. Не баги. Именно фичи — ровно те, ради которых эти утилиты и пишут.

Проект был запущен в 2018 году исследователями Эмилио Пинной и Андреа Кардачи и с тех пор вырос в community-driven базу с десятками контрибьюторов. Технически сайт сделан как статический Jekyll-блог на GitHub Pages: каждая запись — это YAML-файл с примерами, рендерящийся в аккуратные карточки с тегами. Всё открыто, всё на гитхабе, любой желающий может прислать PR с новым трюком.

Почему обычная команда становится оружием

Главная идея, которую нужно ухватить: GTFOBins — это не про эксплойты, это про дизайн. Программы вроде awk, vi или find изначально проектировались как мощные универсальные инструменты. Они умеют запускать подпроцессы, читать произвольные файлы, писать куда угодно — потому что это часть их полезной функциональности.

Проблема возникает там, где такая утилита оказывается в неподходящем контексте:

🐚 Внутри restricted shell (rbash, lshell), где запретили выполнять что попало — но забыли про vi, в котором достаточно набрать :!sh

🔐 С установленным битом SUID, дающим запуск от имени владельца файла (часто root) — и тут любой бинарь, способный породить шелл, превращается в локальную привилегию-эскалацию

📁 С sudo NOPASSWD-правилом на конкретную утилиту — например, разрешили человеку sudo /usr/bin/less /var/log/syslog, и не учли, что внутри less можно нажать !sh и получить root-shell

🎩 С определёнными Linux возможностями (capabilities) — скажем, cap_setuid+ep на /usr/bin/python3 превращает интерпретатор в идеальную отмычку через os.setuid(0); os.system('/bin/sh')

Чуть-чуть конкретики

Чтобы стало совсем наглядно, вот несколько любимых классиков из каталога:

⚙️ find . -exec /bin/sh \; -quit — find умеет выполнять команды над найденными файлами, и его никто не обязывает ограничиваться чем-то полезным

⚙️ tar -cf /dev/null /dev/null --checkpoint=1 --checkpoint-action=exec=/bin/sh — да, обычный архиватор поддерживает скрипты на чекпоинтах. Сюрприз!

⚙️ awk 'BEGIN {system("/bin/sh")}' — awk это полноценный язык программирования с функцией system()

⚙️ В vim достаточно :set shell=/bin/sh и потом :shell — и ты уже в обычной интерактивной сессии

Каждая запись на сайте сопровождается тегами: Shell, File read/write, SUID, Sudo, Capabilities, Library load — чтобы сразу было понятно, в каком сценарии что применимо.

Living off the Land — головная боль блютимы

Концепция LOLBin (Living Off the Land Binaries) — это вообще целая философия современных атак. Идея простая: чем меньше посторонних бинарей ты тащишь на машину, тем меньше следов оставляешь. Никаких подозрительных payload'ов, никаких странных загрузок — только то, что и так есть в системе. Антивирус молчит, EDR в недоумении, файловый аудит чист.

Для защитников это серьёзный челлендж. Нельзя просто заблокировать tar или find — без них Linux перестаёт быть Linux. Поэтому детект строится не на сигнатурах, а на поведенческих признаках:

📡 Подозрительные родительские процессы — awk, внезапно породивший bash, это явная аномалия

📡 Цепочки execve, не вписывающиеся в нормальные паттерны воркфлоу приложения

📡 Запуск интерпретаторов из-под веб-сервера или из контекста, где интерактивность вообще не предполагается

📡 Регулярный аудит SUID-битов — find / -perm -4000 в кроне ловит большинство опасных мисконфигов одной командой; для большинства утилит из GTFOBins нет ни одного валидного сценария быть SUID-root

Лично я считаю, что GTFOBins нужно знать обеим сторонам — и нападающим, и защитникам — примерно одинаково хорошо. Это база. Без понимания этих техник любой red team отчёт превращается в чек-лист, а blue team харденинг — в ритуал по копипасту CIS Benchmark без понимания, зачем там та или иная рекомендация.

Соседи по экосистеме

Помимо самого GTFOBins в мире living-off-the-land есть ещё несколько проектов, которые стоит держать в закладках:

🌍 LOLBAS — то же самое, но для Windows. Там герои — certutil, mshta, regsvr32, bitsadmin и прочая радость, через которую заходят настоящие APT-группировки

🌍 GTFOArgs — сиблинг GTFOBins, фокусирующийся на абьюзах через специально подобранные аргументы командной строки (актуально, когда выполнение бинаря фиксированное, а аргументы контролирует атакующий)

🌍 WADComs — интерактивный чит-лист для типичных AD/Windows-сценариев

🌍 HackTricks — гигантская книга-вики Карлоса Поланко с этапами эскалации, где GTFOBins активно цитируется и встроен в общий пайплайн pwn'а

Куда это всё движется

Что лично меня цепляет — так это то, что GTFOBins не устаревает. Он не про конкретный CVE, который пофиксят в следующем апдейте и забудут. Он про фундаментальную природу Unix: мощные универсальные утилиты, доверие админа к стандартным компонентам системы, многослойность прав доступа. Пока существует POSIX, существует и эта проблема.

С другой стороны, индустрия не стоит на месте. eBPF-сенсоры вроде Falco и Tetragon ловят аномальные execve в реальном времени, mandatory access control (AppArmor, SELinux) при правильной настройке отрезает ножки большинству GTFO-трюков, а контейнерные рантаймы по умолчанию режут ненужные капабилити. Гонка щита и меча, как всегда — но именно благодаря каталогам вроде GTFOBins у защитников есть карта поля боя.

И небольшой совет тем, кто учится: подними виртуалку, накрути restricted shell или раскидай SUID-биты по паре утилит из списка — и попробуй сам выбраться. Пятнадцать минут такого упражнения дают больше понимания, чем час чтения теории.

Источники

🔗 Оригинальный проект: https://gtfobins.org/

🔗 Полная версия статьи: https://telegra.ph/GTFOBins-Kogda-obychnye-komandy-v-Linux-stanovyatsya-oruzhiem-Ili-instrumentom-zashchity-04-28

🔗 LOLBAS — Windows-аналог: https://lolbas-project.github.io/

🔗 GTFOArgs: https://gtfoargs.github.io/

🔗 HackTricks: https://book.hacktricks.xyz/