В этой статье мы разберем методику использования функционала File Server Resource Manager (FSRM) на файловом сервере Windows Server 2012 R2 для детектировании и блокировки работы вирусов-шифровальщиков (троянов-энкодеров, Ransomware или CryptoLocker). В частности, разберемся, как установить службу FSRM, настроить детектирование определенных типов файлов и, в случае детектирования таких файлов, заблокировать доступ пользователя к каталогу на файловом сервере.
- Детектирование шифровальщиков с помощью FSRM
- Настройка SMTP параметров FSRM для отправки email уведомлений
- Создание группы расширений файлов, создаваемых шифровальщиками
- Настройка File Screen Templates
- Применение шаблона File Screen к диску или папке
- Автоматическая блокировка доступа пользователя, зараженного шифровальщиком
- Тестирование защиты FSRM
Детектирование шифровальщиков с помощью FSRM
Если компонент File Server Resource Manager еще не установлен на сервере, его можно установить с помощью графической консоли Server Manager или из командной строки PowerShell:
Install-WindowsFeature FS-Resource-Manager -IncludeManagementTools
Проверим, что роль установилась:
Get-WindowsFeature -Name FS-Resource-Manager
После установки компонента сервер нужно перезагрузить.
Настройка SMTP параметров FSRM для отправки email уведомлений
Следующий этап — конфигурация SMTP параметров службы FSRM, благодаря которым администратор может настроить отправку email уведомлений на свой ящик. Для этого запустите консоль fsrm.msc, щелкните ПКМ по корню консоли File Server Resource Manager и выберите пункт Configure Options.
Укажите адрес SMTP сервера, почтовый ящик администратора и имя отправителя.
Проверить корректность настройки SMTP сервера можно, отправив тестовое письмо с помощью кнопки Send Test E-mail.
Настроить параметры SMTP службы FSRM также можно выполнить с помощью Powershell:
Set-FsrmSetting -AdminEmailAddress "[email protected]" –smtpserver smtp.adatum.com –FromEmailAddress "[email protected]"
Создание группы расширений файлов, создаваемых шифровальщиками
Следующий шаг – создать группу файлов, в которой будут содержаться известные расширения и имена файлов, которые создают шифровальщики в процессе работы.
Этот список можно задать из консоли FSRM. Для этого разверните раздел File Screening Management -> File Groups и в меню выберите Create File Group.
Нужно указать имя группы (к примеру, Crypto-files) и внести все известные расширения в список с помощью поля Files to include.
Список известных расширений файлов, создаваемых шифровальщиками довольно большой, поэтому намного проще создать его с помощью PowerShell.
В Windows Server 2012 создать группу файлов с помощью PowerShell можно так:
New-FsrmFileGroup -Name "Crypto-files" –IncludePattern @("_Locky_recover_instructions.txt","DECRYPT_INSTRUCTIONS.TXT", "DECRYPT_INSTRUCTION.TXT", "HELP_DECRYPT.TXT", "HELP_DECRYPT.HTML", "DecryptAllFiles.txt", "enc_files.txt", "HowDecrypt.txt", "How_Decrypt.txt", "How_Decrypt.html", "HELP_RESTORE_FILES.txt", , "restore_files*.txt", "restore_files.txt", "RECOVERY_KEY.TXT", "how to decrypt aes files.lnk", "HELP_DECRYPT.PNG", "HELP_DECRYPT.lnk", "DecryptAllFiles*.txt", "Decrypt.exe", "AllFilesAreLocked*.bmp", "MESSAGE.txt","*.locky","*.ezz", "*.ecc", "*.exx", "*.7z.encrypted", "*.ctbl", "*.encrypted", "*.aaa", "*.xtbl", "*.abc", "*.JUST", "*.EnCiPhErEd", "*.cryptolocker","*.micro","*.vvv")
В Windows Server 2008 R2 придется воспользоваться утилитой filescrn.exe:
filescrn.exe filegroup add /filegroup:"Crypto-files" /members:"DECRYPT_INSTRUCTIONS.TXT|DECRYPT_INSTRUCTION.TXT| DecryptAllFiles.txt|enc_files.txt|HowDecrypt.txt|How_Decrypt.txt| How_Decrypt.html|HELP_TO_DECRYPT_YOUR_FILES.txt|HELP_RESTORE_FILES.txt| HELP_TO_SAVE_FILES.txt|restore_files*.txt| restore_files.txt|RECOVERY_KEY.TXT|HELP_DECRYPT.PNG|HELP_DECRYPT.lnk| DecryptAllFiles*.txt|Decrypt.exe|ATTENTION!!!.txt|AllFilesAreLocked*.bmp| MESSAGE.txt|*.locky|*.ezz|*.ecc|*.exx|*.7z.encrypted|*.ctbl| *.encrypted|*.aaa|*.xtbl|*.EnCiPhErEd|*.cryptolocker|*.micro|*.vvv| *.ecc|*.ezz|*.exx|*.zzz|*.xyz|*.aaa|*.abc|*.ccc|*.vvv|*.xxx| *.ttt|*.micro|*.encrypted|*.locked|*.crypto|*_crypt|*.crinf| *.r5a|*.XRNT|*.XTBL|*.crypt|*.R16M01D05|*.pzdc|*.good| *.LOL!|*.OMG!|*.RDM|*.RRK|*.encryptedRSA|*.crjoker| *.LeChiffre|*.keybtc@inbox_com|*.0x0|*.bleep|*.1999| *.vault|*.HA3|*.toxcrypt|*.magic|*.SUPERCRYPT|*.CTBL|*.CTB2|*.locky"
Совет. Список известных расширений файлов различных шифровальщиков можно составить самостоятельно, или воспользоваться готовыми периодически обновляемым списками, ведущимися энтузиастами:
_https://www.bleib-virenfrei.de/ransomware/
_https://fsrm.experiant.ca/api/v1/combined
Во втором случае актуальный список расширений файлов для FSRM можно грузить прямо с веб сервера с помощью Invoke-WebRequest
new-FsrmFileGroup -name "Anti-Ransomware File Groups" -IncludePattern @((Invoke-WebRequest -Uri "_https://fsrm.experiant.ca/api/v1/combined").content | convertfrom-json | % {$_.filters})
Либо воспользоваться готовым файлом: crypto_extensions.txt. Данный файл можно сохранить на диск и обновить с его помощью созданную группу файлов FSRM:
$ext_list = Get-Content .\crypto_extensions.txt
Set-FsrmFileGroup -Name "Crypto-files" -IncludePattern ($ext_list)
Настройка File Screen Templates
Создадим новый шаблон File Screen Template, в котором определяются действия, которые FSRM должен выполнить при обнаружении указанных файлов. Для этого в консоли FSRM перейдите в раздел File Screen Management -> File Screen Templates. Создадим новый шаблон Create File Screen Template.
На вкладке настроек укажем имя шаблона “Block_crypto_files”, тип скрининга – Active screening (запрещается создавать указанные типы файлов) и в списке групп файлов выбрать Crypto-Files.
На вкладке E-mail Message включим отправку почтовых уведомлений, настроив текст оповещения по-своему вкусу.
На вкладке Event Log включим запись события в системный журнал. С указанием записывать только имя пользователя: [Source Io Owner]
На вкладке Command можно указать действие, которое нужно выполнить при обнаружении такого типа файла. Об этом чуть ниже.
Сохраните изменения. В списке шаблонов должен появится еще один.
Применение шаблона File Screen к диску или папке
Осталось назначить созданный шаблон к диску или сетевой папке на сервере. В консоли FSRM создадим новое правило Create File Screen.
В поле File screen path нужно указать локальный диск или путь к каталогу, для которого мы хотим включить систему защиты от шифровальщика, а в списке шаблонов выбрать созданный ранее шаблон Block_crypto_files.
Автоматическая блокировка доступа пользователя, зараженного шифровальщиком
Осталось настроить действие, которое FSRM будет выполнять при обнаружении файлов, созданных шифровальщиками. Мы воспользуемся готовым скриптом: Protect your File Server against Ransomware by using FSRM and Powershell (https://gallery.technet.microsoft.com/scriptcenter/Protect-your-File-Server-f3722fce). Что делает этот скрипт? При попытке записать «запрещенный» тип файла в сетевой каталог, FSRM запускает данный скрипт, который анализирует журнал событий и на уровне шары запрещает запись пользователю, из-под осуществлялась попытка записать запрещенный тип файла. Таким образом, мы заблокируем доступ зараженного пользователя к сетевой папке.
Скачайте указанный скрипт и распакуйте его в корень каталога C:\ на файловом сервере. В эту же папку скопируйте утилиту SubInACL (нужна для изменения разрешений на сетевой каталог). В каталоге должны оказаться следующие файлы:
- RansomwareBlockSmb.ps1
- StartRansomwareBlockSmb.cmd
- subinacl.exe
Примечание. В PS скрипте пришлось изменить строки:
$SubinaclCmd = "C:\subinacl /verbose=1 /share \\127.0.0.1\" + "$SharePart" + " /deny=" + "$BadUser"
и
if ($Rule -match "Crypto-Files")
Осталось в настройках шаблона “Block crypto files” на вкладке Command указать, что должна запуститься командная строка с аргументом StartRansomwareBlockSmb.cmd:
Run this command or script:
c:\windows\system32\cmd.exe
Command arguments:
/c “c:\StartRansomwareBlockSmb.cmd”
Команда должна выполняться с правами локальной системы (Local System).
Тестирование защиты FSRM
Протестируем, как работает защита FSRM от шифровальщиков. Для чего в защищаемом каталоге создадим файл с произвольным расширением, и попробуем изменить его на запрещенное .locky.
При попытке сохранить запрещенный файл FSRM запишет в журнал событие:
Event ID: 8215
Source: SRMSVC
Скрипт RansomwareBlockSmb.ps1на основании данных из события запретит текущему пользователю доступ к данному каталогу, выставив в разрешениях на шару персональный deny:
Защита работает! В корне диска в логе можно посмотреть каталог и пользователя, из-под которого пытался запустится шифровальщик.
Если нужно обеспечить еще более высокий уровень зашиты, можно перейти от черного списка файлов к белому, когда на файловом сервере можно сохранять только файлы разрешенных типов.
Итак, мы рассмотрели, как с помощью FSRM автоматически блокировать доступ к сетевым каталогам пользователям, компьютеры которых заражены вирусом-шифровальщиком. Естественно, использование FSRM в таком режиме не может дать 100% гарантию защиты файлов на серверах от этого класса вирусов, но как один из эшелонов защиты, методика вполне себе пригодна. В следующих статьях мы рассмотрим еще несколько вариантов противодействия вирусам-шифровальщикам:
- Как восстановить файлы пользователя из снимков VSS после заражения шифровальщиком
- Блокировка вирусов и шифровальщиков с помощью Software Restriction Policies
Добрый день.
Подскажите, почему если второй раз тот же пользователь на той же шаре пытается создать другой или такой же запрещенный файл, то уже не приходит уведомление и не пишется событие в Events, хотя запрет на создание отрабатывает.
Windows Server 2008R2
Приветствую!
По умолчанию FSRM не дает записывать в журнал одинаковые события чаще чем 1 раз в час, чтобы не забивать журнал. Изменить это поведение можно в настройках FSRM, на вкладке Notification Limits выставив для Event log notification (minutes) и Command notifications 0 минут
Так сказать программирование ради программирования. Помнится лет 20 назад примерно таким же подходом со спамом боролись — писали черные списки e-mail адресов, с которых спам рассылается. Как дети, ей Богу.
Согласен. Сегодня столкнулись с шифровальщиком который не добавлял и не менял расширения файлов.
Добрый день!
К вопросу о Белом списке разрешенных типов — если шифровальщик изменит структуру файла, без изменений расширения, то такой вариант защиты не сработает, стоит это учитывать, что вариант с белым списком также не 100%-я гарантия защиты от шифровальщиков.
На ПК клиентов должен помочь механизм SRP, который также можно использовать как один из барьеров для борьбы с шифровальщиками.
Да, конечно эта защита не 100%, и скорее всего «разработчики» будут в дальнейшем учитывать такой способ противодействия. Но никто не отменяет других методов защиты от шифровальщиков (антивирусы, srp политики, обучение пользователей и т.д.) и регулярных бэкапов.
Но по крайне мере этот способ с дополнениями можно будет использовать для быстрого детектирования прорвавшейся заразы, которая обошла другие методы защиты, или сигнатуры которой пока отсутствуют в базе антивируса.
Полностью с Вами согласен — защитит только комплексный подход.
Спасибо за статью!
Добрый день! Спасибо за статью сразу!
В ходе настройки возникли сложности — причиной оказалось неверное значение переменной $BadUser — она содержала в себе все строки лога, не только логин.
Я подредактировал вот так:
$badusernew = $baduser.split(» «)[1]
Таким образом, переменная $badusernew содержит только логин =)
В продолжении темы.
Восстановления файлов после атаки шифровальщика : https://winitpro.ru/index.php/2016/10/06/vosstanovlenie-fajlov-posle-zarazheniya-shifrovalshhikom-iz-snimkov-vss/
В продолжении темы.
Блокировка вирусов и шифровальщиков с помощью Software Restriction Policies
https://winitpro.ru/index.php/2016/10/21/blokirovka-virusov-i-shifrovalshhikov-s-pomoshhyu-software-restriction-policies/
Попробовал сделать по инструкции, по при загрузке библиотеки с сайта microsoft, не нахожу внутри файла RansomwareBlockSmb.ps1
Только что скачал архив RansomwareBlockSmb.zip. Внутри него два файла: RansomwareBlockSmb.ps1 и StartRansomwareBlockSmb.cmd
Всё верно, упорно качал не по той ссылке(
При настройке уведомлений выдает ошибку.
Служба SMTP настроена на этом же сервере и ретранслирует через SMTP googl.
В журнале не очень видно, но похоже проблема с самим gmail: 5.7.1. unable to relay …. . То ли запрет отправки без авторизации, то ли недействительный email отправителя/получателя, или какая-то другая антиспам проверка.
Отправляете с авторизацией?
Я к примеру всем юзерам запретил скачивать исполняемые файлы с интернета, осталось только запретить запуск исполняемых файлов, как описано в одно из статьи на сайте.
Добрый день.
Не могу установить каталог, для создания «RansomWareBlockSmbLog.csv».
Политиками запрещено создавать файлы в корне диска.
Добрый день! Спасибо за статью!
А почему нельзя запретить все? А потом открывать то что нужно?
Спасибо огромное за статью, всё доходчиво и подробно.
Но так как я не силён в PowerShell, у меня возник вопрос связанный с созданием группы известных расширений файлов, у Вас указана замечательная вещь как подгруздка актуального списока расширений файлов для FSRM с помощью Invoke-WebRequest, но насколько я понимаю данный способ работает в Windows Server 2012 ?
У меня Windows Server 2008 R2 и в нём нет new-FsrmFileGroup, не подскажите чем его можно заменить так же как у Вас в примере?
Командлеты New-FsrmFileGroup и прочие в Windows Server 2008 не работают. Посмотрите у коллеги был вариант обновления списков:
_https://kazunposh.wordpress.com/2016/08/16/%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-file-group-fsrm-%D0%B2-windows-server-2008-r2/
Спасибо за совет, но что то у меня не вышло разобраться с этим вариантом.
Решил проблему через импорт XML файла со списком расширений файлов.
У вас в статье в создаваемой группе файлов для блокировки указан перечень файлов и расширений. Т.к. время не стоит на месте и появляются новые вирус-шифровальщики, то, наверняка, и указанный в статье перечень блокируемых файлов/расширений должен пополняться. Вы не подскажете, возможно, есть в сети публикуемый перечень новых форматов файлов, создаваемых шифровальщиками? Киньте ссылку, если не трудно.
Ссылка есть в статье: _https://fsrm.experiant.ca/api/v1/combined
Но имейте в виду, что на самоме деле FSRM не позволяет активно предовращать заражение и по сути такую технику трудно считать нормальной засчитой. По большому счету эта методика позволяет организовать своего рода мониторинг шифро-активности и быстрый способ борьбы с прорвашвейся заразой, если она меняет расширение файлов на известные.
Выполнил всё строго по инструкции. Но проблема, лог пишет, значит BATник и скрип отрабатывает, ошибок в логе нет, но вот пользователя, не блокирует. как был доступ к папке, так и остаётся.
Т.е. FSRM триггер срабатывает, но разрешения на папку не меняются?
Нужно проверить что формирут команда $SubinaclCmd. Думаю, проблем в ней.
после строки $SubinaclCmd = … добавьте команду
$SubinaclCmd | Out-File «c:\ps\out.txt»
Посмотрите, на содержимое файла c:\ps\out.txt. Попробуйте вручную выполнить эту команду и посмотреть, изменятся ли права на сетевую шару
Написал решение, что то не опубликовалось.
Ок, принято 🙂
Немного разобрался. для понимания, что происходит сделал так, добавил вывод в лог
$SubinaclCmd = «C:\subinacl /outputlog=C:\fsrm\SubinacLog.txt /verbose=1 /share \\127.0.0.1\» + «$SharePart» + » /deny=» + «$BadUser»
Теперь идём в этот самый лог C:\fsrm\SubinacLog.txt и видим. что там почему то доступ постоянно запрещался на пользователя «система» вместо нужного доменного. Вот тут https://gallery.technet.microsoft.com/scriptcenter/Protect-your-File-Server-f3722fce/view/Discussions
Нашёл ответ. Надо поменять в строке $BadUser = $Event.ReplacementStrings цифру 0 на 6
Должно быть вот так во всяком случае у меня заработало $BadUser = $Event.ReplacementStrings[6]
Винда локализованная русская (может поэтому) Server 2012 R2
Спасибо за помощь!
Так мониторится только локальная шара?
Да, только локальная. FSRM работает только с локальными дисками.
Добрый день. У меня не получилось заблокировать файл. Не могу понять, где ошибка. В журнале, при создании файла с расширением из правил пишет:
Операция:
Выполняется действие Email.
Обрабатывается событие аудита фильтра блокировки файлов.
Событие «обработка файла» диспетчера ресурсов сервера
Контекст:
Тип действия: Действие Email
Адрес отправителя: F********
Адрес для ответа:
Адрес получателя: d*******
Адрес для рассылки копий:
Адрес для рассылки скрытых копий:
Тема: Обнаружен несанкционированный файл из следующей группы файлов: «Crypto-files»
Текст сообщения: Пользователь DOMAIN\*** попытался сохранить файл C:\DATA\Метиз\Общая\Новый текстовый документ..locky в папке C:\ на сервере DC. Этот файл принадлежит к группе файлов «Crypto-files», которая не разрешена на сервере.
Путь фильтра блокировки файлов: C:\
Возможно в скрипте или путях, именах ошибка.
Руками пробовали команду StartRansomwareBlockSmb.cmd выполнять? Происходит блокировка файла?
Нет.
Спасибо. Все получилось. Я ошибся..
Добрый день!
Подскажите пожалуйста, у нас группа дизайнеров работает с *.ai файлами в сетевых папках, почему при пресохранении программа выдает ошибку — нет доступа, но этот же файл можно «сохранить как» в этой же директории. Никаких временных файлов иллюстратор не создает в этой директории. Настроил блокировку следующим образом: *.* — запрет и нужные расширения добавил в исключения
Добрый день.
Возможно проблема с одновременным доступом к одиному и тому же файлу несколькоими пользователями?
Доброе утро! Нет, один пользователь работает с одним файлом.
А если открыть этот же файл локально или из другой сетевой папки, для которой не используется FSRM, остается ли проблема с сохранением файла?
Проблема только с теми папками на которую применил ограничения FSRM и с этим типом файлов, с вордом или эксель проблем нет — создаю и пересохраняю. В другой сетевой папке без ограничений FSRM — проблем нет.
Остается только смотреть журналы событий сервера и события FSRM. Возможно какая-то инфа будет там.
я бы не назвал это защитой.
1. файлы могут создаваться рандомно как и расширения
2. у меня шифровальщик потёр все логи
Здравствуйте.
Спасибо за статью.
Скажите, я правильно понимаю, что при настройке FSRM каким-л.образом задействовать категорию времени нельзя?
(например, так: если в течении T времени клиент С меняет N файлов, то выполнить действие A).
Да, FSRM тут вам не поможет. Можно придумать что-то с аудитом событий измеения файлов. Т.е. если за последние 3 минут более 100 файлов изменены пользователем — пристрелить его и отправить алерт. Т.е. вы можете просто в планировщике задач сделать задание, которое запускается каждые 3 минуты и проверям журнал по коду события. Навскидку не скажу код события, помню что событие удаления 4663 (https://winitpro.ru/index.php/2016/05/04/prostaya-sistema-audita-udaleniya-fajlov-i-papok-dlya-windows-server/)
При изменении имени файла блокировка происходит,
в системном журнале Windows события записываются
но команда, назначенная для срабатывания, не запускается.
даже notepad.exe
Windows 2008
В чём может быть затык?
Учтите, что программа запускается в фоне (сесии local system), и вы ее не видите ее результатов.
Попробойте запусть такой bat файл:
echo %date% %time% >> c:\test.log
Дождаться появления события FSRM и проверить создался ли файл c:\test.log и есть ли в нем дата.
Да, такой вариант сработал.
Скажите, а у Вас нет скриптов, которые должны быть по ссылке: (https://gallery.technet.microsoft.com/scriptcenter/Protect-your-File-Server-f3722fce ?
а то ссылка уже не ведёт на озвученный Вами архив.
мне удалось их найти в web-кэш архиве.
web.archive.org/web/20200318194450if_/https://gallery.technet.microsoft.com/scriptcenter/Protect-your-File-Server-f3722fce/file/149466/1/RansomwareBlockSmb.zip
А еще кажется можно найти на гитхабе https://github.com/matbe/PowerShell/blob/master/FSRM/RansomwareBlockSmb/RansomwareBlockSmb.ps1
Здравствуйте!
Подскажите, у меня почему то даже событие не появляется:
Event ID: 8215
Source: SRMSVC
В чем может быть проблема?
А так же не очень понял, куда строку добавлять — $SubinaclCmd = «C:\subinacl /verbose=1 /share \\127.0.0.1\» + «$SharePart» + » /deny=» + «$BadUser»
У меня вообще оказывается другой скрипт, новый с GitHub.
События начал писать, но почему то не режет доступ. Может из-за того что DFS-R используется?
Скрипт брал тут — https://github.com/matbe/PowerShell/blob/master/FSRM/RansomwareBlockSmb/RansomwareBlockSmb.ps1
1) Какая версия Windows Server? посмотрите включена ли опция Send warnings to the event log
2) Имеется в виду файл RansomwareBlockSmb.ps1, который запускается при появлении события.
Может кому будет полезно решил закачать старый и новый
RansomwareBlockSmb.ps1
StartRansomwareBlockSmb.cmd
subinacl.exe
Новый
Старый
спасибо
Добрый день. Дошел до пункта, где надо скачать скрипт и понял, что на майкрософте его уже давно нет. Нашел на гитхабе, но там так и не нашел строку вида:
$SubinaclCmd = «C:\subinacl /verbose=1 /share \\127.0.0.1\» + «$SharePart» + » /deny=» + «$BadUser»
Где она должна быть?
В остальном у меня сейчас просто блокируется попытка записать файл с заданием расширением, но доступ не блокируется и даже в лог ничего не пишется.
Или данная статья на сегодня уже не актуальна?
В общем удалось найти старую версию скрипта, в которой есть subinacl. Скрипт вроде отрабатывает, пишет лог, но не блокирует. Начал разбираться. В скрипте задается переменная: $SubinaclCmd = «C:\RansomwareBlockSmb\subinacl /verbose=1 /share \\127.0.0.1\» + «$SharePart» + » /deny=» + «$BadUser»
Далее, если условие соответствует, переменная $SubinaclCmd выполняется в cmd с ключом /c:
cmd /c $SubinaclCmd
Вот тут и происходит затык. Попробовал вручную ввести команду в PS, поменяв переменные на значения, которые по идее должны подставляться:
cmd /c «C:\RansomwareBlockSmb\subinacl /verbose=1 /share \\127.0.0.1\» + «test» + » /deny=» + «TEST\user»
и получаю ошибки:
\\127.0.0.1″ — QueryObjectSecurity Error : 87 Параметр задан неверно.
WARNING : Error parsing line + test
Use :
SubInacl /help to get the usage information
or
SubInAcl /help syntax to understand SubInAcl syntax.
WARNING : Error parsing line + /deny= + test\user
Use :
SubInacl /help to get the usage information
or
SubInAcl /help syntax to understand SubInAcl syntax.
Elapsed Time: 00 00:00:00
Done: 1, Modified 0, Failed 1, Syntax errors 2
При этом если ввести команду без кавычек и плюсиков, то все отрабатывает, но в скрипте такой фокус не проходит, видимо переменные $BadUser и $SharePart должны быть изолированы кавычками.
Просто как я понял, PS не умеет складывать значения в кавычках знаком + или может в коде ошибка изначально?
Итого в subinacl уходит только первая часть строки, до первого плюса.
Кавычки в коде стоят двойные вертикальные, просто при публикации комментария они заменяются на угловые.
так что в итоге? кто-то может дать актуальную версию этого скрипта, работающую из коробки?