• XSS.stack #1 – первый литературный журнал от юзеров форума

DPAPI C#

WhiteDragon

AMSI bypass
Пользователь
Регистрация
01.07.2021
Сообщения
165
Реакции
137
Депозит
0.0051
При попытке снять дпапи другого юзера от имени админа с помощью dpapi возникает ошибка. По докам написано, что LocalMachine(https://docs.microsoft.com/en-us/do....dataprotectionscope?view=dotnet-plat-ext-6.0) должен все зашифрованные блобы дпапи снять, но чуда нет.

Ошибка: Key not valid for use in specified state
 
Пожалуйста, обратите внимание, что пользователь заблокирован
При попытке снять дпапи другого юзера от имени админа с помощью dpapi возникает ошибка
Эм, LocalMachine образно ключ, ассоциированный с системой/компьютером, а не с пользователем. У каждого пользователя свой ключ, а ключ компьютера общий. Любой пользователь может на ключе компьютера шифровать и расшифровывать, а не наоборот. Имея права админа ты можешь достать ключ пользователя и на нем расшифровывать, но не через официальные API само собой)
 
Эм, LocalMachine образно ключ, ассоциированный с системой/компьютером, а не с пользователем. У каждого пользователя свой ключ, а ключ компьютера общий. Любой пользователь может на ключе компьютера шифровать и расшифровывать, а не наоборот. Имея права админа ты можешь достать ключ пользователя и на нем расшифровывать, но не через официальные API само собой)
Рел всемогущий, наведи на источник решения этой проблемы :D
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Самому никогда не приходилось пользоваться, обычно проще, если у тебя есть права админа или сидишь в системном процессе, дождаться логина нужного пользователя и заинжектиться в какой-нибудь explorer или другой процесс, запущенный от его имени, и уже оттуда доставать и расшифровывать данные. Вроде как мимикатц имеет готовое решение, посмотри вот эти вещи, может поможет:
 
Самому никогда не приходилось пользоваться, обычно проще, если у тебя есть права админа или сидишь в системном процессе, дождаться логина нужного пользователя и заинжектиться в какой-нибудь explorer или другой процесс, запущенный от его имени, и уже оттуда доставать и расшифровывать данные. Вроде как мимикатц имеет готовое решение, посмотри вот эти вещи, может поможет:
это все скорее по сеткам,получение бекап ключей, юзеровских ключей, после поленчия мастер ключа и снятие данных, а я делаю штатными средставами. Автор крота и некоторых стилер нечто такое проворачивали. Не могу понять "как"?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Автор крота
не помню у него такого, но если было - надо реверснуть да посмотреть.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
а я делаю штатными средставами. Автор крота и некоторых стилер нечто такое проворачивали. Не могу понять "как"?
Я тоже не могу понять... что тебе нужно и зачем? Может, код приведи для примера, может, станет понятнее.
 
Я тоже не могу понять... что тебе нужно и зачем? Может, код приведи для примера, может, станет понятнее.
Есть зашифрованные блобы дпапи у юзеров тачки, запускаю с админ права с админа. К примеру тот же стилер - собрать логи браузеров всех юзеров тачки
не помню у него такого, но если было - надо реверснуть да посмотреть.
так бы сэмпл найти, но помню Арес говорил мне, что с админки стилаки собирают всех юзеров. Но сам знаешь, старина не делал реверс кода, а лишь обзор
 
Это будет работать только в том случае, если ты вошёл в систему с тем же пользователем, что и при шифровании.
В противном случае нужно загрузить профиль этого пользователя через LoadUserProfile и через него работать.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
но помню Арес говорил мне, что с админки стилаки собирают всех юзеров. Но сам знаешь, старина не делал реверс кода, а лишь обзор
Так я там делал реверс, конкретно в этом обзоре; но не помню такого функционала. Или на тот момент его не было, хз.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
WhiteDragon дошли руки, посмотрел билд Крота, софт перечисляет все процессы explorer.exe в системе (т.е. залогиненых юзеров), и имперсонируется под каждым. Если же юзер не залогинен, то (как мне кажется), нереально никак расшифровать. Возможно, есть какие-то варианты с AD, но не знаю.
 
