У меня дома валялись два роуте­ра TP-Link от ста­рых про­ектов. Нор­маль­ный человек выкинул бы их или отнес на перера­бот­ку. Я решил вскрыть их в бук­валь­ном смыс­ле и пос­мотреть, что про­исхо­дит внут­ри, ког­да нет ни схем, ни докумен­тации, ни паролей — толь­ко муль­тиметр, паяль­ник и запас тер­пения.

Спой­лер: через пару часов у меня был дамп про­шив­ки, струк­тура фай­ловой сис­темы и хеш пароля, который лома­ется за секун­ды. Рас­ска­жу, как это устро­ено, потому что этот класс атак под­ходит для огромно­го количес­тва устрой­ств — IP-камер, про­мыш­ленных кон­трол­леров, умных зам­ков и вооб­ще любой желез­ки, где внут­ри живет Linux.

warning

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

 

Почему физический доступ — это game over

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

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

Ос­новные интерфей­сы, которые встре­чают­ся на боль­шинс­тве пот­ребитель­ских устрой­ств:

  • UART — самый цен­ный. Пос­ледова­тель­ный порт, через который заг­рузчик и ядро выводят отла­доч­ные логи. Через него же чаще все­го и заходят в пер­вую оче­редь — если повезет (а везет поч­ти всег­да), мож­но получить инте­рак­тивную обо­лоч­ку.
  • SPI — шина, по которой про­цес­сор обща­ется с флеш‑памятью. Под­клю­чив­шись к ней прог­рамма­тором, мож­но счи­тать про­шив­ку целиком, даже если основной про­цес­сор не работа­ет.
  • I2C — мед­ленная шина для перифе­рии и EEPROM. В EEPROM час­то лежат нас­трой­ки, MAC-адре­са и иног­да пароли в откры­том виде.
  • JTAG — отла­доч­ный интерфейс стан­дарта IEEE 1149.1, дающий пря­мой дос­туп к про­цес­сору: поз­воля­ет оста­нав­ливать его, выпол­нять код пошаго­во, читать любую память и записы­вать в нее дан­ные.

Я сос­редото­чусь на UART и SPI — это­го хва­тает для боль­шинс­тва прак­тичес­ких задач, а обо­рудо­вание понадо­бит­ся сов­сем недоро­гое.

 

Подопытные: что внутри у бюджетного роутера

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

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии