Сейчас на форуме: -Sanchez- (+9 невидимых)

 eXeL@B —› Основной форум —› Windows 10 1903 и Proxy-DLLs
. 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 85.5 (постоянный), 16thx
Активность: 0.040.05
Статус: Участник

Создано: 20 августа 2019 00:07 · Поправил: RAMZEZzz
· Личное сообщение · #1

После обновления на 1903 люди начали жаловаться что перестали работать лекарства, реализованные через прокси-дллки.
Например version.dll
Для тех кто не в теме: винда по умолчанию (раньше) ищет загружаемую прогой dll сначала в папке самой проги, если не находит, то дальше идёт в ...\system32\ .Если мы создаём dll с системным именем, как например version.dll, сделаем в ней тот же экспорт, и "проксирование" этого экспорта на настоящую системную dll. То все будет работать как раньше, но наша dll уже инжектирована в процесс, причем на самом старте, и мы можем делать с ним что угодно.

Тепрь же это не прокатывает, dll сразу грузится из system32....
Комрады, в какую сторону копать? Чую какое то обновление виновато, может какие записи в реестре появились или еще что. Кстати в Win2012 после установки обнвлений та же беда...



Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 20 августа 2019 00:37
· Личное сообщение · #2

Ну вот актуальные доки, там все написано.
Обрати внимание на dll security




Ранг: 85.5 (постоянный), 16thx
Активность: 0.040.05
Статус: Участник

Создано: 20 августа 2019 01:06
· Личное сообщение · #3

VOLKOFF
Ответа на вопрос там не нашел.
Вне зависимости от "safe DLL search mode" первая папка куда он должен смотреть - папка запускаемого приложения. Так всегда и было, со времен XP. а сломалось все только на 1903 релизе 10ки.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 20 августа 2019 01:38 · Поправил: plutos
· Личное сообщение · #4

RAMZEZzz пишет:
Ответа на вопрос там не нашел.


Присоединяюсь к вопросу.
Прочел раздел про Dynamic-Link Library Security, но тоже не нашел там ответа.
Может быть дружище VOLKOFF ткнет носом?

PS
может тут дело в
Code:
  1. "Beginning with Windows 10 version 1903, Windows Defender Application Control (WDAC) policies
  2. can contain path-based rules."


-----
Give me a HANDLE and I will move the Earth.





Ранг: 85.5 (постоянный), 16thx
Активность: 0.040.05
Статус: Участник

Создано: 20 августа 2019 01:53 · Поправил: RAMZEZzz
· Личное сообщение · #5

Для Win2012 решил удалением KB4486105
копаю 10ку...




Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 20 августа 2019 07:29 · Поправил: BlackCode
· Личное сообщение · #6

RAMZEZzz пишет:
После обновления на 1903 люди начали жаловаться что перестали работать лекарства, реализованные через прокси-дллки.
Например version.dll

А можно конкретику?
Конкретно,ссылку на релиз где дллка не грузится?



Ранг: 145.8 (ветеран), 190thx
Активность: 0.140.36
Статус: Участник

Создано: 20 августа 2019 07:56 · Поправил: Alchemistry
· Личное сообщение · #7

Если твоя version.dll уже загружена так или иначе кем-то еще, напрямую или через аписет то твоя дллка не будет использоваться. Если процесс который ты решил проксировать ставит митигейшн опции PreferSystem32Images приоритет загрузки также меняется. Это может быть установлено как в коде так и в реестре. В любом случае ты дал мизерное количество информации и предоставил гадать на гуще. Воспроизводить это у себя мне да и большинству лень. Если твой целевой процесс дотнет параша то да там чето было в 1903 касательно мощных апдейтов дотнет направленных на секьюрити.

| Сообщение посчитали полезным: BlackCode

Ранг: 19.5 (новичок), 8thx
Активность: 0.050.08
Статус: Участник

Создано: 20 августа 2019 08:58 · Поправил: dezmand07
· Личное сообщение · #8

RAMZEZzz пишет:
первая папка куда он должен смотреть - папка запускаемого приложения

совсем не обязательно.
любая загрузка dll средствами LoadLibrary или LoadLibraryEx сводится к вызову LdrLoadDll.
если ковырнуть идой LoadLibraryExW в kernelbase.dll можно увидеть что передаётся в LdrLoadDll.
первый параметр это как раз флаг поиска (dwFlags) из LoadLibraryEx.

если используется LoadLibrary флаг в LdrLoadDll равен NULL (не используется).
поэтому используйте LoadLibraryEx (или сразу LdrLoadDll) с флагом поиска LOAD_LIBRARY_SEARCH_SYSTEM32
If this value is used, %windows%\system32 is searched for the DLL and its dependencies. Directories in the standard search path are not searched.




Ранг: 85.5 (постоянный), 16thx
Активность: 0.040.05
Статус: Участник

Создано: 20 августа 2019 11:27
· Личное сообщение · #9

BlackCode
Да вот хоть эта
https://yadi.sk/d/WBb00vl0PjC6Mg


Alchemistry
До обновления работало прекрасно, проверил 3 приложения, правда все дотнетовские. Похоже что .net 4.8 виноват, до этого 4.7.2 стоял... Ещё проверю НЕ дотнет и проверю после установки 4.8 на семерке например.

dezmand07
Это то все понятно, так бы и до обновления винды не работало, а оно работало прекрасно. И не одно приложение.

plutos
У тебя тоже с дотнетом это было? Или не только?
plutos




Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 20 августа 2019 11:38
· Личное сообщение · #10

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

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

-----
vx





Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 20 августа 2019 12:10 · Поправил: BlackCode
· Личное сообщение · #11

RAMZEZzz
Кстати, я частенько применяю прокси технологию.
Так вот было замечено, что под разными системами 7 или 10, последовательность загрузки либ (DLL) может
сильно разница.
К примеру, если под 7кой version.dll загружается 2-3 по счету, то под 10-кой она может загружаться 7-8 и т.д.
Т.е. под 10-ой version.dll загружается на много позже и момент, в который необходимо отловить чтобы
пропатчить в памяти байты, уже упущен.
Так что существует такая "побочка" у данного метода.

Добавлено спустя 13 часов 3 минуты
Только что переустановил винду на 1903, проверил свои просики.. все работает
Установил "с нуля" с маздайского оригинального образа.
Так что проблема не в системе

| Сообщение посчитали полезным: plutos


Ранг: 85.5 (постоянный), 16thx
Активность: 0.040.05
Статус: Участник

Создано: 21 августа 2019 01:22
· Личное сообщение · #12

проверил НЕ дотнет проги - все работает
Короче проблема в .NET 4.8
Не в курсе, есть у дотнета какие либо "рычажки" за которые можно подёргать?

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

difexacaw пишет:
Теперь возвращайтесь к исходной задаче и пилите загрузчик - инфект, либо запуск с инжектом

не всегда это возможно, например прога протектором накрыта, а так бросил dll которая хуки поставила и ждёт своего часа - и всё (с темидой, армадилой, хаспЛМ и т.п. прокатывает отлично).

Добавлено спустя 8 минут
BlackCode пишет:
Только что переустановил винду на 1903, проверил свои просики.. все работает

дотнетовские проги есть? проверьте плиз.
Ну и убедитесь что в системе уже .net 4.8




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 21 августа 2019 03:15 · Поправил: plutos
· Личное сообщение · #13

RAMZEZzz пишет:
Ну и убедитесь что в системе уже .net 4.8


The following code checks the value of the Release entry to determine whether the .NET Framework 4.6.2
or later is installed.
This code returns True if it's installed and False otherwise.

Code:
  1. PS C:\Users\root>  # PowerShell 5
  2. PS C:\Users\root>  Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' |  
  3. Get-ItemPropertyValue -Name Release | Foreach-Object { $-ge 394802 }
  4. True
  5. True


Ну, раз TRUE, значит .net 4.8 installed.


BlackCode пишет:
Только что переустановил винду на 1903, проверил свои просики.. все работает


И у меня вроде все работает... Может какой kb был виноват?
Теперь переустановил с нуля и порядок.

-----
Give me a HANDLE and I will move the Earth.


| Сообщение посчитали полезным: BlackCode

