
Недавно коллеги из Censys выкатили разбор семейства AsyncRAT, описав целое генеалогическое древо: AsyncRAT → DCRAT (DarkCrystal RAT) → VenomRAT → еще десятки форков вплоть до LMTeamRAT, Alfa Red Fox, EchoRAT, Gh0stRAT (не путать с оригинальным Gh0st RAT 2008 года) и т. д. Всего насчитали около 40 именованных вариантов, 13 из них — с живой C2-инфраструктурой на момент исследования.
Ключевая мысль их исследования: форки почти никогда не переписывают TLS-сертификат сервера, доставшийся от родителя. DCRAT принес в семью структуру O=<Name> By <author> , L=SH , C=CN , и это наследуется вплоть до самых мелких потомков — даже если сам билд больше никак не забрендирован. Именно этот паттерн Censys называет самым надежным сигналом для всей линейки, независимо от конкретного варианта.
У нас, отдела сетевой экспертизы антивирусной лаборатории, уже был опыт детектирования VenomRAT по его дефолтовому сертификату, и мы даже отдали в сообщество сигнатуру для Suricata в рамках проекта PT Rules .
Именно поэтому нас это исследование, само собой, зацепило — и мы решили прогнать похожую логику не по интернет-скану, а по трафику из собственных песочниц: а вдруг мы что-то упустили?
Взяли любимый NTA и сделали в нем следующий запрос (аналогичный хант можно сделать где угодно, хоть в базе данных):
(исключения нужны, потому что corporated , corporation или integrator тоже с радостью матчатся на RAT — привет, ложные срабатывания)
Результат — реально интересный: помимо вышеупомянутого VenomRAT куча других C2-серверов буквально сами себя подписывают.
Вот например прародитель AsyncRAT не стесняется подписываться как AsyncRAT Server :
PureRAT притворяется PureRAT Agent :
LiberiumRAT подписал сам себе сертификат под именем Liberium RAT Authority :
Еще ряд менее известных семплов — все радостно светят своим назначением прямо в сертификате.
Как детектить в Suricata?
Аналогично нашему правилу на VenomRAT можно зацепиться за байты |3082| — встречаются в начале сертификата, далее |550403| — это закодированный ASN.1 Object ID 2.5.4.3 (id-at-commonName) , и в завершение — искомая строка, например:
А как хантить, на что смотреть
Issuer/Subject вида CN=.*RAT.* — как видно выше, срабатывает идеально.
Issuer/Subject вида CN=.*RAT.* — как видно выше, срабатывает идеально.
Комбинация L=SH , C=CN + O=* By * на нестандартном порту.
Комбинация L=SH , C=CN + O=* By * на нестандартном порту.
Самоподписанные сертификаты в целом — malware-C2, в отличие от фишинговых сайтов, не боится браузерных ошибок, поэтому самоподпись используется массово.
Самоподписанные сертификаты в целом — malware-C2, в отличие от фишинговых сайтов, не боится браузерных ошибок, поэтому самоподпись используется массово.
Признаки дефолтной генерации — пустые O/L/ST , CN продублирован в SAN или Issuer — CN= example.com , O=Acme .Из истории вопроса — похожий трюк еще в 2023 году проворачивали с Quasar RAT: там дефолтный сертификат CN=Quasar Server CA через Shodan/Censys вывел исследователей сразу на 60+ живых серверов. Nuff said.
Признаки дефолтной генерации — пустые O/L/ST , CN продублирован в SAN или Issuer — CN= example.com , O=Acme .Из истории вопроса — похожий трюк еще в 2023 году проворачивали с Quasar RAT: там дефолтный сертификат CN=Quasar Server CA через Shodan/Censys вывел исследователей сразу на 60+ живых серверов. Nuff said.
Мораль : TLS-сертификат, при наличии, конечно, — это метаданные, которые остаются в открытом виде, даже когда весь остальной трафик зашифрован. Авторы билдеров RAT'ов почему-то регулярно об этом забывают 🙂
Мораль : TLS-сертификат, при наличии, конечно, — это метаданные, которые остаются в открытом виде, даже когда весь остальной трафик зашифрован. Авторы билдеров RAT'ов почему-то регулярно об этом забывают 🙂
Happy hunting!
( Источник: https://t.me/ptescalator )