Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.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

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

t

 

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

 

NOW!

r

 

 

 

 

 

 

BUY

 

 

Автоматизация анализа прошивки

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

ИнструментFirmwalkerможетавтоматизироватьпроцесссбораиана-

 

 

 

 

 

 

 

лиза информации,описанный выше.Установите инструмент с https:// github.com/craigz28/firmwalker/, а затем запустите:

$ git clone https://github.com/craigz28/firmwalker $ cd firmwalker

$ ./firmwalker.sh ../d6000/_D6000-V1.0.0.41_1.0.1.bin.extracted/squashfs-root/

***Firmware Directory***

../d6000/_D6000-V1.0.0.41_1.0.1.bin.extracted/squashfs-root/

***Search for password files***

##################################### passwd /usr/etc/passwd

/usr/bin/passwd

##################################### shadow

##################################### *.psk

***Search for Unix-MD5 hashes***

***Search for SSL related files***

##################################### *.crt /usr/etc/802_1X/Certificates/client.crt

##################################### *.pem /usr/etc/key.pem /usr/etc/802_1X/CA/cacert.pem /usr/etc/cert.pem

/usr/etc/802_1X/PKEY/client.key

##################################### *.cfg

/userfs/romfile.cfg

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

Netgear исправил уязвимость, вызванную жестко заданными учет- ными данными в последней прошивке,и опубликовал рекомендации в бюллетене по безопасности­ (https://kb.netgear.com/30560/CVE-2015- 8288-Use-of-Hard-coded-Cryptographic-Key/), который информирует кли-

ентов об этой проблеме.

Эмуляция прошивки

В этом разделе мы покажем вам, как эмулировать прошивку. Сделав это, мы сможем выполнять тесты динамического анализа, которые возможны только при нормальной работе микропрограммы. Задей- ствуем два метода эмуляции: двоичную, с использованием Quick

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

 

 

 

 

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

 

 

Emulator (QEMU), и полную эмуляцию микропрограммы с ипользо-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

ванием FIRMADYNE. QEMU – это эмулятор и анализатор компьютера

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

с открытым исходным кодом, который работает с несколькими опе- рационными системами и программами; FIRMADYNE (https://github. com/firmadyne/firmadyne/) – платформа для автоматизации эмуляция и динамического анализа микропрограмм на базе Linux.

Двоичная эмуляция

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

Чтобы эмулировать отдельный двоичный файл, сначала нужно определить порядок байтов в нем и архитектуру ЦП, для которой он был скомпилирован. Вы можете найти основные двоичные фай- лы в дистрибутивах Linux в папке bin и перечислить их с помощью команды­ ls, предустановленной в Kali Linux:

$ ls -l ./squashfs-root/bin/

 

 

 

 

total 492

 

 

 

 

 

 

lrwxrwxrwx 1 root

root

7

Jan 24

2015

ash -> busybox

-rwxr-xr-x 1 root

root 502012 Jan 24

2015

busybox

lrwxrwxrwx 1 root

root

7

Jan 24

2015

cat -> busybox

lrwxrwxrwx 1

root

root

7

Jan 24

2015

chmod -> busybox

 

 

 

 

 

 

lrwxrwxrwx 1

root

root

7

Jan 24

2015

zcat -> busybox

 

 

 

 

 

 

 

Параметр -l отображает дополнительную информацию о файлах, включая пути символических ссылок (ссылок на другие файлы или каталоги). Как вы видите, все двоичные файлы в каталоге являются символическими ссылками на исполняемый файл busybox. В ограни- ченныхсредах,такихкаквстроенныесистемы,частоестьтолькоодин двоичный файл под названием busybox. Этот двоичный файл выпол- няет задачи, аналогичные задачам исполняемых файлов операцион- ной системы Unix,но используетменьше ресурсов.Злоумышленники

256  Глава 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

успешно атаковали ранние версии busybox, но в последних версиях

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

выявленные уязвимости были устранены.

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Чтобы увидеть формат файла исполняемого файла busybox, ис- пользуйте команду file:

$ file ./squashfs-root/bin/busybox

./squashfs-root/bin/busybox: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped

Формат исполняемого файла соответствует архитектуре ЦП MIPS, которая очень распространена в простых встроенных устройствах. Метка MSB в выходных данных указывает, что исполняемый файл использует обратный порядок байтов (в отличие от вывода, содержа- щего метку LSB, что указывает на прямой порядок байтов).

Теперь мы можем эмулировать исполняемый файл busybox с по­ мощью QEMU.Установите его с помощью­ apt-get:

$ sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemusystemmips qemu-system-x86 qemu-utils

Поскольку исполняемые файлы скомпилированы для MIPS и ис- пользуют обратный порядок байтов, мы будем использовать эмуля- тор QEMU qemu-mips.Чтобы эмулироватьисполняемые файлы с пря- мым порядком байтов, нам нужно выбрать эмулятор, имя которого оканчивается на el, в данном случае qemu-mipsel:

$ qemu-mips -L ./squashfs-root/ ./squashfs-root/bin/zcat

zcat: compressed data not read from terminal. Use -f to force it.

Оставшуюся часть динамического анализа можно выполнить с по­ мощьюфаззинга,отладкиилидажесимвольноговыполнения.Вымо- жете узнать больше об этих методах в книге Денниса Андриеса Prac- tical Binary Analysis (No Starch Press, 2018).

Полная эмуляция микропрограммы

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

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

 

 

 

 

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

 

 

Перед тем как использовать FIRMADYNE, необходимо подготовить

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

среду.Следующиекомандыустановятпакеты,необходимыедлярабо-

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

ты этого инструмента,и клонируют его репозиторий в нашу систему:

$ sudo apt-get install busybox-static fakeroot git dmsetup kpartx netcat-openbsd nmap pythonpsycopg2 python3-psycopg2 snmp uml-utilities util-linux vlan

$ git clone --recursive https://github.com/firmadyne/firmadyne.git

На этом этапе в вашей системе должна быть папка firmadyne. Что- бы быстро настроить инструмент, перейдите в каталог инструмента и запустите ./setup.sh. В качестве альтернативы можно настроить его вручную, следуя инструкциям, приведенным здесь. Следуя указани- ям, вы сможете выбрать подходящие менеджеры пакетов и инстру- менты для вашей системы.

Также потребуется установить базу данных PostgreSQL для хране- ния информации,используемой для эмуляции.Создайте пользовате- ля FIRMADYNE с помощью­ флага -P. В этом примере мы используем в качестве пароля слово firmadyne, как рекомендовано авторами ин- струмента:

$ sudo apt-get install postgresql $ sudo service postgresql start

$ sudo -u postgres createuser -P firmadyne

Затем создайте новую базу данных и загрузите ее со схемой базы данных,доступной в папке репозитория firmadyne:

$ sudo -u postgres createdb -O firmadyne firmware

$ sudo -u postgres psql -d firmware < ./firmadyne/database/schema

Теперь, когда база данных настроена, загрузите предварительно созданные двоичные файлы для всех компонентов FIRMADYNE, за- пустив сценарий download.sh, расположенный в папке репозитория. Использование предварительно созданных двоичных файлов значи- тельно сократит общее время установки.

$ cd ./firmadyne; ./download.sh

ЗатемустановитепеременнуюFIMWARE_DIRтак,чтобыонауказы- вала на текущий рабочий репозиторий в файле firmadyne.config, рас- положенном в той же папке. Это изменение позволяет FIRMADYNE находить двоичные файлы в файловой системе Kali Linux.

FIRMWARE_DIR=/home/root/Desktop/firmadyne

258  Глава 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В этом примере папка сохраняется на рабочем столе,но вам следу-

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

ет заменить путь на местоположение папки в вашей системе. Теперьdf-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

скопируйте или загрузите микропрограмму для устройства D6000 (см. раздел «Взлом маршрутизатора Wi-Fi») в эту папку:

$ wget http://www.downloads.netgear.com/files/GDC/D6000/D6000_V1.0.0.41_1.0.1_FW.zip

FIRMADYNE включает автоматизированный скрипт Python для извлечения микропрограммы. Но, чтобы использовать скрипт, вы должны сначала установить модуль Python binwalk:

$ git clone https://github.com/ReFirmLabs/binwalk.git $ cd binwalk

$ sudo python setup.py install

Мы используем команду python для инициализации и настройки binwalk. Затем нам нужны еще два пакета Python, которые можно установить с помощью­ диспетчера пакетов Python pip:

$ sudo -H pip install git+https://github.com/ahupp/python-magic $ sudo -H pip install git+https://github.com/sviehb/Jefferson

Теперь используйте сценарий FIRMADYNE extractor.py для извле- чения микропрограммы из сжатого файла:

$ ./sources/extractor/extractor.py -b Netgear -sql 127.0.0.1 -np -nk "D6000_V1.0.0.41_1.0.1_

FW.zip" images

>> Database Image ID: 1 /home/user/Desktop/firmadyne/D6000_V1.0.0.41_1.0.1_FW.zip >> MD5: 1c4ab13693ba31d259805c7d0976689a

>>Tag: 1

>>Temp: /tmp/tmpX9SmRU

>> Status: Kernel: True, Rootfs: False, Do_Kernel: False, Do_Rootfs: True

>>>> Zip archive data, at least v2.0 to extract, compressed size: 9667454, uncompressed size: 9671530, name: D6000-V1.0.0.41_1.0.1.bin

>> Recursing into archive ...

/tmp/tmpX9SmRU/_D6000_V1.0.0.41_1.0.1_FW.zip.extracted/D6000-V1.0.0.41_1.0.1.bin

>>MD5: 5be7bba89c9e249ebef73576bb1a5c33

>>Tag: 1

>>Temp: /tmp/tmpa3dI1c

>>

Status: Kernel: True, Rootfs: False, Do_Kernel: False,

Do_Rootfs: True

>>

Recursing into archive ...

 

>>>>Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8252568 bytes, 1762 inodes, blocksize: 131072 bytes, created: 2015-01-24 10:52:26

Found Linux filesystem in /tmp/tmpa3dI1c/_D6000-V1.0.0.41_1.0.1.bin.extracted/squashfs- root!

>>Skipping: completed!

>>Cleaning up /tmp/tmpa3dI1c...

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

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

>> Skipping: completed!

 

 

 

 

 

w

 

 

 

 

w Click

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

>>eCleaning up /tmp/tmpX9SmRU...

 

 

p

df

 

 

 

g

.c

 

 

 

 

 

 

n

 

 

 

 

 

 

 

-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

 

 

 

 

Параметр -b указывает имя, используемое для хранения результа- тов извлечения. Мы решили использовать название производителя микропрограмм. Параметр -sql устанавливает расположение базы данных SQL.Затем мы используем два флага,рекомендованные в до- кументации приложения. Параметр -nk предотвращает извлечение любого ядра Linux, включенного в микропрограмму, что ускоряет процесс. Параметр -np указывает, что никакая параллельная опера- ция не будет выполняться.

Если сценарий завершится успешно, последние строки вывода бу- дут содержать сообщение, указывающее, что обнаружена файловая система Linux . Тег 1 указывает, что извлеченные образы микро- программы находятся в ./images/1.tar.gz.

Используйте сценарий getArch.sh для автоматического определе- ния архитектуры микропрограммы и сохраните его в базе данных

FIRMADYNE:

$ ./scripts/getArch.sh ./images/1.tar.gz

./bin/busybox: mipseb

FIRMADYNE определила формат исполняемого файла mipseb, ко- торый соответствует системам с прямым порядком байтов MIPS. Вы должныбылиожидатьтакогорезультата,потомучтомыполучилитот же результат,когда использовали команду file (см.раздел «Двоичная эмуляция») для анализа заголовка отдельного двоичного файла.

Теперь будем использовать сценарии tar2db.py и makeImage.sh для хранения информации из извлеченного образа в базе данных и соз- дания образа QEMU, который мы можем эмулировать.

$./scripts/tar2db.py -i 1 -f ./images/1.tar.gz $./scripts/makeImage.sh 1

Querying database for architecture... Password for user firmadyne: mipseb

Removing /etc/scripts/sys_resetbutton!

----Setting up FIRMADYNE----

----Unmounting QEMU Image----

loop deleted : /dev/loop0

Мы указываем имя тега с параметром -i и местоположение извле- ченной микропрограммы с параметром -f.

Также следует настроить хост-устройство, чтобы оно могло полу- чить доступ к сетевым интерфейсам эмулируемого устройства и вза- имодействовать с ними. Значит, нам нужно настроить адрес IPv4 и правильные сетевые маршруты. Скрипт inferNetwork.sh может ав- томатически определять соответствующие настройки:

260  Глава 9