Если ты думаешь, что контроллеры, которые ставят в зданиях и на заводах, защищены намного лучше, чем домашние гаджеты, то эта статья тебя разубедит. Я возьму девайс под названием Linx-150 и на его примере покажу, как работать с ПЛК на Linux. По этой схеме ты сможешь повторить исследование с любым другим устройством.
Пару лет назад я написал две статьи — одну о системах управления зданиями (BMS), вторую — о том, как их можно поломать со стороны конечных устройств. Но время идет, интеграция проникает все глубже, и тот же KNX уже отвечает не только за field level, его спокойно можно встретить и на automation level.
В интернете попадаются интересные статьи о том, как реверсить IoT-устройство или IP-камеру. На мой взгляд, у индустриального железа (правильный термин АСУ ТП, на английском ICS) отличий от них нет. За исключением разве что цены и возможного импакта атаки. Одно дело — устроить внезапную светомузыку у кого-то дома, другое — в терминале аэропорта.
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный информацией из этой статьи.
Итак, перед нами Loytec Linx-150. Спасибо Дмитрию Викторову из «Сенсорматики», который предоставил нам экземпляр для изучения.
С чего начинать работу с таким устройством? Как бы банально это ни звучало, но первым делом идем на официальный сайт и читаем подробности. Здесь меня ждал небольшой сюрприз: просто так эту железку не найти, поскольку она как бы старая и уже снята с производства. Почему «как бы»? Сейчас расскажу.
Углубившись в сайт, я нашел вот такую страничку. Здесь есть разные руководства и даташиты, но главное не это.
Файлик со словом firmware в названии сразу же привлек мое внимание. Внутри нашелся целый набор прошивок для разных устройств.
Надо отдать должное вендору: хоть Linx-150 устаревший и снят с производства, но новые прошивки все равно есть. Когда устройство попало ко мне в руки, актуальной прошивкой была 6.4.6, а на момент написания статьи — уже 6.4.10, датированная 24 мая 2019 года. То есть девайс, может быть, и не продается, но активно поддерживается. А это, скорее всего, означает, что он распространенный.
Чтобы проверить эту теорию, заглянем в Shodan, Zoomeye и Censys и посмотрим, как много Linx-150 и других железок Loytec доступно из интернета. А то, может, ты скажешь: «Ну крут, ломанул железку, а она нигде не используется, кроме как у кого-то дома!»
Чтобы не быть голословным, вот несколько скриншотов, по которым понятно, что устройств Loytec в мире предостаточно.
Пока я делал скриншоты, «случайно» нашел очередную железку, к которой подходят дефолтные креды.
Тем временем скачался архив с прошивками. Находим нужную — linx_at91_6_4_10_20190524_0940.dl
.
Первая мысль: это что еще за .dl и что с ним делать? Но старый добрый binwalk подскажет, что внутри. Заодно, чтобы распаковать содержимое, используем ключ -e
.
$ binwalk -e linx_at91_6_4_6_20190213_1030.dl
После распаковки выясняется, что загадочный .dl
— это архив с пакетами .deb
.
Поскольку изначально я разбирал 6.4.6, а когда начал писать эту статью, уже вышла 6.4.10, поступлю просто и буду разбирать фичи баги, которые встречаются и там и там. Тем более что мои сомнения, не станет ли вдруг в 6.4.10 все хорошо, оправдались.
В целом различий между 6.4.6 и 6.4.10 не наблюдается, кроме ключевого файла linx-at91-primary_6.4.10_arm.opk
.
Надеюсь, у тебя в закладках браузера давно поселились Vulners и CVE Detail (если нет, срочно исправляй!). Они позволят нам понять, насколько все печально в исследуемых прошивках. Как видишь, очень много старых версий пакетов.
И это лишь некоторая часть из них. С одной стороны, на этом исследование можно было бы и закончить, но если уж копать, то надо идти глубже.
Как понять, какие бинарники заслуживают внимания в первую очередь? Я, конечно, мог бы напустить тумана и сказать, что для этого нужны годы опыта, особое чутье и ежедневные духовные практики. Но подсказка лежит на виду: у нас есть две версии прошивок (6.4.6 и 6.4.10) и отличается в них один файл linx-at91-primary_xxx
. Про еще одну подсказку поговорим, когда будем смотреть веб-интерфейс и заходить по SSH.
Применяем binwalk к этим файлам и смотрим, что получилось.
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
1 год7690 р. |
1 месяц720 р. |
Я уже участник «Xakep.ru»
Читайте также
Последние новости