Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
22
Добавлен:
19.04.2024
Размер:
31.35 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

9

ВЗЛОМ ПРОШИВКИ

Прошивка, или микропрограмма, – часть программно-

го обеспечения, которая связывает аппаратный уровень устройства с его основным программным уровнем. Уяз- вимость в этой части устройства может оказать огромное влияние на все его функции.Вотпочему крайне важно выяв-

лять и устранять уязвимости прошивок для защищенных устройств интернета вещей.

В этой главе будет показано, что такое прошивка и как можно по- лучить к ней доступ; затем мы проанализируем ее на наличие уязви- мостей. Начнем с поиска учетных данных пользователя в файловой системе прошивки. Затем эмулируем некоторые скомпилированные двоичные файлы встроенного ПО в составе прошивки для выполне- ния динамического анализа. Также мы модифицируем общедоступ- ное встроенное ПО,добавляя механизм бэкдора,и обсудим,как обна- ружить уязвимую службу обновления прошивки.

Прошивка и операционные системы

Прошивка–этотиппрограммногообеспечения,котороеобеспечива- ет связь и контроль над аппаратными компонентами устройства.Это первый фрагмент кода, запускаемый устройством. Обычно он загру- жает операционную систему и предоставляет очень специфические

Взлом прошивки  245

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

службы времени выполнения для программ, взаимодействуя с раз-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

личными аппаратными компонентами. Большинство электронных

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

устройств, если не все, имеют микропрограммное обеспечение. Хотя микропрограммное обеспечение является более простым

инадежным ПО,чем операционные системы,оно также имеет более строгие ограничения и предназначено для поддержки только кон- кретного оборудования. Напротив, многие устройства IoT работают под управлением чрезвычайно продвинутых сложных операцион- ных систем, которые поддерживают большое семейство продуктов. Например,IoT-устройства на базе Microsoft Windows обычно исполь- зуют операционные системы, такие как Windows 10 IoT Core, Win- dows Embedded Industry (также известна под названием POSReady

или WEPOS) и Windows Embedded CE. В устройствах интернета ве- щей на базе встроенных вариантов Linux часто используются такие операционные системы, как Android Things, OpenWrt и Raspberry Pi OS. С другой стороны, устройства IoT, предназначенные для обслу- живания приложений в реальном времени,которым необходимо об- рабатывать данные с определенными временными ограничениями

ибез задержек в буфере, обычно основаны на операционных систе-

мах реального времени (real-time operating systems,RTOS),таких как BlackBerry QNX, Wind River VxWorks и NXP MQX mBed. Кроме того, «пустые» устройства IoT (без операционной системы), разработан- ные для поддержки простых приложений на основе микроконтрол- леров, обычно выполняют ассемблерный код напрямую, без допол- нительных алгоритмов планирования операционной системы для распределения системных ресурсов. Тем не менее каждая из этих реализаций имеет свою собственную последовательность загрузки с совместимыми загрузчиками.

Вменее сложных устройствах IoT прошивка может играть роль операционной системы. Устройства хранят микропрограммное обе- спечение в энергонезависимой памяти, такой как ПЗУ, СППЗУ или флеш-память.

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

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

Прежде чем вы сможете выполнить реверс-инжиниринг прошивки, вы должны найти способ получить к ней доступ. Обычно это можно сделать несколькими способами,в зависимости отустройства.В этом разделемырассмотримнаиболеепопулярныеметодыизвлечениями- кропрограмм в соответствии с методологией тестирования безопас­

246  Глава 9

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ности микропрограмм OWASP (FSTM), которую вы можете найти по

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

адресу https://scriptingxss.gitbook.io/firmware-security-testing-methodology/.df-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

Часто самый простой способ найти микропрограмму – это посе- тить сайт поддержки поставщика. Некоторые поставщики делают свои микропрограммы общедоступными, чтобы упростить устране- ние неполадок.Например,производительсетевого оборудования TP- Link предоставляет на своем веб-сайте репозиторий файлов проши- вок маршрутизаторов, камер и других устройств.

Если прошивка для конкретного устройства не опубликована, по- пробуйтеспроситьобэтомпоставщика.Некоторыепоставщикимогут просто предоставить вам прошивку. Вы можете напрямую связаться с командой разработчиков, производителем или другим клиентом поставщика. Убедитесь, что лицо, с которым вы связались, уполно- мочено поделиться с вами микропрограммой (имеет разрешение по- ставщика). Определенно стоит попробовать приобрести версию для разработки и окончательную сборку – это сделает ваше тестирование более эффективным, потому что вы сможете увидеть различия меж- ду двумя сборками. Кроме того, в предварительной сборке некоторые механизмы защиты могут отсутствовать. Например, Intel RealSense предоставляет рабочую и производственную версии прошивок для своих камер по адресуhttps://dev.intelrealsense.com/docs/firmware-releases/.

Иногда вам придется собирать прошивку вручную. Некоторых это пугает,но решение есть.Исходный код микропрограммы можетбыть общедоступным, особенно в проектах с открытым исходным кодом. В этих ситуациях можно создать микропрограмму, следуя опублико- ванным производителем пошаговым руководствам и инструкциям. Операционная система OpenWrt, использованная в главе 6,– один из таких проектов микропрограмм с открытым исходным кодом; в ос- новном она используется во встроенных устройствах для маршрути- зации сетевоготрафика.Например,микропрограмма маршрутизато-

