eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: SDK (+7 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

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


Ранг: 78.3 (постоянный)
Статус: Участник

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

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

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

Ранг: 130.1 (ветеран)
Статус: Участник

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

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


Ранг: 78.3 (постоянный)
Статус: Участник

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

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


Ранг: 508.2 (!)
Статус: Участник
_Вечный_Студент_

Создано: 20 августа 2019 01:38 · Поправил: plutos New!
Цитата · Личное сообщение · #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."


Ранг: 78.3 (постоянный)
Статус: Участник

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

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


Ранг: 53.1 (постоянный)
Статус: Участник

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

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

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

Ранг: 126.3 (ветеран)
Статус: Участник

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

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

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


Ранг: 10.9 (новичок)
Статус: Участник

Создано: 20 августа 2019 08:58 · Поправил: dezmand07 New!
Цитата · Личное сообщение · #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.


Ранг: 78.3 (постоянный)
Статус: Участник

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

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


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

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

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


Ранг: 302.0 (мудрец)
Статус: Участник

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

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

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


Ранг: 53.1 (постоянный)
Статус: Участник

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

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

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

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



Ранг: 78.3 (постоянный)
Статус: Участник

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

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

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

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

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

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

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


Ранг: 508.2 (!)
Статус: Участник
_Вечный_Студент_

Создано: 21 августа 2019 03:15 · Поправил: plutos New!
Цитата · Личное сообщение · #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 был виноват?
Теперь переустановил с нуля и порядок.

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


Ранг: 130.1 (ветеран)
Статус: Участник

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

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

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


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

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

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

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


Ранг: 508.2 (!)
Статус: Участник
_Вечный_Студент_

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

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


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

Ранг: 126.3 (ветеран)
Статус: Участник

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

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

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



Ранг: 302.0 (мудрец)
Статус: Участник

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

RAMZEZzz

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

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

BlackCode

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

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

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

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

{ Атач доступен только для участников форума } - 0xB94_szondi.exe_.log.7z


Ранг: 78.3 (постоянный)
Статус: Участник

Создано: 21 августа 2019 14:52 · Поправил: RAMZEZzz New!
Цитата · Личное сообщение · #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\ без попыток поиска ее где либо еще


Ранг: 333.9 (мудрец)
Статус: Участник
born to be evil

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

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

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

угум-с


Ранг: 53.1 (постоянный)
Статус: Участник

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

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

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

Ранг: 48.5 (посетитель)
Статус: Участник

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

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

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


Ранг: 659.3 (! !)
Статус: Участник
ALIEN Hack Team

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

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


Ранг: 333.9 (мудрец)
Статус: Участник
born to be evil

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

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

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


Ранг: 53.1 (постоянный)
Статус: Участник

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

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

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

Ранг: 16.1 (новичок)
Статус: Участник

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

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


Ранг: 53.1 (постоянный)
Статус: Участник

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

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

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


Ранг: 78.3 (постоянный)
Статус: Участник

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

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

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

Ранг: 378.6 (мудрец)
Статус: Участник
"Тибериумный реверсинг"

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

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

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

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



Ранг: 508.2 (!)
Статус: Участник
_Вечный_Студент_

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

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


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


Ранг: 333.9 (мудрец)
Статус: Участник
born to be evil

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

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

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

. 1 . 2 . >>
 eXeL@B —› Основной форум —› Windows 10 1903 и Proxy-DLLs

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS