LINUX.ORG.RU

15 лет без кулхацкеров: наконец-то кто-то засунул троян. Но как?

 , ,


1

2

Имею старенький сайто с 9-м Debian Linux и nginx + php-fpm. Сайт самописный, не имеет всяких wordpress-сов или jooml-ов. Фреймверк - Codeigniter-2. Из стороннего - имеется форум punBB 1.4.6 с самодельной капчей.

Обнаружил случайно, что 27 октября 2022 в /tmp каталоге сайта каким-то образом оказался интересный файл с именем phphaATEM. Пользователь и группа у него www-data.

Вот что про него сказал trendmicro посредством virustotal:

https://www.trendmicro.com/vinfo/us/threat-encyclopedia/malware/Backdoor.PHP....

Свеженькая хреновина, от October 18, 2022.

Посмотрел access-лог по времени создания файла, там ничего сверхестественного не увидел, сплошные GET-запросы, один POST-запрос какого-то робота:

https://pastebin.com/raw/8Cuh755E

Я расковырял всякие обфускации, достал PHP-шный код. Оказалось что это кулхацкерская консоль управления файлами через WEB. Никаких ссылок в коде не обнаружил, деструктивного кода тоже. Вот собственно сам код:

https://hastebin.com/qujigumadu.php

Я его даже скопировал в каталог web-сервера и зашел на эту страницу. Открылась web-консоль. Ну консоль как консоль: управление файлами, запуск шелл-команд, информация о хосте, прочие дополнительные инструменты.

Собственно, вопрос: как понять, каким макаром эта штука оказалась на хосте? Что нужно донастроить, чтоб убрать дырку? Обновиться до Debian 11 не могу, потому что в нем уже PHP5 нет, а код весьма старый.

Вопрос второй - а можно ли узнать, смогли ли этой консолью воспользоваться? Я посмотрел логи - нигде доступа к /tmp или phpha* нет. Файлы самого сайта вроде как нетронутые.

★★★★★

вот 2 дыры сам перечислил: Codeigniter-2. Из стороннего - имеется форум punBB

про самопись вообще молчу))

Anoxemian ★★★★★
()
Ответ на: комментарий от Xintrea

Не-не, даже более того, самопись почти всегда равна дырописи. Особенно, дыропись выходит на дырявых фреймворках, само-собой, напрягаться не надо.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Ну ладно сказки рассказывать. Если бы было так, я бы тут каждый месяц вопросы задавал почему меня взломали.

А вообще я раньше даже так развлекался:

https://webhamster.ru/site/page/index/articles/projectcode/65

И ничего, полет нормальный.

Xintrea ★★★★★
() автор топика

Братиш, может я чо не понимаю, но ты не пробовал внеэкранной жизнью заняться? Влюбиться, или просто погулять по улицам по хорошей погоде?

massimus ★★★
()
Ответ на: комментарий от Anoxemian

Да я давно не крутил сайты, может есть какие-то простые методы чтобы однозначно понять откуда засунули левый код. Я посмотрел логи и честно говоря не нашел как его запихнули. И само использование тоже не увидел.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Ну варианта 2: либо запихнули без последствий (www-data), либо очень хорошо запихнули и ты не видишь последствий… что является ожидаемым результатом хорошего, глубокого запихивания.

Anoxemian ★★★★★
()
Последнее исправление: Anoxemian (всего исправлений: 1)
Ответ на: комментарий от Anoxemian

Я вообще склоняюсь к тому, что запихнули через MainLink или LinkPad. Или через SAPE. Это наверно наиболее уязвимые места, ибо скрипты их на хосте приходится держать. Хотя тогда могли засунуть не в /tmp, а вообще куда угодно.

Xintrea ★★★★★
() автор топика

Обновиться до Debian 11 не могу, потому что в нем уже PHP5 нет, а код весьма старый.

Смотри, php5 давно уже помер, даже 6 помер. Ты живешь с говном мамонта, в котором не фиксят дыры. Вполне логично предположить, что в китайских наборах скриптов есть перебор большинства дыр устаревшего софта.

