Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!
SharePointDumper — PowerShell инструмент для извлечения и аудита SharePoint для красных/синих/фиолетовых команд. Перечисляет все сайты/диски SharePoint, к которым пользователь имеет доступ через Microsoft Graph, рекурсивно загружает файлы и регистрирует каждый HTTP-запрос Graph и SharePoint для корреляции с SIEM, engineering обнаружения и тестирования IR. | Kitploit
PowerShell инструмент для извлечения и аудита SharePoint для красных/синих/фиолетовых команд. Перечисляет все сайты/диски SharePoint, к которым пользователь имеет доступ через Microsoft Graph, рекурсивно загружает файлы и регистрирует каждый HTTP-запрос Graph и SharePoint для корреляции с SIEM, engineering обнаружения и тестирования IR.
Поделиться
SharePointDumper
SharePointDumper — это утилита для извлечения и аудита на базе PowerShell, которая перечисляет сайты SharePoint, доступные пользователю через Microsoft Graph, и загружает файлы через SharePoint.
Она предназначена для тестирования SOC/DLP, фиолетовых команд и несложных оценок red-team, поэтому создает подробные отчеты, включая загруженные файлы и каждый HTTP-запрос (Graph + SharePoint) для корреляции с SIEM.
Инструмент не выполняет аутентификацию. Вместо этого он требует уже полученный маркер доступа OAuth2 с соответствующими разрешениями Microsoft Graph (Sites.Read.All или Sites.ReadWrite.All).
Если вам нужна помощь в получении такого маркера, вы можете использовать EntraTokenAid (примеры приведены ниже), который упрощает генерацию пригодных для использования маркеров доступа.
✨ Возможности
Перечисление сайтов SharePoint, дисков, папок и файлов через Microsoft Graph
Рекурсивная выгрузка дисков и папок (с использованием предварительно аутентифицированных URL SharePoint)
Отсутствие обязательных внешних зависимостей (без модулей Microsoft Graph PowerShell и т.п.)
Настройка User-Agent
Глобальные ограничения на загрузку: максимальное количество файлов и максимальный общий размер
Фильтрация по включению/исключению сайтов и расширений файлов
Регулируемая задержка запросов со случайным джиттером
Пример лога загрузки файлов (может быть CSV или JSON)
📦 Установка
Клонирование репозитория
root@kitploit:~
git clone https://github.com/zh54321/SharePointDumper.git
cd SharePointDumper
🔑 Требования
SharePointDumper требует действительный маркер доступа Microsoft Graph с делегированными разрешениями для перечисления сайтов и файлов:
Sites.Read.Allили
Sites.ReadWrite.All
Кроме того, клиент OAuth должен иметь разрешение на вызов API SharePoint.
Более 23 собственных приложений Microsoft уже имеют предварительно согласованные разрешения Sites.Read…. Они могут загружать файлы из SharePoint и использоваться для получения действительного маркера без дополнительной настройки тенанта.
Если возможно, используйте маркер доступа с поддержкой CAE, который остается действительным до 24 часов и уменьшает перерывы во время длительных выгрузок.
Получение маркера с помощью EntraTokenAid
Вы можете использовать EntraTokenAid для получения подходящего маркера доступа через PowerShell
(маркеры CAE запрашиваются по умолчанию):
root@kitploit:~
# Клонирование модуля
git clone https://github.com/zh54321/EntraTokenAid.git
Import-Module EntraTokenAid/EntraTokenAid.psm1
# Получение маркеров
$tokens = Invoke-Auth -ClientID 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'
# Опционально: сохранить в переменную, совместимую с примерами ниже
$AccessToken = $tokens.access_token
В режиме возобновления -OutputFolderдолжен указывать на папку предыдущего запуска.
Использование автоматического обновления маркера
SharePointDumper может автоматически обновить истекший маркер доступа (HTTP 401) с помощью маркера обновления и EntraTokenAid.
root@kitploit:~
# Обязательно: модуль должен быть импортирован, чтобы инструмент мог использовать команду Invoke-Refresh
Import-Module .\EntraTokenAid\EntraTokenAid.psm1
# Опционально: получение маркеров с помощью EntraTokenAid (возможны и другие методы)
$tokens = Invoke-Auth -ClientId 'b26aadf8-566f-4478-926f-589f601d9c74' -RedirectUrl 'urn:ietf:wg:oauth:2.0:oob'
# Запуск SharePointDumper с поддержкой обновления
.\Invoke-SharePointDumper.ps1 -AccessToken $tokens.access_token -RefreshToken $tokens.refresh_token -RefreshClientId 'b26aadf8-566f-4478-926f-589f601d9c74'
Примечание: попытки обновления маркера НЕ записываются в лог API.
Параметры
Параметр
Обязательный
Тип
Описание
AccessToken
Да
String
Маркер доступа OAuth2. Аутентификация внутри инструмента не выполняется.
OutputFolder
Нет
String
Каталог для выгрузки. По умолчанию: ".". В режиме -Resume должен указывать на существующую папку предыдущей выгрузки.
UserAgent
Нет
String
Пользовательский UserAgent для всех HTTP-запросов. По умолчанию: SharePointDumper
Proxy
Нет
String
Опциональный HTTP-прокси (например, http://127.0.0.1:8080).
IncludeExtensions
Нет
String[]
Загружать только файлы с этими расширениями.
ExcludeExtensions
Нет
String[]
Пропускать эти расширения (игнорируется, если указан IncludeExtensions).
IncludeSites
Нет
String[]
Обрабатывать только сайты, соответствующие любому из этих значений.
ExcludeSites
Нет
String[]
Пропускать сайты, соответствующие любому из этих значений.
DisableIpLookup
Нет
Switch
Не запрашивать ifconfig.me для определения публичного IP.
RequestDelaySeconds
Нет
Double
Базовая задержка перед каждым HTTP-запросом.
Variation
Нет
Double
Случайный джиттер, добавляемый к базовой задержке.
MaxFiles
Нет
Int
Максимальное количество файлов для загрузки. По умолчанию: без ограничения.
MaxTotalSizeMB
Нет
Double
Максимальный общий размер загрузки. По умолчанию: без ограничения.
Resume
Нет
Switch
🧾 Структура вывода
Структура каталогов
root@kitploit:~
20261115_MySecureTenant/
├── SharePointDumper_Report_20261115_080333.txt
├── SharePointDumper_ApiLog_20261115_080333.csv
├── SharePointDumper_FileLog_20261115_080333.csv
├── Site A/
│ └── Documents/
│ ├── file1.docx
│ └── file2.pdf
└── Site B/
└── Site Assets/
Логи
Отчёт: высокоуровневая сводка (Report_*.txt)
Лог API: каждый HTTP-запрос Graph + SharePoint
(ApiLog_*.csv или .json)
При возобновлении создаются:
SharePointDumper_ReportResume_*
SharePointDumper_ApiLogResume_*
⚠️ Ошибки аутентификации
401 – Не авторизован
Маркер доступа недействителен или истек.
403 – Запрещено
Маркер доступа действителен, но отсутствуют необходимые разрешения Microsoft Graph или SharePoint.
🔍 Обнаружение
Действия SharePointDumper логируются в:
Единый журнал аудита (UAL): регистрирует активность поиска и загрузки SharePoint.
Журналы действий Graph: записывают все запросы перечисления сайтов и дисков (/organization, /sites, /drives).