В поисках консольного пароля ...

[ 1 ] Предистория.

Появился у меня на столе этот аппарат VPN Ware System VPNet VSU-2000, а задача была "простая" сбросить
ему VSU Console password, так они его называют в мануалах. Гугл и его товарищи по данной теме
молчали как портизаны, нашёлся только User Guide на эту железку, который можно скачать в свободном
доступе. Конфиг устройства нас не интересует.

Компании VPNet Technologies уже давным давно нет, их прикупила Avaya и теперь поддежку оказывают
они. Доступ к загрузкам можно получить только партнёрам и т.п.

User Guide на VSU-2000 о сбросе пароля говорит следующие 

The VSU console password. Beginning with VPNware 3.1, if you forget this
password and need console access, it can be changed through the
VPNmanager’s Configuration console. Select the VSU Advanced Action tab,
then the Reset Password dialog box.

CAUTION: Do not forget this password. As a security measure, the only way
to bypass an unknown console password is to return the VSU-2000 to the
factory at the customer’s expense.
The password may be up to 31 characters in length and is case-sensitive.
Once the password is set, it must be entered to gain future access to the VSU
console.

A superuser name and password is required to allow the Network 
Administrator to initially configure this VSU through the VPNmanager 
application.

Получается пароль можно сбросить через VPNmanager Series Release 3.7, в инете он есть,
но я нашёл его только в запароленом виде. Беглый брут по славарю, а так же "ZIP Plaintext" нечего
не дали. Крутой видюхи от Nvidia c CUDA у меня нет по этому обычный брут может длиться вечно.
 
