# dd if=/dev/wd1a of=fs.bin bs=1
30081024+0 records in
30081024+0 records out
30081024 bytes transferred in 379.838 secs (79194 bytes/sec)
После этого в файл fs.bin был переписан точный образ платы CompactFlash устройства NetStructure 7110. Теперь можно было приступить к извлечению строк любых печатных ASCII-символов и поиску любых интересных текстовых частей, сохраненных на плате:
strings fs.bin > fs.strings
Просматривая строки выводного текстового файла (в этом примере fs.strings), можно обнаружить отдельные команды сетевой конфигурации (ifconfig, route add) и некоторые жестко запрограммированные IP-адреса. Наибольшее значение имеет следующая строка, которая непосредственно идентифицирует записанные на плате CompactFlash данные. В данном случае плата является файловой системой операционной системы BSD, одной из разновидностей UNIX:
@(#) Copyright (c) 1990, 1993
The Regents of the University of California. All rights
reserved.
@(#)boot.c 8.1 (Berkeley) 6/11/93
/bsd
Зная, что на плате постоянной запоминающей памяти записана операционная система BSD, можно попытаться «смонтировать» плату к каталогу /mnt/fs (с указанием опции только для чтения, чтобы предотвратить случайную перезапись оригинальных данных платы). В результате может быть получен доступ к файловой системе.
# mount –r –a /dev/wd1a /mnt/fs
Если это удастся осуществить, с помощью команды ls – la /mnt/fs будет выведена следующая информация:
total 4290
drwxr-xr-x 5 root 100 512 Jan 2 1998 .
drwxr-xr-x 3 root wheel 512 Dec 24 08:23 ..
-rwxr-xr-x 1 root 100 64705 Sep 23 1999 boot
-rw-rw-r– 1 root 100 501972 Sep 24 1999 bsd.gz
-rw-rw-rw– 1 root 100 1253 Jan 2 1998 config.pgz
-rw-rw-rw– 1 root 100 1248 Jan 1 1998 configold.pgz
-rwxr-xr-x 1 root 100 292 Sep 24 1999 debug
drwxr-xr-x 2 root 100 512 Sep 24 1999 etc
-rw-rw-r– 1 root 100 3791468 Sep 24 1999 filesys.gz
drwxrwxr-x 2 root 100 512 May 16 1998 logs
drwxrwxr-x 2 root 100 512 Sep 24 1999 service
На плате файловая система записана в архивированном виде в файлах bsd.gz и filesys.gz. С помощью утилиты gunzip файловую систему можно будет разархивировать и приступить к подготовке монтирования образа следующим способом:
# vnconfig –cv /dev/vnd0c filesys
Использование команды vnconfig позволит подготовить файл образа к использованию его в виде файловой системы. В результате станет возможным обращаться к файлу образа как к диску. Введя команду disklabel vnd0, можно получить следующее:
# /dev/rvnd0c:
type: ST506
disk:
label:
flags:
bytes/sector: 512
sectors/track: 2048
tracks/cylinder: 1
sectors/cylinder: 2048
cylinders: 16
total sectors: 32768
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
8 partitions:
# size offset fstype [fsize bsize cpg]
a: 32768 0 4.2BSD 1024 8192 32 # (Cyl. 0–15)
c: 32768 0 unused 0 0 # (Cyl. 0–15)
Наконец, будет смонтировано неотформатированное устройство /dev/ vnd0c, созданное командой vnconfig:
# mount –r –a /dev/vnd0c /mnt/filesys
После успешной монтировки команда ls – la /mnt/filesys выведет следующее:
total 11
drwxr-xr-x 10 root 100 512 Sep 24 1999 .
drwxr-xr-x 7 root wheel 512 Dec 24 14:23 ..
-r-xr-xr-x 1 root 100 206 Sep 23 1999 .profile
drwxr-xr-x 2 root 100 1024 Sep 24 1999 bin
drwxr-xr-x 2 root 100 1024 Sep 24 1999 debug
drwxr-xr-x 2 root 100 512 Sep 24 1999 dev
drwxr-xr-x 2 root 100 512 Sep 24 1999 etc
drwxr-xr-x 2 root 100 512 Sep 24 1999 flash
lrwxr-xr-x 1 root 100 3 Sep 24 1999 sbin -> bin
drwxr-xr-x 5 root 100 1024 Sep 24 1999 shlib
drwxr-xr-x 2 root 100 512 Sep 24 1999 tmp
drwxr-xr-x 3 root 100 512 Sep 24 1999 var
В конечном счете будет создана структура каталогов, которая полностью соответствует стандартной структуре файловой системы. После ее успешной монтировки можно обращаться ко всей файловой системе (которая была записана на плате CompactFlash в заархивированном виде), перемещаться по всей структуре каталогов и по желанию читать файлы.
Реинжиниринг генератора пароля
Во время исследования восстановленной из файла filesys.gz файловой системы было замечено, что ряд существовавших на CompactFlash прикладных программ были удалены. К этим приложениям относились прикладные программы, которые включали файлы gdb и tcpdump. Оба эти файла были найдены в каталоге /debug. В каталоге /bin был записан файл xmodem, который мог использоваться для загрузки в удаленный компьютер по линиям связи дополнительных инструментальных средств устройства. К подобным инструментальным средствам относится ряд диагностических прикладных программ (cr_diag для платы Rainbow CryptoSwift Accelerator, ser_diag для последовательного порта, exp_diag для сетевой интерфейсной карты и lm_diag для синхронизации системы).
Известны и другие прикладные программы, специально разработанные для устройства Intel NetStructure 7110. К ним относятся, например, программы
saint, ipfWasm, ipfWcmp, gen_def_key и
gp. Выводимые программой
gp строки позволяют понять использование строк с MAC-адресом или интерфейсом Ethernet, что само по себе интересно и гарантирует успех дальнейшего исследования.
Usage: gp [aa:bb:cc:dd:ee:ff | ifname]
С помощью компилятора rec, специально созданного для решения задач реинжиниринга (www.backerstreet.com/rec/rec.htm), было определено, что приложение gp, получив MAC-адрес, преобразует его к используемому по умолчанию паролю администратора. К счастью, приложение gp было откомпилировано со всеми допустимыми опциями отладки, что существенно облегчило процесс реинжиниринга. В каждом устройстве NetStructure пароль администратора образован из MAC-адреса сетевой интерфейсной платы, установленной в устройство. Во время начальной загрузки устройства и перед каждым подключением к системе MAC-адрес передается пользователю через последовательный порт пульта управления. Пароль администратора может быть введен с пульта управления через последовательный порт, если у злоумышленника есть физический доступ к машине, или удаленно, если модем подключен к устройству NetStructure и сконфигурирован для удаленного доступа. Этот пароль отменяет любые параметры настройки и позволяет получить полный контроль над устройством. Программа проверки идеи и ее исходный текст доступны по адресу www.atstake.com/research/tools/ipivot.tar.gz. Она демонстрирует возможности преобразования MAC-адреса в пароль.
Резюме
В этой главе были рассмотрены различные вопросы хакинга аппаратных средств. Хакинг аппаратных средств может быть разделен на два этапа: атаки на корпус устройства и его механическую часть и атаки на электрическую схему устройства. Атаки на корпус устройства и его механическую часть направлены на исследование корпуса устройства и его защитные механизмы. Атаки на электрическую схему устройства направлены на реинжиниринг внутренних электрических схем устройства и их исследование. В зависимости от целей атаки и объекта нападения выбор способов реализации атаки может сильно различаться. Чаще всего хакинг аппаратных средств применяется для извлечения выгоды из получения доступа к системе защиты (типа поиска секретных данных или повышения собственных привилегий) или изменения функциональных возможностей устройства.
В пункте «Вскрытие устройства: атаки на корпус устройства и его механическую часть» были рассмотрены вопросы, связанные с защитными механизмами противодействия вскрытию устройства, его демонстративной защиты, обнаружения вскрытия и реакции устройства на него. Обычно эти защитные механизмы используются для предотвращения доступа к компонентам устройства и его данным. Были рассмотрены причины и методы вскрытия корпуса устройства, идентификации внешнего интерфейса, анализа любых используемых протоколов передачи данных, поскольку их порты часто используются для конфигурации устройства и извлечения представляющей интерес информации типа паролей или передаваемых в открытом виде данных. Также было рассказано об электромагнитных и радиочастотных излучениях устройств, их восприимчивости к электростатическому разряду. Поскольку все электронные устройства являются источником электромагнитных излучений, то это может быть использовано атаками пассивного мониторинга.
В пункте «Внутренний анализ устройства: атаки на электрическую схему» были рассмотрены вопросы реинжиниринга схем устройства и способы атак на них. Вероятно, изложенный в этом пункте материал является основным для хакинга аппаратных средств. Воссоздание электрической схемы устройства по печатной плате является решающим, самым полезным этапом при определении любых ошибок проектирования и направления возможных атак. В основном атаки ориентированы на извлечение данных из микропроцессоров или внешних компонент памяти, чтобы извлечь из устройства пароли или другую секретную информацию. Использование устройства в непредусмотренных условиях эксплуатации, например изменяя напряжение, температуру или параметры синхронизации, иногда приводит к неожиданным для разработчика результатам, из которых злоумышленник может извлечь выгоду. Также были рассмотрены современные методы хакинга аппаратных средств, включая способы удаления герметизации эпоксидной смолой, которая используется для предотвращения вскрытия и исследования устройства, анализ корпусов интегральных схем и кремниевых чипов, который может помочь для извлечения кода программы, состояния выполняемых устройством функциональных возможностей или криптографических компонент.