Короче, сноси хост, ставь свежии версии ос и всего софта. Или хз, ну переведи всю систему в ридонли, сделай ко всему цифровые подписи и ребутай каждую ночь.

ya-betmen ★★★★★
()

Проходи по всему установленному софту, проверяй CVE, актуальные на ту версию, которая у тебя стоит, оценивай вероятность их эксплуатации. Вряд ли за тебя эту работу кто-то сделает. Если это богом забытый сайт, значит эксплуатация была ботом, на самописный софт я бы не грешил.

В целом нормальный подход - снести всё это безобразие, пофиксить твой сайт, чтобы он работал на современном PHP и ставить всё с нуля.

vbr ★★★★
()

Если он у тебя в /tmp, то с большой вероятностью кто-то прислал файл в теле POST-запроса в надежде, что скрипт его обработает (а судя по логам, искали уязвимую версию плагина ioptimize). А в старых версиях PHP (точно знаю, что такое наблюдалось в 5.3), временные файлы не всегда удалялись.

смогли ли этой консолью воспользоваться

Смотреть логи. Но вообще если у тебя /tmp находится внутри document root, то ты что-то делаешь очень неправильно.

sjinks ★★★
()

Ты же вроде некроман. Поставь какой-нибудь minix 2.1 себе и гоняй там что хочешь. Кулхацкиры в шоку прибудут от такой наглости когда их эксплойты вылетят по binary format not recognised.

untitl3d
()
Ответ на: комментарий от sjinks

Смотреть логи. Но вообще если у тебя /tmp находится внутри document root

Нет, /tmp обычный, а у nginx-хоста document root настроен на /var/www/имя_сайта, вестимо.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от vbr

В целом нормальный подход - снести всё это безобразие, пофиксить твой сайт, чтобы он работал на современном PHP и ставить всё с нуля.

Этим я на пенсии займусь, лет через 20 поговорим :)

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от ox55ff

Да не, не потянет. Там надо много предварительных пассов и телодвижений, чтобы начать. С нахрапа болт.

Roy-Batty
()
Ответ на: комментарий от ox55ff

Всё снести и переписать на asp.net.

Зочем так жостко?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

ну тогда вообще не заморачивайся. А при переписывании ты сам найдёшь дырень.

Если всё же надо заморочиться - обнови framework и либу. Не до актуала, но хоть на поледнюю версию под ЯП.

Roy-Batty
()
Ответ на: комментарий от Roy-Batty

Если всё же надо заморочиться - обнови framework и либу. Не до актуала, но хоть на поледнюю версию под ЯП.

Это уже сделано. Коденгине максимальной версии в линейке. Похапе максимальное в 5-й версии.

Xintrea ★★★★★
() автор топика

/tmp каталоге сайта каким-то образом оказался интересный файл с именем phphaATEM

upload_tmp_dir = /tmp ?

Ты уверен что этот файл куда-то дальше tmp-а попал? Выглядит как временный файл из POST-запроса, который почему-то не удалился при завершении работы скрипта.

Посмотрел access-лог по времени создания файла, там ничего сверхестественного не увидел, сплошные GET-запросы, один POST-запрос какого-то робота:

Дату то сравни поточнее - файла и у запросов. А POST-запрос - не от обычного робота, а как минимум от сомнительного. Скорее всего пытавшегося тебя взломать. Но если это просто временный файл - ничего страшного. Вообще, можешь на тот же урл послать самодельной формой ещё какой-нить файл и посмотреть как он появится в /tmp с похожим именем.

Я его даже скопировал в каталог web-сервера и зашел на эту страницу

А это уже немного опасно было. Вдруг это хитрый план: подсунуть тебе в tmp дважды обфусцированный троян, чтобы ты из любопытства таки запустил его.

Обновиться до Debian 11 не могу, потому что в нем уже PHP5 нет, а код весьма старый.

Вообще-то никто не мешает собрать самостоятельно. Хотя смысла в этом обновлении не сильно много.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 3)
Ответ на: комментарий от sjinks

А в старых версиях PHP (точно знаю, что такое наблюдалось в 5.3), временные файлы не всегда удалялись.

Они и в 7.4 не всегда удаляются. Да и в 8.х, думаю, тоже.

firkax ★★★★★
()

Что нужно донастроить, чтоб убрать дырку?

Накатить debian 11 максимально огороженный, внутри него развернуть chroot/иной контейнер с debian 9 запустить всё в нём с работой сети только в локалке на локальном порту, а на хосте debian 11 проксировать локалку и порт на 443 тий уже.

Это исключит вероятную дыру в debian 9, но правда не исключит дыру в самописных сприптах или их зависимостях.

Можно сделать нашлёпку, всё как выше, но написать микросервис (прости хоспади) прямолинейный и тупой, цель которого одна принимать данные с твоих скриптов и отдавать данные им от nginx прокси.

Ну и вырубить все порты кроме веба и ссх по входу по ключу и всё. Может там у тебя шибко много всякой хероты висит?

Меня тож ломали (есть тред на форуме). Только вот как, я так и не понял.

Текущую систему один хрен сносить в любом случае. Всё, ей кабзда.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от Xintrea

Сделай тему с понями розовую для их админки, пусть заходят в неё и там будут вместо фоновой картинки лошадки или хомячки =)

LINUX-ORG-RU ★★★★★
()

в /tmp каталоге сайта каким-то образом оказался интересный файл с именем phphaATEM

Выглядит как временный файл в upload_tmp_dir от незавершенного до конца аплода. Обрати внимание что твой POST закончился кодом 499, т.е. клиент прервал выполнение со своей стороны. Кажется, согласуется. Т.е., видимо, это тот самый запрос которым был загружен файл.

slowpony ★★★★★
()

Обновиться до Debian 11 не могу, потому что в нем уже PHP5 нет, а код весьма старый.

Что мешает пересобрать PHP 5 из исходников?

X512 ★★★★★
()

Обновиться до Debian 11 не могу, потому что в нем уже PHP5 нет, а код весьма старый.

А возможность собрать его туда руками оставили?

pihter ★★★★★
()

Обновиться до Debian 11 не могу, потому что в нем уже PHP5 нет, а код весьма старый.

Я б предложил так: всю статику превратить в буквально статику, голый html и просто файлы для скачивания пользователями, если таковые есть. Весь интерактив сдать в ути^Wархив и начать неспешно перепиливать на поддерживаемую версию, желательно посвежее чтобы на подольше хватило. Какие-нибудь чатофорумы, если такие есть, сдать на аутсорс дяде Васе (всякие форумные сервисы), пока не будет готово свое. Это программа-максимум.

Программа минимум, которая будет у тебя постоянно пить кровь и на самом деле потратит больше твоего времени и сил, но проще в исполнении - включить логирование содержимого POST-запросов, почаще бекапы, срок хранения бекапов подольше (от взлома до момента когда ты поймешь что тебя похачили может пройти много времени). Тут может сильно помочь какая-нибудь модная фс с снапшотами и дедупликацией. Помимо бекапов - снапшоты метаданных фс (имена, пермы, размер, хеш) - еще чаще, чтобы потом, сравнив что изменилось, ты мог сказать куда и что тебе дополнительно посадили.

Вот вам, так сказать, два стула.

slowpony ★★★★★
()
Ответ на: комментарий от firkax

upload_tmp_dir = /tmp ?
Ты уверен что этот файл куда-то дальше tmp-а попал? Выглядит как временный файл из POST-запроса, который почему-то не удалился при завершении работы скрипта.

Да, похоже на то. Тем более что у меня аптайм может быть месяцами, и он там может долго лежать.

Xintrea ★★★★★
() автор топика

На виртуалку поставь это всё и забей

serg002 ★★★
()
Ответ на: комментарий от Anoxemian

Не, в самопись никто не будет целенаправленно тыкать. Вероятность есть, но она крайне мала. Вот, что у него punBB - да.

crutch_master ★★★★★
()
Ответ на: комментарий от alex1101

Потому что пхп5 не поддерживают, следовательно он - дырявое говно. А что ты хотел? Чтобы поддерживали? За чей счёт?

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)

Но как?

9-м Debian Linux

Codeigniter-2

punBB 1.4.6

php5

Ничего не смущает, да. Всё нормально.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.