none
Какой пароль проще достать: из планировщика, или из SecureString RRS feed

Все ответы

  • и расшифровать :-)
    12 февраля 2019 г. 10:58
  • и расшифровать :-)
         Поделитесь как?
    12 февраля 2019 г. 10:59
  • ровно точно так-же как он и шифруется

    The opinion expressed by me is not an official position of Microsoft

    12 февраля 2019 г. 11:04
    Модератор
  • и расшифровать :-)

         Поделитесь как?
    PS C:\WINDOWS\system32> $password = ConvertTo-SecureString 'P@ssw0rd' -AsPlainText -Force|ConvertFrom-SecureString
    PS C:\WINDOWS\system32> echo $password
    01000000d08c9ddf0115d1118c7a00c04fc297eb010000004c8580ebd143e840b90c5bc12fcf0e4500000000020000000000106600000001000020000000cd4d1d5cce2ccec91ba9599775974435af5d36907782f3e2e68a6a8c4a483c8f000000000e8000000002000020000000f6afca480ec6d77027b1c91d7eff504ada0f794acee7c8f46bd0376d166d138b20000000a5edb66b50950946f445a03dd5a47fa38a284211609b4e1a084106e5ee77a54340000000e01f8222ef49e9c05cff82e5660f6833b854285f2fac1476c07870ebb15f4687bd3394f6ad30efa41e10edb5f55043ecdd6bd237378f1b555cdbaf4e56aab9cc
    PS C:\WINDOWS\system32>
    PS C:\WINDOWS\system32> echo ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $password))))
    P@ssw0rd

    бабаян жы

    https://blogs.msdn.microsoft.com/besidethepoint/2010/09/21/decrypt-secure-strings-in-powershell/



    • Изменено Svolotch 12 февраля 2019 г. 12:42
    12 февраля 2019 г. 12:39
  • Это не то.

    ConvertTo-SecureString : Key not valid for use in specified state

    Вот у вас есть пароль, сохранённый в файле (как SecureString), как дальше извлечь его?

    https://blogs.technet.microsoft.com/robcost/2008/05/01/powershell-tip-storing-and-using-password-credentials/

    12 февраля 2019 г. 12:51
  • Это не то.

    ConvertTo-SecureString : Key not valid for use in specified state

    Вот у вас есть пароль, сохранённый в файле (как SecureString), как дальше извлечь его?

    https://blogs.technet.microsoft.com/robcost/2008/05/01/powershell-tip-storing-and-using-password-credentials/

    конвертить секурити стринг в секуритистринг нужды нет, там интересна вторая часть примера

    The opinion expressed by me is not an official position of Microsoft

    12 февраля 2019 г. 12:57
    Модератор
  • Алексей, в моем примере как и в вашей ссылке вот это длинная бабуйня:"01000000d08c9ddf0115d1...." это и есть то что пишется обычно в файл... ну если вам очень хочется, вы можете записать и прочитать... я же просто ограничился выводом этой переменной.

    соответственно в последней строчке, идет обратная расшифровка.

    12 февраля 2019 г. 13:04
  • и расшифровать :-)

         Поделитесь как?

    PS C:\WINDOWS\system32> $password = ConvertTo-SecureString 'P@ssw0rd' -AsPlainText -Force|ConvertFrom-SecureString
    PS C:\WINDOWS\system32> echo $password
    01000000d08c9ddf0115d1118c7a00c04fc297eb010000004c8580ebd143e840b90c5bc12fcf0e4500000000020000000000106600000001000020000000cd4d1d5cce2ccec91ba9599775974435af5d36907782f3e2e68a6a8c4a483c8f000000000e8000000002000020000000f6afca480ec6d77027b1c91d7eff504ada0f794acee7c8f46bd0376d166d138b20000000a5edb66b50950946f445a03dd5a47fa38a284211609b4e1a084106e5ee77a54340000000e01f8222ef49e9c05cff82e5660f6833b854285f2fac1476c07870ebb15f4687bd3394f6ad30efa41e10edb5f55043ecdd6bd237378f1b555cdbaf4e56aab9cc
    PS C:\WINDOWS\system32>
    PS C:\WINDOWS\system32> echo ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $password))))
    P@ssw0rd

    бабаян жы

    https://blogs.msdn.microsoft.com/besidethepoint/2010/09/21/decrypt-secure-strings-in-powershell/



    иногда полезно читать комментарии:

    $password = Get-Content .\pass.txt
    echo ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $password))))
    
    PS C:\scripts> $password = Get-Content .\pass.txt
    PS C:\scripts> echo ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $password))))
    ConvertTo-SecureString : Key not valid for use in specified state.
    At line:1 char:113
    + ... es.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $password))))
    +                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [ConvertTo-SecureString], CryptographicException
        + FullyQualifiedErrorId : ImportSecureString_InvalidArgument_CryptographicError,Microsoft.PowerShell.Commands.ConvertToSecureStringCommand
    
    Exception calling "SecureStringToBSTR" with "1" argument(s): "Value cannot be null.
    Parameter name: s"
    At line:1 char:1
    + echo ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.Int ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ArgumentNullException

    Расшифровать может только тот, кто зашифровал, и только на том же компьютере

    Но как уже заметили выше, всё равно придётся хранить пароль в планировщике. Пароль той учётной записи, которая создавала "зашифрованный пароль" "админа".

    Т.е. Вы одним пользователем (вообще любым пользователем) и шифруете "пароль админа" и создаёте задачу в планировщике.

    • Изменено Anahaym 12 февраля 2019 г. 13:22
    12 февраля 2019 г. 13:12
  • Вот про это же и говорю. Поэтому вопрос с расшифровкой остаётся открытым.
    12 февраля 2019 г. 13:19
  • я вот тоже в тому, что неплохо было было бы читать комментарии...

    я где-то говорил, что зашифрованный пароль будет расшифровываться на другом компе? 

    12 февраля 2019 г. 13:47
  • Вопрос лишь в том, считается ли безопасным такое хранение паролей. Вы написали, что можно расшифровать. Вот и хотелось бы конкретный пример увидеть в этой связи. Ибо априори это важно.
    12 февраля 2019 г. 13:55
  • я вот тоже в тому, что неплохо было было бы читать комментарии...

    я где-то говорил, что зашифрованный пароль будет расшифровываться на другом компе? 

    Вы сказали:

    и расшифровать :-)

    Общий ответ подразумевает, что расшифровать можно всё, везде и при любых условиях.

    А оказывается, если перед Вами поставить "правильные" условия, то расшифровать то и нельзя.

    Вы написали, что можно расшифровать.

    пример был по ссылке. Всё сводится к тому, что пароль фишруется на основании данных локального компьютера и данных пользователя, который шифрует. Пароль может расшифровать только тот, кто его зашифровал, и только на данном компьютере. Данная ситуация возможна только в одном случае - кто-то взломал\украл учётные данные пользователя, который шифровал пароль. И опять же, эти "украденные" данные должны быть использованы на том же компьютере, где пароль шифровался.

    РезюмируяSecureString не дураки придумали.

    • Изменено Anahaym 12 февраля 2019 г. 14:12
    12 февраля 2019 г. 14:08
  • я вот тоже в тому, что неплохо было было бы читать комментарии...

    я где-то говорил, что зашифрованный пароль будет расшифровываться на другом компе? 

    Вы сказали:

    и расшифровать :-)

    Общий ответ подразумевает, что расшифровать можно всё, везде и при любых условиях.

    А оказывается, если перед Вами поставить "правильные" условия, то расшифровать то и нельзя.

    Вы написали, что можно расшифровать.

    пример был по ссылке. Всё сводится к тому, что пароль фишруется на основании данных локального компьютера и данных пользователя, который шифрует. Пароль может расшифровать только тот, кто его зашифровал, и только на данном компьютере. Данная ситуация возможна только в одном случае - кто-то взломал\украл учётные данные пользователя, который шифровал пароль. И опять же, эти "украденные" данные должны быть использованы на том же компьютере, где пароль шифровался.

    РезюмируяSecureString не дураки придумали.

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

    понятно дело что расшифровать можно только в том месте где зашифровали, но нужно понимать от чего мы защищаемся и как


    The opinion expressed by me is not an official position of Microsoft

    12 февраля 2019 г. 14:28
    Модератор
  •  просто добавился еще один шаг для получения пароля админа домена, и это опять таки никак не упрощает процедуры ротации.

    Можно ли не имея административных прав достать пароль из планировщика?

    Кстати, вопрос Эльмар Бабаев - а какой сприпт нужно выполнить? может Вам будет достаточно Invoke-Command?

    12 февраля 2019 г. 14:33
  • ну дык тогда давайте возьмем вашу довольно общую цитату...

    пароль можно "зашифровать".

    наверно по зашифровать подразумевается что таки в общем случае таки зашифровать и использовать? (а зачем нам непонятно зашифрованное нечто, которые в хозяйстве бесполезно от слова никак) что в свою очередь подразумевает и расшифровку, не так ли? а оказывается что в некоторых случаях если ВАМ поставить правильные условия и зашифровать то нельзя? то есть под вашим словам можно зашифровать и использовать можно все, везде и при любых условиях. 

    если мы скомпрометировали учетку того кто зашифровал - то что нам мешает просто с помощью этой учетки расшифровать прям на том же компе , получить интересующий нас логин\пароль и уйти в закат?

    12 февраля 2019 г. 14:47
  •  просто добавился еще один шаг для получения пароля админа домена, и это опять таки никак не упрощает процедуры ротации.

    Можно ли не имея административных прав достать пароль из планировщика?

    Кстати, вопрос Эльмар Бабаев - а какой сприпт нужно выполнить? может Вам будет достаточно Invoke-Command?

    у него скрипт на вбс :-)
    12 февраля 2019 г. 14:48
  •  просто добавился еще один шаг для получения пароля админа домена, и это опять таки никак не упрощает процедуры ротации.

    Можно ли не имея административных прав достать пароль из планировщика?

    Кстати, вопрос Эльмар Бабаев - а какой сприпт нужно выполнить? может Вам будет достаточно Invoke-Command?

    а если нельзя, то зачем вообще заниматься костылями с секурстрингом?

    в первом ответе написано что в планировщик забиваешь пароль и получаешь незабываемое удовольствие


    The opinion expressed by me is not an official position of Microsoft

    12 февраля 2019 г. 14:52
    Модератор
  • вектор, ну это же специальная инторнет алимпиада :-)

    ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((("76492d1116743f0423413b16050a5345MgB8AGwAdQBRAHEAaABXAFMAawBuADEAUwBIAFkAdQBwAE4AYQB2AHQAZAA3AHcAPQA9AHwAMAA2ADUAOABkAGQAMgA0AGYAMwBjADgAMQA4AGEAOQAzAGIAYQA5ADYANAAwADUAYgA5ADUANABiADkAMQA5AGQAMAA4AGEAMAAwAGEAMwAyADAAZgBjAGYAOAAyADEANQAxADMAMgAyADIAYQBlADkANQA5ADMANgAyADQANAA="| Convertto-SecureString -key ([System.Text.Encoding]::ASCII.GetBytes("Kiss_my_ear_dude")))))))

    12 февраля 2019 г. 15:18

  • а если нельзя, то зачем вообще заниматься костылями с секурстрингом?

    потому, что любой админ может взять пароль из планировщика, но не любой админ возмёт пароль из SecureString. Хотя, с другой стороны, взяв пароль из планировщика, и перелогиневшись в "нужного" пользователя, можно достать пароль из SecureString. Но это мы снова вернулись к безопасности пароля "нужного пользователя" - его ещё нужно сломать. А это будет посложнее чем:

    ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $password))))

    • Изменено Anahaym 12 февраля 2019 г. 15:36
    12 февраля 2019 г. 15:27
  • а зачем нам непонятно зашифрованное нечто, которые в хозяйстве бесполезно от слова никак

    А ну дык, если Вы не знаете что и для чего - не ко мне вопросы ))

    если мы скомпрометировали учетку того кто зашифровал - то что нам мешает
    Вау, Вы удосужились внимательно прочитать один мой пост? спасибо, приятно ) Жаль, что только один...
    12 февраля 2019 г. 15:31

  • а если нельзя, то зачем вообще заниматься костылями с секурстрингом?

    потому, что любой админ может взять пароль из планировщика, но не любой админ возмёт пароль из SecureString. Хотя, с другой стороны, взяв пароль из планировщика, и перелогиневшись в "нужного" пользователя, можно достать пароль из SecureString. Но это мы снова вернулись к безопасности пароля "нужного пользователя" - его ещё нужно сломать. А это будет посложнее чем:

    ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((ConvertTo-SecureString $password))))

    тоесть вернулись опять к тому с чего начали выставив пароль для учетки в 30+ символов который будет отвечать требованиям безопасности (буква, цифра, спецсимвол и пр. радости), секур стринг по сути не является чем-то более сложным.

    итог усложняем жизнь админам не добавляя по сути безопасность...


    The opinion expressed by me is not an official position of Microsoft

    12 февраля 2019 г. 15:41
    Модератор
  • тоесть вернулись опять к тому с чего начали выставив пароль для учетки в 30+ символов который будет отвечать требованиям безопасности (буква, цифра, спецсимвол и пр. радости), секур стринг по сути не является чем-то более сложным.

    Какой пароль проще достать: из планировщика, или из SecureString? Из SecureString достаётся двумя командами (при известных условиях).
    12 февраля 2019 г. 15:46
  • тоесть вернулись опять к тому с чего начали выставив пароль для учетки в 30+ символов который будет отвечать требованиям безопасности (буква, цифра, спецсимвол и пр. радости), секур стринг по сути не является чем-то более сложным.

    Какой пароль проще достать: из планировщика, или из SecureString? Из SecureString достаётся двумя командами (при известных условиях).

    Добрый День.

    Коллеги, предлагаю отделить обсуждение в ветку Безопасность, назвать его "Какой пароль проще достать: из планировщика, или из SecureString" и соответственно продолжить там обсуждение... Дабы не захламлять тему тс

    Надеюсь на понимание


    Я не волшебник, я только учусь MCP, CCNA. Если Вам помог чей-либо ответ, пожалуйста, не забывайте нажать на кнопку "Пометить как ответ" или проголосовать за полезное сообщение. Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции работодателя. Вся информация предоставляется как есть без каких-либо гарантий. Блог IT Инженера, Twitter, YouTube, GitHub, Instagram

    12 февраля 2019 г. 15:57
    Модератор
  • я не против, чо :-)
    12 февраля 2019 г. 20:10
  • итог усложняем жизнь админам не добавляя по сути безопасность...

    https://imgs.xkcd.com/comics/security.png
    13 февраля 2019 г. 4:42
  • Так чо в итоге?

    Взял вот неадмин файл с SecurityString (который создан не на его компе и не под его УЗ). Дальше как его расшифровать?

    13 февраля 2019 г. 6:02
  • Так чо в итоге?

    Взял вот неадмин файл с SecurityString (который создан не на его компе и не под его УЗ). Дальше как его расшифровать?

    итог не в этом

    вы написали в самом начале что хранить пароль в планировщике не камильфо по причине того что уведут.

    исходя из этого, предполагаем что уже увели от задачи которая выполняет нечто с секюр стрингом.

    создаем такую же задачу рядом (с тем же логином и паролем и на том же пк где генерился секюр стринг), только в скрипт добавляем чтение серур стринга и расшифровку и в итоге получаем пароль в явном виде

    то-есть потенциальному злоумышленику мы жизнь усложнили минут на 15 при условии что хакнуть учетку из планировщика у него получилось, что как бы ниочем, зато админ должен регулярно менять пароли в ад для 2х учеток (админа и того пользюка из планировщика), регулярно править пароли в планировщике и перегенерировать секюр стринги 

    итог - ставим длинный и сложный пароль на планировщик, меняем его время от времени и не заморачиваемся с безопасной строкой 


    The opinion expressed by me is not an official position of Microsoft

    13 февраля 2019 г. 6:30
    Модератор
  • Виктор, в процессе диалога мы уже абстрагировались от Task Scheduler и  обсуждаем исключительно связку PoSH + Security String.

    И мы не исходим из того, что "уже увели от задачи которая..."

    Вчера высказали мнение, что Security String можно расшифровать, поэтому и пытаюсь понять - действительно ли возможно при потере файла с Security String скомпрометировать пароль, вот и всё. Если возможно, то при каком конкретно сценарии.

    На руках у хацкера есть только файл, без наличия доступа на сервер и админских прав.

    P.S. Отмечу, что обладая доступом на сервер (не админским) задача становится совсем неинтересной ввиду mimikatz.
    13 февраля 2019 г. 6:39
  • при каком сценарии уже описано несколько раз

    при утере файла на другом сервере файл безполезен


    The opinion expressed by me is not an official position of Microsoft

    13 февраля 2019 г. 6:45
    Модератор
  • отмечу что не следует путать secure string(расшифровывается, т.к. в памяти бултыхается) и encrypted string(это что мы в файл пишем, зашифровано)

    то что зашифровано - нужен ключ, без него вроде никак стандартыми методами(не берем ро внимание картинку хкцд)... покурю на досуге, ща поработать надо.

    а так, я же вон кидал выше пример с расшифровымым енкриптед стрингом, если знаем ключ

    ([Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR((("76492d1116743f0423413b16050a5345MgB8AGwAdQBRAHEAaABXAFMAawBuADEAUwBIAFkAdQBwAE4AYQB2AHQAZAA3AHcAPQA9AHwAMAA2ADUAOABkAGQAMgA0AGYAMwBjADgAMQA4AGEAOQAzAGIAYQA5ADYANAAwADUAYgA5ADUANABiADkAMQA5AGQAMAA4AGEAMAAwAGEAMwAyADAAZgBjAGYAOAAyADEANQAxADMAMgAyADIAYQBlADkANQA5ADMANgAyADQANAA="| Convertto-SecureString -key ([System.Text.Encoding]::ASCII.GetBytes("Kiss_my_ear_dude")))))))

    13 февраля 2019 г. 6:59