none
Удаленный запуск accesschk RRS feed

  • Вопрос

  • Добрый день!

    Помогите, пожалуйста, разобраться в проблеме. 

    Есть полезная утилитка accesschk (https://technet.microsoft.com/en-us/sysinternals/accesschk.aspx), с помощью которой можно анализировать куда имеют доступ пользователи.

    Но есть проблема:

    1. Если мы запускаем данную утилиту на локальной машине:

    accesschk -accepteula -w -s -q -u DomainAccount "c:\Windows"

    accesschk -accepteula -w -s -q -u DomainAccount "c:\Program Files"

    accesschk -accepteula -w -s -q -u DomainAccount "c:\Program Files (x86)"

    то получаем данные, к каким файлам и подпапкам имеет (явно или косвенно через членство в группах) пользователь DomainAccount права на запись. Данные есть по всем трем папкам.

    2. Если же мы пытаемся запустить эти команды удаленно (например, "winrs -r:ComputerAccount c:\Windows\System32\cmd.exe"), то данные возвращаются только по  "c:\Program Files" и "c:\Windows".

    По папке "c:\Program Files (x86)" выдается "No matching objects found".

    Очень хочется анализировать доступ к папке "c:\Program Files (x86)" удаленно

    P.S: И локально, и удаленно обращаемся к одной и той же машине. AccessChk и в том, и в другом случае запускается как 32-битный процесс. Запуск через PsExec дает такие же результаты.

    14 марта 2016 г. 13:47

Ответы

  • A -> B -> C

    A - Компьютер с которого запускаем

    B - Компьютер на котором запускаем

    C - Контроллер домена

    Т.к. происходит Double Hop, то accesschk не может разрешить , что за пользователь такой DomainAccount. Я не знаю, по какой причине отрабатывает C:\Windows и C:\Program Files.

    [cl-con-w01.contoso.com]: PS C:\Users\administrator\Documents> C:\accesschk.exe -accepteula -w -s -q -u Contoso\Administrator "c:\Program Files (x86)"
    No matching objects found.

    Включим CredSSP:

    PS > Enter-PSSession -ComputerName cl-con-w01.contoso.com -Authentication Credssp -Credential "Contoso\Administrator"
    
    [cl-con-w01.contoso.com]: PS C:\Users\administrator\Documents> C:\accesschk.exe -accepteula -w -s -q -u Contoso\Administrator "c:\Program Files (x86)" | Select -First 1
    RW c:\Program Files (x86)\Common Files
    
    [cl-con-w01.contoso.com]: PS C:\Users\administrator\Documents> (C:\accesschk.exe -accepteula -w -s -q -u Contoso\Administrator "c:\Program Files (x86)").Count
    106

    Отрабатываем, все как нужно.  Самое простое, кроме включения CredSSP и делегирования AD.

    1. Создать задачу в Task Scheduler и запуск от имени System

    2. Положить скрипт в C:\Windows

    3. Запускать удаленно

    И когда надо получить данные:

    param($ComputerName = $Env:ComputerName,$Account)
    
    $date = (Get-Date).ToString("HHmmddMMyy")
    $log = "\\server\share\$ComputerName`_$date`_.log"
    $path = "\\$ComputerName\C$\Windows\report.bat"
    
    @"
    accesschk -accepteula -w -s -q -u $Account "c:\Windows" >> $log
    accesschk -accepteula -w -s -q -u $Account "c:\Program Files" >> $log
    accesschk -accepteula -w -s -q -u $Account "c:\Program Files (x86)" >> $log
    "@ | Out-File $path -Enc ASCII
    
    schtasks /Run /S $ComputerName /TN "AccessChk"

    Ps. Можно конечно разово создавать(schtasks /create /?) и удалять задачу(schtasks /delete /?), но проще создать через GPP.



    20 марта 2016 г. 13:23

Все ответы

  • В качестве обходного решения с помощью GPP прописал командник с вызовом accesschk.exe в планировщик и перенаправил его вывод на сетевую шару.
    19 марта 2016 г. 18:48
  • A -> B -> C

    A - Компьютер с которого запускаем

    B - Компьютер на котором запускаем

    C - Контроллер домена

    Т.к. происходит Double Hop, то accesschk не может разрешить , что за пользователь такой DomainAccount. Я не знаю, по какой причине отрабатывает C:\Windows и C:\Program Files.

    [cl-con-w01.contoso.com]: PS C:\Users\administrator\Documents> C:\accesschk.exe -accepteula -w -s -q -u Contoso\Administrator "c:\Program Files (x86)"
    No matching objects found.

    Включим CredSSP:

    PS > Enter-PSSession -ComputerName cl-con-w01.contoso.com -Authentication Credssp -Credential "Contoso\Administrator"
    
    [cl-con-w01.contoso.com]: PS C:\Users\administrator\Documents> C:\accesschk.exe -accepteula -w -s -q -u Contoso\Administrator "c:\Program Files (x86)" | Select -First 1
    RW c:\Program Files (x86)\Common Files
    
    [cl-con-w01.contoso.com]: PS C:\Users\administrator\Documents> (C:\accesschk.exe -accepteula -w -s -q -u Contoso\Administrator "c:\Program Files (x86)").Count
    106

    Отрабатываем, все как нужно.  Самое простое, кроме включения CredSSP и делегирования AD.

    1. Создать задачу в Task Scheduler и запуск от имени System

    2. Положить скрипт в C:\Windows

    3. Запускать удаленно

    И когда надо получить данные:

    param($ComputerName = $Env:ComputerName,$Account)
    
    $date = (Get-Date).ToString("HHmmddMMyy")
    $log = "\\server\share\$ComputerName`_$date`_.log"
    $path = "\\$ComputerName\C$\Windows\report.bat"
    
    @"
    accesschk -accepteula -w -s -q -u $Account "c:\Windows" >> $log
    accesschk -accepteula -w -s -q -u $Account "c:\Program Files" >> $log
    accesschk -accepteula -w -s -q -u $Account "c:\Program Files (x86)" >> $log
    "@ | Out-File $path -Enc ASCII
    
    schtasks /Run /S $ComputerName /TN "AccessChk"

    Ps. Можно конечно разово создавать(schtasks /create /?) и удалять задачу(schtasks /delete /?), но проще создать через GPP.



    20 марта 2016 г. 13:23