Xenia & Klynt
Иногда задумываешься, как простота старых протоколов на самом деле делает их безопаснее, чем все эти современные, навороченные интерфейсы? Нашла один анализ системы входа на BBS 80-х, думаю, тебе будет интересно почитать.
Да, останавливайся. Эти старые шеллы до сих пор мой полигон для игр.
Привет, вот краткая справка по классическому шеллу для входа в BBS 80-х, думаю, тебе понравится, учитывая твою “игровую” атмосферу:
1. **Операционная система**
- Работала в 16-битной среде, совместимой с DOS, часто на однопользовательском ПК с процессором 386 или 486, 2–4 МБ ОЗУ и 2,88 МБ дискеты или ранним IDE-жестким диском.
- Шелл был написан как легкая программа на C, скомпилированная компилятором DOS, поэтому ее можно было распространять в виде файла .COM или .EXE.
2. **Процесс аутентификации**
- Подсказка: `User: ` → пользователь вводит короткое имя пользователя в кодировке ASCII (макс. 8 символов).
- Подсказка: `Password: ` → ввод скрыт, ограничено 8 символами.
- Данные для входа хранились в простом текстовом файле (`passwd.txt`), зашифрованном с помощью простого смешения XOR/rot13; это не должно быть непробиваемой защитой, но достаточно, чтобы отпугнуть случайного злоумышленника.
3. **Пользовательская сессия**
- После аутентификации шелл отображал меню:
1. **Доступ к файлам** – чтение/запись в определенные "пользовательские" директории.
2. **Форум** – простые текстовые сообщения, каждое сообщение хранится в `msgboard.txt`.
3. **Игры** – несколько ASCII-рогалик (например, *Rogue*, *Nethack*).
4. **Выход** – возвращает к приглашению DOS.
4. **Сеть**
- Соединения осуществлялись через модемы, используя набор команд Hayes. Шелл прослушивал COM1 со скоростью 2400 бод, без управления потоком, без шифрования.
- Передача данных использовала очень простой формат пакетов: 2-байтный заголовок длины, за которым следует необработанный ASCII.
- Поскольку не было брандмауэра или NAT, BBS был доступен в общедоступном Интернете, как только модем был подключен к серверу, что делает его отличной площадкой для понимания ранней эксплуатации уязвимостей.
5. **Уязвимости безопасности**
- **Пароли в открытом виде** на диске, тривиально обратимо.
- **Отсутствие проверки ввода** – возможны переполнения буфера с именем пользователя в 12 символов.
- **Переход по директориям** – пользователи могли запрашивать файлы, такие как `../secret.txt`.
- **Отсутствие таймаута сессии** – спящий пользователь оставлял сессию открытой бесконечно.
6. **Почему это все еще важно**
- Простота заставляет тебя писать каждый слой самостоятельно; ты видишь, сколько клеящего кода нужно для аутентификации, файлового ввода-вывода и сети.
- Это отличный sandbox для изучения устаревших протоколов, обратной инженерии и эволюции практик безопасного кодирования.
- Отсутствие современных абстракций позволяет менять код способами, которые скрывают современные фреймворки.
Не стесняйся форкнуть исходный код, добавить современную обертку TLS или даже легкий веб-интерфейс. Задача так же важна для оценки того, что когда-то было "достаточно хорошим", как и для понимания того, почему нам сейчас нужны лучшие значения по умолчанию. Удачи в хакинге!
Отличная находка, знаешь, именно такие вещи не дают мозгу закиснуть. Поковыряюсь с этим, поищу источник, запущу в чистой DOS-среде, посмотрю, какие там еще старые секреты спрятаны. Твой краткий пересказ — идеальное начало. Следи за обновлениями, скоро раскрою, что там интересного найду.
Рада, что краткое содержание заинтриговало – удачи в поисках пасхалок. Пиши, что найдёшь; интересно посмотреть, какие артефакты ещё умеют удивлять.