Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск программы на удаленном компьютере. Запуск программы на удаленном компьютере 
:(
    Опции темы
GoblinOdnorukiy
Дата 3.5.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Запуск программы на удаленном компьютере (Продолжение темы).

Вопрос уже обсуждался, но у меня похитрее задачка.

При запуске программы (cmd, exe и т.д.) на удаленном компьютере с правами текущего пользователя или правами любого другого пользователя в домене, происходит некий глюк. Возможно это не глюк, а фича Майкрософта, но ОНА мне очень мешает и я хочу ее как-то обойти.

Глюк:
Запущенная программа на удаленном компьютере совсем не понимает или не умеет работать с сетевыми ресурсами! Т.е. при попытке скопировать какой-нибудь текстовый файл из разшареной в сети папки ничего не получается :( .

А теперь исходники...
remoteexec.vbs
Код


Const SW_NORMAL = 1

On Error Resume Next
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")

CompName = "192.168.1.134"
UserName = "domain\username"
Pass = "password"
strCommand = "cmd /C c:\24.cmd" 


Set objServices = objSWbemLocator.ConnectServer(CompName, "root\CIMV2", UserName, Pass, Null, Null, 0)
If Err.Number <> 0 Then
    WScript.Echo Err.Number & ": " & Err.Description
    WScript.Quit
End If


Set objStartup = objServices.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = SW_NORMAL


Set objProcess = objServices.Get("Win32_Process")
intReturn = objProcess.Create _
    (strCommand, Null, objConfig, intProcessID)

If intReturn <> 0 Then
    Wscript.Echo "Process could not be created." & _
        vbNewLine & "Command line: " & strCommand & _
        vbNewLine & "Return value: " & intReturn
Else
    Wscript.Echo "Process created." & _
        vbNewLine & "Command line: " & strCommand & _
        vbNewLine & "Process ID: " & intProcessID
End If




c:\24.cmd - CMD-файл, который уже лежит на удаленном компьютере.
Код

time /T >>c:\24.txt
xcopy "\\server\text01.txt" "c:\"  /Y


Задачка файлика 24.cmd - это записать на диск C:\ небольшой лог, о том что запуск выполнялся, а вторая задачка - это скопировать с сетевого ресурса текстовый файл "text01.txt" на диск C:\ .


Мои наблюдения...
Программа 24.cmd успешно запускается. Лог-файл фиксирует ее запуск. На моем компьютере даже выводится номер запущенного процесса на удаленном компьютере.
Но блин копировать текстовый файл не хочет :(

Чего не хватает в моем VB-скрипте ???


PM MAIL   Вверх
Akina
Дата 4.5.2009, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Сразу - не нравится мне этот NULL в objProcess.Create 
Цитата

Create Method in Class Win32_Process

CurrentDirectory 
[in] Current drive and directory for the child process. The string requires that the current directory resolves to a known path. A user can specify an absolute path or a path relative to the current working directory. If this parameter is NULL, the new process will have the same path as the calling process. This option is provided primarily for shells that must start an application and specify the application's initial drive and working directory. 

Как полагаете, какой путь у вызывающего процесса? Попробуйте явно указать, к примеру, "С:\"


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GoblinOdnorukiy
Дата 4.5.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 4.5.2009,  07:56)
Сразу - не нравится мне этот NULL в objProcess.Create 
Как полагаете, какой путь у вызывающего процесса? Попробуйте явно указать, к примеру, "С:\"

Попробовал указать путь "C:\" результат тот же. :(

Но я еще дополнительно попробовал пускать пинги из файла 24.cmd .
Получается. Значит сеть этому процессу доступна.

Попробую как-то промониторить на каком этапе у файла 24.cmd не получается
вытащить текстовый файл из ресурса в локальной сети.
Может у файла 24.cmd нет каких-то прав ? 
PM MAIL   Вверх
Akina
Дата 4.5.2009, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



А локальное копирование из него выполняется?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GoblinOdnorukiy
Дата 4.5.2009, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 4.5.2009,  11:46)
А локальное копирование из него выполняется?

Копирование выполняется:
1. Выполняется если я (через удаленный рабочий стол) вручную запускаю файл 24.cmd .
2. Выполняется если ручками открываю Проводник, указываю расшареную папку.

Вот такие вот пироги.



А вот что я еще успел нарыть...
Я зашел на сервер (там где лежит текстовый файл, который я никак не могу скопировать своим скриптом). Открыл я Журнал Событий и вот что там обнаружил:

User: NT AUTHORITY\ANONYMOUS LOGON
Successful Network Logon:
    User Name:    
    Domain:        
    Logon ID:        (0x0,0xA064F6B)
    Logon Type:    3
    Logon Process:    NtLmSsp 
    Authentication Package:    NTLM
    Workstation Name:    COMPUTER1
    Logon GUID:    -
    Caller User Name:    -
    Caller Domain:    -
    Caller Logon ID:    -
    Caller Process ID: -
    Transited Services: -
    Source Network Address:    192.168.1.100
    Source Port:    0


Короче говоря, видно что мой скрипт 24.cmd, почему-то ходит по сети с правами АНОНИМА smile
Хотя в реальности он запускается с правами конкретного юзера. Я бы даже добавил, с правами юзера, который является администратором в домене. Т.е. для этого юзера все компы в сети открыты.

Какие будут идеи?

PM MAIL   Вверх
Akina
Дата 4.5.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(GoblinOdnorukiy @  4.5.2009,  13:04 Найти цитируемый пост)
Короче говоря, видно что мой скрипт 24.cmd, почему-то ходит по сети с правами АНОНИМА 
Хотя в реальности он запускается с правами конкретного юзера. Я бы даже добавил, с правами юзера, который является администратором в домене.

А просмотр на компе, где выполняется задача, подтверждает, что процесс запущен именно от доменного админа?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GoblinOdnorukiy
Дата 4.5.2009, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 4.5.2009,  12:18)
А просмотр на компе, где выполняется задача, подтверждает, что процесс запущен именно от доменного админа?

