Антидамп

Тема в разделе "WASM.HEAP", создана пользователем Rel, 31 дек 2020.

Статус темы:
Закрыта.
  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    То есть грубо говоря, через отлов исключений по инструкции расшифровывать? Мне кажется, что это очень медленно будет, не?

    Что значит закрыть область памяти?
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Ну ты можешь меня говном поливать, но не важно я тебя один механизм расскажу. Дий изначально был заточен на то что ы крутить протекторы крипторы малварь, то где извратов системных макс количество. Что бы опасный код управление не получил, с учётом что дий мотор чистый нэйтив и для не нужен юзер слой, был реализован механизм блокировки памяти - все блоки разрешённые на исполнение в список. Всё ап не исполняемо, кроме самого мотора, нэйтива и буферов трансляции.
     
  3. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    VirtaulProtect с NO_ACESS флагом
    По сути мы не даем доступ к этой части. При ReadProcessMemory не позволяет читать по этому адресу
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Еще раз, во-первых шелл не будет исполняться без прав на исполнение, во-вторых ничего не помешает аверу вернуть памяти права на чтение и прочитать ее, даже без ядра.
     
  5. nullPtr

    nullPtr Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2020
    Сообщения:
    138
    во-первых, я запускаю шелл с пейдж эксекьют реадврайт
    После запуска меняю на но аксесс

    Ну теперь я понял

    Можно ли тут пойти на хитрости?
    Тип нагибаем эмулятор и так же запускаем.
    Кста, авер в любом случае восстановит память или пропускает как фолз позитив фичей?
    Можно как-нибудь отловить процесс востановления защищенной памяти авером и вызвать VirtualFree?
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Чтобы каждая отдельная инструкция шелла исполнилось, нужно, чтобы в этот момент времени она находилось на странице, доступной на исполнения. В общем не спорь, это не будет работать так, как ты думаешь.
     
    nullPtr нравится это.
  7. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    Я не особо силен в ав-технологиях и ядре, но насколько мне известно, там стоит коллбек. Т.е. выделяешь память - срабатывает процедура, создаешь процесс/файл - другая. Т.е. тут нельзя "проскочить", это не таймауты вида раз в Х секунд мониторим память, кто успел тот и выделил ШК, это другое.

    Авер мониторит виртуалпротект и аллок с определенными флагами; хз, может и вправду как -то можно заюзать ту Инди-технику и обойти, не знаю. У меня не хватает скилла/времени, чтобы осилить всю матчасть.

    Хотя, даже после беглого прочтения мануалов по ринг0, не представляю как можно обмануть драйвер.
     
  8. cddee3

    cddee3 Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2020
    Сообщения:
    55
     
  9. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    nullPtr,

    > При ReadProcessMemory не позволяет читать по этому адресу

    Ну конечно, блока нет. Данных твоих читать нечего. Можно и не выделять ничего с таким же успехом, какая разница был блок и ты его освободил или его вообще небыло.
     
  10. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    861
    А сам транслятор же будет виден, не так ли? И еще вопрос. К примеру код который в таком анклаве вызывает VirtualAlloc и далее уже работает с этой памятью. Будет ли эта память также скрыта?
     
  11. hiddy

    hiddy Member

    Публикаций:
    0
    Регистрация:
    10 мар 2019
    Сообщения:
    82
    Да, уже изобрели подобное: https://lospi.net/security/assembly...7/03/04/gargoyle-memory-analysis-evasion.html
    Правда защита получит уведомление VirtualProtect(Exec) и спалит пейлоад. Нужно как минимум иначе вызывать сервис и ксорить шеллкод до и после выхода из сна.
     
    nullPtr нравится это.
  12. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    861
    Можно попробовать rop'ом загрузить виртуальную машину VBS/JS/VB6 и там уже выполнять код на стековой виртуальной машине - это не требует памяти для исполнения.
     
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Thetrik,

    > А сам транслятор же будет виден, не так ли?

    Ну конечно и это сигнатура.

    > VirtualAlloc и далее уже работает с этой памятью. Будет ли эта память также скрыта?

    Так реализация же не хард, а софт. Ну есть апи память выделяет дальше что. В списки не добавил не обработал и не скрыто, я хз о чём речь.
     
  14. cddee3

    cddee3 Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2020
    Сообщения:
    55
    Инде уже писали что его прот/вирту будут детектить по коду прота, а не по тому что он защищяет
    его софтварный анклав уже реализован в касперском - сэндбокс с помощью гипервизора, идея такая же - перехват всех вызовов API через PageFault
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    А как ты rop'ом это сделаешь, там же нужна реализация интерфейса IActiveScriptSite (ну кроме vb6).
    --- Сообщение объединено, 4 янв 2021 ---
    Ну индеклав, насколько я понимаю будет в ринг3 работать, а не в ринг минус бесконечность.
    --- Сообщение объединено, 4 янв 2021 ---
    Во, тут хотя бы есть внятное описание, а не асм-высер с парой предложений на эльфийском. И что? Набутылили тех, кто это описание сделал, нет?
     
  16. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    861
    Я имею в виду когда идет выборка к этой выделенной памяти, нам нужно подменить ее, правильно? В самом простом случае к примеру у нас в eax адрес в пределах этой выделенной памяти, наш код делает к примеру mov [eax], ebx. Мы его транслируем к примеру push ecx; mov ecx, ebx; xor ecx, 0x12345678; mov [eax], ecx; pop ecx, Т.е. вместо оригинального значения записываем поксоренное, но память все-равно видна хоть и поксоренная. Другой момент передача такой памяти внешним функциям.

    А зачем реализация? Я имею в виду напрямую стековой машине код передавать, а не скрипт.
    --- Сообщение объединено, 4 янв 2021 ---
    Кстати, как вариант (извращенный конечно), можно использовать память GPU.
     
  17. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Это интересно, но этот интерфейс же неэкспортируется, верно? То есть надо будет образно грузить vbscript.dll и искать неэкспортируемую функцию в ней, или я что-то не понимаю? Если да, то вопрос в том, каким способом искать эти функции стабильно для всех версий библиотеки?
     
  18. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Thetrik,

    > Мы его транслируем к примеру push ecx

    Зачем нам морф ?

    Транслятор(трансляция понимается адресная/бинарная) раскодирует линейный адрес, в твоём примере это значение регистра eax. На следующей итерации выборка изменится, в самом простом случае будет либо эмуляция, но я так не делал, а использовал смещение в кодировке самой инструкции: [eax][+disp]. disp это смещение на локальный буфер(тлс). Но можно как угодно сделать. При прямом исполнении будет адрес [eax]. При подмене выборки [eax + X], соотв по [eax] памяти нет. Ну а что касаемо буферов они не линейны, это значит что авер вирта не может создать на них сигнатуру. Эмуляцию я считаю слишком толстой и не стабильной, не пригодной для использования.
     
  19. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    861
    Для vbs не экспортируется, для msvbvm60 экспортируется.

    Да.

    Ну вообще это зависит от ситуации. Если ситуация позволяет то сигнатурно можно найти с большой вероятностью. Для vb6 рантайма там все просто.
    --- Сообщение объединено, 5 янв 2021 ---
    А как поступить если нужно вызывать внешнюю API, либо записать в файл такой буфер? Его же нужно уже расшифрованным передавать.
     
  20. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    А он JITит байткод или там интерпретатор?

    А как называется?

    Ну сигнатурно стремно искать, мало ли что может в коде поменяться от версии к версии. Ты не смотрел, может она есть в vtable какого-то интерфейса? Хотя вряд ли, это было бы слишком просто.
     
Статус темы:
Закрыта.