Утечка имён файлов в .DS_Store: как просмотреть содержимое и как эксплуатировать

Что за файлы DS_Store и зачем они нужны

.DS_Store — это файлы в операционной системе Apple OS X, они хранят пользовательские настройки папки, такие как расположение иконок, выбранное фоновое изображение, список файлов. Имя является сокращением от Desktop Services Store. Эти файлы создаются и поддерживается приложением Finder в каждой папке и имеют функции схожие с файлом desktop.ini в Microsoft Windows. Имена, которые начинаются с точки, в том числе и у файла .DS_Store, являются скрытыми в Finder и многих утилитах Unix. Внутренняя структура этих файлов является проприетарной.

Файлы .DS_Store представляют интерес, поскольку содержат перечень файлов в текущей папке. Эти файлы могут использоваться при криминалистическом анализе локальной системы. Также эти файлы могут попадать на сервер, например, если перемещение папки было сделано в ZIP архиве с Mac машин.

Через файлы .DS_Store не происходит утечка содержимого файлов, раскрываются только их имена.

Как и чем открыть файлы .DS_Store

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

Пример программы для открытия .DS_Store это Python-dsstore.

Для установки Python-dsstore в Linux:

git clone https://github.com/gehaxelt/Python-dsstore
cd Python-dsstore/

Использование:

python3 ./main.py <ФАЙЛ>

Пример вывода:

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

Как искать файлы .DS_Store

Эти файлы могут быть найдены с помощью сканера Nikto, либо типичными программами для поиска скрытых директорий и файлов на сайтах:

Главное, удостоверьтесь, что в их словарях есть .DS_Store.

Если вам хочется найти файлы .DS_Store на любых серверах, чтобы попробовать инструменты, о которых будет рассказано далее, то вы можете найти множество таких файлов на сайтах в Интернете с помощью Google дорков:

intext:.DS_Store & intitle:index -github
intitle:"index of" intext:".ds_store"
inurl:.DS_Store intitle:index of
inurl:.DS_Store intitle:index.of

Для поиска этих файлов на GitHub: https://github.com/search?q=.DS_Store&type=Commits


Эксплуатация утечки данных через файл .DS_Store

Если вы попробовали дорки, которые даны выше, то вы уже в курсе, что с компьютеров разработчиков веб-сайтов и поставщиков медиа файлы .DS_Store попадают в каталоги веб-сервера и становятся публично доступными. На самом деле, если эти файлы можно найти с помощью Гугл, то особого прока в них нет — в этом случае файлы расположены в директориях без индексного файла (index.php, index.htm, index.html) и с разрешением на просмотр содержимого директории. То есть вы и без файла .DS_Store сможете посмотреть что находится в папке и скачать это.

Последующие инструменты в первую очередь полезны если вы нашли файл .DS_Store, например, с помощью Nikto и директории закрыты для просмотра. В этом случае, используя .DS_Store и инструменты, о которых рассказано ниже, можно скачать файлы, о существовании которых ранее было неизвестно.

Я расскажу сразу о двух инструментах, которые, используя найденный на сервере .DS_Store, ищут другие файлы.

Первый такой инструмент ds_store_exp. Он скачивает файл .DS_Store, извлекает из него имена файлов и конструирует новые ссылки для скачивания упомянутых файлов. При сохранении файлов воспроизводится структура каталогов удалённого сервера.

Для установки ds_store_exp на Linux выполните:

git clone https://github.com/lijiejie/ds_store_exp
cd ds_store_exp
sudo pip2 install -r requirements.txt

Чтобы проанализировать, какие файлы и директории упоминаются в файле .DS_Store, расположенного по адресу https://www.digitalrepublik.com/assets/img/.DS_Store:

python2 ./ds_store_exp.py https://www.digitalrepublik.com/assets/img/.DS_Store

Для просмотра скаченных файлов и структуры обнаруженных директорий:

tree www.digitalrepublik.com/

В некоторых случаях, например:

sudo python2 ./ds_store_exp.py https://www.le-pam.fr/images/.DS_Store

Работа программы будет завершаться ошибкой:

[200] https://www.le-pam.fr/images/.DS_Store
[!] Unable to read 1024 bytes in block

Суть проблемы в том, что не удаётся прочитать содержимое .DS_Store — либо из-за того, что файл повреждён, либо из-за недостатков инструментов, созданных на основе обратной инженерии.

Второй скрипт называется DS_Store_crawler_parser. Он скачивает файл .DS_Store и проверяет доступность упомянутых в нём файлов, но сами файлы не скачивает.

Установка DS_Store_crawler_parser в Kali Linux:

git clone https://github.com/anantshri/DS_Store_crawler_parser
cd DS_Store_crawler_parser
sudo pip3 install -r requirements.txt
python3 ./dsstore_crawler.py -h

Установка DS_Store_crawler_parser в BlackArch:

sudo pacman -S dsstore-crawler
sudo sed -i 's/is not/!=/g' /usr/share/dsstore-crawler/dsstore_crawler.py

При его запуске есть особенности, во-первых, нужно использовать опцию -i:

python3 ./dsstore_crawler.py -i https://www.digitalrepublik.com/assets/img/

Во-вторых, обратите внимания, как мы указали URL: для работы скрипта укажите URL до папки, где находится файл .DS_store, а не полный путь до этого файла.

Рекомендуется Вам:

2 комментария to Утечка имён файлов в .DS_Store: как просмотреть содержимое и как эксплуатировать

  1. иван:

    в текущей папкЕ, е…аныйстыд

Добавить комментарий

Ваш e-mail не будет опубликован.