- Replace default config paths from C:\ProgramData\ActivityWatch to C:\ProgramData\AWatch-rus in dlp-endpoint-signals-collector.ps1 and email-outbound-collector.ps1 - Add isLikelyClientHost() function to reject IP/localhost as valid hostname for bucket selection in aw-ru-patch.js - Add docs/dlp-reliability-roadmap.md and docs/powershell-analysis.md - Update README.md with links to new documentation Generated with [Devin](https://cli.devin.ai/docs) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
7.2 KiB
7.2 KiB
Email Outbound Collector
Обзор
Мониторинг исходящей почты на Windows-эндпоинтах. Два режима работы:
| Режим | Источник | Данные |
|---|---|---|
| outlook | Outlook COM (Sent Items) | Subject, From, To/CC, вложения, размер тела |
| smtp | Get-NetTCPConnection |
SMTP-соединения (порты 25/587/465/2525), процесс |
По умолчанию Mode = 'both' — оба режима активны одновременно.
Запуск
# С deployment-config.json (штатный вариант)
.\email-outbound-collector.ps1
# С явными параметрами
.\email-outbound-collector.ps1 -ServerHost 10.10.10.13 -ServerPort 5600 -Mode outlook
# Только SMTP мониторинг (без Outlook)
.\email-outbound-collector.ps1 -ServerHost 10.10.10.13 -Mode smtp
Параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
-ConfigPath |
C:\ProgramData\AWatch-rus\deployment-config.json |
Путь к конфигу |
-ServerHost |
из конфига | Адрес AW-сервера |
-ServerPort |
из конфига / 5600 | Порт AW-сервера |
-PolicyPath |
из конфига / dlp-policy.json |
Путь к DLP-политике |
-Mode |
both |
outlook, smtp, или both |
-PollSeconds |
из конфига / 10 | Интервал опроса |
AW Buckets
aw-email-monitor_<host>— все email-события (signal heartbeats)aw-dlp-incidents_<host>— инциденты при срабатывании DLP-правил
DLP-политика: секция endpoint.email
Добавляется в существующий dlp-policy.json:
{
"endpoint": {
"email": [
{
"id": "block-external-attachments",
"action": "block",
"severity": "high",
"minAttachments": 1,
"externalOnly": true,
"internalDomain": "@company.ru",
"message": "Запрещена отправка вложений на внешние адреса"
},
{
"id": "alert-confidential-subject",
"action": "alert",
"severity": "medium",
"subjectRegex": "(?i)(конфиденциально|секретно|для служебного пользования)",
"message": "Обнаружена отправка письма с пометкой конфиденциальности"
},
{
"id": "alert-personal-data",
"action": "alert",
"severity": "high",
"recipientRegex": "(?i)(gmail\\.com|mail\\.ru|yandex\\.ru|yahoo\\.com)",
"minAttachments": 1,
"message": "Отправка вложений на личную почту"
}
]
}
}
Параметры правил
| Поле | Тип | Описание |
|---|---|---|
id |
string | Уникальный ID правила (обязательно) |
action |
string | alert (по умолчанию) или block |
severity |
string | low, medium, high, critical |
subjectRegex |
string | Regex по теме письма |
recipientRegex |
string | Regex по списку получателей |
senderRegex |
string | Regex по адресу отправителя |
attachmentRegex |
string | Regex по именам вложений |
minAttachments |
int | Минимальное количество вложений для срабатывания |
minBodyLength |
int | Минимальная длина тела письма |
externalOnly |
bool | Срабатывать только на внешних получателей |
internalDomain |
string | Домен организации (используется с externalOnly) |
cooldownSeconds |
int | Cooldown между повторными инцидентами |
message |
string | Текст уведомления пользователю и в инцидент |
Enforcement (action: "block")
Outlook mode: письмо перемещается из Sent Items в Drafts. Пользователь получает balloon notification.
SMTP mode: только уведомление (перехват SMTP-соединения на сетевом уровне не реализуем из PowerShell). Инцидент записывается с enforced: false.
Телеметрия
Heartbeat email_sent (Outlook mode)
{
"signalType": "email_sent",
"subject": "<sha256 hash>",
"sender": "user@company.ru",
"recipientCount": 3,
"recipients": "<sha256 hash>",
"attachmentCount": 2,
"attachmentNames": "report.xlsx; data.csv",
"bodyLength": 1520,
"collectionMode": "outlook"
}
Heartbeat smtp_connection (SMTP mode)
{
"signalType": "smtp_connection",
"remoteAddress": "74.125.205.108",
"remotePort": 587,
"processId": 12340,
"processName": "OUTLOOK",
"collectionMode": "smtp"
}
Incident
{
"ruleId": "block-external-attachments",
"action": "block",
"severity": "high",
"signalType": "email_outbound",
"subject": "<sha256>",
"attachmentCount": 2,
"enforced": true
}
Приватность
- Тема и получатели записываются как SHA256-хеш (не открытый текст).
- Тело письма не читается и не хранится — записывается только длина.
- Имена вложений записываются открытым текстом (для DLP-анализа).
Интеграция в ensemble
Добавьте в launch-watchers.ps1 или Task Scheduler:
Start-Process powershell.exe -ArgumentList '-ExecutionPolicy Bypass -File "C:\ProgramData\AWatch-rus\email-outbound-collector.ps1"' -WindowStyle Hidden
Требования
- Outlook mode: Microsoft Outlook установлен и настроен для текущего пользователя.
- SMTP mode: Не требует дополнительного ПО. Работает на уровне TCP-соединений.
- Enforcement (block): Outlook mode — требует доступ к COM объекту Outlook.