Есть люди, которые любят бросить все и пойти в поход, забыв на недельку о благах цивилизации. Другие обожают запереться дома, укутаться в плед и читать интересную книгу, попивая ароматный глинтвейн. Ну а я выбираю ковыряться в старом компьютерном железе. Каждое устройство может рассказать интересную историю и познакомить с такими особенностями, которых в современных девайсах уже не найти. А если учесть, что большинство из них имело весьма скромные по нынешним меркам технические характеристики, становится еще более увлекательно.
Несколько дней назад ко мне попал небольшой артефакт из 2005 года — сетевой файловый сервер от TrendNet, размером с роутер. Любопытно, что внутри у него вообще нет никаких дисковых накопителей, а все, чем он может похвастаться, это два USB-порта и Ethernet 10/100 Mbps с auto-MDIX (интересно, сейчас хоть кто-то помнит что это такое?). Антиквариат, одним словом. Если задуматься, на нем можно соорудить файловую шару для старых операционных систем. Все это в тексте и обсудим, а еще поговорим о том, почему обновления безопасности так важны для современных NAS.

Внешний вид

Эту замечательную коробку я нашел на местной барахолке. Внутри лежал абсолютно новый файловый сервер, его никто еще ни разу не включал и не использовал. Даже запах у него до сих пор был как у только что вышедшего с конвейера устройства.
Trendnet — одна из старейших американских компаний, уже 35 лет производящих сетевые устройства. Чтобы выделиться на фоне черных и серых девайсов конкурентов, маркетологи выбрали насыщенный синий цвет корпуса, который потом стал их «визитной карточкой». Со временем концепция поменялась, но первоначально были именно в таком стиле.
Внешне TS-U100 легко спутать с обычным роутером. Похожий форм-фактор и компактные габариты — 147 x 112 x 30 мм. На передней панели располагаются четыре светодиода, два из которых показывают присутствие питания и сетевого соединения, а оставшиеся — наличие и режим работы дисковых накопителей, подключенных к USB-портам.

На задней части устройства есть разъем питания (5В, 2.4A), кнопки Reset и Unmount и два USB-порта, поддерживающие стандарты 1.1 и 2.0. По замыслу создателей в них можно подключить внешний жесткий диск, флешку, картридер, CD/DVD-привод и даже такая экзотику, как MicroDrive или M.O. (дисковод для магнитооптических дисков). Ничего удивительного, что в этих же портах прекрасно заработал внешний флоппик.
Все это натолкнуло на простую мысль — внутри Linux. Это и объясняет наличие драйверов и столь широкую поддержку разных носителей. Но эту теорию я проверю чуть позже. Получается, с таким девайсом у тебя есть сетевой FDD и DVD-ROM — полезно в некоторых ситуациях.
Управление
TS-U100 разрабатывался для SOHO-сегмента, тут предполагается только один тип управления — через веб-интерфейс. По-умолчанию DHCP выключен, а само устройство имеет адрес 192.168.1.2. Логин и пароль для входа в админку вполне стандартные — admin/admin. Глядя на интерфейс мне на секунду мне показалось, что сейчас попросят вставить диск с IE6:

Первое, что я решил сделать, — проверить, какая прошивка актуальна. Когда устройство попало мне в руки, у него была версия от 2005 года. Особо ни на что не рассчитывая, я решил заглянуть на официальный сайт, и тут меня ждало интересное. На сайте было упоминание 2017 года, несмотря на то, что файл имел все идентификаторы 2006 года — 1.98.0215.2006.

А что у нас было в 2017? Правильно — майская эпидемия вируса WannaCry, который заразил более 200 тысяч компьютеров в 150 странах мира. Зловред использовал уязвимость в протоколе SMB под названием EthernalBlue, которая утекла из инструментов АНБ. Это событие продемонстрировало, что такие простые и базовые протоколы, как SMB, несут значительную угрозу и проигнорировать ее не получится.
Была у меня гипотеза, что специалисты Trendnet летом 2017 года достали старую версию прошивки, исправили в ней уязвимость и упаковали обратно, не меняя более ничего. Со стороны производителя это было бы весьма разумным и грамотным шагом, направленным на обеспечение безопасности пользователей старых устройств. Забегая вперед, скажу, что гипотеза не подтвердилась, но прошивку все же обновил:

