Устройство Intel NetStructure 7110 e-Commerce Accelerator (www.intel.com/network/idc/products/accel_7110.htm) является поддерживающим протокол защищенных сокетов SSL криптографическим акселератором, который разгружает главный Web-сервер сети от выполнения криптографических функций, позволяя тем самым увеличить производительность его работы с остальными сайтами сети. Устройство помещается между маршрутизатором и Web-сервером и может обрабатывать до 200 безопасных подключений в секунду. NetStructure 7110 использует последовательный порт при помощи пульта управления, расположенного на передней стенке устройства. Благодаря этому оно может быть скомпрометировано, позволяя злоумышленнику получить полный доступ к внутреннему устройству системы.
Этот пример показывает, каким образом пользователь или администратор может получить доступ к устройству, не имея на то законных полномочий. Устройство было физически вскрыто, и была исследована его операционная система, записанная на простой плате памяти. В результате анализа различных частей кода при помощи программных методов реинжиниринга у некоторых доработок NetStructure 7110 был обнаружен недокументированный пароль администратора, который позволяет контролировать любые настройки системы и получить полный доступ к внутренним компонентам устройства и его файловой системе. Этот пример основан на рекомендациях Брайона Обливиона (Brian Oblivion) «Потайная дверь в устройство NetStructure 7110 через его консоль» (NetStructure 7110 Console Backdoor), www.atstake.com/research/advisories/2000/ipivot7110.html. Пример был проверен на устройстве, изготовленном в апреле 2000 года.
Вскрытие устройства
Устройство NetStructure 7110 размещено в стандартном 19-дюймовом устанавливаемом в стойку корпусе и закрыто малозаметными винтами (рис. 14.13). Вскрытие устройства позволило обнаружить внутри стандартную материнскую плату PC и процессор Pentium II 333 МГц. Плата Rainbow CryptoSwift Accelerator (www.rainbow.com/cryptoswift/PCI.html) была подключена к локальной шине PCI материнской платы. Внутри устройства не оказалось жесткого диска, поскольку файловая система размещается в постоянном запоминающем устройстве на плате запоминающего устройства CompactFlash (www.CompactFlash.org). Не было обнаружено никаких явных защитных механизмов, разве только небольшой слой изоляции (пломба) на внешней стороне корпуса, который был тщательно удален перед вскрытием и заменен по окончании исследования.
Рис. 14.13. Внешний вид устройства Intel NetStructure 7110 e-Commerce Accelerator
Поиск файловой системы
То, что файловая система была полностью размещена на 32-мегабайтной плате CompactFlash, упростило исследование. Из-за небольшого размера постоянной запоминающей флэш-памяти устройства (по сравнению с жесткими дисками размером в 20 Гб и больше для типичных серверов) скопировать ее оказалось просто. На этом этапе цель исследований заключалась в успешном дублировании файловой системы, нахождении двоичного образа любой интересующей исследователя информации и попытке смонтировать диск для дальнейшего анализа.
Сначала плата CompactFlash была отсоединена от устройства NetStructure и вставлена в адаптер PCMCIA CompactFlash, который может быть подключен к портативному или настольному компьютеру (рис. 14.14).
Рис. 14.14. Установка платы CompactFlash в PCMCIA адаптор CompactFlash
Платы CompactFlash совместимы со спецификацией ATA/IDE для жесткого диска, поэтому большинство операционных систем обнаружит их автоматически, не требуя для этого установки дополнительных драйверов. Плата была автоматически обнаружена портативным компьютером типа лаптоп с установленной операционной системой OpenBSD 3.0:
wdc2 at pcmcia1 function 0 “CL ATA FLASH CARD LEXAR ,
TIDALWV, V.17B” port 0xa000/16
wd1 at wdc2 channel 0 drive 0:
wd1: 1-sector PIO, LBA, 31MB, 1004 cyl, 2 head, 32 sec,
64256 sectors
wd1(wdc2:0:0): using BIOS timingsПосле этого воспользовались командой dd для создания точного образа платы CompactFlash. В качестве входного файла был определен /dev/wda1 (который на самом деле является платой CompactFlash), а в качестве выходного – fs.bin. Кроме того, было указано, что размер блока равен 1 байту (минимально возможный размер блока):
# 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-адреса в пароль.