WhiteDragon дошли руки, посмотрел билд Крота, софт перечисляет все процессы explorer.exe в системе (т.е. залогиненых юзеров), и имперсонируется под каждым. Если же юзер не залогинен, то (как мне кажется), нереально никак расшифровать. Возможно, есть какие-то варианты с AD, но не знаю.
У меня появилась такая идея. Создать таску для всех юзеров с запуском нашего приложения. И каким-то образом включить юзера или сеанс. Я писал hrdp и если логинться, то идет активицация акк'a. Скорее можно какой-то магией проэмулировать заход юзера и сработает автостарт. Тот же Enable-LocalUser в пш. Если протестирую, то отпишу ребята
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Скорее можно какой-то магией проэмулировать заход юзер
Ну теоретически есть апи вида CreateProcessAsUser, LogonUser, с которых можно потом выдрать нужные токены. Но нужно знать пароль.
 
Ну теоретически есть апи вида CreateProcessAsUser, LogonUser, с которых можно потом выдрать нужные токены. Но нужно знать пароль.
а вот мной описанный метод должен сработать без токенок и пассов
 
Пожалуйста, обратите внимание, что пользователь заблокирован
а вот мной описанный метод должен сработать без токенок и пассов
Попробуй, напиши потом. Не до конца понимаю алгоритм. Просто DPAPI требует пароль (точнее хеш) юзера, и с диска его не получить просто так, только если юзер входил в систему.
 
Попробуй, напиши потом. Не до конца понимаю алгоритм. Просто DPAPI требует пароль (точнее хеш) юзера, и с диска его не получить просто так, только если юзер входил в систему.
Делаем таску для всех юзеров на наш стиллер, ставим тригер при логие юзера. После этого для всех юзеров запускаем Enable-LocalUser, мб тогда может сработать, ибо этот метод активизирует, но честно я не уверен в этом.
 
Это будет работать только в том случае, если ты вошёл в систему с тем же пользователем, что и при шифровании.
В противном случае нужно загрузить профиль этого пользователя через LoadUserProfile и через него работать.
Я делал, но тут речь о том, чтоб без этих трюков делать. Не всегда есть креды юзера
 
Пожалуйста, обратите внимание, что пользователь заблокирован
WhiteDragon DildoFagins
убил на ресерч этой ерунды неск. дней, короче пока так - если пользователь входил в систему, то можно скопировать токен с его процесса и прочитать данные. Если не входил - нереально. Я создавал вручную токен, идентичный натуральному токену жертвы, но толку 0. Там много нюансов, есть сорцы той же ХР, инфа для пароля берется с хеша пароля юзера , его LogonID (которого ес-но нет, если юзер не залогинился) и т.д. Короче, такие дела. Может кто-то нароет больше. Хотел опубликовать свои наработки в виде заметки, но поскольку неудачи никому не интересны (делал-делал и не сделал), то не буду.
 
Хотел опубликовать свои наработки в виде заметки, но поскольку неудачи никому не интересны (делал-делал и не сделал), то не буду.
Its not a true, mate. In that area of programming we have too little src of good info. If u got negative expirence, will be good too post it. Can u post it here?
( Don't edit and format them, at least publish a draft of the note. Already good ) ty anyway
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если не входил - нереально
Ну сдампить SAM/SYSTEM, вытащить оттуда хеш, сбрутить его, сделать CreateProcessAsUser с логином и паролем. Или попробовать готовыми тулзами типа мимикатца достать DPAPI ключи пользователя и с помощью них расшифровывать, если конечная цель зашифрована пользовательским ключом.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх