Новая информация о VPNFilter: проведение атаки на пользовательские устройства, расширен список сетевого оборудования
Введение Аналитическое подразделение Cisco Talos, совместно с технологическими партнерами, выявило дополнительные подробности, связанные с вредоносным ПО «VPNFilter». С момента первой публикации по данной тематике мы обнаружили, что вредоносное ПО VPNFilter нацелено на большее количество моделей устройств и расширили список компаний, продукция которых может быть инфицирована. Кроме того, мы установили, что вредоносное ПО обладает дополнительными функциями, включая возможность реализации атак на пользовательские оконечные устройства. В недавней публикации в блоге Talos рассматривалась крупномасштабная кампания по распространению VPNFilter на сетевые устройства для дома или малого офиса, а также на ряд сетевых систем хранения данных. В той же публикации упоминалось, что исследование угрозы продолжается. После выпуска первой публикации несколько отраслевых партнеров предоставили нам дополнительные сведения, которые помогли нам продвинуться в расследовании. В рамках данной публикации мы представляем результаты этого расследования, полученные в течение последней недели. Во-первых, мы установили, что список производителей оборудования, продукция которых является целью вредоносной кампании, необходимо дополнить новыми участниками. Это оборудование компаний ASUS, D-Link, Huawei, Ubiquiti, UPVEL и ZTE. Также были выявлены дополнительные модели устройств, выпущенных Linksys, MikroTik, Netgear и TP-Link, подверженных данной атаке. В настоящее момент времени наше расследование не выявило фактов уязвимости сетевых устройств, выпущенных Cisco. Обновленный список устройств приведен ниже.
Кроме того, мы обнаружили новый вредоносный модуль, функционирующий на этапе 3, который обеспечивает добавление вредоносного контента в веб-трафик при передаче такого трафика через инфицированное устройство. На момент первой публикации мы не располагали всей информацией о модулях, функционирующих на этапе 3. Новый модуль позволяет инициаторам вредоносной кампании реализовывать эксплойты, направленные на оконечные устройства пользователей, с применением подхода «атакующий-посередине» (т.е. выполнять перехват сетевого трафика и инъекцию вредоносного кода в трафик без ведома пользователя). Благодаря новым результатам расследования, мы можем подтвердить, что возможности угрозы выходят за рамки сетевого устройства, и угроза может распространяться дальше в сеть, в которую входит скомпрометированное сетевое устройство. Технические сведения об этом модуле, который называется «ssler», представлены ниже.
Кроме того, мы обнаружили дополнительный модуль, функционирующий на этапе 3, который предоставляет любому модулю, функционирующему на этапе 2 и не поддерживающему «kill», возможность вывести устройство из строя. При запуске этот модуль удаляет все следы присутствия вредоносного VPNFilter на устройстве и переводит устройство в неработоспособное состояние. Результаты анализа этого модуля, который называется «dstr», также представлены ниже.
Наконец, мы продолжили исследование пакетного сниффера, функционирующего на этапе 3, включая подробный анализ методов обнаружения трафика Modbus.
Технические сведения Новые модули, функционирующие на этапе 3 'ssler' (модуль взлома оконечных устройств — инъекция JavaScript)
Модуль ssler (мы произносим это название «Esler») предоставляет возможности кражи данных и инъекции кода JavaScript путем перехвата всего трафика, предназначенного для порта 80 и передаваемого через устройство. Этот модуль поддерживает список параметров, которые определяют поведение модуля и те веб-сайты, для трафика к которым перехват будет осуществляться. Первый параметр определяет каталог на устройстве, в которой будут храниться украденные данные. Назначение других параметров описано ниже:
dst: — используется в созданных правилах iptables для указания IP-адреса или CIDR-диапазона адресов получателя, к которому должно применяться правило.
src: — используется в созданных правилах iptables для указания IP-адреса или CIDR-диапазона адресов отправителя, к которому должно применяться правило.
dump: — все HTTP-заголовки запросов к любому домену, указанному в параметре dump, будут сохранены в файле reps_*.bin file.
site: — если домен указан как значение параметра site, его веб-страницы будут целью инъекции JavaScript.
hook: — этот параметр определяет URL-адрес файла JavaScript для инъекции.
Первое действие, выполняемое модулем ssler, — настройка iptables устройства для перенаправления всего трафика, адресованного на порт 80, на локальный сервис, который функционирует на порту 8888. Он запускается с помощью команды insmod для вставки в ядро трех модулей iptables (ip_tables.ko, iptable_filter.ko, iptable_nat.ko) и затем выполняет следующие команды shell:
Примечание. Чтобы убедиться, что эти правила не будут удалены, ssler удаляет их и сразу добавляет обратно примерно каждые четыре минуты.
Любые исходящие веб-запросы на порт 80 будут перехвачены модулем ssler, они могут быть проанализированы и модифицированы перед передачей легитимному сервису HTTP. Для всех HTTP-запросов выполняется перевод с https на http. Перед отправкой запросов легитимным HTTP-серверам в них вносятся следующие изменения:
Все вхождения строки «https://» заменяются на «http://», чтобы преобразовать запросы защищенных HTTP-ресурсов на запросы к незащищенным, чтобы обеспечить возможность получения конфиденциальных данных, например, учетных данных.
Если в запросе содержится заголовок Connection: keep-alive, он заменяется на Connection: close
Если в запросе содержится заголовок Accept-Encoding со значением gzip, он заменяется на Accept-Encoding: plaintext/none, чтобы предотвратить сжатие ответов с использованием gzip (есть исключения для определенных типов файлов, например, графических файлов).
Если хост указан в качестве значения параметра dump:, подробные сведения о запросе сохраняются на диск для последующего сбора злоумышленником, включая URL, порт и все заголовки запроса. Если хост не указан в качестве значения параметра dump:, то будут сохраняться только запросы с заголовком Authorization или URL-адреса, содержащие учетные данные. URL-адреса, содержащие учетные данные, определяются по следующим критериям — они должны содержать строку «assword=» или «ass=» и одну из следующих строк:
sername=
ser=
ame=
ogin=
ail=
hone=
session%5Busername
session%5Bpassword
session[password
Все POST-запросы к accounts.google.com, содержащие строку «signin», также будут сохранены для последующего сбора.
После всех вышеперечисленных модификаций модуль ssler инициирует подключение к легитимному HTTP-серверу и отправляет модифицированный запрос на порт 80. Затем модуль ssler получает ответ от HTTP-сервера и вносит в ответ следующие изменения до передачи ответа жертве:
Ответ с https:// в заголовке Location преобразуется в http://
Следующие поля игнорируются, т.е. не пересылаются клиенту:
Alt-Scv
Vary
Content-MD5
content-security-policy
X-FB-Debug
public-key-pins-report-only
Access-Control-Allow-Origin
Для всего ответа выполняется преобразование из https с http — все вхождения https:// заменяются на x20http://.
Если домен (или часть имени домена, например «google») указан в качестве значения параметра site:, выполняется попытка инъекции JavaScript во все ответы Content-Type: text/html или Content-Type: text/javascript. Требованием является наличие строки и ее достаточная длина, чтобы значение параметра hook: поместилось в нее. Тег будет заменен на
Все домены, для запросов к которым выполняется замена https на http (т.е. домены содержатся в ссылках), добавляются в список sslstripped-доменов. Последующие запросы, перехваченные модулем ssler к доменам, входящим в этот список, будут выполняться по HTTPS (порт 443), а не по HTTP (порт 80). По умолчанию в списке содержатся четыре домена, поэтому модуль ssler будет всегда подключаться к этим доменам по HTTPS (порт 443): www.google.com, twitter.com, www.facebook.com, or www.youtube.com.
'dstr' (модуль вывода устройства из строя)
Модули dstr используются для вывода инфицированного устройства из строя путем удаления файлов, необходимых для нормальной работы. Этот модуль удаляет все файлы и каталоги, связанные с работой вредоносного ПО, до удаления остальных файлов в системе, возможно, это должно предотвратить обнаружение вредоносного ПО при расследовании инцидента.
Мы выполнили подробный анализ модуля dstr_i586. Этот модуль сначала удалял себя с диска, а затем завершал выполнение родительского процесса, функционирующего на этапе 2. Затем он выполняет поиск всех запущенных процессов с именами vpnfilter, security и tor и завершает их работу. Затем он явно удаляет следующие файлы и каталоги:
/var/tmp/client_ca.crt
/var/tmp/client.key
/var/tmp/client.crt
/var/run/vpnfilterm/htpx
/var/run/vpnfilter
/var/run/vpn.tmp
/var/run/vpn.pid
/var/run/torrc
/var/run/tord/hidden_ssh/private_key
/var/run/tord/hidden_ssh/hostname
/var/run/tor
/var/run/msvf.pid
/var/run/client_ca.crt
/var/run/client.key
/var/run/client.crt
/var/pckg/mikrotik.o
/var/pckg/.mikrotik.
/var/msvf.pid
/var/client_ca.crt
/var/client.key
/var/client.crt
/tmp/client_ca.crt
/tmp/client.key
/tmp/client.crt
/flash/nova/etc/loader/init.x3
/flash/nova/etc/init/security
/flash/nova/etc/devel-login
/flash/mikrotik.o
/flash/.mikrotik.
/var/run/vpnfilterw/
/var/run/vpnfilterm/
/var/run/tord/hidden_ssh/
/var/run/tord/
/flash/nova/etc/loader/
/flash/nova/etc/init/
Модуль dstr выполняет очистку флэш-памяти устройства путем перезаписи байтов всех доступных устройств /dev/mtdX значением 0xFF. Затем выполняется shell-команда rm -rf /*, призванная удалить все содержимое файловой системы, и устройство перезагружается. В этот момент времени на устройстве нет никаких файлов, необходимых для работы, и устройство не сможет загрузиться.
Дополнительное исследование пакетного сниффера, функционирующего на этапе 3
'ps' (пакетный сниффер, функционирующий на этапе 3)
Одним из образцов пакетного сниффера, функционирующего на этапе 3, которым мы располагаем, является образец R600VPN (архитектура Lexra, напоминает MIPS). Этот образец представляет собой пакетный сниффер, который выполняет поиск параметров для реализации базовой аутентификации и мониторинг трафика ICS traffic, разработанный для TP-LINK R600-VPN. Вредоносное ПО использует механизм «raw socket» для обнаружения подключений к заранее заданному IP-адресу, при этом он учитывает только TCP-пакеты длиной не менее 150 байт (примечание: указана полная длина пакета с учетом всех заголовков. В зависимости от размера TCP-заголовка, может выполняться журналирование PDU длиной от 56 до 96 байт). Этот сниффер обеспечивает доступ к сетевому трафику только для чтения, но не для модификации. Для реализации функций, обеспечивающих модификацию трафика, потребуется существенная модификация трафика.
В пакетах, которые передаются на порт, отличный от 502, выполняется поиск параметров базовой аутентификации, при обнаружении таких параметров они журналируются.
Else: (трафик, отличный от Modbus): сбор учетных данных, используемых для базовой аутентификации HTTP
IP-адрес получателя == аргумент командной строки
Порт отправителя > 1024
Порт отправителя != 8080
Порт отправителя != 8088
Длина пакета данных > 20 байт
В пакете не содержится ни одна из следующих строк
<?xml Basic Og== /tmUnblock.cgi Password Required <div <form <input this. and .get { } 200 OK <span <SPAN <DIV
В пакете содержится 'Authorization: Basic' ИЛИ одно сочетание имя пользователя/пароль
Имя пользователя
User=
user=
Name=
name=
Usr=
usr=
Login=
login=
Пароль
Pass=
pass=
Password=
password=
Passwd=
passwd=
Журналирование: выполняется журналирование IP-адресов и портов (но не содержимого пакетов), связанных с портом 502. Проверка, является ли трафик трафиком Modbus, не выполняется.
Modbus: журналирование SourceIP, SourcePort, DestinationIP, DestinationPort и пометка *modbus*
Прочий трафик: запись всего содержимого пакета в журнал в том и только в том случае, если пакет удовлетворяет критериям базовой аутентификации HTTP
Заключение Новые результаты расследования убедили нас, что угроза, связанная с вредоносным ПО VPNFilter, продолжает расти. Мы не только установили новые модели и марки инфицированных устройств, но и обнаружили возможности вредоносного ПО, связанные со взломом оконечных устройств. Тем самым, область воздействия этой угрозы выходит за рамки сетевых устройств и в нее попадают сети, обслуживаемые инфицированными устройствами. В случае успешной атаки злоумышленник сможет выполнить развертывание любого требуемого функционального модуля для реализации своих целей, включая руткиты, средства извлечения информации и разрушительное вредоносное ПО.
Talos выражает благодарность всем самостоятельным исследователям, компаниям и технологическим партнерам со всего мира, которые поделились информацией и приняли участие в анализе этой угрозы. Ваши действия помогли нам сформировать более глубокое представление об этой вредоносной кампании, а в некоторых случаях и существенно улучшили ситуацию. Мы прекрасно понимаем, что это командный вид спорта, и искренне благодарим вас за помощь.
Мы продолжим следить за VPNFilter и сотрудничать с нашими партнерами, чтобы оценивать уровень угрозы по мере ее развития, а также обеспечить надежную защиту наших клиентов и информированность сообщества.
Обновленный список индикаторов компрометации (IOC) Как указано выше, мы подозреваем, что существуют дополнительные индикаторы компрометации и версии этого вредоносного ПО, о которых мы не знаем в настоящее время. Приведенный ниже список IOC отражает наши текущие представления. Новые IOC выделены ПОЛУЖИРНЫМ шрифтом.
Известные домены и IP-адреса C2 Связанные с 1-м этапом photobucket[.]com/user/nikkireed11/library photobucket[.]com/user/kmila302/library photobucket[.]com/user/lisabraun87/library photobucket[.]com/user/eva_green1/library photobucket[.]com/user/monicabelci4/library photobucket[.]com/user/katyperry45/library photobucket[.]com/user/saragray1/library photobucket[.]com/user/millerfred/library photobucket[.]com/user/jeniferaniston1/library photobucket[.]com/user/amandaseyfried1/library photobucket[.]com/user/suwe8/library photobucket[.]com/user/bob7301/library toknowall[.]com
Связанные со 2-м этапом 91.121.109[.]209 217.12.202[.]40 94.242.222[.]68 82.118.242[.]124 46.151.209[.]33 217.79.179[.]14 91.214.203[.]144 95.211.198[.]231 195.154.180[.]60 5.149.250[.]54 94.185.80[.]82 62.210.180[.]229 91.200.13[.]76 23.111.177[.]114
Устройства, подверженные атаке Мы установили, что перечисленные ниже устройства подвержены атаке. Учитывая масштабы исследования, многие наблюдения выполняются удаленно без физического доступа к устройству, поэтому во многих случаях нам трудно определить конкретную версию ПО и модель устройства.
Учитывая накопленный объем информации об этой угрозе, мы полагаем, что данный список не является исчерпывающим, и угрозе могут быть подвержены и другие устройства.
Продукция Asus:
RT-AC66U (новое)
RT-N10 (новое)
RT-N10E (новое)
RT-N10U (новое)
RT-N56U (новое)
RT-N66U (новое)
Продукция D-Link:
DES-1210-08P (новое)
DIR-300 (новое)
DIR-300A (новое)
DSR-250N (новое)
DSR-500N (новое)
DSR-1000 (новое)
DSR-1000N (новое)
Продукция Huawei:
HG8245 (новое)
Продукция Linksys:
E1200
E2500
E3000 (новое)
E3200 (новое)
E4200 (новое)
RV082 (новое)
WRVS4400N
Продукция Mikrotik:
CCR1009 (новое)
CCR1016
CCR1036
CCR1072
CRS109 (новое)
CRS112 (новое)
CRS125 (новое)
RB411 (новое)
RB450 (новое)
RB750 (новое)
RB911 (новое)
RB921 (новое)
RB941 (новое)
RB951 (новое)
RB952 (новое)
RB960 (новое)
RB962 (новое)
RB1100 (новое)
RB1200 (новое)
RB2011 (новое)
RB3011 (новое)
RB Groove (новое)
RB Omnitik (новое)
STX5 (новое)
Продукция Netgear:
DG834 (новое)
DGN1000 (новое)
DGN2200
DGN3500 (новое)
FVS318N (новое)
MBRN3000 (новое)
R6400
R7000
R8000
WNR1000
WNR2000
WNR2200 (новое)
WNR4000 (новое)
WNDR3700 (новое)
WNDR4000 (новое)
WNDR4300 (новое)
WNDR4300-TN (новое)
UTM50 (новое)
Продукция QNAP:
TS251
TS439 Pro
Другие сетевые системы хранения данных QNAP под управлением ПО QTS
Продукция TP-Link:
R600VPN
TL-WR741ND (новое)
TL-WR841N (новое)
Продукция Ubiquiti:
NSM2 (новое)
PBE M5 (новое)
Продукция Upvel:
Неизвестные модели* (новое)
Продукция ZTE:
ZXHN H108N (новое)
* Мы обнаружили вредоносное ПО, предназначенное для продукции Upvel, но пока не можем определить конкретные модели устройств, на которые оно ориентировано.