Microsoft підписала шкідливий руткіт Netfilter

Те, що почалося як помилкове попередження для файлу, підписаного корпорацією Майкрософт, виявляється драйвером додаткової інформації про примусовий рівень програми WFP, який перенаправляє трафік на китайський IP. Як це сталося?

Минулого тижня наша система оповіщення повідомила нас про можливе помилкове спацювання, оскільки ми виявили драйвер [1] з іменем “Netfilter”, який підписав Microsoft. Починаючи з Windows Vista, будь-який код, який працює в режимі ядра, повинен бути протестований та підписаний перед публічним випуском, щоб забезпечити стабільність операційної системи. Драйвери без сертифіката Microsoft не можна встановлювати за замовчуванням.

У цьому випадку виявлення було справді позитивним, тому ми передали наші висновки корпорації Майкрософт, яка негайно додала підписи шкідливого програмного забезпечення до Windows Defender і зараз проводить внутрішнє розслідування. На момент написання статті досі невідомо, як драйвер міг пройти процес підписання.

Розшифровка рядка

Перше, на що я звернув увагу після відкриття подання рядків, це деякі рядки, які виглядали закодованими або зашифрованими. Хоча це не обов’язково ознака шкідливого файлу, дивно, що драйвер ховає частину своїх рядків.

Я декодував рядки, використовуючи наступний фрагмент Python.

def decryptNetfilterStr(encodedString): key = [9,0,7,6,8,3,1] i = 0 decodedString = “” for ch in encodedString: decodedString = decodedString + chr(ord(ch) ^ key[i%7]) i += 1 return decodedString

 

Зашифровані рядки
Розшифровані рядки

Подібні зразки

Шукаючи цю URL-адресу, а також шлях PDB та подібні зразки у Virustotal, ми виявили старі зразки, а також крапельницю [2] драйвера netfilter. Найдавніші зразки [3] підписів датуються березнем 2021 року. Нижче перераховані вірусні запити щодо пошуку подібних зразків за URL-адресою та шляхом PDB.

content:{5c68656c6c6f5c52656c656173655c6e657466696c7465726472762e706462} content:{687474703a2f2f3131302e34322e342e3138303a323038302f75}

Крім того, наступне правило Yara знайде зразки шляхом ретрополювання.

rule NetfilterRootkit : Rootkit x64 { meta: author = “Karsten Hahn @ GDATA CyberDefense” description = “Netfilter kernel-mode rootkit” sha256 = “115034373fc0ec8f75fb075b7a7011b603259ecc0aca271445e559b5404a1406” sha256 = “63D61549030FCF46FF1DC138122580B4364F0FE99E6B068BC6A3D6903656AFF0” strings: $s_1 = “\\??\\netfilter\x00” wide $s_2 = “IPv4 filter for redirect\x00” wide $s_3 = “\\Registry\\Machine\\SOFTWARE\\Microsoft\\SystemCertificates\\ROOT\\Certificates\\\x00” $s_4 = “Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\x0D” $url = “http://110.42.4.180:2080/u\x00” $pdb_1 = “C:\\Users\\omen\\source\\repos\\netfilterdrv\\x64\\Release\\netfilterdrv.pdb\x00” //RSDS [20] G:\<symbol>\hello\x64\Release\netfilterdrv.pdb $pdb_2 = {52 53 44 53 [20] 47 3A 5C E6 BA 90 E7 A0 81 5C 68 65 6C 6C 6F 5C 78 36 34 5C 52 65 6C 65 61 73 65 5C 6E 65 74 66 69 6C 74 65 72 64 72 76 2E 70 64 62} condition: any of ($pdb_*, $url) or all of ($s_*) }

Крапельниця та установка

Піпетка поміщає драйвер у % APPDATA% \ netfilter.sys . Потім він створює файл % TEMP% \ c.xalm із таким вмістом і видає команду regini.exe x.calm для реєстрації драйвера.

Сервер управління

URL-адреса  hxxp: //110.42.4.180: 2081 / u у списку декодованих рядків є сервером руткіта. Драйвер Netfilter [1] підключається до нього для отримання інформації про конфігурацію.

Після підключення до жорстко закодованої URL-адреси hxxp: //110.42.4.180: 2081 / u сервер відповідає наступним рядком.

Кожна URL-адреса має певне призначення.

URL Призначення
hxxp: //110.42.4.180: 2081 / с Налаштування проксі
hxxp: //110.42.4.180: 2081 / с IP-адреси перенаправлення
hxxp: //110.42.4.180: 2081 / h? Пінг з ідентифікатором процесора
hxxp: //110.42.4.180: 2081 / c Кореневий сертифікат
hxxp: //110.42.4.180: 2081 / v? Самостійне оновлення

 

IP-перенаправлення

Основною функціональністю шкідливого програмного забезпечення є його перенаправлення. Список цільових IP-адрес переспрямовано на 45 (.) 248.10.244: 3000 . Ці IP-адреси, а також ціль переспрямування отримуються з hxxp: //110.42.4.180: 2081 / s .

Дослідник @jaydinbas змінив конфігурацію перенаправлення в цьому твіті та надав останню декодовану конфігурацію в pastebin . Загальним форматом, який спостерігається  @cci_forensics та  @jaydinbas, є [<перенаправлення_цілі> – <номер_порту>] {<ip_to_redirect1> | <ip_to_redirect2> | …}

Кодована конфігурація перенаправлення

Механізм оновлення

Зразок має процедуру самооновлення, яка надсилає власний хеш MD5 на сервер через hxxp: //110.42.4.180: 2081 / v? V = 6 & m = <md5> . Запит може виглядати так: hxxp: //110.42.4.180: 2081 / v? V = 6 & m = 921fa8a5442e9bf3fe727e770cded4ab . Потім сервер відповідає URL-адресою останнього зразка, наприклад, hxxp: //110.42.4.180: 2081 / d6 або OK, якщо зразок оновлений . Шкідливе програмне забезпечення відповідно замінює власний файл.

Код, який перевіряє, чи драйвер оновлений, і замінює його новітньою версією.

Кореневий сертифікат

Руткіт отримує кореневий сертифікат через hxxp: //110.42.4.180: 2081/c і записує його в \ Registry \ Machine \ SOFTWARE \ Microsoft \ SystemCertificates \ ROOT \ Certificates \ . Дані, що повертаються із сервера, мають формат [<ім’я сертифіката>]: {<сертифікат даних blob>}

Проксі

У hxxp: //110.42.4.180: 2081/p шкідливе програмне забезпечення вимагає проксі-сервер, який він встановлює як AutoConfigURL у ключі реєстру \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings . Повернене значення на момент написання – hxxp://ptaohuawu.bagua.com.hgdjkgh.com: 2508/baidu.txt

Кореневі дані сертифіката, які вони надсилаються сервером

Зразки хешів

Опис SHA256
[1] Драйвер Netfilter 63d61549030fcf46ff1dc138122580b4364f0fe99e6b068bc6a3d6903656aff0
[2] Крапельниця Netfilter d64f906376f21677d0585e93dae8b36248f94be7091b01fd1d4381916a326afe
[3] Драйвер Netfilter, старіша версія підписана в березні 115034373fc0ec8f75fb075b7a7011b603259ecc0aca271445e559b5404a1406

 

Більше хеш- файлів, пов’язаних з руткітом Netfilter, знаходиться в цій таблиці, створеній Флоріаном Ротом .

Блог GDATA