Ранг: 173.8 (ветеран), 208thx
Активность: 0.120.36
Статус: Участник

Создано: 21 августа 2019 03:20 · Поправил: VOLKOFF
· Личное сообщение · #14

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

Alchemistry пишет:
Если твоя version.dll уже загружена так или иначе кем-то еще, напрямую или через аписет то твоя дллка не будет использоваться. Если процесс который ты решил проксировать ставит митигейшн опции PreferSystem32Images приоритет загрузки также меняется


Именно, о чем прямо написано в доках, я не "на отвали" ссылку оставил, если бы были принципиальные изменения в билде ОС, об этом было бы упомянуто чуть ли не жирным шрифтом. DLL Redirection официально заявлена как фича и проснувшись с утра в плохом настроении ее никто не выпилит без предупреждения в ближайшем апдейте.

И по большому счету проблема решается банальным перехватом загрузки модулей. Неудобняк стартовать с лодыря, можно пропатчить IAT и еще 100500 вариантов.

Что касается NET, имеет смысл глянуть манифесты и конфиги, вроде можно перенаправить версию сборки на уровне ПК и потестить "даунгрейд"

Не исключено что у вас дефендер или антивирусники шалят




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 21 августа 2019 05:03
· Личное сообщение · #15

VOLKOFF пишет:
это у меня только форум не работал последние сутки


похоже, что у всех не работал. по крайней мере у меня точно.

-----
Give me a HANDLE and I will move the Earth.




Ранг: 145.8 (ветеран), 190thx
Активность: 0.140.36
Статус: Участник

Создано: 21 августа 2019 05:46
· Личное сообщение · #16

RAMZEZzz
Если это теперь часть фреймворк ты можешь попробовать альтернативные методы подгрузки длл. Например дотнет CorProfiler.

| Сообщение посчитали полезным: plutos


Ранг: 337.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 21 августа 2019 11:56
· Личное сообщение · #17

RAMZEZzz

> с темидой, армадилой, хаспЛМ и т.п. прокатывает отлично

Слой защиты никакого отношения не имеет к динамическому импорту из апп.

BlackCode

> К примеру, если под 7кой version.dll загружается 2-3 по счету

Один из последних семплов из раздела запросов на взлом ваш, там version.dll

