[Перевод] Загадочное дело о Raspberry Pi в шкафу для сетевого оборудования
Как-то я получил от своего отца (мы вместе с ним работаем на одного клиента) сообщение с приложенной фотографией.
Сообщение от отца
Я попросил его отключить устройство, положить в безопасное место, сфотографировать со всех сторон и сделать образ SD-карты (потому что в основном я работаю удалённо). Я работал над многими проектами с Raspberry Pi и был уверен, что разберусь в назначении этого устройства.
В тот момент ещё никто не думал, что оно может быть зловредным, скорее, все думали, что это экспериментирует кто-то из сотрудников клиента.
Устройство состояло из трёх частей:
- Raspberry Pi B первого поколения
- Загадочный USB-донгл
- SD-карта на 16 ГБ (с высокой скоростью)
USB-донгл и SD-карта
Доступ к этому небольшому шкафу имеет очень ограниченный круг людей. Ключ от этой двери был только у четырёх человек:
- У менеджера
- У завхоза
- У моего коллеги
- У меня
Никто из них ничего не знал, поэтому я спросил своих коллег из отдела ИТ, но они тоже были в недоумении. Я слышал, что некоторым людям платят за то, чтобы они устанавливали такие устройства в места, где их быть не должно, и поэтому мне стало очень интересно выяснить, чем же оно на самом деле занимается.
В помощь для решения этой загадки я призвал Reddit и пользователи сайта почти сразу идентифицировали донгл как устройство с микропроцессором, сравнимым по возможностям с самой Rasberry Pi: nRF52832-MDK. Очень мощное устройство для чтения WiFi, Bluetooth и RFID.
USB-донгл nRF52832-MDK
Без всяких сомнений, он обеспечивал старому Raspberry Pi подключение к WiFi и Bluetooth. Отлично, так значит, у этой штуки теперь и WiFi есть…
SD-карта содержала несколько разделов. Большинство имело формат ext4 (linux) и один fat16 (загрузочный).
Так образ выглядит в GParted
Отлично, примонтируем его.
Мой debian box указал мне на первую серьёзную улику: это установка resin.
Разделы Resin на SD-карте
Что такое Resin?
Resin (теперь переименованный в Balena) — это платный веб-сервис IOT, в котором можно генерировать образы для устройств IOT, развёртывать эти устройства и обмениваться обновлениями и данными с resin.
Также Resin устанавливает на устройство VPN, чтобы собранные данные передавались защищённо. Очевидно, устройство должны были забрать, потому что оно оставляет след — сервис-то платный.
Присмотримся к разделам внимательнее
Первый раздел называется «resin-boot».
Что-нибудь бросается в глаза? Здесь есть config.json
. Сразу джекпот?
config.json в разделе resin-boot
Что можно извлечь из этого файла:
- Приложение, развёрнутое на этом resin-устройстве, называется «logger». Плохой знак.
- У нас есть username. Похоже, это имя пользователя аккаунта resin, связанного с этим устройством.
- Подтверждение того, что устройство использовало VPN через порт 443
- Дата регистрации. Оно было зарегистрировано (или впервые развёрнуто/настроено?) 13 мая 2018 года.
К слову об имени пользователя…
Загуглив имя пользователя, найденное в файле config.json, я обнаружил человека в том же городе, где было найдено Pi. Компания проверила свои записи об этом человеке, но ничего не нашла.
Достаточно странно, что я нашёл веб-сайт 2001 года, на котором родители «одарённых детей» писали статьи о них и по какой-то причине подписывали свои статьи домашними адресами и телефонами. Итак, у меня есть фамилия и адрес всей этой семьи.
Не тот сайт, но похожий
Это может быть ложным следом, ведь одинаковые имена пользователей обычно используются множеством людей, но давайте просто запомним это имя.
resin-data
В папке data не хранилось никаких данных (читай: собираемых данных), но в ней лежало сильно обфусцированное приложение на nodejs, и я до сих пор не знаю точно, что оно делает. Похоже, оно общается через последовательное соединение с донглом, но я не могу разобраться, какие данные оно собирает. Могу только предположить, что приложение собирало профили движения устройств Bluetooth и WiFi по соседству (рядом с офисом менеджеров) и, возможно, сырые WiFi-пакеты.
Однако я обнаружил нечто гораздо более интересное: файл LICENSE.md
.
Скриншот файла LICENSE.md
Странно… Зачем это приложение на nodejs хранит конфиденциальное ПО? Я загуглил компанию из заголовка Copyright, и угадайте, что я нашёл?
Моему пониманию не поддаётся, почему сооснователь компании мог бы распространять эти устройства по городу, но…
Получаем домашний адрес нападавшего
Ещё одну очень интересную деталь я нашёл в третьем разделе (resin-state
), это был файл по пути /root-overlay/etc/NetworkManager/system-connections/
. Файл называется resin-wifi-01 и угадайте, что в нём находится?
Внутри содержались параметры и пароль сети WiFi, которую использовали для настройки устройства (или для его тестирования). Это точно не была сеть WiFi компании. И что же делать, если нужно найти место, соответствующее имени WiFi? Заходим на wigle.net, вводим SSID (=имя WiFi), и сайт сообщает, в каком месте мира он находится.
Место и имя изменены
Помните адрес с сайта родителей одарённых детей? По данным Wigle.net, именно по нему настраивали наше устройство Pi.
Как и когда Pi попало в шкаф?
Я проверил логи DNS и обнаружил конкретные дату и время, когда устройство Pi впервые было замечено в сети. Я проверил логи RADIUS, чтобы понять, кто из сотрудников был на территории в это время, и увидел множество сообщений об ошибках, что к WiFi пытался подключиться деактивированный аккаунт.
Этот деактивированный аккаунт принадлежал бывшему сотруднику, который (по какой-то причине) договорился с руководством о том, что ему оставят на несколько месяцев ключ, прежде чем он не вынесет все свои вещи из здания (не спрашивайте меня, почему так случилось…).
Что было дальше
Потом этим вопросом занялся юридический отдел, я выполнил свою роль, остальное не относилось к моим должностным обязанностям.
Для меня это была очень интересная головоломка, и я хотел бы поблагодарить всех пользователей Reddit, которые помогли мне собрать все её фрагменты.