Visual Studio запавольваецца толькі праз VPN? Праверце CRL і OCSP
Калі дзейнічае палітыка WDAC, адно запаволенае запаўненне можа быць запытам адклікання, а не тунелем. Дакажыце, які крок перашкаджае, перш чым паслабляць палітыку.
Visual Studio звычайна запускаецца дома, а потым той жа ноўтбук падключаецца да карпаратыўнага тунеля, і кожны запуск паўхвіліны вісіць на застаўцы. Прыбярыце палітыку — і затрымка знікае разам з ёй; прыбярыце тунель — адбываецца тое ж самае. Абодва назіранні дакладныя, таму два кампаненты ўвесь час вінавацяць адзін аднаго. Вырашальнае пытанне: ці запыт адклікання сертыфіката чакае шлях, які дае толькі тунель, ці наогул не знаходзіць такога?
Мерце час загрузкі, а не запуску
Палітыка WDAC, разгорнутая як падпісаны SiPolicy.p7b, вырашае, якія вобразы могуць запускацца на машыне. Кантроль цэласнасці кода правярае ланцужок подпісаў вобраза перад выкананнем, і гэтая праверка можа ўключаць пытанне аб адкліканні. Адказ залежыць ад пункта размеркавання CRL або рэспандэра OCSP, які называе сертыфікат.
Гэта звычайныя сеткавыя запыты, таму іх кошт залежыць ад таго, дзе знаходзіцца рэспандэр. Калі ён дасягальны толькі праз тунель, або яго імя развязваецца толькі праз DNS-сервер за тунелем, праверка чакае гатоўнасці тунеля. Visual Studio пры запуску загружае вялікую колькасць падпісаных зборак і пашырэнняў, і малая затрымка на кожны вобраз становіцца бачнай прыпынкай. Нічога не пашкоджана, і палітыка паводзіць сябе менавіта так, як наладжана, таму выдаленне палітыкі выглядае як выпраўленне.
Кожны падпісаны вобраз можа выклікаць сеткавы запыт
Пачніце з падпісанага бінарнага файла, які ўжо ёсць на дыску, і папрасіце платформу праверыць яго з той жа паводзінай загрузкі, якую выкарыстоўвае запуск. Выканайце каманду адзін раз у тунелі і адзін раз па-за ім, затым параўнайце радкі загрузкі, а не канчатковы вердыкт.
certutil -verify -urlfetch C:\Tools\Contoso.Editor.dll
nslookup ocsp.contoso.example
Test-NetConnection ocsp.contoso.example -Port 80
Вывад пералічвае ланцужок, адрасы CRL і OCSP і тое, ці кожная загрузка атрымалася. Рэспандэр, які сканчае тайм-аўт у тунелі і адказвае па-за ім, — гэта доказ, які вам патрэбны, і ён важыць нашмат больш за ўражанне павольнасці. Калі загрузка паспявае павольна, запішыце адрас, каб наступны крок мог праверыць гэты хост напрамую.
Развяжыце імя хоста рэспандэра і праверце дасягальнасць па-за праграмай, бо імя, якое не развязваецца, ніколі не выправіць налада кліента. Аперацыйны журнал CodeIntegrity дае другую палову доказаў, звязваючы падзею праверкі з адзнакай часу павольнага запуску.
Скараціце затрымку, не выдаляючы кантроль
Адключэнне палітыкі або пераключэнне яе ў рэжым аўдыту прыбирае затрымку і выдаляе кантроль, які разгарнула арганізацыя, таму лічыце гэта няправільным рамонтам. Больш вузкія варыянты: змяненне маршрутызацыі, каб рэспандэр быў дасягальны праз тунель, выключэнне ў раздзеленым тунелі для хостаў рэспандэра, выпраўленне DNS, калі імя развязваецца ў недасягальны адрас, або падтрыманы кэшуючы проксі для даных адклікання. У кожнага свой уладальнік: каманда PKI адказвае за дасягальнасць рэспандэра, сеткавая каманда — за раздзяленне тунеля, каманда канчатковых пунктаў — за палітыку.
Выключаць кожны хост адклікання з тунеля не заўсёды бяспечна, бо ўнутраны рэспандэр можа быць унутраным наўмысна. Пацвердзіце выключэнне з камандай, якая кіруе PKI, перш чым пісаць правіла, якое ціха адпраўляе праверкі сертыфікатаў у публічны інтэрнэт. Змяненне без такога пацверджання — гэта тое, што адкочваюць пры наступным абнаўленні палітыкі.
Праверце халодны старт пасля змянення
Вымерайце халодны старт у абодвух станах і захавайце лічбы, бо цёплы старт амаль нічога не даказвае, калі зборкі ўжо ў кэшы. Паўтарыце запуск з новай сесіі, каб шлях загрузкі пашырэнняў зноў быў задзейнічаны.
Get-WinEvent -LogName Microsoft-Windows-CodeIntegrity/Operational -MaxEvents 40 |
Where-Object { $_.TimeCreated -gt (Get-Date).AddMinutes(-10) }
Get-ChildItem C:\Windows\System32\CodeIntegrity\CiPolicies\Active
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
Выпраўленая канфігурацыя ўсё яшчэ звяртаецца да рэспандэра або выкарыстоўвае шлях кэшавання, які ўхваліла ваша каманда PKI, і журнал паказвае, што праверка завяршаецца, а не сканчаецца тайм-аўтам. Пацвердзіце, што нядаўна падпісаная праграма ўсё яшчэ запускаецца, бо палітыка, якая дазваляе ўсё, не з'яўляецца паспяховым рамонтам. Праверце таксама папку актыўнай палітыкі і стан прымянення, каб было вядома, што адладжваная палітыка — менавіта тая, што працуе. Трымайце ланцужок сертыфікатаў, адрас рэспандэра і адзнакі часу запуску ў адным тыкеце, бо абнаўленне звычайна пераносіць рэспандэр і пакідае правіла выключэння або DNS састарэлым.