ров GL.iNet основана на OpenWrt.

Другой распространенный подход – изучение мощных поисковых систем, таких как Google, с помощью Google Dork1. При правильном запросе в интернете можно найти почти все. Найдите в Google рас- ширения двоичных файлов, размещенные на платформах для обме-

на файлами, таких как MediaFire, Dropbox, Microsoft OneDrive, Google Drive или Amazon Drive. Часто можно встретить образы микропро- грамм, загруженные клиентами на форумы или в блоги клиентов и корпоративные блоги. Посмотрите раздел комментариев на сайтах для общения между покупателями и производителями. Вы можете найти информацию о том, как получить микропрограмму, или даже обнаружить, что производитель отправил заказчику сжатый файл либо ссылку для загрузки микропрограммы с платформы обмена файлами. Вот пример запроса Google Dork для поиска файлов про- шивки для устройств Netgear:

1GoogleDorkилиGoogleDorkQueries(GDQ)–этонаборпоисковыхзапросов для выявления грубейших дыр в безопасности­ .– Прим.ред.

Взлом прошивки  247

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

intitle:"Netgear" intext:"Firmware Download"

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-x cha

 

 

 

 

Параметрintitle указываеттекст,которыйдолженприсутствовать в заголовке страницы,тогда как параметр intext указываеттекст,ко- торый должен существовать в содержимом страницы. Этот поиск дал результаты, показанные на рис. 9.1.

Рис.9.1.Обнаружение ссылок на прошивки для устройств Netgear с помощью

Google Dork

Не пренебрегайте и открытыми облачными хранилищами. По- пробуйте поискать в бакетах (корзинах) хранилища Amazon S3; если повезет, вы сможете найти микропрограммное обеспечение в неза- щищенной корзине поставщика. (Чтобы соблюсти законность, убе- дитесь, что бакеты раскрыты легально и что поставщик разрешил доступ к файлам.) Инструмент S3Scanner может перечислить бакеты Amazon S3 поставщика. Инструмент написан на Python 3, который предварительно установлен в Kali Linux.Вы можете загрузить прило- жение с помощью команды git:

$ git clone https://github.com/sa7mon/S3Scanner

Затем перейдите в папку приложения и установите необходимые зависимости с помощью команды pip3,котораятакже доступна в Kali Linux:

#cd S3Scanner

#pip3 install -r requirements.txt

Теперь вы можете найти бакеты Amazon S3, принадлежащие по- ставщику оборудования и выяснить, какие из них предоставляют до- ступ к встроенному ПО:

248  Глава 9

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

-

 

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

$m python3 s3scanner.py vendor_potential_buckets.txt

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

df

-xcha

 

e

2020-05-01 11:16:42

Warning: AWS credentials not configured. Open buckets will be shown as-x cha

 

e

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

df

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

closed. Run: `aws configure` to fix this.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:45 [found] : netgear | AccessDenied | ACLs: unknown - no aws creds

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:46 [not found] : netgear-dev

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:46 [not found] : netgear-development

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:46 [not found] : netgear-live

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:47 [not found] : netgear-stag

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:47 [not found] : netgear-staging

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:47 [not found] : netgear-prod

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:48 [not found] : netgear-production

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:48 [not found] : netgear-test

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:52 [found] : tplink | AccessDenied | ACLs: unknown - no aws creds

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020-05-01 11:16:52

[not found] : tplinl-dev

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Параметр vendor_potential_buckets.txt указывает файл потенци- альных имен сегментов,который можетпопробовать инструмент.Вы можете создать свой собственный аналогичный пользовательский файл и указать имена поставщиков, за которыми следуют популяр- ные суффиксы для сегментов S3, например -dev, -development, -live, -staging и -prod. Первоначально инструмент выводит предупрежда- ющее уведомление об отсутствии ваших учетных данных AWS,но это ожидаемо,и вы можете его проигнорировать.Затем выводятся обна- руженные бакеты S3 с указанием статуса доступа.

Если устройство поставляется с сопутствующим программным обеспечением,возможно,стоит попробовать попробовать проанали- зировать клиентские приложения. Анализируя сопутствующие мо- бильные приложения или так называемые толстые клиенты устрой- ства – полнофункциональные компьютеры, для работы которых не требуется сетевое соединение, – вы можете обнаружить жестко за- программированные конечные точки, с которыми взаимодействуют приложения. Одна из этих конечных точек может быть той, которая использовалась для автоматической загрузки микропрограммы во время процесса обновления. Независимо от того, аутентифицирова- на ли эта конечная точка, вы должны иметь возможность загружать микропрограммное обеспечение путем анализа клиентов. Можете найти методологию анализа таких приложений в главе 14.

Если устройство получает по сети обновления и исправления оши- бок от производителя, вы можете эффективно провести атаку типа «человек посередине» во время обновления прошивки. Эти обнов- ления передаются по сетевому каналу с центрального сервера или кластеров серверов на каждое подключенное устройство. В зависи- мости от сложности логики приложения, которое загружает микро- программное обеспечение, самым простым решением может быть перехват трафика. Для этого на устройстве должен быть установлен доверенный сертификат (при условии, что передача происходит по HTTPS),который позволит перехватыватьтрафик с помощью сетево- го сниффера,технологии отравления (например,отравление кеш-па-

Взлом прошивки  249