Исследование

Головы Гидры. Вредоносное ПО для сетевых устройств

Введение

Сетевые устройства, такие как маршрутизаторы, точки доступа и DSL-модемы, стали неотъемлемой частью компьютерных сетей — как домашних, так и принадлежащих небольшим компаниям. Как правило, такие устройства предоставляются интернет-провайдером или приобретаются для расширения существующей IT-инфраструктуры, а управление ими берут на себя пользователи, не имеющие специальных технических знаний. Эти устройства часто плохо настроены и имеют уязвимости, что делает их легкой мишенью для сетевых атак и позволяет киберпреступникам быстро и легко получить контроль над сетью. Как ни удивительно, эти на первый взгляд безобидные устройства могут служить отличным убежищем для вредоносных программ.

Главные проблемы безопасности

Как известно, самое слабое звено в цепи защиты от информационных угроз — это пользователь. Это же относится и к защите от сетевых угроз и настройке сетевых устройств. Очевидно, что хорошо обученный и компетентный администратор способен обеспечить надежную защиту практически любой сети, в то время как отсутствие у администратора необходимого опыта и знаний может значительно повысить уровень риска, которому подвергаются пользователи.

Крупные компании с большим числом пользователей, как правило, применяют дорогое профессиональное сетевое оборудование и нанимают квалифицированных и опытных специалистов по компьютерным сетям. А от фирмы, компьютерный парк которой составляют 10-15 рабочих станций, вряд ли можно ожидать покупки дорогих аппаратных средств и привлечения опытного IT-специалиста.

Тем более, нельзя ожидать от пользователей, установивших дома маршрутизатор или модем, хотя бы каких-то знаний в области сетевых технологий — с тем же успехом можно от каждого пользователя компьютера ожидать профессиональных знаний в области IT. Как правило, домашние пользователи исходят из того, что устройство будет работать как надо с настройками по умолчанию, и не читают сложных технических инструкций по применению прибора. Поэтому провайдерам сетевых сервисов и производителям аппаратных средств следует помнить о том, что на них лежит ответственность за безопасность сетей, построенных на основе их устройств.

Маленькие и удобные сетевые устройства, которые можно использовать сразу после подключения к сети без дополнительной настройки, становятся все популярнее. Но насколько безопасны их настройки по умолчанию? Можно ли их использовать, ничего не меняя в исходной конфигурации, и при этом оставаться в безопасности? Увы, в большинстве случаев ответ отрицательный.

Предположим, что вы не стали изменять на только что приобретенном маршрутизаторе пароль, установленный по умолчанию. Вы сильно рискуете, потому что, как правило, пароли, установленные в маршрутизаторах по умолчанию, широко известны. Но даже если данный пароль и неизвестен, то злоумышленнику не составит труда угадать или взломать его. Это наиболее серьезная, но далеко не единственная проблема безопасности бюджетных сетевых устройств.

Иногда производители по умолчанию включают поддержку удаленного управления или даже создают скрытую учетную запись администратора для использования службами технической поддержки. Вдобавок, в большинстве современных маршрутизаторов, предназначенных для домашнего использования, есть функция UPnP, в некоторых случаях позволяющая приложениям изменять настройки маршрутизатора без какой бы то ни было аутентификации. Этого совершенно достаточно злоумышленникам для того, чтобы взять устройства технически не подкованных пользователей и беспечных специалистов под свой полный и безоговорочный контроль.

К сожалению, даже самые внимательные пользователи не могут обеспечить стопроцентной безопасности своих устройств. Причина этого — многочисленные уязвимости во встроенном программном обеспечении («прошивках») устройств, прежде всего в их веб-интерфейсе, который зачастую уязвим для таких атак, как обход аутентификации (authentication bypass), межсайтовый скриптинг (XSS) и подделка межсайтовых запросов (CSRF). Эта проблема затрагивает не только устройства, применяемые в домашних условиях и в небольших компаниях: известно несколько эксплойтов, нацеленных на профессиональное сетевое оборудование, производимое несколькими крупными компаниями.

Более того, ни пользователи, ни производители оборудования до конца не осознают проблем, связанных с безопасностью сетевых устройств, и не уделяют им должного внимания. Даже в тех случаях, когда ошибки во встроенном ПО легко исправить, исправления в лучшем случае вносятся в прошивки с большими задержками, а в худшем — вовсе не вносятся. При этом пользователи, как правило, не интересуются обновлениями встроенного ПО или не знают, как их установить. Но бывают и такие ошибки в реализации базовых сервисов, которые невозможно исправить без внесения в ПО устройства существенных изменений, поэтому многие из этих дефектов не устраняются долгие годы.

Атаки: причины и последствия

Как было отмечено выше, для сетевых устройств характерны следующие проблемы:

  • Слабые пароли, устанавливаемые по умолчанию, и отсутствие механизма обязательной смены пароля
  • Настройки по умолчанию, не обеспечивающие должного уровня безопасности
  • Уязвимости встроенного ПО и ошибки реализации базовых сервисов
  • Неосведомленность пользователей и производителей устройств о проблемах, связанных с безопасностью, а также недооценка важности этих проблем

