Открит е незадокументиран досега инструмент за Linux, компилиран директно в троянизирани балансьори на натоварването HAProxy в две южнокорейски организации. Там той е прехващал уеб трафик и е сервирал модифицирани страници на избрани посетители.
Атакуващите са нарекли импланта ted в дебъг низовете, оставени в двоичния файл. Това не е уязвимост в HAProxy, а за неговото инсталиране се изисква изпълнение на код на хоста и възможност за замяна на работещия двоичен файл.
От Rapid7 Labs приписват инструмента със средна степен на увереност на севернокорейски държавно спонсорирани киберпрестъпници, като двете жертви са в автомобилния и медийния сектор на Южна Корея.
Заявките за командване и контрол (C2) никога не стигат до сървъра на бeкенда и се изтриват от собствените броячи за връзки на HAProxy, така че нито логовете на бекенда, нито статистиката на балансьора на натоварването ги регистрират.
„Необходими са допълнителни доказателства, за да се направи по-окончателна оценка“, заявяват от Rapid7.
Заявка към един конкретен път за изображение поставя филтъра в C2 режим, съобщава Rapid7 в доклад. Имплантът намалява броячите на активните връзки на HAProxy, като по този начин премахва връзката от статистиката на балансьора. Той записва тялото на командата в именуван канал (named pipe) под /tmp. Нулирането на канала за заявки след това не оставя нищо за пренасочване и командата приключва при балансьора на натоварването.
Изходните данни се връщат през суровия сокет със стандартен заглавен хедър HTTP/1.0 200 OK, което кара обмена да изглежда като обикновен уеб трафик.
Чрез този канал атакуващият може да изпраща сигнали (beaconing), да качва и тегли файлове, да изпълнява shell команди и да заменя конфигурацията на импланта. Само заявки, преминали четири проверки, получават модифицирана страница.
Заявката трябва да съдържа User-Agent и да съвпада с правило, чиито URL и Referer модели съвпадат. Доставката след това зависи или от включване в бял списък на клиентския адрес (проверен точно и отново на ниво /24), или от ключ на оператора в хедъра Accept-Language, който изцяло заобикаля филтрирането на адреси.
Имплантът пренаписва съдържанието и дължината на изходящия трафик, форсира статуса на отговора на 200 и изтрива хедъра Accept-Ranges, за да не може клиентът да поиска байтови диапазони и да забележи промяната в размера.
От Rapid7 заявяват, че доказателствата им не са достатъчни за определяне на хронологията или начина, по който атакуващите са проникнали първоначално. Тяхната хипотеза е, че са влезли през публично достъпен Groupware портал.
Компонентът за първоначално зареждане (stager) се внедрява само където HAProxy или cron вече работят, и проверява за root права преди да съхрани каквото и да е. Той презаписва легитимния двоичен файл crond и му задава времево клеймо на създаване от /usr/bin/ssh. След това изтрива ключовите думи tmp, wget, cron и crond от bash историята на root и от шест системни лога, сред които auth.log и audit/audit.log.
Троянизиран sshd в същия набор от инструменти криптира прихванатите пароли в чист текст и ги записва на фиксиран път. Rapid7 открива същия код и в троянизирани двоични файлове на agetty, atd и polkitd. Придружаващ троянец за отдалечен достъп (RAT), наречен curlRAT, изпраща сигнали на всеки 12 часа по подразбиране и намалява интервала до 30 секунди, когато атакуващият зададе флаг.
Индикатори за компрометиране (IoCs):
- Домейн: img.monderhouse[.]space
- Домейн: img.darklights[.]store
- Домейн: img.responsive.pstatic[.]autos
- Домейн: img.socialteams[.]store
- Файл: ~/cache/haproxy-1000.cache
- Файл: /var/lib/sshd/c8c68e629bba773a10ac80012d10bf19
- SHA-256: 72e70936f0dbe459142a1d867617c35f8d0cce5d18c6a49e1090a2a5adc8e558
- SHA-256: 4bb923eb040aa13ca8fd409c31ee4729c60ddff32e350efe1c5a4a9168a065f5