Сейчас на форуме: bartolomeo, asfa, _MBK_ (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› SEH etc. |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 09 ноября 2011 21:15 · Личное сообщение · #1 Здрасти Такая вот задача. Есть ссылка. Нужно по этой ссылке прочитать значение так, чтобы всё не упало. Юзермод. Сразу скажу что ставить сех не годно - код вне модуля. Посему скажу требования: 1. Код вне модулей, сех мы юзать не можем. 2. Про никакие модуля мы ничего не знаем, соответственно VEH мы заюзать не можем. 3. Всякие апи не доступны - про модуля ничего не известно. 4. Авер за нами следит, соответственно мы не можем дёрнуть то, что нельзя. Предлагайте решение. ![]() |
|
Создано: 12 ноября 2011 22:02 · Личное сообщение · #2 Юзермод - VirtualQuery / NtQueryVirtualMemory Кернелмод - MmIsAddressValid / чтение PDE и PTE (второе очень не рекомендую). P.S. Нужно обязательно искать апи, никакой системно-зависимой ереси с int2e/sysenter. P.P.S. А еще лучше так не делать, потому что валидная область памяти может стать невалидной между проверкой и обращением. Юзайте нормальные валидные модули, нормальные исключения и нормальные API. ----- PGP key ![]() |
|
Создано: 12 ноября 2011 22:22 · Личное сообщение · #3 |
|
Создано: 12 ноября 2011 23:55 · Личное сообщение · #4 PE_Kill, покажи свой вариант с проверкой на запись, если он не такой, как предлагалось. Насчёт misalignment'а: да, адрес стоит выровнять перед вызовом, это не критично ![]() ntldr, такой смешной ![]() F_a_u_s_t пишет: да и в малваре не жилательно ммм, а вот в соседнем топике кто-то писал, что в малваре не разбирается, и вдруг советы даёт… ![]() |
|
Создано: 13 ноября 2011 07:45 · Личное сообщение · #5 |
|
Создано: 13 ноября 2011 10:34 · Поправил: F_a_u_s_t · Личное сообщение · #6 |
|
Создано: 13 ноября 2011 11:34 · Личное сообщение · #7 |
|
Создано: 13 ноября 2011 12:07 · Поправил: lomeavae · Личное сообщение · #8 ntldr > P.S. Нужно обязательно искать апи, никакой системно-зависимой ереси с int2e/sysenter. Не нужно ничего искать, код выше рабочий во всей линейке. Даже в W8, которою инде никада не юзал. > Юзайте нормальные валидные модули, нормальные исключения и нормальные API. Для некоторых задач это не приемлимо. F_a_u_s_t > Если почитаешь другую млю тему,то увидишь что я пишу утиль типа AVZ. > Если малварь не может работать на любой оси,то накуй она нужна? Есчо один авер, почему это оно не будет работать ? Сигнатурный детектор никому не нужен. Их наплодили как грязи. Смиритесь с мыслью, что детектить вы ничего не сможите, защищать ядро также. К стате ту тему прикрыли про EP, посему напишу тут. В качестве стартап адреса можно взять фактически любую инструкцию и использовать её как стаб. Простейший пример - инструкция самая простая рет, которых в нэйтиве тысячи. Ну сохраню я на стеке адрес возврата и запущу поток, который выполнит рет и перейдёт на мой код. Вы получите системный стартап адрес. Так можно использовать миллионы инструкций. Да и не только исполнять - можно вызвать фолт. Можно подменить сегмент(для аверов это епик фейл, ибо дерьмо это детектить нормально не может - они думают что сегмент всегда KGDT_R3_CODE). Я всегда создаю потоки через такой стаб, вдобавок к этому юзаю сех и вызываю апи также через стаб(см STPT). В младших версиях был функционал(ThreadQuerySetWin32StartAddress), который юзался до вызова EP модуля, но его можно менять как угодно. Code:
Это W8, ядро 6.2.8102.101. В W7 аналогично. Не пойму как оно у вас работать может ![]() PE_Kill Никто ничего не забивает обычно в виде хардкода. Ид сисколов можно определить динамически(и теневых тоже), но обычно их напрямую не юзают, есть стабы. ![]() |
|
Создано: 13 ноября 2011 12:22 · Поправил: F_a_u_s_t · Личное сообщение · #9 |
|
Создано: 13 ноября 2011 12:44 · Личное сообщение · #10 F_a_u_s_t Не, в 7 есть, не то я смотрел: Code:
Выпилили походу сие чудо тока в 8. ![]() |
|
Создано: 13 ноября 2011 12:51 · Личное сообщение · #11 |
|
Создано: 13 ноября 2011 13:08 · Поправил: lomeavae · Личное сообщение · #12 |
|
Создано: 13 ноября 2011 13:10 · Личное сообщение · #13 |
|
Создано: 13 ноября 2011 13:12 · Личное сообщение · #14 lomeavae пишет: Никто ничего не забивает обычно в виде хардкода. Ид сисколов можно определить динамически(и теневых тоже), но обычно их напрямую не юзают, есть стабы. Я знаю, я выразился абстрактно, чтобы показать, что в этой сфере обычные правила программирования могут не действовать, задачи и условия иные. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 13 ноября 2011 13:14 · Личное сообщение · #15 |
|
Создано: 13 ноября 2011 14:24 · Личное сообщение · #16 lomeavae пишет: Не нужно ничего искать, код выше рабочий во всей линейке. Даже в W8, которою инде никада не юзал. Ужоснах. У меня возникает ощущение что ваши программы состоят из недокументированных и потенциально нестабильных приемов чуть менее чем полностью. Оно где-нибудь кроме как у вас работает? Учитывая еще что вы пишите на асме, скорее всего ваш код никогда не был в продакшене. lomeavae пишет: Для некоторых задач это не приемлимо. Меняйте подход, переформулируйте задачи. Я понимаю что стандарты качества для малвари ниже плинтуса, а промышленные подходы к разработке и тестированию для малварщиков пустой звук, но во всём надо знать меру. Может я хреновый программист, но у меня допустимый лимит андок приемов - 2-3 на сложный проект и не больше одного на простой. Каждый такой прием оборачивается долгим тестированием, множественными багрепортами и выносом мозга пользователями у которых оно не работает (причину почему не работает не всегда удается установить). Если что-то можно сделать документированным или близким к документированному способом, пусть даже написав в 5 раз больше кода, то я так и делаю. А если делаю андок, то пихаю 100500 проверок всех мелочей (проверки часто занимают больше, чем сам код) из соображений что лучше пусть выдает внятную ошибку и не работает, чем непредсказуемо падает или тихо глючит. ----- PGP key ![]() |
|
Создано: 13 ноября 2011 14:36 · Поправил: lomeavae · Личное сообщение · #17 ntldr > Оно где-нибудь кроме как у вас работает? Так попробуйте. То что вы считаете андоком и не стабильностью это глоссы. Проверьте сами приведённый выше код. Он в принципе не может быть не стабильным(тот юзермодный). > Меняйте подход Как его изменить то, как чекать память без копания в экспорте ? Вы видимо всегда обёртывали в сех не безопасный код, но для этого нужно запилить свой менеджер сех, ибо бесполезен он если код не в модуле, а обычно это так(у меня). Скажу что документированными методами я вообще ничего не могу решить, так как эти задачи выходят за стандартные рамки. Документированно вообще нельзя лазить по коду и знать ассемблер. Я малварщик, у нас почти всё андок. Вините в этом мс, почему они не запилили апи типо InfectFile() или EscalateWin32k() ![]() ![]() |
|
Создано: 13 ноября 2011 14:42 · Личное сообщение · #18 |
|
Создано: 13 ноября 2011 15:13 · Личное сообщение · #19 |
|
Создано: 13 ноября 2011 15:32 · Личное сообщение · #20 |
|
Создано: 13 ноября 2011 15:37 · Личное сообщение · #21 |
|
Создано: 13 ноября 2011 15:47 · Личное сообщение · #22 lomeavae пишет: Проверьте сами приведённый выше код. Он в принципе не может быть не стабильным(тот юзермодный). Сначала проверим ваш кернелмодный код, вот этот: Code:
Начнем с того что он просто не работает. Нигде. Ошибка в mov edx,[esp + 2] ; IDT base, надо mov edx,[esp + 6]. Исправляем, теперь вроде-бы работает. Итого: в простейшем коде аналоге MmIsAddressValid нам удалось наступить на грабли и получить проблемы с портабельностью на x64, и всё из-за применения асма не по делу. Теперь проверим ваш юзермодный код: Code:
На x64 не работает сходу. И не заработает, потому что системные вызовы из Wow64 идут не через int 0x2E. На 32х битах можно получить бсод если какая-нибудь кривая шняга криво похукала инты (а на 32х битах такой шняги хватает, слава Microsoft что хоть на x64 отучили криворуких лезть в такие места). Вот такая вот ![]() ----- PGP key ![]() |
|
Создано: 13 ноября 2011 19:52 · Поправил: lomeavae · Личное сообщение · #23 ntldr Это x86 код. Что вы его тестите на другой архитектуре. Вы на ракету загрузите и потом обвените меня что она не летает ![]() > Ошибка в mov edx,[esp + 2] А ну точна, адрес возврата же в стеке. Но я его на коленке собрал и торчал тогда, так что не нужно меня обвинять. И что вы всё про MmIsAddressValid, это кривая апишка. Но идея полностью годная. Какбы вы не выпендривались с вашим скриптом будет #PF. > На 32х битах можно получить бсод Не возможно. Этот код, в отличие от ядерного многократно откатан и проверен. А бсод можно на любой инструкции получить. Так что вы товарищ идёте лесом, ибо нихуя не шарите. И вообще товарищ, я например пэхопэ не знаю и не лезу туда, так же и вы должны - раз нихера не понимаете, то и суваться не стоит. Свинья в апельсинах не шарит. Я заметил что вы вроде как(это есчо не факт) разбираетесь в криптографии, вам был задан вопрос ![]() |
|
Создано: 13 ноября 2011 20:04 · Личное сообщение · #24 |
|
Создано: 13 ноября 2011 20:24 · Личное сообщение · #25 |
|
Создано: 13 ноября 2011 20:37 · Личное сообщение · #26 Просто интересно, как решат проблему с Инде, если понадобится забанить его нахрен? Т.е. чтоб он не заходил сюда под другими никами? Инде, пока вы ещё тут, скажите, а какие-либо ваши поделки попадали когда-нибудь на анализ аверам? Если да, то можно увидеть их имена, результаты анализа и т.д. Если сильно палевно (стыдно, не хочется показывать массам), то можно в личку. ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 13 ноября 2011 20:46 · Поправил: nepwk · Личное сообщение · #27 |
|
Создано: 13 ноября 2011 20:51 · Личное сообщение · #28 nepwk Вы говорите очевидные факты. Я же имею ввиду конкретные примеры - названия, образцы, описания, техники. Т.е. сугубо практические вещи. Такое есть? Т.е. когда-то была эпидемия некоего вируса Sector.16 (Dr.WEB) ака Sality (Касперчег), он был не идеален, но про него есть хоть какая-то инфа. Так же и про Зевса, TDL3 и многих других. У вас есть что-то известное? ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 13 ноября 2011 20:56 · Личное сообщение · #29 |
|
Создано: 13 ноября 2011 21:01 · Личное сообщение · #30 |
|
Создано: 13 ноября 2011 21:02 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
![]() |
eXeL@B —› Вопросы новичков —› SEH etc. |