Пароли там примерно такого вида av4230g8162005 =( В пароле вроде есть смысловые строки, но гадать
что av - avaya, 4230 - модель, g - gateway , 8162005 - некая дата и таким образом по подобию
подобрать пароль к enterprise_console_only_win_3des.exe занятное занятие. Может быть и можно,
но нужно знать специфику.

Что бы сбросить пароль через VPNmanager нужно знать superuser name and password. Раз пароль стоит
на консоль, то superuser name and password на VPNmanager навернека тоже устанлены. 

Вот тут
есть VPNmanager, но скачать не дают, а тут прошивка, но скачать тоже не дают.

Подключившися на консоль через Null модемный и включив устройство я увидел во такие сообщения.

VPNet Service Unit Bootstrap v1.0.1, 08/14/2000
Copyright (C) 2000 VPNet Technologies, Inc. All Rights Reserved.
Board Information:  Rev. A, Model 2000, Options LS-NZ-STD
SDRAM ................................................................ OK
FLASH Memory (89/99) .... Detected
Encryption Engine ....... Detected
Ethernet-0(Private) ..... Detected
Ethernet-1(Public) ...... Detected

VPNos Boot...flash-0..copy...decompress....executing...OK

Watchdog timer initializing ... Done.
VPNet Service Unit Model 2000 DES ENCRYPTION
Runtime System version 3.1.58, 9/10/2001
Copyright (C) 1996-2001 VPNet Technologies, Inc. All Rights Reserved.

Using flash-0 (Image built Sep 10 2001, 15:55:04)


Probing for devices on PCI bus 0:
IPSec Engine Version: 4400
public port: self test passed
public port: ethernet address 00:60:a1:aa:bb:cc
private port: self test passed
private port: ethernet address 00:60:a1:cc:bb:aa

Checking Non Volatile RAM integrity... OK

Watchdog timer starting ... Done ... timeout is 16 seconds.

Checking Configuration Database... OK
Checking Certificate Database... OK


System started 2-Jan-2070 1:50:23
1 of 1 IPSec Engines Up


Enter VSU console password:

Стал я искать что же можно сделать.

[ 2 ] Компаненты VSU-2000.

CPU - x86 AMD ELAN SC520-100AC - pdf - 133 Mhz
RAM ( DIMM ) - Infinion HYS64V8300GU-8-C 8Mx64 SDRAM C2901003 PC100-222-620 64MB, SYNC, 100Mhz, CL2 - 64MB
             \ - DIMM собран на 8 Infinion HYB39S64800CI-8 - pdf - 8MB
Encryption Processor - HiFn 7751PT6 /3 220E6003EF02 - pdf
SRAM ( Cash ? ) - ISSS IS61LV25616-10T - pdf - 512kB
SEEPROM Fairchild 93C46 - pdf - 128B
FLASH Atmel AT49LV040 - pdf - 512kB
FLASH Module - VPNet Technologies SOHO Flash Card Rev.A - 4MB
             \ Flash Card собран на 4 Micron MT28F008B3 - pdf - 1MB
2 LAN Fast Ethernet Intel 82559ER - pdf - 100Mbit 
PSU - Astec LPS42 - pdf - +5v 11a
			 
[ 3 ] Снимаем дамп с Flash Atmel AT49LV040.

Под рукой был программатор Sterh ST-010 с PLСC переходником по этому с этой флешки дамп снять проще
всего.

Смотрим, что есть внутри. По смещению 0х00050000 лежат два MAC адреса сетвушек "Private" и "Public".
И сразу же захотелось немного пошаманить. Поменять MAC адреса на что-нибудь забавное.







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

По смещению 0х00060000 находится RSA PRIVATE KEY с неким заголовком.

Перед ключём лежит такой заголовок 

62 C3 01 00 77 03

затем два байта нулей

00 00

а затем сам ключ с 0x00060008 по 0x0006037D и заканчивается байтом 0x0A ( LF конец строки )

По смещению 0x00060FAB лежет CERTIFICATE но заголовок тут уже другой

42 03 

затем два байта нулей

00 00

а затем сам сертефикат с 0x00060FAC по 0x000612EC и заканчивается байтом 0x0A ( LF конец строки )

Я попробовал занулить сертефикат и ключь в логе было следующие.

Checking Certificate Database... Corrupted

Если прогнать сертефикат через base64 докодер, то можно получить о нём некоторую информацию. Я не
стал приводить сюда информацию полученную из декодирования, а указал результат выполнения команды
в устройстве после того как скинул пароль.

Your choice [1-5]: 3
Your choice [1-34]: 7

VSU Cert:
--------
VSU Cert Name: VSU23094
Signed By: VPNet Technologies, Inc./CN=VPNetCA_7_98
Expires: 08-14-10

VPNmanager cert:
-----------------
No VPNmanager cert installed.


Когда я занулил сертефикат и ключ


VPNmanager cert:
-----------------
No VPNmanager cert installed.
  Your choice [1-34]:

Как видно сертефикат уже просрочен Expires: 08-14-10 , и по идеи его можно заменить на свой если
конечно понять, что это за сертификат и для чего он используется ( наверно для IPSEC ). 

По смещению 0x0007E000 лежит VPNet Service Unit Bootstrap v1.0.1, 08/14/2000

По смещению 0x0007FFF0 лежат некие 3 E9 19 E3 , если их убрать устройство не грузится,
наверно какой-то флаг обозначающий конец флеша.

Вот собственно и всё, некаких паролей там нет. Дамп этого дела прелогается, единственное я поменял
MAC адреса, кому нужно пропишет свои. В дампе такие маки.

00 60 A1 00 DE AD
00 60 A1 00 BE EF

Дамп флеша vsu_2000_at49lv040.bin ( md5 хеш сумма : b89435bb63beb124fe5d4f6313b53eff )

[ 4 ] Снимаем дамп с SEEPROM Fairchild 93C46 ( U16A на плате ).

Из всех программаторов, что есть в сети для решение этой задачи самым простым решением будет
использовать SERP ( Serial EEPROM Programmer ). Схему можно адаптировать для этой микросхемы, т.к.
поддержка других микросхем нам не нужна. Учитывая datasheet схема примет следующий вид.



Отпаиваем микросхему. Собираем девайс по схеме и подключаем собранное "шаманство" к LPT порту.
Читаем доки на SERP и Datasheet на микруху на придмет настроек. Как оказалось каких-то особых
настроек не требуется, данный тип микросхемы является дефолтной для SERP. Про битовую организацию
можно прочитать в Datasheet

NM93C46 is a 1024-bit CMOS non-volatile EEPROM organized as 64 x 16-bit array.

Если работаем в системе с провами обычного пользователя, то необходимо под админом скопировать 
porttalk.sys в %windir%\system32\drivers\ и выполнить reg файл для импорта данных в реестр. После
этого Win+r -> cmd.exe -> net start porttalk

Теперь у нас всё готово, "шаманство" подключено можно запускать serp.exe обычным двойным кликом с
провами пользователя. Если что-то не так, то SERP ругнётся следующим образом. 



Попробуем сделать dump нашей SEEPROM-ки.

serp> m

93C46 16bit> d



ЫЫЫ байтики! НО!!! Надо же как-то проверить, что считывается у нас всё корректно.

Теперь сделаем несколько дампов в файл, а потом сравним их что бы убидится, что данные считываюься
корректно.

93C46 16bit> r

Выполнил эту команду и сохранил дампы в файлы 93C46L2M8_1.bin , 93C46L2M8_2.bin , 93C46L2M8_3.bin с
помощью Hex Comparison сравнил, как видно все дампы разные :( Получается есть ошибки при 
чтение ( помехи ? ).

Изначально схемку собирал без конденсатора С1 по мативам http://rumlin.narod.ru/up4830toSB0060.htm,
в надежде избавиться от помех добавил конденсатор, как в оригинальной схеме.

Опять сделал 3 дампа, опять ошибки. В итоге решил сделать так. Добиться считываения трёх дампов
которые будут совпадать, если это получится, то один из этих дампов можно принять за финальный
дамп который можно считать с некой долей вироятностью с тем, что действительно хранится в микросхеме.

Полностью ошибки при чтение так и не исчезли, но субъективно их стало меньше, иногда они полностью
проподали, т.е. несколько раз подряд можно сделать корректно чтения с флеша. C1 - я взял на 10Мкф 16в.

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

Для этого сначало я её стёр, затем записал из полученного рание файла дампа, а потом три раза сделал
дамп дабы проверить, что всё корректно записалось.



Вроде всё ок, ну что-ж. И тут пароля увы нет. А я то думал, именно в этих 128 байтах нужно хранить
пароль =) Пора возвращать всё обратно, а так же посмотреть научился ли я чему-нибудь.

Запаиваем всё обратно, включаем работает!

Насамом то деле если посмотреть в даташит pdf на таблицы
 
Figure 17.  Default PCI Configuration Space Field Values
Figure 20.  EEPROM Addressing

то всё станет ясно ( ну или почти всё =) ), что в этой флешке храняться пораметры
( PCI configuration space ) для Encryption Processor HiFn 7751PT6.

