Те, що почалося як помилкове попередження для файлу, підписаного корпорацією Майкрософт, виявляється драйвером додаткової інформації про примусовий рівень програми 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, знаходиться в цій таблиці, створеній Флоріаном Ротом .