Jump to content
Sign in to follow this  
mr.save

Потрошим шпионскую «малину»

Recommended Posts

Недавно мы с коллегами случайно нашли в серверной неопознанный одноплатник Raspberry Pi — проанализировали его (не без помощи сообщества с Reddit) и даже сумели вычислить владельца вредоносной «малины». И сейчас я расскажу, как нам это удалось.

На прошлой неделе мой коллега прислал мне вот такое сообщение с фото.

Message.jpg.319993643ba7ef54c1fbd9ecbd01f422.jpg

Я попросил его отключить «малину», поместить в безопасное место, отфотографировать все части одноплатника и снять образ с SD-карты (поскольку сам я в основном работаю удаленно). Я часто имел дело с Raspberry Pi и был уверен, что смогу выяснить, чем занимается эта машинка.

В тот момент никто не думал, что «малина» окажется вредоносной, — скорее полагали, что кто-то из сотрудников фигней мается.

Части одноплатника

Наша «малина» состояла из трех частей:

  • Raspberry Pi (модель B) первого поколения;
  • таинственный электронный ключ;
  • карта SD на 16 гигов (быстрая).

Parts.thumb.jpg.5a43fed3e2b827ae42c9d74751ce11f1.jpg

Первое, что нужно сделать: опросить всех, кто имеет доступ к серверной

Число людей, которые имеют доступ к этому шкафу, очень невелико — ключ от серверной есть только у четырех человек:

  • руководитель;
  • завхоз;
  • мой коллега;
  • я.

Никто из нас ничего не знал о «малине», так что я спросил других коллег из IT — и озадачил их не меньше. Разумеется, я слышал, что некоторые люди за деньги размещают подобные штуки там, где им не место, — поэтому мне было очень интересно, чем же на самом деле занимается эта конкретная.

Что ж это за ключ?

В поисках разгадки я обратился к сообществу Reddit — и оно меня не подвело. В ключе уверенно опознали микропроцессор nRF52832-MDK — почти такой же мощный, как сам Raspberry Pi.

Это серьезное считывающее устройство для Bluetooth, Wi-Fi и RFID.

Dongle.jpg.ab94233ecf0bd331b6753b7d294dd8a6.jpg

Он, безо всяких сомнений, должен был дать старенькому Raspberry Pi возможность подключаться по Wi-Fi и Bluetooth. Отлично, подумал я, теперь у этой штуковины еще и вайфай есть…

 

Препарируем образ SD-карты

На карте оказалось несколько разделов. Файловой системой большинства из них была ext4 (Linux), а у одного (загрузочного) раздела — FAT16.

GParted.jpg.216ac66771679784c1c1334e8304da67.jpg

Отлично, самое время их вскрыть.

Моя дебиановская песочница принесла первую серьезную подсказку: я обнаружил установленный Resin.

Resin-partitions.jpg.03330508ede5373e6083cb05c33adc2b.jpg

Что за Resin?

Resin (недавно переименованный в Balena) — это платный веб-сервис, где можно генерировать образы для устройств IOT, развертывать их, получать и передавать обновления и данные.

А еще Resin устанавливает на девайс VPN — так что можно безопасно передавать собранные данные. Очевидно, устройство планировали забрать — ведь если использовать платный сервис, это оставляет следы.

Приглядимся к разделам

Первый раздел называется resin-boot.

Resin-boot.thumb.jpg.cda36d33166142dfff9c0bb8ef5e3a28.jpg

Видишь что-нибудь цепляющее взгляд? Правильно — config.json. Неужто мы сорвали джекпот?

config.jpg.2ccb24e53ae4c5ac98281baf17f6cd68.jpg

Что мы можем вытащить из этого файла.

  • Приложение, развернутое на нашем «резиновом» девайсе, называется logger. Ничего хорошего.
  • У нас есть username. По всей видимости, это имя пользователя от аккаунта Resin, связанного с девайсом.
  • Подтверждение того, что девайс использует VPN через порт 443.
  • Дата регистрации. Устройство было зарегистрировано (или развернуто? или настроено?) 13 мая 2018 года.

 

Насчет имени пользователя…

Прогуглив имя из файла config.json, я нашел человека в том же городе, где была обнаружена «малина». Затем компания проверила свои записи о нем, но ничего не нашла.

Как ни странно, по тому же запросу я нагуглил еще и сайт 2001 года, где родители «одаренных детей» пишут статьи о своих чадах и почему-то подписывают их домашним адресом и номером телефона. Так я получил имена и адрес целой семьи.

Gifted.jpg.b606458f224008cfc3c347217aa42804.jpg

 

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

 

resin-data

В директории с данными, собственно, не хранилось никаких данных (в смысле, собранных данных), зато обнаружилось приложение на Node.js, сильно сбившее меня с толку — признаться, я до сих пор не могу четко сказать, чем оно занималось. Кажется, «разговаривало» с ключом через последовательное соединение, но я так и не смог выяснить, что за данные оно собирало. Полагаю, отслеживало движение устройств Bluetooth и Wi-Fi в зоне действия (вокруг кабинетов руководства, между прочим) и, может быть, перехватывало необработанные пакеты Wi-Fi.

Зато я нашел кое-что поинтересней — файл LICENSE.md.

License.jpg.d2da7f0d248d8455c026d1ce5eaf75ac.jpg

Странно… Зачем в такой приложухе на Node.js предупреждение о конфиденциальности? Я прогуглил компанию из копирайта — и знаешь что?

 

Чувак с именем из config-файла — совладелец компании

Почему сооснователь компании раскидывает эти девайсы по городу — выше моего понимания, но ладно…

 

Получаем домашний адрес злоумышленников

Другую интересную деталь я нашел в третьем разделе (resin-state) по адресу /root-overlay/etc/NetworkManager/system-connections/. Файл назывался resin-wifi-01 — и угадайте, что в нем было.

Resin-wifi-01.jpg.122c897deba9105ba1ba58b379c2c25d.jpg

А были в нем учетные данные Wi-Fi, через который настраивали (или тестили) устройство. И это определенно не Wi-Fi нашей конторы. А что мы делаем, когда хотим найти локацию, связанную с именем конкретного вайфая? Идем на wigle.net, вводим SSID (то есть имя вайфая) — и получаем координаты.

location.thumb.jpg.c9bf541298356c20094c139daa57a5f7.jpg

И что ты думаешь? Это адрес тех самых родителей одаренного ребенка. Именно отсюда, согласно Wigle.net, настраивали наш девайс.

Последствия

Как и когда «малина» вообще к нам попала?

Я проверил логи DNS и выяснил точное время, когда «малина» впервые появилась в сети. Следом я проверил логи Radius, чтобы посмотреть, кто из сотрудников находился тогда в помещении, — и увидел кучу сообщений о том, что к Wi-Fi пытается подключиться деактивированный аккаунт.

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

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...