Особенности
Перед тем, как начинать ковыряться в прошивке, стоит внимательно изучить, какие сервисы способна предоставлять эта железка и насколько хорошо она делает свою работу. Так что кратко пробегусь по ним, благо тут их всего два:
FTP-сервер. Открывает порт 21, поддерживает до 10 пользователей и умеет ограничивать скорость скачивания.
SMB-сервер. Используется порт 139 (SMB over NetBIOS), а порт 445 не слушает вообще.
Остальные функции можно больше назвать сервисными, вроде синхронизации времени по протоколу NTP. Но одна фича стоит особняком, у нее даже вход в панель управления отдельный — автоматическое скачивание файлов с внешних ресурсов:

Устройство позволяло стягивать файлы или целые директории с удаленных серверов по протоколам HTTP или FTP без компьютера и участия пользователя. Самый натуральный wget с таймером. Раньше такую функцию имели многие NAS и даже роутеры с USB-портом для подключения внешнего устройства хранения.
Фактически TS-U100 способен быть мини-роботом, который ночью скачивает нужные файлы из сети, выполняет синхронизацию FTP-папки или вообще делает резервную копию с одного USB-диска на другой. Это позволяло не потерять данные, даже если один накопитель выйдет из строя. Разумеется, ни о каком rsync или Bittorrent речи не шло, но для своих лет даже такая возможность была весьма полезной.
Все на виду
Вот мы и подошли к основному блюду. Теперь, когда функции устройства более-менее понятны, предлагаю немного порыться в прошивке и посмотреть, на чем же работает этот маленький чудный девайс. Скачивается она непосредственно с сайта производителя — Firmware_TS-U100_1.98.zip
И только я собрался вооружиться Binwalk, как мне пришла в голову мысль посмотреть, какие еще версии есть на сайте. В тот же момент я понял, что веб-сервер trendnet.com позволяет просматривать содержимое директорий, а производитель соблюдает условия GPL. Там я обнаружил:
6/6/2006 11:39 AM 60447 bridge-utils-0.9.6.tar.gz
6/6/2006 11:52 AM 44775979 linux-2.4.18.tar.gz
6/14/2007 4:39 PM 64224840 Linux_Source.tar.gz
6/6/2006 11:40 AM 1425086 Part_1.zip
6/14/2007 11:37 AM 44483600 Part_2.zip
6/6/2006 11:54 AM 7543342 Part_3.zip
6/6/2006 11:55 AM 1667817 Part_4.zip
Бинго! Тут есть все, что использовалось при сборке прошивки. Делаю вывод, что последняя основана на ядре Linux 2.4.18, выпущенном 25 февраля 2002 года. Распаковав Linux_Source.tar.gz, я в обратил внимание на файл .config. Первые же строки дают ответы на важные вопросы:
CONFIG_MIPS_AM5120=y
Итак, наш пациент создан на базе SoC ADM5120, специально разработанного компанией ADMtek Inc. для сетевых устройств, таких как роутеры, беспроводные точки доступа, VPN-шлюзы и принт-серверы. На кристалле размещаются:
MIPS-процессор с частотой 175 МГц
Коммутатор с поддержкой до 5 портов FastEthernet
Сетевой интерфейс 10/100-PHY
Аппаратный блок ADM5001 для ускорения VPN-операций
Интерфейсы для взаимодействия с PCI, UART, SDRAM, NAND Flash и USB

