Сейчас на форуме: -Sanchez- (+9 невидимых) |
eXeL@B —› Основной форум —› Активность приложения. |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 25 июня 2019 22:11 · Поправил: difexacaw · Личное сообщение · #1 Как тему назвать лучше я не придумал Идея следующая Смысл в том, что бы автоматикой обнаружить новую активность апп после некоторых событий. Тоесть к примеру найти обработчик события по нажатию кнопки. Для этого нужно выделить всю активность до нажатия и определить которой там небыло. Для этого нужно определить механизмы - что сохранять и как. Так как сохранять трассы/графы затея тёмная, так как не ясно что да как, да и затратно по ресурсам. В простейшем случае я использовал следующее. В самом простом случае сохранение инструкции это маркер её исполнения, тоесть используется битовая карта, где каждый адрес соотвествует биту и взводится посе исполнения инструкции. Для хранения всего кода апп нужны сложные структуры(для экономии памяти), поэтому в простейшем случае можно рассматривать только основной образ апп и карту для него равную ImageSize/8. Если искать новую инструкцию просто по этим маркерам, то это не всегда решение, так как не даст ветвление на эту инструкцию. Тоесть необходимо найти ветвление на новый адрес(маркер которого сброшен в карте). Я использовал следующий критерий отличия событий: если маркер текущей инструкции сброшен и маркер предыдущей инструкции взведён, при этом предыдущая инструкция - ветвление, это новая активность. В первом тесте я использовал winhex, у которого ограничение на размер сохраняемого дампа. Что бы найти место проверки вначале сохраняется файл меньшего размера и при этом строится карта активности. Далее находится новый код по критерию выше при сохранении файла большего размера. В результате в лог выводятся инструкции подходящие под критерий. Место проверки сразу найдено: Для более сложного теста я использовал апп накрытое Armadillo-й: Строится карта, я ввожу данные в форму. Затем начинается проверка критерия, я жму на ввод. Справа начало лога. Сразу оказываемся в крипто-функции, судя по константам это BLAKE" как утверждает вики. 4B53EB как и 4B534C в логе из за особенностей построения карты - маркировка и проверка происходит после исполнения инструкции, тоесть новое ветвление есчо до проверки маркируется. Лог не полный, так как активность только для образа. Вот это место под отладчиком, это крипто-функция имени: Как видно метод отлично работает. Интересны мысли по сабжу. 0b51_25.06.2019_EXELAB.rU.tgz - br.7z Добавлено спустя 2 часа 24 минуты Нашёл тему Интереса ради решил взглянуть. Для блокнота 7-ки есть дебаг символы. Вот лог нажатия "=": Code:
CF0F10: Code:
b001_26.06.2019_EXELAB.rU.tgz - calc.7z ----- vx |
|
Создано: 26 июня 2019 00:38 · Поправил: mak · Личное сообщение · #2 Как будет проходить обработка, если есть вложенные события? Например если часть алгоритма это пролог, остальное это ветвления по условию, но этих условий более 10 скажем, они перемешаны, одно может тянуть другое, а может и далее ... Такая мутация может быть, в таком случае твой алгоритм захватит лишь малую часть, т.е. с каждым новым вызовом по условию, вероятность детекта будет падать. Вопрос - как и когда ты хочешь сбрасывать карту? В таком случае ручное управление сбросом и записью карты удобнее мне кажется. difexacaw пишет: если маркер текущей инструкции сброшен и маркер предыдущей инструкции взведён, при этом предыдущая инструкция - ветвление, это новая активность. x64dbg conditional branches logger [Plugin] x64_tracer x64dbg conditional branches logger [Plugin] This is just a work in progress so don't expect too much. Please test it and report if you find bugs. I use it like this : First you need 2 break points to trace between, Start and End. 1 - Throw your target in the debugger. 2 - The Start point should break. 3 - Start the plugin. 4 - Enter the name of the module you are interested in, the plugin will try to detect the name where RIP is now. 5 - Enter the target VA, i.e the point where logging should stop, It's your End point from above. There will be single stepping into this module but if RIP goes out of this module then there will be stepping over in those external modules unless there is a call back into the that target module then there will be a single step into the target module. 5 - stepping will continue until we hit the 2nd point. 6 - The plugin will show a message box telling we have ended tracing. 7 - now you can save the result to a log file which looks like this in the image below. 8 - you can use any diffing system to compare the results between 2 traces, here I used a plugin for Notepad++. ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 26 июня 2019 00:53 · Личное сообщение · #3 mak > Такая мутация может быть, в таком случае твой алгоритм захватит лишь малую часть Так ведь цель найти начало этого алго. > На скрине выше есть 4B532B, функция вызывается многократно, но в лог попал только выход из неё по рет на новый код. Желательно попробовать очистить события от ветвлений в пределах процедуры. Это пропустит некоторые события, но очистит лог - останутся call/jmp/ret. Добавлено спустя 1 час 28 минут Для наглядности записал видос Взял крэкми из какой то главы Нарвахи. Вначале собирается карта, это видно когда происходят однократные остановы на действия с гуем. Затем я разблокирую процедуру проверки карты и выводится лог. Проход по логу нашёл шифр-функцию и место с проверкой. ----- vx |
|
Создано: 26 июня 2019 12:20 · Личное сообщение · #4 |
|
Создано: 26 июня 2019 16:30 · Личное сообщение · #5 difexacaw пишет: Нашёл тему --> Link <-- Интереса ради решил взглянуть. Для блокнота 7-ки есть дебаг символы. Вот лог нажатия "=": difexacaw, большое спасибо! Не прошло и полгода и вы один из первых, кто решил пожалеть пассионарного школьника и тролля нашего форума и раскрыть для него один из своих секретов. Спасибо еще раз, тронут... весьма! А plutos говорил, что меня на форуме никто всерьез не воспринимает. Оказывается воспринимают и очень даже всерьез. Это plutos'у только книжки читать советуют, а для меня люди и программы пишут и даст бог - научат еще ими пользоваться. |
|
Создано: 26 июня 2019 16:37 · Поправил: difexacaw · Личное сообщение · #6 ARCHANGEL О какой поделке ты говоришь и какой код. Как две битмапы сравнить, так зачем вам, это же несколько строк скриптовых. mak > Например если часть алгоритма это пролог, остальное это ветвления по условию Я подумал немного, получается вот что. Можно поменять критерий, так наверно и нужно сделать, использовать так же обратный - описанные ветвления на не описанный код, тогда будет баланс между call-ret(определены входы в новый код и выходы из него) и можно исключить из лога апи(точнее пометить как вызов апи). То же самое можно сделать сравнением двух карт в статике, но в статике нет связи событий во времени. Часто есть разница при запуске апп, тоесть например сейчас работает, а на следующем запуске блокируется. Можно в принципе тоже обработать аналогично, но возникает существенная проблема с ASLR. Добавлено спустя 4 минуты dma > вы один из первых, кто решил пожалеть пассионарного школьника На самом деле я просто ввёл в поиск keygenme", что бы что то(семпл) взять для примера выше. Оказалось что за год всего две темы, вторая твоя. Это просто совпадение, хотя смысл вопроса там аналогичный. Добавлено спустя 1 час 3 минуты Вот пример из темы рядом В логе сразу код обработки пароля и крипто-функция: Метод прост, но отлично работает 90f4_26.06.2019_EXELAB.rU.tgz - ida.7z ----- vx |
|
Создано: 26 июня 2019 17:52 · Личное сообщение · #7 difexacaw Ну мож я не в теме, какие-то посты пропустил. Но у меня есть ряд вопросов. 1. Как вы определяете, какие инструкции выполнились, а какие - нет? 2. Что значит битовая карта, где каждый адрес соотвествует биту и взводится посе исполнения инструкции? Есть пример такой карты? Типа, у нас есть адрес 00430d8f - xor edx,edx. Что тут заталкивается в карту? ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 26 июня 2019 18:07 · Личное сообщение · #8 ARCHANGEL Всё крайне просто. Вчера это был тупо массив бит, сейчас я переделал что бы всё ап в карту вносилось. Простейшая таблица страниц, в которой ссылки на массивы, они выделяются налету. Собственно всё предельно просто: Code:
После исполнения каждой инструкции выполняется обработка: Code:
G_Lbr - это сам лог, !Edi - это для включения обработки в нужное время. Вот и вся обработка. Я потом изменю как выше говорил, что бы был баланс call-ret. Добавлено спустя 13 минут Кстате только ошибку заметил IcGet -> btS, но даже и так чудесным образом работает ----- vx |
|
Создано: 26 июня 2019 18:22 · Поправил: dma · Личное сообщение · #9 difexacaw, мне просто показалось или вы решили доработать метод Криса Касперски: взлом через покрытие? |
|
Создано: 26 июня 2019 18:26 · Личное сообщение · #10 |
|
Создано: 26 июня 2019 18:38 · Личное сообщение · #11 |
|
Создано: 26 июня 2019 18:46 · Поправил: Nihil enim · Личное сообщение · #12 |
|
Создано: 26 июня 2019 19:08 · Личное сообщение · #13 Nihil enim пишет: dma а утилитку уже написали для какого-то x64dbg/ida pro по методу криса? до половины ман прочитал пока-что А вы статью Криса до конца прочитайте, может и сами ответите на вопрос. А если не ответите, то лучше спрашивать у всего форума, а не конкретно у меня - так оно надежней будет и более объективней. |
|
Создано: 26 июня 2019 20:19 · Личное сообщение · #14 |
|
Создано: 26 июня 2019 20:55 · Личное сообщение · #15 |
|
Создано: 26 июня 2019 20:58 · Личное сообщение · #16 |
|
Создано: 26 июня 2019 21:16 · Личное сообщение · #17 difexacaw пишет: Я подумал немного, получается вот что. Можно поменять критерий, так наверно и нужно сделать, использовать так же обратный - описанные ветвления на не описанный код, тогда будет баланс между call-ret(определены входы в новый код и выходы из него) и можно исключить из лога апи(точнее пометить как вызов апи). То же самое можно сделать сравнением двух карт в статике, но в статике нет связи событий во времени. Оптимальное решение. В твоём двиге уже столько функционала, как всё это переключать?! Ведь бит карта работает не всегда?! Обновлённый енджин с сорсами будет? ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube |
|
Создано: 26 июня 2019 22:14 · Личное сообщение · #18 mak пишет: Обновлённый енджин с сорсами будет? Кстати, mak, какую тему вы интересную затронули, для меня по крайней мере. Хоть и оффтоп, но тема все равно родственная. Если вы про Cheat Engine, то хотел спросить: "Вешь стоящая и для каких целей она лучше подходит, на ваш взгляд?" Я на сайте геймеров как-то видел, его и в качестве трассировщика используют и как сканер памяти и инжекты для него, вроде, какие-то пишут. Или если знать Эксодию, Виндебаг, то Енджин уже ни к чему? |
|
Создано: 27 июня 2019 00:04 · Личное сообщение · #19 |
|
Создано: 27 июня 2019 11:55 · Поправил: difexacaw · Личное сообщение · #20 bartolomeo Проблема не с образами, там база указана, а с буферами. Если зафиксировать образы, то всё равно система сама выбирает где выделять буфера. Это наверно по простому не получится сделать, можно конечно сохранить базы при первом запуске и во втором принудительно адреса задавать для буферов. А есчо в юм есть рандомизация, как в загрузчике, так и в heap. Это нужно подробно всё изучать. mak > Оптимальное решение. Получилось что не оптимальное. Из лога исключаются все события с новым кодом, остаётся небольшая часть событий, это входы в него. Приходится вручную листать код. Лучше выводить несколько разных логов, в одном входы, в другом новые ветвления и тп. > Обновлённый енджин с сорсами будет? Не особо важно чем трассировать. Можно попробовать тот же SDE, хоть под ним и не всё работает. Я попытался крутнуть шахматного бота, появилась проблема. А именно что визор дико тормозит его, противник не может дождаться хода и покидает игру Так что иногда важно что бы шустро крутилось. ----- vx |
|
Создано: 27 июня 2019 14:33 · Личное сообщение · #21 Такое чувство, что я пропустил начало этого разговора. После исполнения каждой инструкции выполняется обработка Как исполнение запускается, что это за код и кто его дёргает? Можно как-то сначала начать повествование? ----- Stuck to the plan, always think that we would stand up, never ran. | Сообщение посчитали полезным: sefkrd |
|
Создано: 27 июня 2019 14:41 · Личное сообщение · #22 |
|
Создано: 27 июня 2019 16:24 · Личное сообщение · #23 |
|
Создано: 27 июня 2019 16:54 · Личное сообщение · #24 |
|
Создано: 27 июня 2019 18:14 · Поправил: dma · Личное сообщение · #25 difexacaw, вы вроде знакомы с PIN и, вроде, немного разобрались с SDE. В чем их отличие и плюсы, минусы каждого? Не поделитесь своей секретной информацией? Просто интересен ваш взгляд "старого хакера" на эти вещи. А ваш движок вы уже не будете адаптировать к современности, так сказать (без всякой иронии)? Может вам на базе P.S. Извиняюсь, если из-за своего малого опыта, какие-либо советы или вопросы вам покажутся глупыми. |
|
Создано: 27 июня 2019 20:56 · Поправил: difexacaw · Личное сообщение · #26 dma > вы вроде знакомы с PIN и, вроде, немного разобрались с SDE. В чем их отличие и плюсы, минусы каждого? SDE это инструмент, пин же мотор, который сам по себе ничего не делает. Им управляет SDE. Ты думал это разные инструменты Как пин работает я толком не знаю, впрочем мне это мало интересно. Можно посмотреть как работает с ним SDE, так это набор дичайших костылей. Оно не только эмулирует инструкции, но выделяет в буфера циклы и напрямую их там запускает, короче там чёрт ноги сломит. Фишка в том, что как я знаю SDE не опенсорс. Его не так просто под свои цели переделать, к примеру в сурках пина есть выборка инструкции, реально же это её копирование в pinvm.dll не в порядке очереди, а фактически рандомом, так трассировать не получается. А есчо к трассируемому коду выборки тоже произвольны, он зачем то копируется в буфера > А ваш движок вы уже не будете адаптировать к современности А что там адаптировать, он отлично крутит 86, получше к примеру того же SDE в свои 50кб. Но современность это 64. > Может вам на базе > этой библиотеки < замутить какой-нибудь свой новый движок? Это всё бесполезные навороты, имхо. ----- vx | Сообщение посчитали полезным: dma |
|
Создано: 27 июня 2019 21:29 · Поправил: dma · Личное сообщение · #27 difexacaw пишет: Ты думал это разные инструменты Ну то, что в SDE входит PIN, про это я, допустим, читал. А в целом, естественно, во все тонкости еще не посвящен - не успеваю, времени не хватает. За час, за два это же все не освоишь. Как говорится, "разрываюсь на части", то одно урвешь, то другое, но постепенно, я думаю, можно во всем разобраться. Сейчас вот заинтересовался эмулятором Bochs, вы с ним никогда не работали? Любимый инструмент (из эмуляторов), кстати, Ионеску. |
|
Создано: 27 июня 2019 21:37 · Личное сообщение · #28 |
|
Создано: 27 июня 2019 21:52 · Личное сообщение · #29 dma Тебе как и мне бош не нужен, тебе до запила своей ОС очень далеко. А для иных целей оно не нужно. У ионеску главный инструмент это пиар, остальное не важно. > Ну то, что в SDE входит PIN, про это я, допустим, читал. Как это описывается не соответствует реальности, лучше раз увидеть, чем сто раз какую то фигню про него прочитать. Вот смотри интересная фича. Обычно отладка юзер апп начинается с системных шлюзов, тоесть это интерфейс к ядру. Если апп что то делает, то оно непременно обратиться к ядру. Вот запущен SDE и выводит трассу в файл. В работе задействовано 3 процесса. Два из них остановлены, работает сам пин. Файл с логом растёт в размере. Я ставлю останов на возврат из ядерного шлюза, ничего не происходит - сервисы не вызываются. Останавливаю поток - файл не растёт. В 86 из сервисного вызова возврат на фиксированный адрес, как такое может быть ? Нужен ядерный отладчик ?. Он вызывает сервисы через старый шлюз прерывания, что бы это нельзя было в юзермоде отлаживать. Возврат из прерывания на следующую инструкцию, тоесть нужно знать где вызывается Int2e. Если тормознуть в произвольный момент, то на нём и становится. Такое даже дикая малварь не юзала обычно, в старые добрые времена 497b_27.06.2019_EXELAB.rU.tgz - sde.7z ----- vx |
|
Создано: 27 июня 2019 22:56 · Личное сообщение · #30 difexacaw пишет: Тебе как и мне бош не нужен, тебе до запила своей ОС очень далеко. А для иных целей оно не нужно. Вот как раз для иных целей он мне, возможно, и будет очень полезен. Вот скажем понадобится вам для дела не 4 а 40 или 100 аппаратных точек прерывания (BP) и что вы будете делать? А я вам отвечу, что для этого вам нужно всего лишь открыть Бош и ставьте хоть 200 аппаратных точек прерывания. Я уже молчу про всякие "витиеватые" условия срабатывания этих самых точек (BP). Ладно, difexacaw, разберусь с Бошем - я вас научу. О Боше, кстати, хорошо отзывался ntldr, у нас на форуме. Я так понял, что Бош ему очень нравиться. А вот то, что он жутко тормозит это да, но у каждой медали есть обратная сторона. Говорят, что на отладке это не так заметно, как при работе OS в эмуляторе. В общем, нужно хотя бы раз попробовать, чтобы узнать все на практике. А для этого все равно нужно в нем разобраться. P.S. Я что думаю, difexacaw, может нам для общения на почту перебраться или хотя бы в личку, а то мы тут такие темы обсуждаем, что f13nd может позвонить своим коллегам генералам из спецслужб и за вами приедут. Или вы вместе с ним тоже там работаете. |
. 1 . 2 . >> |
eXeL@B —› Основной форум —› Активность приложения. |
Эта тема закрыта. Ответы больше не принимаются. |