Как стать автором
Обновить

Комментарии 11

> Код выше использует memfd, создает дочерний процесс, направляет его вывод на stdout, ожидает завершения дочернего процесса и, наконец, считывает вывод дочернего процесса.

Скорее «создает дочерний процесс, направляет его вывод во временный файл, ожидает завершения дочернего процесса и считывает его вывод из временного файла».
Спасибо, поправили!
Ну и было бы полезно раскрыть тему патчинга ELFа. Приведенный код потянет для продакшена или со скрипом в phrack но для образовательных целей он, конечно, мало что говорит. Раскрыть Linker and loaders так сказать. Уж коли вы затронули эту любопытную тему.
Извините, по диагонали читал. Допустим, работает мой php под пользователем www-data. Допустим, он вполне способен форкнуть процесс (с дефолтными настройками это действительно так). Допустим, у нас есть шелл под www-data (дочерний процесс ведь будет создан с теми же правами, правильно)? Что сильно плохого эта конструкция будет делать — подбирать пароли по радужным таблицам?
жрать ресурсы сервера на какой-нибудь майнинг, например.
Больше вопросов к строчке:
Допустим, мы имеем точку входа в виде command injection.

А вот где мы её взяли это вопрос гораздо более интересный, чем что с ней потом делать.
А так получается опять 'установите пакет virus.deb'?
установите пакет virus.deb

google://rce linux, полагаю.

Очевидно, что в *nix можно запускать исполняемые файлы откуда угодно (хоть из RAM, хоть с сокета напрямую), эксплойта в этом нет. Если злоумышленник может выполнять произвольный код на машине, у нас всё равно проблемы, даже если закрыть (неочевидно, как) эту возможность — майнить можно и на языке, к которому получен доступ. Короче говоря, лучше предотвращать всеми возможными способами возможность RCE, а не заморачиваться с бездисковым исполнением ELF.
Так это не эксплойт, а один из вариантов его эксплуатации. Причем очень хороший: никакая проверялка целостности файлов его не обнаружит.
Справедливости ради, запуск из memfd не имеет ничего общего с тем, что называют fileless malware в windows.
Вот только не надо притаскивать стоны по поводу «пренебрегают антивирусами». Не «пренебрегают», а считают вредоносным ПО с непредсказуемым поведением но гарантированным пенальти по производительности.

Я серьёзно хочу представить себе антивирус на среднем хосте, использующимся как LAMP. Вот работает себе haproxy, прям надрывается, старается linespeed сделать. Тут приходит товарищ с сигнатурами и начинает 20Гбит http вместе с бинарником сканировать. Просто офигенная картинка.

Старт postgres для базы в 200-300Гб тоже представляется удвительно увлекательным зрелищем в контексте наличия антивируса.

… А главное, современный подход к приложениям в linux подразумевает sandbox'инг всего ПО, которое касается входных (непроверенных) данных. И вот берём мы антивирус (который всего этого, мягко говоря, касается) и помещаем его в user/file namespace, без capabilities, с приватным root'ом, приватным network namespace, запускаем из под временного nobody, и сидит наш антивирус, и смотрит на пустоту…
спасибо.
пробую прятать процессы, но пока ен завершились, они всё равно же видны в /proc/self/fd/ = а какие варианты ещё и их спрятать?
Зарегистрируйтесь на Хабре , чтобы оставить комментарий