Ближайшим аналогом нашего сегодняшнего героя можно считать NAS-сервер D-Link DNS-120 rev A2. Также на этом же SoC были построены Edimax BR-6104K, ZyXEL Prestige 334W (P-334W) и даже MikroTik RouterBOARD 133 (RB133).
Следующим важным параметром можно считать ОЗУ:
CONFIG_ADM5120_SDRAM_SIZE=32
32 Мб — это вполне штатный показатель для устройств тех лет. Вышеупомянутые роутеры ZyXEL и Edimax могли похвастаться только половиной этого объема. Еще одним прямым указанием на работу с этим SoC является параметр:
CONFIG_MIPS_AM5120_SW=y
Это ни что иное, как подключение драйвера adm5120-switch.c встроенного 5-портового коммутатора. Тут стоит отметить, что ADM5120 поддерживается OpenWRT, однако под Trendnet TS-U100 он никогда официально не собирался. Тем не менее, в документации OpenWRT можно встретить эти же специфические параметры и их описания.
Для работы со встроенной Flash включена целая пачка опций:
CONFIG_MTD_5120_NOR=y
CONFIG_MTD_PARTITIONS=y
CONFIG_MTD_CHAR=y
CONFIG_MTD_BLOCK=y
CONFIG_FTL=y
CONFIG_MTD_CFI=y
CONFIG_MTD_CFI_UTIL=y
CONFIG_MTD_GEN_PROBE=y
CONFIG_MTD_CFI_MXCMDSET=y
CONFIG_MTD_5120_NOR_MX29LV320=y
CONFIG_MTD_5120_NOR_RAW_MX29LV320=y
И это дает ответы на вопросы об объеме постоянной памяти и даже конкретной модели. Ведь MX29LV320 — это чип NOR-Flash емкостью 4 Мб. Довольно мало, чтобы попробовать установить более-менее современную OpenWRT или пытаться зашить внутрь дополнительный сервис. Если бы передо мной стояла задача собрать что-то вроде OpenWRT 14.07 (в актуальных версиях поддержка этого SoC вырезана), пришлось бы перепаять чип памяти на MX29LV640. Благо последний вроде как полностью совместим по пинам.
Итак, в сухом остатке: ADM5120 175 МГц / 32 Мб ОЗУ / 4 Мб Flash. Конфигурация скромная и не располагающая к потенциальной доработке. Файлы, найденные в ней, говорят о том, что в системе используются:
busybox-1.00-pre1 — набор UNIX-утилит
at-3.1.8 — инструмент для отложенного запуска команд (как раз то самое скачивание файлов по FTP/HTTP)
samba-2.2.8a — старая и уязвимая (я все же потом прошелся binwalk по образу и не нашел ни одного подтверждения пересборки/патча против WannaCry)
uClibc-0.9.19 — древняя версия стандартной С-шной библиотеки
wget-1.9 — HTTP/1.0 (HTTP/1.1 без keep-alive), только базовая аутентификация
wu-ftpd_2.6.2 — крайне дырявый демон с массой уязвимостей, вроде переполнения буфера (CVE-2004-0185).
GoAhead WebServer неизвестной версии (редирект на страницу входа http://<IP>/web/login.asp
Вместо заключения
Trendnet TS-U100 — зверек интересный и не бесполезный. Он прекрасно подходит, чтобы нативно предоставлять общую файловую шару для старых версий Windows и Linux. К нему вполне можно подключить пару флешек и собирать туда логи с каких-нибудь датчиков. Главное помнить, что устройство изначально небезопасно и должно быть изолировано от домашней или офисной сети.
Как по мне, это замечательный образец девайса, на котором можно тренировать свои навыки работы с Kali. Из него также получится сделать прекрасный HoneyPot: выставить в открытый интернет и тщательно отслеживая активность тех, кто попытается взломать сервер, используя эксплоиты для уже упомянутых выше старых версий samba и wu-ftpd.
Если же вдруг у вас родится интересная идея, что еще можно сделать с таким устройством (выкинуть в помойку не предлагать!), то обязательно напишите об этом в комментариях. И не забудьте подписаться на блог, чтобы не пропустить выход моих новых постов.
JBFW
Пересобрать прошивку, выбросить wu-ftpd, добавить dropbear и tgt, переписать веб-интерфейс, используя имеющееся API (наверняка разновидность cgi).