Короткий ответ

Подозрение на перемещение атакующего по сети: ищите необычные аутентификации, не «как взламывают». На Windows: 4624 Logon Type 3, 4648, 5140 на admin$/C$/IPC$, WinRM (5985/5986) не с jump. На Linux: SSH/sudo с 10.0.10.55 / WS-042 на host.example. Не запускайте свой массовый сетевой «тест тех же шаров» как имитацию атаки. Изолируйте источник, затем ротация учёток.

Связанные: вход, админ, процесс.

Симптомы и как отличить

  • После фишинга на WS-042 ночью 4624 на FS01 и DC.
  • 5140 Object Name \admin$.
  • wsmprovhost на сервере, клиент не Ansible jump.
  • last на host.example: вход ivan.petrov с адреса ПК, с которого SSH не положен.
СобытиеЛегитимно, еслиПодозрительно, если
Type 3 на FS01пользователь открыл шаруadmin$, время 03:00, DA
WinRMjump/Ansible inventoryс WS-042 бухгалтера
SSHбастионс users VLAN на prod
4648scheduled task свойcmd от winword

Возможные причины

  1. Украденные креды и ручной обход шаров/RDP/SSH.
  2. malware с модулем копирования на admin$.
  3. Легитимный софт (инвентаризация, AV-консоль, backup) без белого списка в голове дежурного.
  4. Пользователь с локальным админом ходит на соседние ПК.
  5. Jump забыли, админы WinRM «с любого».
  6. Редко: ошибка времени, SIEM склеивает чужое.

Диагностика

С коллектора/DC, не с заражённого WS-042.

1. Windows логоны Type 3 / 10 с одного источника

$src = '10.0.10.55'
Get-WinEvent -ComputerName 'DC01' -FilterHashtable @{ LogName='Security'; Id=4624,4648,4768,4769; StartTime=(Get-Date).AddDays(-3) } |
  Where-Object { $_.Message -match [regex]::Escape($src) -or $_.Message -match 'ivan\.petrov' } |
  Select-Object TimeCreated, Id, @{n='M';e={$_.Message.Substring(0,[Math]::Min(400,$_.Message.Length))}}

На целевом сервере:

Get-WinEvent -FilterHashtable @{ LogName='Security'; Id=5140,5145; StartTime=(Get-Date).AddDays(-3) } -ErrorAction SilentlyContinue |
  Where-Object { $_.Message -match 'admin\$|C\$' }
Get-WinEvent -FilterHashtable @{ LogName='Microsoft-Windows-WinRM/Operational'; StartTime=(Get-Date).AddDays(-3) } -ErrorAction SilentlyContinue |
  Select-Object -First 30 TimeCreated, Id, Message

WinRM слушает ли всем:

Get-NetTCPConnection -LocalPort 5985,5986 -State Listen

2. Linux SSH граф

sudo grep -E 'Accepted|Failed' /var/log/auth.log | grep -E '10.0.10.55|WS-042|ivan.petrov'
sudo last -F -n 50
ss -tnp | grep sshd

На нескольких хостах — тот же источник. Не for h in all; ssh с грязной учётки.

3. Процесс на источнике

Если WS-042 ещё включён: процесс, сеть Established на 445/5985/22 к серверам.

Решение

Сценарий A. Источник один ПК

Изолировать WS-042, считать creds украденными (пользователь и локальный админ и что в память попало). Смена паролей широким кругом, если Type 3 шли под DA — см. админ-инцидент.

Сценарий B. Источник jump/сервер

Сервер-плацдарм: изоляция, не «ещё один патч». Ревизия WinRM/SSH allow-list.

Сценарий C. Легитимный софт

Внесите в baseline (AV-консоль, inventory). Задокументируйте, чтобы следующий дежурный не повторял IR. Но проверьте, что софт не скомпрометирован (необычное время).

# сдерживание SMB admin$ с клиентского VLAN — на файрволе сегмента, не disable SMB на DC

Ограничение административных шар — отдельный hardening, в инциденте режьте источник.

Карта хостов и ложный «инвентарь»

Постройте граф: WS-042 → (445/5985/22) → цели за окно. Источник 10.0.10.55 может быть inner VPN, не физический ПК: тогда режьте туннель, не только розетку. Легитимный Ansible с jump должен быть в inventory; WinRM с пользовательского VLAN — нет. Не закрывайте SMB целиком на DC: сломаете логон. Режьте admin$ политикой/файрволом сегмента и источник.

После смены пароля закройте SMB-сессии явно. NTLM с закешированным хешем живёт. На Linux ForwardAgent yes с бастиона разносит ключ ivan.petrov дальше, чем SSH-лог на первом hop: проверьте authorized_keys на всех, куда он мог прыгнуть, не только host.example. Второй плацдарм часто сервер, не ПК: смотрите 4624 Type 3 с серверов на серверы.

Не подтверждайте гипотезу запуском своих admin-share «как атакующий».

Как проверить, что проблема устранена

  • Нет новых 4624 Type 3 / SSH Accept с грязного IP после изоляции.
  • Сессии SMB закрыты.
  • Учётки, которыми ходили, ротированы.
  • WinRM/SSH с users VLAN не проходит (тест со своего IR- hop по политике, не с malware).
  • Карта хостов в тикете полная.

Сегментация users/servers и WinRM только с jump закрывают класс атак сильнее, чем «ещё один антивирус». Алерт: 4624 Type 3 DA с WS-042; SSH Accept с users на host.example. LAPS, не единый локальный пароль. После IR проверьте, не остался ли mapped \\dc01\admin$ в профиле ivan.petrov. Источник 10.0.10.55 занесите в IOC на коллекторе.

Если не помогло

  • Новые цели появляются — второй плацдарм, не дочистили. Повторите топ источников 4624.
  • NTLM с старым хешем после смены пароля — репликация DC, время, Cred Guard не было.
  • Linux ключ агента forwarding с бастиона — уберите ForwardAgent, ключи на бастионе ротируйте.
  • «Lateral» оказался DFS/реплика — смотрите процесс, не только 5140.

Профилактика

  • Админские шары и WinRM только с jump.
  • Нет локального админа у пользователя на WS-042.
  • Сегментация users/servers.
  • Алерт: 4624 Type 3 DA с рабочей станции; SSH с users на prod.
  • LAPS, не единый локальный пароль. После IR снимите mapped admin$ из профиля, если он там остался. Jump-only для WinRM зафиксируйте в матрице портов.

FAQ

Это обязательно ransomware-предвестник?

Часто да, не всегда. Всё равно стоп и учётки. Ждать записку — поздно.

Можно ли отключить Netlogon на час?

Нет. Сломаете домен. Режьте хост-источник.

Type 3 на SYSVOL с ПК

Политики так ходят. Смотрите учётку и admin$, не любой 5140.

Нужен ли захват всего трафика SPAN

Не первый час. Хватит логов логонов. SPAN — если нет логов и цель критична.

Иван админ 1С, ему «можно» WinRM на app-сервер

Тогда белый список и jump, не WS-042 с почтой. Инцидент всё равно, если время и IP чужие.