Все это делает маршрутизаторы и модемы легкой мишенью для киберпреступников. Но зачем кому-то атаковать сетевое устройство? Цель всегда одна — деньги. Постоянный незаметный для пользователей мониторинг сети, кража данных, переадресация запросов на вредоносные сайты — все это становится возможным при получении доступа к маршрутизатору. Кроме того, подобные устройства — прекрасное укрытие для вредоносных программ, которые получают возможность незаметно вновь заражать подключенные к сетевому устройству компьютеры или строить огромные ботнеты из зараженных устройств.

Итак, пока все вышесказанное свежо в нашей памяти, перечислим возможные последствия несанкционированного доступа к маршрутизатору:

  • Перехват сетевого трафика
  • Возможность подслушивать разговоры по протоколу VoIP (передача голосового трафика через интернет)
  • Кража ключей шифрования WEP/WPA
  • Возможность изменения конфигурации устройства
    • смена / сброс паролей
    • доступ к внутренним сетям из WAN (глобальных вычислительных сетей)
    • риск открытия злоумышленником бэкдора, дающего доступ к компьютеру, путем перенаправления портов
    • изменение настроек DNS (drive-by pharming)

Большинство из перечисленных выше проблем возникают в результате целевых атак, однако многие не знают, что зачастую они связаны с вредоносным ПО. В настоящее время киберпреступников, по-видимому, больше всего интересует изменение настроек DNS и создание ботнетов для DDoS атак. Однако диапазон возможностей гораздо шире и включает в себя извлечение ценных данных из перехваченного трафика, укрытие вредоносного ПО для компьютера в оперативной памяти маршрутизатора и распространение программ-вымогателей. Как говорится, есть, где разгуляться.

Следите за настройками DNS!

Процесс преобразования доменных имен в IP-адреса имеет принципиальное значение для безопасности пользователей, работающих в интернете. В случае изменения злоумышленниками настроек этого процесса, известные и доверенные URL-адреса могут указывать на мошеннические IP-адреса, подвергая пользователя таким угрозам, как фишинг, эксплойты и вредоносные веб-сайты. Эта переадресация совершенно незаметна для пользователей: они просто набирают в адресной строке браузера URL-адрес и ожидают, пока откроется соответствующая страница. Для переадресации достаточно одного вредоносного изменения — нетрудно представить себе, какой ущерб способен нанести мошеннический DNS-сервер.

Изменение IP-адресов, соответствующих определенным URL-адресам, получило название фарминг (pharming). Первоначально этот тип атак был реализован с помощью троянских программ, которые изменяли файл hosts в Windows. Второй этап в развитии этого метода состоял в изменении адресов DNS-серверов в системном реестре Windows. Достаточно сложная троянская программа, использующая этот вектор атаки, появилась в 2007 году и получила название Zlob/DNSChanger. Кроме внесения изменений в системный реестр, она проверяет, подключен ли к зараженному компьютеру маршрутизатор. Если подключен, то зловред пытается подобрать пароль методом полного перебора и затем изменить IP-адреса DNS-серверов на самом маршрутизаторе.

Как пользователю защититься от подобных атак? В данном случае ответ прост:

  • Антивирусное ПО, установленное на компьютере, должно предотвратить его заражение и, соответственно, оградить маршрутизатор от атаки.
  • Для получения прав доступа к интерфейсу управления маршрутизатором следует использовать уникальные взломостойкие пароли.

В случае, если проведение атаки не предусматривает использования вредоносного ПО на компьютере пользователя, ситуация оказывается сложнее. Подобная ситуация возникла в начале 2011 года, когда против одного из интернет-провайдеров была проведена целевая атака. Модемы большого числа пользователей были взломаны: на них были изменены настройки DNS — скорее всего, путем использования скрытой учетной записи администратора, настроенной на каждом из устройств для нужд технической поддержки. Вероятно, при проведении атаки был использован какой-то модуль автоматизации, который был удален с устройств после внесения изменений в настройки DNS.

В подобных случаях пользователь практически бессилен. Прежде, чем передать модемы и маршрутизаторы клиентам, интернет-провайдеры должны обеспечить их безопасность, особенно в том, что касается паролей и возможностей удаленного доступа к устройствам. По умолчанию входящие соединения из глобальной сети должны быть запрещены, а все IP-адреса, с которых могут устанавливаться удаленные соединения, должны быть строго определены.

Эксплуатация уязвимостей

Подделка межсайтовых запросов (CSRF) и изменение настроек DNS на сетевых устройствах (drive-by pharming)

Вкратце, подделка межсайтовых запросов (Cross-Site Request Forgery, CSRF/XSRF) — это веб-атака, при которой вредоносные действия совершаются от лица доверенного пользователя, но без его ведома. Это возможно, потому что запросы, которые посылает браузер прошедшего аутентификацию пользователя, как правило, не проверяются вебсайтом, которому они отправлены, а сразу же выполняются. Если злоумышленникам удается заманить пользователя на сайт, где подобные запросы внедрены в виде кода на HTML или JavaScript, это может привести к выполнению браузером действий, которые пользователь не инициировал и не планировал выполнять. Примеры таких действий — отправка спама с почтового сервера XYZ от имени пользователя, отправка сообщений на форум XYZ, изменение пользовательских настроек и т.д. Drive-by pharming — это просто CSRF-атака на маршрутизатор с целью изменения на нем настроек DNS.

Этот прием был описан в концептуальном отчете исследователей из Университета штата Индиана (University of Indiana) в 2006 году. Первая реальная атака drive-by pharming произошла год спустя в Мексике и была нацелена на CSRF-уязвимость маршрутизаторов 2Wire. Электронное спам-сообщение, зараженное эксплойтом, было разослано миллионам пользователей с целью кражи паролей доступа к системам онлайн-банкинга. Эксплойт представлял собой запрос к веб-интерфейсу маршрутизатора на изменение IP-адреса, соответствующего URL-адресу www.banamex.com, на IP вредоносного сервера. Пользователи, желающие посетить принадлежащий этой финансовой группе сайт онлайн-банкинга, незаметно перенаправлялись на фишинговый сайт, который, естественно, представлял собой практически точную копию исходного сайта. Было лишь одно отличие: на странице присутствовало дополнительное поле — NetKey. Достаточно сказать, что NetKey — это сгенерированное случайным образом значение, которое используется для авторизации онлайн-транзакций в этом банке.


Рисунок 1: CSRF-запрос


Рисунок 2: Фишинговый сайт (Источник: blog.hispasec.com)

Подобные атаки осуществлялись в течение нескольких месяцев, однако при их проведении не всегда использовались электронные письма с эксплойтом: иногда CSRF-атака начиналась после того, как пользователь кликал мышью по вредоносной ссылке и перенаправлялся на вредоносный сайт.

Поскольку эта уязвимость — прежде всего вопрос реализации сетевого устройства, пользователь не может устранить ее самостоятельно до появления новой версии прошивки с закрытой уязвимостью. Что касается производителя устройства, в его распоряжении не так уж много вариантов решения проблемы. Одно из них — предусмотреть отправку вместе с запросом маршрутизатору уникального токена в виде скрытого элемента формы.

UPnP: очень удобно и очень опасно

Упомянутая выше атака была возможна только в том случае, если на маршрутизаторе не был установлен пароль или пользователь был зарегистрирован в веб-интерфейсе устройства в момент атаки. По сути, это означает, что те, кто установили на своих маршрутизаторах надежные уникальные пароли, меньше рискуют. Но не существует ли метода, который позволяет изменять настройки маршрутизатора вообще без аутентификации?

Universal Plug and Play (UPnP) — это набор протоколов, облегчающих взаимодействие между сетевыми устройствами, такими как персональные компьютеры, принтеры, телефоны, маршрутизаторы/модемы и точки доступа и т.д. UPnP устанавливает правила, позволяющие устройствам автоматически обнаруживать друг друга и устанавливать между собой соединения. После подключения к сети устройство, поддерживающее UPnP, самостоятельно настраивает соединения с другими устройствами, не требуя вмешательства со стороны пользователя. Это очень удобно для пользователей, не имеющих технической подготовки, но, как и многое другое из того, что считается «дружественным к пользователю», не слишком хорошо с точки зрения безопасности. Достаточно сказать, что UPnP не предусматривает вообще никакой аутентификации и, таким образом, не требует ввода логина и пароля для выполнения действий, связанных с администрированием устройств, в том числе, и для изменения их важнейших настроек. Важно, что в большинстве современных маршрутизаторов/модемов механизм UPnP включен по умолчанию.

Рассмотрим подробно, как работает UPnP:

  • Каждое устройство, подключаемое к сети, получает IP-адрес — от DHCP-сервера или самостоятельно присваивая себе адрес (local-link address)
  • Вновь подключенное устройство использует протокол SSDP (Simple Service Discovery Protocol), чтобы сообщить другим устройствам о предлагаемых им сервисах, а также о URL-адресе, по которому они доступны
  • Управляющее устройство UPnP загружает описание устройства с этого URL-адреса (в формате XML)
  • Это дает управляющему устройству возможность посылать корректные запросы на сервисы, предлагаемые данным устройством. Эти сообщения используют протокол SOAP (Simple Object Access Protocol), основанный на формате XML и протоколах RPC и HTTP.

Сформированные особым образом SOAP-сообщения могут передаваться на устройство с вредоносных сайтов с помощью программного интерфейса XmlHTTPRequest в JavaScript или функции navigateToURL в Flash. В первом случае это возможно только внутри сети — при условии, что отправка запроса не осуществляется в сочетании с выполнением эксплойта, обеспечивающего возможность удаленного выполнения кода. Функцию же navigateToURL в Flash можно при необходимости использовать удаленно.

Поскольку проблема связана прежде всего с серьезными упущениями, допущенными при реализации механизма UPnP, и, в меньшей степени, с «врожденными» недостатками формата Flash, ни у производителей устройств, ни у пользователей нет простых путей ее решения. Конечно, можно немедленно избавиться от проблемы, просто отключив UPnP, но это излишне примитивное решение. Ручная настройка каждого подключенного к сети устройства и каждого приложения, использующего сетевые ресурсы, — слишком трудоемкая и при этом далеко не всегда выполнимая задача. Единственное действенное решение — переработка спецификаций UPnP и включение в стандарт метода строгой аутентификации. В качестве временного решения пользователи могут отключить показ Flash в браузере, но это не дает полной гарантии безопасности, поскольку, возможно, существуют другие способы эксплуатации уязвимости в UPnP без использования Flash.

SNMP: еще одна (недокументированная) функция

Протокол SNMP (Simple Network Management Protocol) призван обеспечить возможность централизованного управления всеми устройствами в сети. Несмотря на то, что этот протокол реализован не во всех устройствах, предназначенных для домашнего использования, имеет смысл упомянуть его слабые места, поскольку они могут использоваться в качестве вектора атаки.

SNMP состоит из трех элементов:

  • Управляющая система, т.е. управляющий компьютер;
  • Программные агенты, установленные на других устройствах сети;
  • Коммуникация (обмен сообщениями) между управляющей системой и программными агентами, плюс получение и изменение настроек на удаленном устройстве; наиболее распространенные типы сообщений — GetRequest, SetRequest, Response и Trap.

Все сообщения содержат строку, называемую community string, которая играет роль пароля, позволяющего убедиться, что сообщение пришло от доверенного источника, и обеспечить разграничение прав (чтение и запись или только чтение). На этом защита SNMP заканчивается. Поддержка шифрования отсутствует, поэтому даже строка community string отправляется открытым текстом. Более того, используемые по умолчанию значения этих строк хорошо известны и легко подбираются — и при этом требование изменения используемой по умолчанию строки отсутствует. Но и это еще не все: во многих устройствах поддержка SNMP включена по умолчанию, несмотря на то, что большинство пользователей даже не подозревают о существовании этого протокола! Эта ситуация сродни наличию в продукте скрытой функции, которая (в определенных ситуациях) может быть использована в качестве лазейки для обхода защиты. Перечисленные недостатки позволяют злоумышленникам успешно проводить атаки на маршрутизаторы, на которых включена поддержка SNMP и используются легко подбираемые строки community string.

Получив возможность отправлять на маршрутизатор SNMP-запросы и обеспечив себе таким образом доступ к устройству, злоумышленник может приступать к сбору информации и экспериментам с настройками устройства. На некоторых устройствах изменение важнейших настроек с помощью SNMP невозможно даже в том случае, если разрешена запись, но при этом все равно возможно успешное проведение атак типа SNMP-инъекция. Суть подобных атак заключается во внедрении в HTML-страницы веб-интерфейса вредоносного кода, который незаметно для пользователя переадресовывает запросы браузера на фишинговые или зараженные сайты, или осуществляет другие действия, такие как CSRF-атаки.


Рисунок 3: SNMP — использование установленной по умолчанию
строки community string может привести к внедрению
вредоносного кода в веб-интерфейс маршрутизатора

Поскольку, как и в предыдущих случаях, это проблема реализации, уровень безопасности при использовании протокола SNMP никак не зависит от пользователей. В последней на сегодняшний день версии спецификации протокола SNMP (SNMPv3) проблемы, связанные с недостаточным уровнем безопасности, частично решены благодаря добавлению шифрования сообщений. Однако разработчики этой версии приняли решение изменить некоторые из существенно важных элементов протокола, и в результате эта версия не поддерживается устройствами многих крупнейших производителей аппаратного обеспечения. Это чрезвычайно важная проблема, представляющая непосредственную опасность, особенно для корпоративных компьютерных сетей, и производителям оборудования следует внимательно к ней отнестись, поскольку они подвергают своих клиентов опасности.

Если вы планируете приобрести в свой офис новое сетевое оборудование, и вам необходима совместимость с SNMP, стоит найти устройства, поддерживающие SNMPv3. А вот в маленькой домашней сети использование SNMP не имеет практически никакого смысла. Поэтому если поддержка SNMP включена на вашем домашнем маршрутизаторе, лучше всего ее отключить, если только вы можете без нее обойтись. В противном случае совершенно необходимо поменять используемую по умолчанию строку community string на длинную строку, которую невозможно подобрать по словарю.

Двоичный вредоносный код

Hydra: первая вредоносная программа с открытым исходным кодом для маршрутизаторов

Первый известный образец вредоносного кода, работающий в автоматическом режиме, появился в 2008 году и представлял собой утилиту с открытым исходным кодом. Управление ее активностью осуществлялось через IRC, а ее основной задачей было получение доступа к маршрутизаторам методом подбора паролей для проведения DDoS-атак. Получение доступа к маршрутизатору обеспечивалось путем использования встроенного списка используемых по умолчанию паролей или с помощью эксплойта, позволяющего обойти аутентификацию в маршрутизаторах D-Link.


Рисунок 4: фрагмент файла Readme, распространяемого с исходным кодом утилиты Hydra

Прежде, чем компилировать исходный код, злоумышленник должен был отредактировать один из файлов, прописав в нем URL-адрес командного сервера IRC, а также ссылку, по которой находился вредоносный бинарный файл.

Исходный код утилиты был опубликован в блоге ее автора в апреле 2011 года, однако на форумах киберпреступников он циркулировал еще с 2008 года. Все обнаруженное позднее в «дикой среде» вредоносное ПО для платформы MIPS, на которой построено большинство маршрутизаторов, создано так или иначе на основе Hydra.

Psyb0t: первое вредоносное ПО в «дикой среде», предназначенное для платформы MIPS

Psyb0t — это первый появившийся в «дикой среде» двоичный вредоносный код, заражающий собственно сетевые устройства. В январе 2009 года его обнаружил австралийский эксперт по IT-безопасности Терри Бом (Terry Baume), который заметил в журнале сетевого экрана странные записи, свидетельствующие об имевших место попытках атаки. Вредоносная программа привлекла еще более пристальное внимание экспертов в марте того же года, когда ботнет, состоящий из зараженных маршрутизаторов, совершил DDoS-атаку на портал DroneBL.

По сути, Psyb0t — это IRC-бот, который соединяется с сервером, подключается к определенному каналу и ищет на нем команды. В момент обнаружения, когда бот еще был активным, через IRC-канал передавалась следующая команда: проверить все устройства, подключенные к сети, и попытаться получить доступ к маршрутизаторам/модемам, используя установленное по умолчанию имя пользователя и пароль, а в случае неудачи — пароль, полученный путем эксплуатации известной уязвимости. Таким образом, вредоносная программа распространялась по сети, заражая в ней все уязвимые устройства. Помимо кода, обеспечивающего распространение зловреда, Psyb0t также поддерживает разнообразные команды, позволяющие организовывать DDoS-атаки, определять методом полного перебора установленный на маршрутизаторе пароль, выполнять команды оболочки (shell) и применять метод полного перебора для получения доступа к другим сервисам, таким как MySQL, phpMyAdmin, серверам FTP, разделяемым ресурсам, доступным по протоколу SMB (SMB shares), и т.п. Поскольку прошивка маршрутизатора, как правило, доступна только для чтения, Psyb0t целиком находится только в памяти устройства, соответственно, простой перезагрузки маршрутизатора достаточно для удаления заражения. Однако следует иметь в виду, что уязвимые устройства будут снова заражаться раз за разом, если не изменить пароль и не установить обновленную версию прошивки, не содержащую уязвимости.

Рост общественного интереса, по-видимому, стал причиной дезактивации ботнета его создателем, который 22 марта 2009 года изменил команды в IRC-канале, заставив все боты остановить свои процессы и завершить работу. Он также оставил сообщение, в котором говорилось о том, что размер ботнета достиг 80 тысяч зараженных машин. В сообщении также было сказано, что ботнет создавался в исследовательских целях. Прямо скажем, сомнительное утверждение.

Технические подробности

Psyb0t предназначен для Unix-подобных систем (например, OpenWRT, DD-WRT, MontaVista Linux, VxWorks и т.д.), работающих на платформе MIPSel. MIPSel это RISC-архитектура с записью байтов от младшего к старшему (little endian encoding), используемая преимущественно во встроенных системах (embedded devices). В отличие от ARM, являющейся основной платформой для мобильных телефонов и других мобильных устройств, MIPS/MIPSel лежит в основе большей части современных сетевых устройств.

Исполняемый файл был упакован утилитой UPX, однако заголовки были повреждены, чтобы помешать анализу файла. В действительности, это скорее примитивный способ скрытия кода, чем сколько-нибудь эффективная защита от анализа. Для распаковки файла стандартным распаковщиком UPX достаточно исправить заголовки, вставив, где нужно, отсутствующую строку «UPX!».


Рисунок 5: Psyb0t — поврежденный заголовок UPX

Некоторые из строк в файле были подвергнуты обфускации, чтобы скрыть их от посторонних глаз — пусть лишь на короткое время. Вот как некоторые из этих строк выглядели до расшифровки:


Рисунок 6: Psyb0t — зашифрованные строки

…и после расшифровки:


Рисунок 7: Psyb0t — расшифрованные команды

Процедура расшифровки проста: берется ключ, жестко закодированный в теле программы, из первого байта зашифрованной строки вычитается первый байт ключа, из второго байта — второй байт, и т.д.


Рисунок 8: Psyb0t — процедура расшифровки

Распространение

Первое, что делает бот после подключения к IRC-каналу, — ищет на нем команды. Самая важная команда — scan и ее разновидности rscan, lscan и rlscan. Она запускает поиск сетевых устройств в указанном диапазоне адресов и пытается выполнить аутентификацию на найденных устройствах с использованием устанавливаемых по умолчанию имен пользователей и паролей (root/[Aa]dmin). Если попытка не увенчалась успехом, бот пытается с помощью эксплойта извлечь пароль из конфигурационного файла устройства. Данный эксплойт использует уязвимость обхода аутентификации (authentication bypass vulnerability) в веб-интерфейсе устройства путем отправки особым образом сформированного запроса на cgi-bin/firmwarecfg. В результате злоумышленник может получить полное содержание конфигурационного файла устройства, включая пароль, в виде незашифрованного текста. Эта уязвимость присутствует в различных устройствах D-Link, Telecom и некоторых других производителей. Несмотря на то, что она закрыта в последних версиях устройств, пользователи, использующие более старые маршрутизаторы, по-прежнему уязвимы для подобных атак.


Рисунок 9: Psyb0t — эксплойт обхода аутентификации

Получив доступ к оболочке системы, Psyb0t сканирует список активных процессов, пытаясь найти собственный процесс. Если маршрутизатор еще не заражен, Psyb0t применяет команду wget или tftp для загрузки своего тела с сервера и его запуска на исполнение. Затем бот отправляет сообщение об успешной атаке владельцу ботнета и переходит к следующему устройству.

«[+] R00TED ** [TIR] ** IP=%s Password=%s»

([TIR]означает устройства Texas Instruments, [STR] — устройства, использующие BusyBox)

Первое, что делает вновь запущенный процесс, — создает файл нулевого размера под названием udhcpc.mtx, причем расширение mtx, скорее всего, является сокращением от mutex. Затем он расшифровывает некоторые строки и переходит в фоновый режим, в котором он выполняет следующие команды:

/etc/firewall_start
iptables -A INPUT -p tcp —dport 23 -j DROP
rm -f /var/tmp/udhcpc.env

Процесс создает резервную копию файла /var/tmp/hosts, соединяется с сервером IRC, на котором действует парольная защита, и подключается к каналу #mipsel, используя сгенерированное случайным образом имя, состоящее из префикса [NIP] и девяти выбранных случайным образом букв и цифр. В случае если от сервера получен ответ ERR_NOMOTD, бот также устанавливает режимы канала.


Рисунок 10: Psyb0t — соединение с сервером IRC


Рисунок 11: Psyb0t — подключение к IRC-каналу


Рисунок 12: Psyb0t — установка режимов канала

Бот выполняет команды, найденные на канале, и возвращается в начало цикла, ожидая новых команд, которые злоумышленники могут отправлять в личных сообщениях.

Команды

Ниже приведен полный список команд, которые способна интерпретировать рассматриваемая в этой статье версия бота:


Из названий большинства команд можно понять, какие функции они выполняют. Имеется несколько команд для работы с IRC (login, logout, rejoin, silent, mode); команд, с помощью которых вредоносная программа управляет своей работой (kill, killall, exit, sleep, upgrade, wupgrade, ver, report, split, *sel); и команды, позволяющие получать информацию о системе (tlist, getip, getinfo, uptime, viri). Кроме того, утилита способна загружать дополнительные файлы (wget), посещать определенные веб-страницы (visit), изменять файл hosts (spoof) и выполнять системные команды.

Но, вероятно, наибольший интерес представляют команды, относящиеся к организации DDoS-атак типов SYN, UDP и ICMP (*flood), а также различные команды, связанные со сканированием сети. Кроме стандартной команды сканирования и ее вариантов, упомянутых выше, имеется группа команд, которые используют одну и ту же подпрограмму, входящую в состав файла. При этом каждая из команд выполняет конкретное действие: pscan запускает сканирование портов, r00t делает попытку взломать пароль доступа устройства методом подбора, а команды fscan, sql, pma и smb осуществляют аналогичные атаки на FTP-сервер, SQL-сервер, панель phpMyAdmin и ресурсы, доступные по протоколу SMB.


Рисунок 13: Psyb0t — пароли, проверяемые при взломе методом подбора

Uteltend: во имя Чака Норриса

Ботнет Psyb0t был закрыт в конце марта 2009 года, однако на этом история вредоносного ПО для маршрутизаторов не закончилась. В декабре 2009 года исследователи из университета Масарика в Чехии обнаружили еще один IRC-бот, заражающий маршрутизаторы. Анализ показал, что у этой вредоносной программы много общего с Psyb0t. Командный центр нового ботнета находился в Италии; строки и имена функций, входящих в состав вредоносных бинарных файлов, тоже указывали на итальянское происхождение кода. Вредоносная программа содержала текст «In nome di Chuck Norris«, который присутствовал в нескольких местах кода. Поэтому и ботнет был назван «Chuck Norris». В сигнатурных базах «Лаборатории Касперского» этот зловред значится под именем Trojan.Linux.Uteltend, происхождение которого связано с еще одной строкой в файле — командой, не позволяющей службе utelnetd работать на зараженном компьютере.


Рисунок 14: Chuck Norris — некоторые из строк, содержащихся в бинарном файле

Ниже перечислены общие черты бинарных файлов Chuck Norris и Psyb0t:

  • Одна и та же платформа: Linux на устройствах с архитектурой MIPSel
  • Один и тот же упаковщик: UPX; заголовки некоторых версий повреждены точно так же, как и у Psyb0t.
  • Функционал IRC-бота
  • Один и тот же метод шифрования скрываемой информации
  • Схожие механизмы распространения
  • Использование эксплойта обхода аутентификации на маршрутизаторах D-Link

Программа Chuck Norris состоит из нескольких файлов. Основной исполняемый файл выполняет сканирование портов с помощью Linux-утилиты pscan в диапазоне IP-адресов, взятом из файла ip.txt на маршрутизаторе, если он существует, или из списка, зашифрованного в бинарном файле:


Рисунок 15: Chuck Norris — диапазоны IP-адресов

Затем он пытается получить доступ к каждому сетевому устройству, используя собственный список паролей по умолчанию. Выполняемые далее команды также хранятся в зашифрованном виде:


Рисунок 16: Chuck Norris — расшифровка команд

Имя основного исполняемого файла — syslgd. Это имитация названия легитимного процесса Linux — syslogd, отвечающего за ведение журнала системных сообщений. Это попытка, правда, крайне примитивная, замаскировать присутствие вредоносной программы в системе. Кроме того, в процессе выполнения этой команды вредоносная программа пытается загрузить небольшой сервер/клиент SSH, скомпилированный специально для архитектуры MIPS. Среди других компонентов, обнаруженных на вредоносном сервере, были исполняемый файл с функционалом IRC-бота, детектируемый продуктами «Лаборатории Касперского» как Backdoor.Linux.IrcShell.c, и троянская программа для Linux, скомпилированная для архитектуры MIPS (Trojan.Linux.Small.e).

Tsunami: новая голова Гидры

Командный центр ботнета Chuck Norris был отключен до того, как информация о нем могла стать доступна широкой публике. Тем не менее, история продолжается. В начале марта 2010 года в Латинской Америке появилась новая голова Гидры — вероятнее всего, прямой потомок предыдущей. Данная вредоносная программа была классифицирована как вариант Backdoor.Linux.Tsunami, поскольку у нее было много черт, характерных для работающей под Linux DDoS-утилиты с открытым исходным кодом — Kaiten/Tsunami. При этом некоторые фрагменты ее кода очень похожи на исполняемые файлы Chuck Norris, в частности, функция кодирования строк и ключ шифрования. Более того, некоторые из строк, а также IP-адреса, прописанные в этих двух программах, идентичны.


Рисунок 17: Tsunami — расшифровка названия канала и пароля


Рисунок 18: Tsunami — IP-адреса

Новые функции, отсутствовавшие во всех предыдущих версиях Tsunami для архитектуры x86, а также в Chuck Norris, — это попытки изменения настроек DNS (данный образец заменял текущие серверы DNS на серверы, используемые сервисом Open DNS) и блокирование диапазона портов от 22 до 80 включительно:


Рисунок 19: Tsunami — блокирование портов, изменение настроек DNS

Команды бота Tsunami легко читать благодаря встроенной функции помощи. Большинство из этих команд — переименованные или измененные команды утилиты Kaiten:


Удаление заражения

Все упомянутые выше вредоносные бинарные файлы размещаются только в оперативной памяти устройства, поэтому ликвидация заражения не представляет никакой сложности. Тем не менее, если ограничиться перезагрузкой маршрутизатора, велика вероятность его повторного заражения. Наиболее важная для защиты маршрутизатора мера — изменение пароля устройства, безопасная настройка маршрутизатора и обновление прошивки до последней версии.

Заключение

Может быть, это — лишь буря в стакане воды?

В последние 4 года на платформу MIPS были совершены несколько атак типа drive-by pharming; известно также о нескольких случаях заражения сетевых устройств вредоносным ПО. По сравнению с другими платформами, даже мобильными, это не так уж и много. Зачем же мы пытаемся поднять тревогу? Почему этот вопрос так важен?

Прежде всего, если какой-то вид атаки уже изобретен и неоднократно замечен в «дикой среде», он будет повторяться снова и снова, особенно если киберпреступникам удалось нажиться на этих атаках. Если вспомнить историю, можно прийти к выводу, что возникновение вредоносного ПО для различных платформ происходило при схожих обстоятельствах. Например, сейчас вредоносные файлы для мобильных и 64-разрядных платформ все еще немногочисленны по сравнению с вредоносным ПО для архитектуры x86, но нельзя отрицать, что количество таких файлов быстро растет и, вероятно, такие программы будут занимать все более доминирующее положение на рынке вредоносного ПО по мере прекращения использования устройств, имеющих более старую архитектуру.

Атаки на MIPS-устройства появились относительно недавно, но они позволяют злоумышленникам наносить жертвам значительный ущерб. Рассмотрим несколько причин, по которым необходимо рассматривать вредоносное ПО для сетевых устройств как серьезную проблему:

  • Распространенность. У большинства пользователей дома установлено сетевое устройство, будь то ADSL-модем, предоставленный интернет-провайдером, или Wi-Fi маршрутизатор, позволяющий использовать интернет-соединение одновременно на нескольких настольных компьютерах, ноутбуках, планшетных компьютерах и других устройствах.
  • Скрытность. Сетевые устройства — идеальное убежище для вредоносных программ, поскольку о безопасности этих устройств никто не задумывается. При этом современные антивирусы не способны обнаруживать вредоносное ПО, установленное на маршрутизаторе, а не на ПК или Mac’е.
  • Легкий доступ. Учитывая значительное число уязвимостей и неосведомленность большинства пользователей, устройства на платформе MIPS — как раз то, что давно искали киберпреступники.
  • Постоянный доступ. Как правило, маршрутизаторы работают постоянно, их редко перезагружают или выключают, что делает их идеальным решением для злоумышленников.
  • Постоянный мониторинг. Взяв под контроль маршрутизатор, злоумышленник может незаметно для пользователя осуществлять мониторинг всего трафика в сети и поиск пакетов, содержащих конфиденциальную информацию.
  • Контроль над настройками DNS на всех устройствах в сети. Для киберпреступников это один из самых многообещающих видов атак с точки зрения наживы: изменение IP-адресов DNS-серверов ведет к совершенно незаметной для пользователей переадресации запросов, посылаемых со всех компьютеров сети, на вредоносные или фишинговые сайты.

