1. Заставить привилегированный сервис записать что-то в Named Pipe, подконтрольный атакующему.
2. Имперсонировать LocalSystem с помощью WinAPI
ImpersonateNamedPipeClient.Для осуществления первого шага атакующие часто используют RPC вызовы (например,
RpcRemoteFindFirstPrinterChangeNotification, EfsRpcOpenFileRaw, NetrFileGetInfo, и т.п.). Однако предполагается, что привилегированные сервисы будут взаимодействовать с известными служебными Named Pipes, такими как \\.\pipe\spoolss, \\.\pipe\efsrpc, \\.\pipe\srvsvc и т.п. Каким же образом атакующие получают контроль над системными пайпами?Никаким. В ОС Windows существует особенность интерпретации hostname в RPC вызовах: если хостнейм содержит прямой слеш
/, то само поле пройдет валидацию, слеши преобразуются в обратные, а имя пайпа будет считаться от окончания реального hostname. То есть если вызов должен писать в \\.\pipe\spoolss, то при указании HOSTNAME как HOSTNAME/pipe/testtest, вызов будет писать в пайп \\HOSTNAME\pipe\testtest\pipe\spoolss.Мы можем детектировать все такие методы на одном общем свойстве, которое атакующие не могут изменить – строка pipe встречается в названии создаваемого пайпа два раза. Есть два способа реализации такого ханта:
1. Детектировать, если подстрока pipe встречается в имени пайпа два раза (или один раз, в зависимости от телеметрии: например, 17 событие Sysmon обрезает начальное \\.\pipe). Но этот способ может привести к ложным срабатываниям, поскольку существует софт, который создает пайпы со строкой pipe в середине имени.
2. Детектировать создание пайпов по формату
[буквы или цифры]\pipe\<системное_имя>. Это потенциально покрывает меньшее количество сценариев, однако значительно сокращает вероятность ложных срабатываний.Делимся двумя готовыми SIGMA-правилами из нашего SIGMA feed:
title: Privilege Escalation Named Pipes (potato attacks) exact
id: 4d945de4-4bce-416c-b84c-693a563af091
status: stable
description: This rule detects named pipes created by
tags:
- attack.privilege_escalation
- attack.t1068
author: Kaspersky
logsource:
product: windows
category: pipe_created
detection:
selection:
PipeName|re:
- '.*[a-zA-Z0-9]\\pipe\\epmapper'
- '.*[a-zA-Z0-9]\\pipe\\lsass'
- '.*[a-zA-Z0-9]\\pipe\\samr'
- '.*[a-zA-Z0-9]\\pipe\\initshut'
- '.*[a-zA-Z0-9]\\pipe\\ntsvcs'
- '.*[a-zA-Z0-9]\\pipe\\scerpc'
- '.*[a-zA-Z0-9]\\pipe\\sql\\query'
- '.*[a-zA-Z0-9]\\pipe\\MSSQL\$.+?\\sql\\query'
- '.*[a-zA-Z0-9]\\pipe\\netlogon'
- '.*[a-zA-Z0-9]\\pipe\\spoolss'
- '.*[a-zA-Z0-9]\\pipe\\atsvc'
- '.*[a-zA-Z0-9]\\pipe\\netdfs'
- '.*[a-zA-Z0-9]\\pipe\\eventlog'
- '.*[a-zA-Z0-9]\\pipe\\termsrv'
- '.*[a-zA-Z0-9]\\pipe\\TSVCPIPE-.*'
- '.*[a-zA-Z0-9]\\pipe\\svcctl'
- '.*[a-zA-Z0-9]\\pipe\\DAV\sRPC\sSERVICE'
- '.*[a-zA-Z0-9]\\pipe\\srvsvc'
- '.*[a-zA-Z0-9]\\pipe\\wkssvc'
- '.*[a-zA-Z0-9]\\pipe\\browser'
condition: selection
falsepositives: Unlikely
level: high
title: Privilege Escalation Named Pipes (potato attacks)
id: 8294ec37-a4cf-40d7-8a3f-0e0fea8fe6e9
status: stable
description: This rule detects named pipes created by
tags:
- attack.privilege_escalation
- attack.t1068
author: Kaspersky
logsource:
product: windows
category: pipe_created
detection:
selection:
PipeName|re: '.*[a-zA-Z0-9]\\pipe\\.+'
condition: selection
falsepositives: Legitimate software (e.g. Avaya) might do this.
level: high