Если внимательно посмотреть на лог загрузки, то там есть такие строчки

Probing for devices on PCI bus 0:
IPSec Engine Version: 4400

Правельно, а PCI configuration space нужно где-то хранить. На многих PCI устройствах эти пораметры
как раз храняться в SEEPROM. И это устройство не исключение.

По идеи можно попробовать поменять DEV пораметр, на какое-нибудь устройство из следующего списка

PCI\VEN_13A3&DEV_0005  	7751 Security Processor
PCI\VEN_13A3&DEV_0006  	6500 Public Key Processor
PCI\VEN_13A3&DEV_0007  	7811 Security Processor
PCI\VEN_13A3&DEV_0012  	7951 Security Processor
PCI\VEN_13A3&DEV_0014  	78XX Security Processor
PCI\VEN_13A3&DEV_0016  	8065 Security Processor
PCI\VEN_13A3&DEV_0017  	8165 Security Processor
PCI\VEN_13A3&DEV_0018  	8154 Security Processor
PCI\VEN_13A3&DEV_001D  	7956 Security Processor
PCI\VEN_13A3&DEV_001F  	7855 Security Processor
PCI\VEN_13A3&DEV_0020  	7955 Security Processor
PCI\VEN_13A3&DEV_0026  	8155 Security Processor
PCI\VEN_13A3&DEV_002E  	9630 Compression Processor

в надежде обмануть софт и получить другую железку =) Но я думаю врятле это возможно. Место на плате
под DIP панельку есть, осталось купить такую микруху в DIP исполнение, пару панелек и шаманить.

Дамп флеша vsu_2000_93c46l2m8.bin ( md5 хеш сумма : 9d309dfe331a94c43a348dcadfd81985 ), а тут архив
битых может кому будет интересно.

[ 5 ] И всётаки мы сбросим пароль!

Становится ясно, что пароль хранится в SOHO Flash card. Переходника под TSOP-40 у меня нет, да и
возьмёт ли Sterh-010 микросхемы MT28F008B3 не известно.



Сам модуль для системы предстовляется двуме банками флеша flash-0 и flash-1 в обоих лежит прошивка.

Primary Runtime Image: version 3.1.58, 9/10/2001, flash-0 (0xd6d4)
Secondary Runtime Image: version 3.1.59, 10/11/2001, flash-1 (0x1cd1)
Configuration Database: version 31.5
Certification Database: version 1.1

Если загрузится из одного банка не получилось, система грузится из второго.

Посмотрев ещё раз на лог загрузки устройства я обратил внимание на сообщения

Checking Configuration Database... OK

Т.е. проверяется конфиг, а что будет если конфиг окажется сбойным или его не получится прочитать ?
Остановка ? Зависания ? А может запуститься какой-нибудь тестовый режим или ещё что-то подобное.
Я решил это дело проверить, т.к. программатора по близости у меня нет. Устройство с паролем оно
же "кошка", а именно на иих и нужно тренероваться.

Как сделать так что бы в конфиге появилась ошибка ? Нужно не дать прочитать программе его считать.
А как это сделать ? Можно попробовать заблокировать шину данныых флеша. А как это сделать ?
Замкнуть в шине данных флеша пару пинов с друг другом, в момент чтения конфига с него.

Замкнуть. Но просто так замыкать что-то нельзя иначе всё просто сдохнет. Как я предпологаю в случие
замыкания каких-то пинов данные только искажаются, с флешем при этом всё хорошо. Т.е. если бы
на два пина флешки шёл одинаковые сигнал.

Теперь нужно найти шину данных, её можно определить по даташиту на MT28F008B3, что будем замыкать.

В этой микросхеме шина данных представлена сигналами DQ0-DQ7. Ну что ж попробуем исказить данные на
шине путём замыкание пинов 25 и 26. Удобно это делать маленьким пинцетом или иголкой.

Теперь грусная строчка.

!!! Перед тем как что-то замыкать подумайте, ибо всё это есть не что иное как шаманство, 
всегда есть шанс прибить устройство и восстановление будет проблемотичным !!! 

Ну что ж попробуем. Я пробовал замыкать пины у всех микросхем U1-U4. Но работает только у U1 иногда
срабатывало на U4. Для U2 и U3 система выпадала в панику с такими сообщениями 

Unsupported Flash: ID 0x9888

************************************************************************
************************************************************************
SYSTEM HALTED at 1-1-2070 : 3:11:23
************************************************************************
************************************************************************

Running Process: Startup
Reason: Unsupported flash

А далие шёл дамп стека.

Ну что ж преступим. Зымыкать контакты нужно в момент когда система выведит сообщение

Watchdog timer starting ... Done

замыкать пины будем у микросхемы U1 т.к. это самый проверенный способ, срабатывает всегда.

План действий таков :

