Сейчас на форуме: -Sanchez- (+9 невидимых) |
eXeL@B —› Основной форум —› Windows 10 1903 и Proxy-DLLs |
. 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 20 августа 2019 00:07 · Поправил: RAMZEZzz · Личное сообщение · #1 После обновления на 1903 люди начали жаловаться что перестали работать лекарства, реализованные через прокси-дллки. Например version.dll Для тех кто не в теме: винда по умолчанию (раньше) ищет загружаемую прогой dll сначала в папке самой проги, если не находит, то дальше идёт в ...\system32\ .Если мы создаём dll с системным именем, как например version.dll, сделаем в ней тот же экспорт, и "проксирование" этого экспорта на настоящую системную dll. То все будет работать как раньше, но наша dll уже инжектирована в процесс, причем на самом старте, и мы можем делать с ним что угодно. Тепрь же это не прокатывает, dll сразу грузится из system32.... Комрады, в какую сторону копать? Чую какое то обновление виновато, может какие записи в реестре появились или еще что. Кстати в Win2012 после установки обнвлений та же беда... |
|
Создано: 20 августа 2019 00:37 · Личное сообщение · #2 |
|
Создано: 20 августа 2019 01:06 · Личное сообщение · #3 |
|
Создано: 20 августа 2019 01:38 · Поправил: plutos · Личное сообщение · #4 RAMZEZzz пишет: Ответа на вопрос там не нашел. Присоединяюсь к вопросу. Прочел раздел про Dynamic-Link Library Security, но тоже не нашел там ответа. Может быть дружище VOLKOFF ткнет носом? PS может тут дело в Code:
----- Give me a HANDLE and I will move the Earth. |
|
Создано: 20 августа 2019 01:53 · Поправил: RAMZEZzz · Личное сообщение · #5 |
|
Создано: 20 августа 2019 07:29 · Поправил: BlackCode · Личное сообщение · #6 |
|
Создано: 20 августа 2019 07:56 · Поправил: Alchemistry · Личное сообщение · #7 Если твоя version.dll уже загружена так или иначе кем-то еще, напрямую или через аписет то твоя дллка не будет использоваться. Если процесс который ты решил проксировать ставит митигейшн опции PreferSystem32Images приоритет загрузки также меняется. Это может быть установлено как в коде так и в реестре. В любом случае ты дал мизерное количество информации и предоставил гадать на гуще. Воспроизводить это у себя мне да и большинству лень. Если твой целевой процесс дотнет параша то да там чето было в 1903 касательно мощных апдейтов дотнет направленных на секьюрити. | Сообщение посчитали полезным: BlackCode |
|
Создано: 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. |
|
Создано: 20 августа 2019 11:27 · Личное сообщение · #9 BlackCode Да вот хоть эта https://yadi.sk/d/WBb00vl0PjC6Mg Alchemistry До обновления работало прекрасно, проверил 3 приложения, правда все дотнетовские. Похоже что .net 4.8 виноват, до этого 4.7.2 стоял... Ещё проверю НЕ дотнет и проверю после установки 4.8 на семерке например. dezmand07 Это то все понятно, так бы и до обновления винды не работало, а оно работало прекрасно. И не одно приложение. plutos У тебя тоже с дотнетом это было? Или не только? plutos |
|
Создано: 20 августа 2019 11:38 · Личное сообщение · #10 |
|
Создано: 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 |
|
Создано: 21 августа 2019 01:22 · Личное сообщение · #12 проверил НЕ дотнет проги - все работает Короче проблема в .NET 4.8 Не в курсе, есть у дотнета какие либо "рычажки" за которые можно подёргать? BlackCode Я обычно при загрузке моей длл хуки ставлю на нужные апи и подменяю их результаты в случае выполнения нужных мне условий, например возвращаю успешный результат проверки ЦП в "своей" лицензии и т.п. Поэтому не так важно когда она загрузилась, так как проверки в большинстве случаев начинаются позже. По крайней мере лет за 5 использования такого способа проблем не возникало. difexacaw пишет: Теперь возвращайтесь к исходной задаче и пилите загрузчик - инфект, либо запуск с инжектом не всегда это возможно, например прога протектором накрыта, а так бросил dll которая хуки поставила и ждёт своего часа - и всё (с темидой, армадилой, хаспЛМ и т.п. прокатывает отлично). Добавлено спустя 8 минут BlackCode пишет: Только что переустановил винду на 1903, проверил свои просики.. все работает дотнетовские проги есть? проверьте плиз. Ну и убедитесь что в системе уже .net 4.8 |
|
Создано: 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:
Ну, раз TRUE, значит .net 4.8 installed. BlackCode пишет: Только что переустановил винду на 1903, проверил свои просики.. все работает И у меня вроде все работает... Может какой kb был виноват? Теперь переустановил с нуля и порядок. ----- Give me a HANDLE and I will move the Earth. | Сообщение посчитали полезным: BlackCode |
|
Создано: 21 августа 2019 03:20 · Поправил: VOLKOFF · Личное сообщение · #14 Вы чего все через зеркало ходите, или это у меня только форум не работал последние сутки? Alchemistry пишет: Если твоя version.dll уже загружена так или иначе кем-то еще, напрямую или через аписет то твоя дллка не будет использоваться. Если процесс который ты решил проксировать ставит митигейшн опции PreferSystem32Images приоритет загрузки также меняется Именно, о чем прямо написано в доках, я не "на отвали" ссылку оставил, если бы были принципиальные изменения в билде ОС, об этом было бы упомянуто чуть ли не жирным шрифтом. DLL Redirection официально заявлена как фича и проснувшись с утра в плохом настроении ее никто не выпилит без предупреждения в ближайшем апдейте. И по большому счету проблема решается банальным перехватом загрузки модулей. Неудобняк стартовать с лодыря, можно пропатчить IAT и еще 100500 вариантов. Что касается NET, имеет смысл глянуть манифесты и конфиги, вроде можно Не исключено что у вас дефендер или антивирусники шалят |
|
Создано: 21 августа 2019 05:03 · Личное сообщение · #15 |
|
Создано: 21 августа 2019 05:46 · Личное сообщение · #16 RAMZEZzz Если это теперь часть фреймворк ты можешь попробовать альтернативные методы подгрузки длл. Например дотнет CorProfiler. | Сообщение посчитали полезным: plutos |
|
Создано: 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 |
|
Создано: 21 августа 2019 14:52 · Поправил: RAMZEZzz · Личное сообщение · #18 сделал простенькую дотнет программку, создающую и проверяющую RSA сигнатуру: с заведомо правильной подписью и с заведомо неправильной. Она использует CryptVerifySignatureW. Также рядом кладу version.dll, которая подменяет CryptVerifySignatureW на свою, возвращающую всегда TRUE. Вот результаты тестов: Win 7 с дотнетом 4.7.2 Win 7 с дотнетом 4.8 (обновил) Win 10 с дотнетом 4.8 Вот сама программа (под .NET 4.5.2) с исходником и с version.dll: Ну и соответсвенно ProcMon показывает загрузку version СРАЗУ из ..\system32\ без попыток поиска ее где либо еще |
|
Создано: 21 августа 2019 16:00 · Поправил: ajax · Личное сообщение · #19 BlackCode всплыла проблема на паблик, о чем я уведомлял. теперь припоминаю - косяки были на дотнет софте difexacaw сонди это натив использование лоадера катит, причем сразу грузим version из папки софта без проблем. но, если у софта несколько модулей - делать "спрута" на createprocess() не самый лучший вариант RAMZEZzz пишет: ProcMon показывает загрузку version СРАЗУ угум-с ----- От многой мудрости много скорби, и умножающий знание умножает печаль |
|
Создано: 21 августа 2019 17:29 · Личное сообщение · #20 ajax пишет: всплыла проблема на паблик, о чем я уведомлял. теперь припоминаю - косяки были на дотнет софте Для дотнет я не использую прокси, только для нативных прог. Идеальным решением проксирование либ, конечно не является. Но этот метод, как по мне, является более эстетичным, чем лодырь или инжектор. |
|
Создано: 21 августа 2019 18:49 · Личное сообщение · #21 |
|
Создано: 21 августа 2019 19:20 · Личное сообщение · #22 |
|
Создано: 21 августа 2019 20:13 · Личное сообщение · #23 |
|
Создано: 21 августа 2019 21:26 · Личное сообщение · #24 |
|
Создано: 21 августа 2019 21:54 · Личное сообщение · #25 |
|
Создано: 21 августа 2019 21:56 · Личное сообщение · #26 |
|
Создано: 21 августа 2019 22:32 · Личное сообщение · #27 user99 Однажды пришлось использовать, но потом отказался, не на всех системах работало и да, антивири в панике Думаю надо копать в сторону .config файла, какую либо волшебную запись внести для подгрузки длл. Пока есть мысль сделать сборку на шарпе, которую через конфиг как либо подгрузить в дотнетовский процесс, а она в свою очередь чтобы грузила нативную version к примеру, либо сама все делала. |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.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 |
|
Создано: 21 августа 2019 22:38 · Личное сообщение · #29 |
|
Создано: 21 августа 2019 23:00 · Поправил: ajax · Личное сообщение · #30 BlackCode было в теме про ида user99 AppInit_DLLs - это не решает топик. в момент загрузки активен только kernel32. если что-то в импорте еще - часто ппц системе ----- От многой мудрости много скорби, и умножающий знание умножает печаль | Сообщение посчитали полезным: tromb190 |
. 1 . 2 . 3 . >> |
eXeL@B —› Основной форум —› Windows 10 1903 и Proxy-DLLs |