Говоря о масштабах угрозы, связанной с вредоносными программами для архитектуры MIPS, нужно подчеркнуть, что определить, насколько широко распространено такое вредоносное ПО, чрезвычайно сложно. Все известные на данный момент случаи заражения были обнаружены случайно, когда они затрагивали самих экспертов в области компьютерной безопасности. Обычные пользователи, минимально сведущие или несведущие в области безопасности компьютерных сетей, практически не в состоянии обнаружить такие вредоносные программы без посторонней помощи. Возникает вопрос: сколько MIPS-ботнетов не обнаружены и продолжают работать сегодня?

Кроме того, если единственная цель киберпреступника — изменить настройки DNS, то вредоносной программе не нужно все время работать на устройстве. Вредоносный процесс может завершиться, как только изменит настройки, и после этого обнаружить следы заражения вряд ли удастся. Подобный подход еще больше усложняет задачу отслеживания и обнаружения атак. Это очень интересное направление для дальнейших исследований.

Что можно сделать для уменьшения угрозы безопасности?

Пользователям следует устанавливать надежные пароли, проверять настройки безопасности и регулярно обновлять прошивку устройства, а также другое программное обеспечение, связанное с данной проблемой. Сейчас это все, что они могут сделать. Остальное — ответственность производителей: кроме них никто изменить «начинку» устройств не может.

В качестве первоочередной меры необходимо реализовать генерируемые случайным образом пароли, чтобы установленный по умолчанию на каждом устройстве пароль был уникальным. Некоторые производители уже это делают. Кроме того, некоторые из новых устройств выпускаются с более безопасными настройками, запрещающими удаленный доступ к устройству с логином и паролем, установленным по умолчанию. Тем не менее, еще предстоит проделать большую работу.

Реализацию UPnP необходимо переработать, а протокол SNMP должен использоваться только в его защищенной версии. Необходимо уделять большее внимание уязвимостям и безопасности прошивок и тщательно тестировать каждое устройство на безопасность, прежде чем выпускать его на рынок.

Что день грядущий нам готовит?

Вредоносное ПО развивается и множится, и от зловредов для архитектуры MIPS следует ожидать того же. Вот несколько прогнозов, которые я сделала в процессе подготовки этой статьи:

  • Атаки на платформу ARM — вторую по популярности платформу для сетевых устройств.
  • Атаки на проприетарные операционные системы крупнейших производителей, поскольку не все устройства работают под управлением ОС на базе Linux.
  • Создание собственных прошивок с вредоносными компонентами — таким образом киберпреступники могут создать вредоносное ПО, не исчезающее после перезагрузки устройства.
  • Дальнейшее развитие вредоносного ПО для Linux/Unix: уже сейчас есть масса хакерских утилит, ботов и бэкдоров с открытым исходным кодом, которые легко приспособить для платформы MIPS.
  • Значительные достижения киберпреступников в области создания эксплойтов: существует множество известных незакрытых уязвимостей и, вероятно, еще больше неизвестных.
  • Эффективные приемы обфускации вредоносного кода будут созданы после того, как о проблеме вредоносного ПО для маршрутизаторов станет широко известно, и начнут появляться защитные решения.
  • Кроссплатформенное вредоносное ПО, позволяющее повысить гибкость и эффективность атак. Это может быть ПО, содержащее код для разных платформ, на которых создаются маршрутизаторы, а также код, инфицирующий ПК, подключенные к зараженному маршрутизатору, или маршрутизатор, подключенный к зараженному ПК.

В общем, киберпреступникам в этой области есть куда стремиться. Посмотрим, как будет меняться ситуация в ближайшие годы. И, что важнее всего, давайте не будем пассивными — еще не поздно изменить направление развития безопасности сетевых устройств.

Головы Гидры. Вредоносное ПО для сетевых устройств

Ваш e-mail не будет опубликован. Обязательные поля помечены *

 

Отчеты

StripedFly: двуликий и незаметный

Разбираем фреймворк StripedFly для целевых атак, использовавший собственную версию эксплойта EternalBlue и успешно прикрывавшийся майнером.

Азиатские APT-группировки: тактики, техники и процедуры

Делимся с сообществом подходами, которые используют азиатские APT-группировки при взломе инфраструктуры, и подробной информацией о тактиках, техниках и процедурах (TTPs) злоумышленников, основанной на методологии MITRE ATT&CK.

Как поймать «Триангуляцию»

Эксперты «Лаборатории Касперского» смогли получить все этапы «Операции Триангуляция»: эксплойты нулевого дня для iOS, валидаторы, имплант TriangleDB и дополнительные модули.

Подпишитесь на еженедельную рассылку

Самая актуальная аналитика – в вашем почтовом ящике