В этом случае не система загружает, а само апп(szondi") прямым вызовом loadlibrary. К этому времени уже много что загружено. Под 7-кой.

Добавлено спустя 59 минут
Загрузочный лог.

e09b_21.08.2019_EXELAB.rU.tgz - 0xB94_szondi.exe_.log.7z

-----
vx





Ранг: 85.5 (постоянный), 16thx
Активность: 0.040.05
Статус: Участник

Создано: 21 августа 2019 14:52 · Поправил: RAMZEZzz
· Личное сообщение · #18

сделал простенькую дотнет программку, создающую и проверяющую RSA сигнатуру: с заведомо правильной подписью и с заведомо неправильной. Она использует CryptVerifySignatureW.
Также рядом кладу version.dll, которая подменяет CryptVerifySignatureW на свою, возвращающую всегда TRUE.
Вот результаты тестов:
Win 7 с дотнетом 4.7.2 --> Link <-- (version загрузился, фейк сработал)
Win 7 с дотнетом 4.8 (обновил) --> Link <--
Win 10 с дотнетом 4.8 --> Link <--

Вот сама программа (под .NET 4.5.2) с исходником и с version.dll: --> Link <--

Ну и соответсвенно ProcMon показывает загрузку version СРАЗУ из ..\system32\ без попыток поиска ее где либо еще




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 21 августа 2019 16:00 · Поправил: ajax
· Личное сообщение · #19

BlackCode
всплыла проблема на паблик, о чем я уведомлял. теперь припоминаю - косяки были на дотнет софте
difexacaw
сонди это натив

использование лоадера катит, причем сразу грузим version из папки софта без проблем. но, если у софта несколько модулей - делать "спрута" на createprocess() не самый лучший вариант
RAMZEZzz пишет:
ProcMon показывает загрузку version СРАЗУ

угум-с

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 21 августа 2019 17:29
· Личное сообщение · #20

ajax пишет:
всплыла проблема на паблик, о чем я уведомлял. теперь припоминаю - косяки были на дотнет софте

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



Ранг: 56.2 (постоянный), 22thx
Активность: 0.030.08
Статус: Участник

Создано: 21 августа 2019 18:49
· Личное сообщение · #21

RAMZEZzz пишет:
СРАЗУ из ..\system32\ без попыток поиска ее где либо еще

ну напр. wintrust.dll и ранее никогда не удавалось подгрузить из папки софта - всегда грузился только из системы. Так что эта проблема не нова - видимо теперь и версион.длл попал в какой-то "тайный" список наподобие knownDLL




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 21 августа 2019 19:20
· Личное сообщение · #22

LdrLoadDll подебажте, символы же есть, все тайные списки станут явными

-----
Stuck to the plan, always think that we would stand up, never ran.





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 21 августа 2019 20:13
· Личное сообщение · #23

BlackCode пишет:
является более эстетичным, чем лодырь или инжектор

не спорю. но, например, unisoft'овская прокси-либа для ida 7.2 пошла по ... у меня в 10-ке. почему я был против такого инжекта для иды
Alf
на святое замахнулись

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 21 августа 2019 21:26
· Личное сообщение · #24

ajax пишет:
unisoft'овская прокси-либа для ida 7.2 пошла по ... у меня в 10-ке

Кинь ссылочку, гляну что там не так
Это которая типа патчит проверку ключа? Если не изменяет память, он правит условные переходы вроде,
а в файле ключа сохраняет оригинальную подпись.
Ну у меня для иды свое лекарство



Ранг: 43.1 (посетитель), 20thx
Активность: 0.160.29
Статус: Участник

Создано: 21 августа 2019 21:54
· Личное сообщение · #25

RAMZEZzz, вариант AppInit_DLLs не рассматривали? Хоть в msdn'е и сказано, что это устаревший способ и лучше его не использовать, но пока работает стабильно, хотя я не проверял в какой момент грузятся dll таким способом.




Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 21 августа 2019 21:56
· Личное сообщение · #26

user99 пишет:
AppInit_DLLs не рассматривали?

Антивирусы будут сходить с ума




Ранг: 85.5 (постоянный), 16thx
Активность: 0.040.05
Статус: Участник

Создано: 21 августа 2019 22:32
· Личное сообщение · #27

user99
Однажды пришлось использовать, но потом отказался, не на всех системах работало и да, антивири в панике

Думаю надо копать в сторону .config файла, какую либо волшебную запись внести для подгрузки длл.
Пока есть мысль сделать сборку на шарпе, которую через конфиг как либо подгрузить в дотнетовский процесс, а она в свою очередь чтобы грузила нативную version к примеру, либо сама все делала.



Ранг: 419.0 (мудрец), 647thx
Активность: 0.460.51
Статус: Участник
"Тибериумный реверсинг"

Создано: 21 августа 2019 22:32 · Поправил: ELF_7719116
· Личное сообщение · #28

AppInit_DLL, LdrLoadDll ... имхо, это уже прошлый век.
Норот Steam копает. А еще есть EA Origin и неочевидные фитчи всяких DENUVO с собственными коллбеками по абсолютно легальному запуску "левого" кода.

plutos
https://m.habr.com/ru/company/pm/blog/462479/
и где-то видел ещё - было продолжение.

| Сообщение посчитали полезным: plutos


Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 21 августа 2019 22:38
· Личное сообщение · #29

ELF_7719116 пишет:
Норот Steam копает.


Можно подробности, пожалуйста?

-----
Give me a HANDLE and I will move the Earth.





Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 21 августа 2019 23:00 · Поправил: ajax
· Личное сообщение · #30

BlackCode
было в теме про ида --> Link <--
user99
AppInit_DLLs - это не решает топик. в момент загрузки активен только kernel32. если что-то в импорте еще - часто ппц системе

-----
От многой мудрости много скорби, и умножающий знание умножает печаль


| Сообщение посчитали полезным: tromb190
. 1 . 2 . 3 . >>
 eXeL@B —› Основной форум —› Windows 10 1903 и Proxy-DLLs
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати