СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Обновляем Skype 8 без участия администратора в черновиках Из песочницы

Со времен выхода ПО Skype восьмой версии многие столкнулись с проблемой обновления в случае если конечный пользователь не имеет прав на установку приложений в системе. Обновляется он достаточно часто и естественно требует от рядовых пользователей ввод данных Администратора через UAC.

Поиск в интернете приводит ко не совсем удобным для админа способам:

  • Повышение прав пользователя до Администратора? Не вариант, это в большинстве случаев приводит к тому, что из решения одной проблемы со Скайп Вы можете нажить себе множество других проблем из-за неграмотности рядового пользователя (а их неграмотных большинство, это статистика)!

  • Использование встроенной в Windows команды 'runas' не совсем подходит. При ее использовании все равно необходим пароль, а при использовании ключа /savecred Вы делаете огромную дыру в безопасности своей системы!

  • Можно использовать сторонний софт, что то вроде AdmiLink Алексея Курякина, или ExecAs. Как вариант, но не совсем удобно распространять дополнительное ПО если у Вас большое количество рабочих станций в сети!

  • Отключить обновление Скайп. Компания Microsoft известа и тем, что добровольно принудительно заставляет пользоваться свежими версиями ПО и здесь встает вопрос времени, сколько проработает программа неактуальной версии!

  • Компания Microsoft не рекомендует использовать домашнюю версию Скайп в корпоративной среде и мило предлагает перейти на платную версию Скайп для Бизнеса!

image

Поехали…

Имеем установленный Скайп 8 версии, при очередной попытке запуска cтановится понятно, что Скайп закачивает exe-инсталятор в папку, где размещаются данные приложений того пользователя от которого выполнен запуск Скайп:



Создаем bat-файл:

echo off

set SKYPE=

:: Поиск 'exe' файла 
for /f "tokens=*" %%i in ('where /R %HOMEDRIVE%\Users Skype-Setup.exe') do (set SKYPE=%%i)

:: Проверка переменной на "пустоту" (если файл не найден)
if "%SKYPE%"=="" goto quit

:: Запуск инсталятора с ключом /silent
"%SKYPE%" /silent

:: Удаляем 'exe' файл чтобы избежать циклическую установку одной и той же версии при запуске сценария (сам Скайп его не удаляет после обновления)
del "%SKYPE%" /F /Q

:: Завершаем процесс skype.exe от админа, автоматом запускаемый после обновления
taskkill /F /IM skype.exe

:quit
exit

Суть проста — сценарий ищет файл Skype-Setup.exe. В случае работы нескольких пользователей в одной системе, мы не знаем в каком профиле лежит инсталятор, поэтому ищем его в папке где хранятся все профили пользователей (справедливо для Windows Vista и выше, для Windows XP путь размещения данных приложений другой). Если Вы знаете конкретного пользователя замените значение переменной SKYPE на "%HOMEDRIVE%\Users\<имя пользователя>\Appdata\Roaming\Microsoft\Skype for Desktop\Skype-Setup.exe", я лишь привел обобщенный пример. Записываем результат команды 'where' (путь включая имя файла) в переменную SKYPE, запускаем его добавляя ключ /silent для режима «тихой» установки.

Запускаем встроенный планировщик заданий от админа и помещаем в расписание выполнение созданного bat-файла следующим образом:



В моем случае доменная сеть и несколько сотен рабочих станций, распространение bat и настройку задания в планировщике выполнена с помощью групповых политик в домене.
Я настроил триггер на выполнение при запуске компьютера, вполне достаточно.

Для удобства можно создать ярлык на рабочем столе пользователя для ручного запуска задания руководствуясь вот этой статьей.

Способ актуален для Windows Vista/7, в Windows 10 ПО Skype является универсальным APPX-приложением, для обновления которых прав Администратора не требуется.

комментарии (19)

+6
aamonster ,  

Я один в шоке от такого "решения"? Ищем в юзерской папке файл с заданным именем и запускаем от имени администратора? 8-O
Вы бы хоть подпись экзешника проверили, что он майкрософтовский. А то мало ли откуда такой файл взялся?

0
qrKot ,  
Я был в шоке прямо от заголовка…
0
xi-tauw ,  
Так и открывают дырки для хакеров.
Проверять подпись бесполезно. Можно сделать dll hijack для exe с легитимной подписью.
0
aamonster ,  
Я несколько отстал от жизни под виндой. Почитал — вроде самый тупой вариант хайджека убивается копированием экзешника в отдельную папку и запуском оттуда, а для более продвинутых методов внедрения dll нужны админские права? Впрочем, не факт, что не найдётся ещё какой дыры в этом подходе.
0
xi-tauw ,  
Не представляю чем поможет отдельная папка. Все упирается в права, а отдельная или нет — не важно. Если у пользователя есть права положить exe, то и положить dll рядом тоже хватит.
0
aamonster ,  

Батник (лежащий там, куда прав на запись нет) берёт exe из юзерской папки и кладёт его в папку, на которую прав на запись нет (батник-то под администратором запущен). Так что dll потеряется.
Но это не значит, что нет ещё какого-то вектора атаки — может, даже такого же примитивного.

0
xi-tauw ,  
Не сразу вас понял. Да, в таком случае уже лучше. Но любой шаг в сторону открывает дополнительные возможности.
1) Подпись проверяется до копирования, то можно выиграть TOCTOU через oplock и подменить файл после проверки подписи, но до копирования.
2) Если сначала копируется, то можно сделать хардлинк-симлинк на какие-нить файлы типа SAM или SYSTEM (хотя они могут быть под защитой), но вектор понятен — можно достать что-то что SYSTEM может копировать, а пользователь — нет, например, файлы другого пользователя.
Да и от этих векторов можно защищаться (и нужно). Но с каждым новым слоем будут появляться новые вектора, увеличиваться поверхность атаки. Проблема в том, что сисадмины, пишущие батники запускаемые из под SYSTEM и воротящие что им пришло в голову, обычно не могут спрогнозировать последствия своих действий.
0
aamonster ,  

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

0
xi-tauw ,  
В целом, да. Классический пример работы команды фиолетовых, когда сам и защищаешь и атакуешь.
Но на практике это не работает — стандартная проблема атака-защиты. Атакующему нужно пробить защиту только один раз и в одном месте, а защищать нужно от всего и по всему периметру. Если атака не прошла, пробуем другую, а если защита поломалась, то второго шанса у нее нет.
0
mk2 ,  
Если уж на то пошло, то почему бы просто не взять и не изменить сам батник? Хотя возможно хотя бы его автор положил в недоступную юзеру папку.
+1
denis-19 ,  
SfB хорош в связке с аутлуком и прочими допиками.

А АВ есть на станциях? Он проверяет все файлы как надо и тоже централизованный?

ну и…
Обновляем Skype 8 без участия администратора
Запускаем встроенный планировщик заданий от админа…
o_O
0
alan008 ,  

Имелось в виду "без ежедневного участия администратора"

+2
MagicEx ,  
Несколько сотен рабочих станций? Попробуйте WPP (Wsus package publisher), с его помощью удобно обновлять сторонний софт, если используете WSUS конечно.
С новым скайпом вылезла проблема, что он сам скачивает файл апдейтера и не запускается потом без обновления, но это «фиксится» на файрволе, закрытием доступа к get.skype.com.
0
osipov_dv ,  
По-моему обычный скайп раньше был доступен как обновление во WSUS. Я последний раз полгода назад в консоль WSUS-а заходил, его там видел.
0
MagicEx ,  
Вот и я об этом слышал, но как-то у нас не получалось нормально с ним. Делали свой пакет через WPP, он ставился без вопросов.
0
navion ,   * (был изменён)
Пару древних версий предлагает поставить Windows Update на семёрке, но там были далеко не все и это скорее эксперимент от MS.
Точно был отдельный msi для SCCM без интерфейса установщика (не тот, что давали по ссылке на business edition).
0
200sx_Pilot ,  
Skype майкрософту вроде как не сторонний.
Но вот руки у них не из плеч растут, поэтому и так.
+1
MarvinD ,  

Вообще Скайп бесит порой. Можно взять скачать msi, обновить через политики, радоваться некоторое время. Потом начинается. То опять надо его обновлять, то где-то при обновлении что-то не так пойдет, и приходится развлекаться скайпом вместо других дел. Вот и начинают придумывать люди такие приколы, как в статье. Не делайте так, как предложено, это точно!

0
dklm ,  
Имея под рукой GP и GPP я бы не стал писать скрипт…
1 — берем папку с уже установленым скайпом, копируем на сервер и шарим.
2 — создает GPP политику и копируем скайп в програмс файлс или кажому юзеру…
3 — в тойже политике создаем ярлык для пользователей…