| Сейчас на форуме: 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. | 











 Для печати