1. Включаем устройство.
2. Ждём появление сообщение Watchdog timer starting ... Done
3. Замыкаем пины и ждём пока система упадёт в панику.
4. После того как на экране появится строка SYSTEM HALTED можно уберать пинцет.

Пример лога.

Watchdog timer initializing ... Done.
VPNet Service Unit Model 2000 DES ENCRYPTION
Runtime System version 174.81а·¦о¦GИЪ¦0П¦¦TюTх0-¦Qі¦¦ 6пT-ви)WчP©gы!.xf¦THaю, 57/240/14296
Copyright (C) 1996-2001 VPNet Technologies, Inc. All Rights Reserved.

Using flash-1 (Image built Oct 11 2001, 06:47:27)

No flash detected at 0x3df80000 (0xffff)

Probing for devices on PCI bus 0:
IPSec Engine Version: 4400
public port: self test passed
public port: ethernet address 00:60:a1:aa:bb:cc
private port: self test passed
private port: ethernet address 00:60:a1:cc:bb:aa

Checking Non Volatile RAM integrity... OK

Watchdog timer starting ... Done ... timeout is 16 seconds.

Checking Configuration Database... Invalid cfgdb checksum, attempting to recover... certdb corrupted, not loading...

************************************************************************
************************************************************************
SYSTEM HALTED at 1-2-2070 : 3:14:19
************************************************************************
************************************************************************

Running Process: Startup
Reason: Failed to program cfgdb to flash...
IPL: 7, Sys State: 1

Pending: 0x00000001, Pending Pri: 0x00000080, Interrupt Mask: 0xfffffdf9
   EAX=0x00000000 EBX=0x00045430 ECX=0x00045430 EDX=0x00065438
   EDI=0x00000000 ESI=0x00020000 EBP=0x003915a8 ESP=0x003914d4
EFLAGS=0x00000046 EIP=0x0011c25c


            Name PID IPL   Pri State Block     Wait     Events    Pending
         Startup   0   0   med   run                0x00000000 0x00000000

Call Stack:
   Return Address 1: 0x0011c25c   No symbols
   Return Address 2: 0x0011ca2b   No symbols
    arg1=0x3e10d118, arg2=0x3e10d130, arg3=0x00000001, arg4=0x003915e0
   Return Address 3: 0x001043d9   No symbols
    arg1=0x00255034, arg2=0x002550fc, arg3=0x002550d0, arg4=0x000027f8

Hex Dump of Stack (esp):
00391490: 00257d40 00391490 003915a8 0011c25c
003914a0: 00000400 00364a30 00000000 00000000
003914b0: 00020000 003915a8 003914d4 00045430
003914c0: 00065438 00045430 00000000 00000000
003914d0: 0011c25c 00000018 00000046 000ef7f4
003914e0: 00b567b8 00391500 ffffff00 20c4b7c4
003914f0: f9fa51bf b678988f 076c3664 e85fc332
00391500: 0077dfa0 00000000 0c68293f c7481dd2
00391510: b726f2ff 0a5fb8f1 026ded07 21c07a9a
00391520: 72177deb be1b56d5 5d139043 403a2287
00391530: 756cb9e8 2ac5c216 050dc0ce 80000000
00391540: 00000000 0077dfa0 00000000 0012ad1c
00391550: 0050d398 40000000 00259d88 00391574
00391560: 00391500 00391588 0013a619 0050d398
00391570: 00259d88 00000021 0039158c 0012acdb
00391580: 002572e0 00391598 0011c51f 3e200000
00391590: 00065438 00045430 000efc08 00045430
003915a0: 00065438 00000000 00391644 0011ca2b
003915b0: 3e10d118 3e10d130 00000001 003915e0
003915c0: d633c030 840786eb 17fc8846 0c6e428a
003915d0: 97d76467 0077bfa0 00000000 00000000
003915e0: 00000000 00000000 00000000 00000000
003915f0: 00000000 00000000 00000000 00000000
00391600: 30003000 00000000 78000000 00000000
00391610: 80000000 00000000 0077bfa0 00000000
00391620: 30c033d6 eb860784 4688fc17 8a426e0c
00391630: 6764d797 0012acdb 00255034 00020000
00391640: 00000000 003916a4 001043d9 00255034
00391650: 002550fc 002550d0 000027f8 00000001
00391660: 3e10d318 00000000 00000000 00000000
00391670: 00000000 00000000 00000000 00000000
00391680: 00000000 00000000 00000000 00000000
00391690: 00000000 00000000 00000000 00000000
003916a0: 00000000 00001858 0010034e 00000018
003916b0: ******** ******** ******** ********

003916c0 - ( покоцано ) - 00391c70:  ******** ******** ******** ********

00391c80: ******** ******** ******** ********
Rebooting...


VPNet Service Unit Bootstrap v1.0.1, 08/14/2000
Copyright (C) 2000 VPNet Technologies, Inc. All Rights Reserved.
Board Information:  Rev. A, Model 2000, Options LS-NZ-STD
SDRAM ................................................................ OK
FLASH Memory (89/99) .... Detected
Encryption Engine ....... Detected
Ethernet-0(Private) ..... Detected
Ethernet-1(Public) ...... Detected

VPNos Boot...flash-1..copy...decompress....executing...OK

Watchdog timer initializing ... Done.
VPNet Service Unit Model 2000 DES ENCRYPTION
Runtime System version 3.1.59, 10/11/2001
Copyright (C) 1996-2001 VPNet Technologies, Inc. All Rights Reserved.

Using flash-1 (Image built Oct 11 2001, 06:47:27)


Probing for devices on PCI bus 0:
IPSec Engine Version: 4400
public port: self test passed
public port: ethernet address 00:60:a1:00:76:f7
private port: self test passed
private port: ethernet address 00:60:a1:00:76:f6

Checking Non Volatile RAM integrity... OK

Watchdog timer starting ... Done ... timeout is 16 seconds.

Checking Configuration Database... Invalid cfgdb checksum, attempting to recover... certdb corrupted, not loading... OK
Checking Certificate Database... OK


System started 2-Jan-2070 3:15:13
1 of 1 IPSec Engines Up



VPNet Technologies - VSU 2000 DES ENCRYPTION - Main  Menu

  (1) Configuration
  (2) Statistics
  (3) Utilities
  (4) Logout
  (5) Quick Setup

  Your choice [1-5]:

После того как система будет перезагружина, пароль будет сброшен. Вот ключивая строка

Checking Configuration Database... Invalid cfgdb checksum, attempting to recover...

система сама дефолтит конфиг. Если бы требовалось сохранить конфиг, то тут дорога только
на программатор.

[ 6 ] Эпилог.

Ну что ж задача решина. В идеале сюда нужно примудрить Linux запихать его в Flash card, но для
этого нужно переписать загрузчик ( а для этого нужно уметь не плохо программировать на асме ) или
найти какой-нибудь готовый, процессор же x86. Да ещё сделать так что бы он мог грузиться из сети или
прошивать флеш. Но такие шаманства без дампа Flash Card творить нельзя. С загрузчиком ещё можно
повозиться, но дальше станет вопрос о том что бы залить во флеш ядро и fs и попробовать его
запустить тут то и понадобиться с переходником TSOP40.

Но тема интересная!

Предположительно данный метод спроведлив и для других моделей VSU-10 , VSU-100 , VSU-5000, VSU-7500,
VSU-10000 , но проверить нет возможности. Если у кого есть подобный запароленый аппарат и у вас
получилось сбросить пароль по этой методике, то буду рад получить подробности на e-mail.

© Fregl , Псков , ( e-mail : fregl собака inbox точка ру ) 
При публикации просьба указывать ссылку на первоисточник ! По поводу посылки пива обращаться в почту =)