Глава 5. Вредоносные программы для «интернета вещей»
Пора отправлять в архивы истории старый анекдот о том, что вредоноса для Linux нужно сначала собрать из исходников, убедиться в том, что в системе есть все нужные библиотеки, и только после этого пытаться запустить, выдав ему предварительно права суперпользователя root. Сейчас на рынке полно «умных устройств» с Linux, и они стали одной из любимых целей вирусописателей. На чем основан этот интерес и как работают такие вредоносы?
Элементарная логика подсказывает: чтобы современный троян успешно выполнял свои функции, он должен без особого труда проникать в систему, иметь стабильное подключение к интернету и по возможности оставаться незамеченным как можно дольше. Всем этим критериям прекрасно соответствуют разнообразные девайсы категории «интернета вещей» роутеры, телевизионные приставки, сетевые накопители, медиацентры, а также устройства, собранные на основе одноплатных компьютеров. Как правило, все они сидят на «толстом» интернет-канале, что превращает подобное оборудование в удобный инструмент для организации DDoS-атак.
С проникновением тоже зачастую не возникает серьезных проблем. По статистике, большинство владельцев умных устройств это простые пользователи, которые не страдают от избытка знаний в сфере высоких технологий. Они относятся к девайсам IoT как к обычным бытовым приборам вроде соковыжималки или тостера, зачастую даже не подозревая, что у них вообще есть какие-то настройки, которые при желании можно изменить. Включили, работает, и ладно. Поэтому установленные на заводе дефолтные логины и пароли на подобных устройствах превращают взлом в задачу, посильную любому школьнику.
Наконец, скрытность. С этим совсем все просто: кому, скажите на милость, придет в голову искать трояна в телевизионной приставке или в недрах роутера, тем более что антивирусы для большинства таких девайсов в дикой природе практически не водятся, а проверить их дистанционно та еще задача для простого пользователя? Да и многие непростые пользователи иногда по инерции уверены, что вредоносов для Linux не существует в принципе. Поэтому трояны для IoT могут чувствовать себя в системе совершенно вольготно: искать их там вряд ли будут, а если и будут, не факт, что найдут.
Производитель часто виноват не меньше пользователя: многие умные устройства, имеющие известные уязвимости в прошивке, не получают от производителя обновлений, которые могли бы закрыть дыры. Это значительно повышает эффективность использования даже устаревших эксплоитов. Вероятность «пробива» таких устройств в среднем намного выше, чем даже компьютеров с регулярно обновляющейся операционной системой, не говоря уже о серверах или рабочих станциях с актуальным «Линуксом» на борту.
С какой целью создатели вредоносных программ устанавливают их на умные устройства? «Профессий» у большинства подобных троянов традиционно три. Прежде всего, это уже упомянутые выше DDoS-боты, начинающие флудить на указанный адрес сетевыми пакетами по команде с управляющего сервера. Конечно, одна бабушка с телевизионной приставкой уничтожить вражеский сервер тебе не поможет, но десяток старушек, как гласит народная мудрость, уже рубль. Во-вторых, на IoT-девайсах часто поднимают SOCKS-proxy-сервер, который можно использовать разными способами, прежде всего для обеспечения анонимности. Ну и наконец, в роутерах периодически заводятся трояны, подменяющие в настройках адреса DNS-серверов, чтобы показывать на клиентских машинах рекламу. При этом сам компьютер, на котором вдруг из ниоткуда начинают появляться баннеры с рекламой такси, онлайн-казино и девушек легкого поведения, остается девственно чистым, что подтвердит пользователю любой антивирус. Смена настроек DNS вручную ничем не поможет: после перезагрузки роутера все вернется на круги своя. Спасти ситуацию сможет разве что сброс устройства к заводским установкам или его перепрошивка, что для большинства обывателей выглядит как тайная магия высшего уровня. Иногда на Linux-устройствах попадаются майнеры, но в последнее время интерес к ним на фоне общего спада рынка криптовалют понемногу снижается.
Изучение логов ханипотов (специально созданных серверов «приманок»), с помощью которых специалисты по информационной безопасности анализируют распространение троянов для «интернета вещей» в живой природе, показывает следующий путь их доставки на целевое устройство. Обычно атакующие соединяются с привлекшим их внимание устройством по протоколу SSH или Telnet, подбирают пароль по словарю и в случае успешной авторизации отключают утилиту iptables, чтобы заблокировать работу файрвола. Дальше им остается только отыскать открытую на запись папку, сохранить в нее нужное приложение, соответствующее архитектуре устройства, и запустить его.
В арсенале атакующих обычно имеются готовые файлы малвари под различные архитектуры: ARM, MIPS, SPARC, M68K, SuperH, PowerPC, SH-4 и прочие типы железа. На некоторых девайсах можно организовать автозагрузку трояна, просто отредактировав файл /etc/rc.local. Периодически проверять, работает ли нужный процесс, и при необходимости перезапускать его можно, например, с использованием /etc/cron.minutely. Поскольку многие пользователи умных устройств не утруждают себя сменой дефолтных логинов и паролей, словарь для брутфорса (подбора пароля) в большинстве случаев выглядит весьма тривиально. Вот наиболее популярные логины и пароли для взлома девайсов по протоколу SSH.
Также при бруте по SSH очень часто используются такие логины, как ubnt, user, oracle, bin, support, postgres. А вот наиболее популярные сочетания логинов и паролей для взлома девайсов по протоколу Telnet:
Эта табличка наглядно демонстрирует, что по Telnet злодеи традиционно пытались авторизоваться в админке различных камер видеонаблюдения, таких как Anko, TP-Link, Dahua или CNB. Кроме того, для перебора паролей по этому протоколу очень часто берут широко используемые логины вроде admin, test и telnet.
Однако технологии не стоят на месте, и с определенного момента вирусописатели взялись за автоматизацию процедуры взлома. Так, если трояна удалось запустить в скомпрометированной системе, он может попытаться вытащить из различных источников вроде файла ssh/known_hosts или bash_history сведения о хостах, к которым устройство ранее получало доступ, и попытаться взломать их. Другие трояны поступают гораздо проще: генерируют диапазон IP-адресов и в цикле пытаются постучаться на стандартные для SSH и Telnet порты. Плюс такого подхода заключается в его относительной простоте, недостаток в значительном объеме создаваемого паразитного трафика.
Примерно три года назад в ассортименте малвари для умных устройств было не менее десятка разных модификаций троянов Fgt, Mrblack, Mirai, разнообразных флудеров и DDoS-ботов. Однако после того как исходники Mirai в сентябре 2016 года оказались в свободном доступе на сайте hackforums.com, бесчисленные клоны этого трояна практически вытеснили с рынка остальных конкурентов. BrickBot, Sora, Wicked, Omni, Owari все это вариации на тему Mirai с дополнениями все новых и новых соавторов.
Mirai
По данным исследователей Сэма Эдвардса и Иоанниса Профетиса из Rapidity Networks, в 2016 году троянец Linux. Mirai заразил более 380 тысяч умных устройств по всему миру, став причиной множества нашумевших DDoS-атак. После того как исходники этого трояна были выложены в паблик, изучением принципов его работы тут же заинтересовались не только специалисты по информационной безопасности, но и тысячи анонимных вирусописателей.
Сам по себе исходный код Mirai тоже имеет ряд заимствований из других источников и во многом базируется на архитектуре одного из DDoS-ботов, распространявшихся весной 2016 года. Этот бот, в свою очередь, имеет схожие черты с троянами семейства Fgt, известного аж с 2014 года, оттуда была явно скопирована функция флуда и генератор псевдослучайных данных для заполнения пакетов, отсылаемых на атакуемые хосты. Такое «перекрестное опыление», в целом характерное для разработчиков open source софта для Linux, по всей видимости, прижилось и в среде ориентирующихся на эту платформу вирусописателей. Все ранние версии Mirai для разных аппаратных архитектур были статически скомпилированы и использовали стандартную библиотеку uClibc.so, предназначенную для встраиваемых систем на базе uCLinux.
При запуске троян выделял область памяти, в которую загружал необходимый для его работы конфиг. Некоторые конфигурационные строки хранились в зашифрованном виде в самом файле ELF и перед загрузкой в память расшифровывались. В частности, таким образом передавался адрес и порт управляющего сервера, User-Agent и другие параметры HTP-запросов. Отсюда становится понятен способ, с помощью которого исследователи определили адрес командного центра этого ботнета. Еще одна примечательная функция ранних версий Mirai способность трояна в отдельном потоке убивать работающие процессы других конкурирующих ботов, читая в непрерывном цикле содержимое папки /proc/. Список названий процессов хранился в конфиге. А вот в обработчике конфига авторы Mirai допустили небольшую ошибку: список процессов читался блоками по 2048 байт, после чего поиск названия выполнялся внутри этого буфера. Если искомое значение располагалось на границе блока, оно игнорировалось, и такой процесс избегал общей печальной участи. Чтобы предотвратить случайную выгрузку собственного процесса, троян размещал в его папке файл .shinigami при обнаружении файла с этим именем процесс автоматически исключался из «расстрельного списка». Однако в самом коде зловреда был зашит лимит жизнедеятельности на зараженном устройстве: по истечении недели непрерывной работы процесс Mirai автоматически завершается. Описываемая здесь ранняя версия Mirai умела выполнять с десяток команд, среди которых команды на установку и завершение TCP-соединения с указанным хостом и различные виды флуда по протоколам HTP, UDP и UDP over GRE. Также с помощью этого трояна можно было организовать DNS food и TSource Query Flood, то есть целый комплекс атак на отказ в обслуживании.
По данным исследователей Сэма Эдвардса и Иоанниса Профетиса из Rapidity Networks, в 2016 году троянец Linux. Mirai заразил более 380 тысяч умных устройств по всему миру, став причиной множества нашумевших DDoS-атак. После того как исходники этого трояна были выложены в паблик, изучением принципов его работы тут же заинтересовались не только специалисты по информационной безопасности, но и тысячи анонимных вирусописателей.