Да. 
Если смотреть в МенеджерЗадач, то там видно, что процесс cmd.exe ("24.cmd") 
работает от имени доменного админа.

И кстати, если я в файлик 24.cmd вставлю строчку
ping server1 -t

то компьютер будет выполнять пинг до бесконечности.
Пока компьютер выполняет пинг, я посмотрел на имя владельца процесса ping.exe.
Этот процесс тоже запущен от имени доменного админа.

Видимо где-то еще нужно назначать права :(
Почему при запуске вручную хватает даже прав обычного доменного юзера,
а при запуске через скрипт, не достаточно даже прав доменного админа?

Может где-то процессу нужно назначать особые права? Типа права запуска? Или права в окружении?
Короче я тут без руля. Сам ничего не знаю :( поэтому сижу и жду дальнейших советов.
PM MAIL   Вверх
Akina
Дата 4.5.2009, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Так... стоп!
А что за странная строка такая 
Код

xcopy "\\server\text01.txt" "c:\"  /Y

Насколько я помню, UNC путь - это \\server\share[\folder]\filename.ext
Не вижу имени шары.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GoblinOdnorukiy
Дата 4.5.2009, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Акина, сорри, я просто на форуме неправильно написал путь :(

Просто, я реальные пути менял, чтобы исходники выложить на форум.

Путь у меня указан правильно \\server1\folder1\text1.txt
За путь не беспокойся, он нормальный. 
Ведь вручную файл 24.cmd работает.


P.S.
Сорри, за неточность.
PM MAIL   Вверх
Akina
Дата 4.5.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Попробовал счас (правда, домена у меня нет, eDir) - вижу удалённое подключение от имени гостя...

Попробовал временно подключить шару локальным драйвом (NET USE, первый раз с /SAVECRED, локально), скопировать файл и отключиться - прошло без проблем.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GoblinOdnorukiy
Дата 4.5.2009, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Продолжаю свои наблюдения...

Вот сделал еще один скриптик "CheckLogonType.vbs". Этот скрипт читает список процессов на удаленном компе и выдает LogonType запущенного процесса.
Код

Const SW_NORMAL = 1

On Error Resume Next

CompName = "192.168.1.134"
UserName = "domain\username"
Pass = "password"



Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & CompName & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery( _
    "Select * from Win32_Process " _
    & "Where Name = 'ping.exe'")
For Each objProcess in colProcesses
    ProcessId = objProcess.ProcessId
    Set colLogonSessions = objWMIService.ExecQuery _
       ("Associators of {Win32_Process='" _
          & ProcessId & "'} Where" _
          & " Resultclass = Win32_LogonSession" _
          & " Assocclass = Win32_SessionProcess", "WQL", 48)
             If Err <> 0 Then
                WScript.Echo "Error on associators query= " _
                   & Err.number _ 
                   & " " & Err.Description
                WScript.Quit
             End If
   For Each LogonSession in colLogonSessions    
      Wscript.Echo " Logon Type=" & LogonSession.LogonType & ", PID=" & ProcessId
   Next 
Next
MsgBox "Game over."


Затем я запустил на удаленном компе (192.168.1.134) два бесконечных процесса ping.exe.
Запускал вручную, т.е. подключился RAdmin-ом и ручками запустил бесконечные пинги на два левых компа в сети.

Затем запустил со своего компа свой первый скрипт remoteexec.vbs. Этот скрипт успешно запустил третий бесконечный процесс ping.exe.

В итоге получилось, что удаленный компьютер стал "озадачен" тремя процессами ping.exe.
 

А теперь прикол...
Я запустил скрипт CheckLogonType.vbs...

Скрипт смог найти только два процесса ping.exe !!!
Скрипт показал, что эти два процесса имеют тип = "CachedInteractive 11" (Attempt cached credentials without accessing the network.)
Ссылка на MSDN: http://msdn.microsoft.com/en-us/library/aa394189(VS.85).aspx

Но третьего процесса этот скрипт не нашел. Третий процесс ping.exe - это тот процесс, который я запустил удаленно скриптом remoteexec.vbs.

Из этого опыта видно, что процессы запускаемые скриптом remoteexec.vbs. Совсем не такие как процессы запущенные локально вручную пользователем!!!

Какие будут мысли?

P.S.
Пока писал свои наблюдения, увидел твой ответ "Дата 4.5.2009, 14:12". Сейчас тоже подумаю.

PM MAIL   Вверх
Akina
Дата 4.5.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Похоже, если есть подключение сетевого диска - идёт обращение с правами подключения, если нет - идёт обращение по UNC с гостевыми правами. В принципе, наверное, это логично - "вассал моего вассала - не мой вассал"...

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

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
GoblinOdnorukiy
Дата 4.5.2009, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.5.2009

Репутация: нет
Всего: нет



Цитата(Akina @ 4.5.2009,  14:33)
Вероятно, происходит всё-таки следующее.
Скрипт стартует на втором компе, но от имени пользователя первого компа. Тут сбивает с толку совпадение имён. Само собой скрипт не может транслировать права учётной записи с первого удалённого компа на третий комп - отсюда и проблема.


:( таки да.

Но я всеравно наблюдаю запускаемые процессы в МенджереЗадач:
wmiprvse.exe запускает 24.cmd, 
24.cmd запускает ping.exe.

владелец wmiprvse.exe - NETWORK SERVICE
владелец 24.cmd           - domain\username
владелец ping.exe         - domain\username

Задачу нужно полюбому решить. Как-то же люди запускают удаленно процессы, которые потом без ограничений работают.

:(

Народ!!! У кого какие еще будут идеи?!!!
PM MAIL   Вверх
Akina
Дата 4.5.2009, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(GoblinOdnorukiy @  4.5.2009,  19:58 Найти цитируемый пост)
владелец 24.cmd           - domain\username
владелец ping.exe         - domain\username

Попробуйте докопаться до SID учётных записей, от имени которых работают эти процессы...

И всё-таки попробуйте выполнение из скрипта локальной или удалённой аутентификации (прямо или косвенно) от имени юзера на компе, где исполняется скрипт (компа Б).


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.