eXeL@B —› Софт, инструменты —› SIDE. |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 13 . 14 . >> |
Посл.ответ | Сообщение |
|
Создано: 03 августа 2013 16:29 · Поправил: Dr0p · Личное сообщение · #1 o x86, KM, MI, KDR; откат на 5.1, 6.1; недетект всяким аверским говном. Пиздатый мотор для дебага всякой юзермодной погани. Теперь не нужно юзать ядерный дебаг, чтобы всякая хуита не вышла из под отладки. Возможность выбора сервисной таблицы. Отлавливаются все сисколы в системе, редирект в юзермод, там наш фильтр их обрабатывает и вертает управленье в юзермод. Возврат из ядра на адрес PEB[0xFFC], флаг по тому же смещенью в TEB запрещает обработку(по дефолту сброшен, тоесть пропускается). При возврате имеем в rEax номер сервиса, на стеке: Code:
Прожект с vx.security-portal.cz 3ab6_03.08.2013_EXELAB.rU.tgz - SIDE.zip | Сообщение посчитали полезным: hors, daFix, Lacoste, Paranoid Koneko, Abraham, JKornev, DenCoder, dosprog, Coderess, Tolkin, VanHelsing |
|
Создано: 22 ноября 2013 16:49 · Личное сообщение · #2 |
|
Создано: 22 ноября 2013 17:38 · Поправил: Dr0p · Личное сообщение · #3 |
|
Создано: 22 ноября 2013 18:31 · Личное сообщение · #4 |
|
Создано: 23 ноября 2013 02:30 · Поправил: Dr0p · Личное сообщение · #5 Gideon Vi Вся необходимая инфа есть. На счёт багрепортов - это реально только имея сурсы сабжа. Там весьма сложный код, довольно сложно отлаживается(мотор изначально не предназначен дляработы с отладчиком, более того, сам механизм отладчик не поддерживает(KDR под портом не вызывается), фильтр для скрытия ольки всего лишь код, основанный на моторе. В мотор была введена только обработка тск, основная же его цель - скрытый мониторинг сервисов ядра(это руткит)). Они полупривад, так как очень мощный механизм получился. И некоторым(аверам в частности) не нужно в них копаться. |
|
Создано: 26 ноября 2013 16:00 · Личное сообщение · #6 Вот наваял описание. 1e72_26.11.2013_EXELAB.rU.tgz - SIDE.zip | Сообщение посчитали полезным: SegFault, Oott |
|
Создано: 28 ноября 2013 14:57 · Личное сообщение · #7 Может что не так делаю или чего иного ждал от софтины, но дела обстоят так: 1. Качнул какую-то из последних версий (с яндекс.диска) 2. Использую вмварю, хпсп3. Инсталлю дров (тупо запуск nthdrv.exe проходит без ошибок) 3. Затем использую содержимое архива api.zip - там запускаю батник TEST.EXE >> log.txt. Моментально создается чуть больше 100 кб лога, консолька висит, мессаджбокс с надписью "psapi.dll" тоже висит. 4. Запускаю хелловорлд Инди (на первой странице взял), делаю еще в системе некие манипуляции (терминейт пары процессов, добавление\удаление пары ключей в реестр) 5. Нажимаю в мессаджбоксе с надписью "psapi.dll" ОК и после чего открываю получившийся лог... и не вижу там никаких проделанных манипуляций Особо в тему не вчитывался (много ругани), но выцепил следующее: Dr0p пишет: Точнее мониторятся нтапи на уровне ядра. т.е я ожидал увидеть в логе некий результат мониторинга апи. помню, что шадов не перехватывается тулзой, ну, а все остальное? операции с процессами и т.д Либо я что-то не правильно делаю, либо не понял для чего инструмент | Сообщение посчитали полезным: Dr0p |
|
Создано: 28 ноября 2013 23:44 · Личное сообщение · #8 |
|
Создано: 29 ноября 2013 01:59 · Личное сообщение · #9 3. Это был тестовый семпл: Загрузочный лог снимался, прототипы доставались из базы, подставлялись аргументы и выводилось в консоль/файл. 4. Не могу ничего сказать, так как хз что вы запускали. Было очень много тестов, семплов и билдов. > я ожидал увидеть в логе некий результат мониторинга апи Не ведётся никакой лог. Кодес для скрытия дебаггера, который на этом моторе основам мониторит кучу сервисов, для некоторых выводится лог(нп waiters", счётчики). Не составляет вообще никакого труда реализовать монитор каких то действий. Оно элементарно на коленке пилится, вот например: Code:
Не знаю что может быть не понятно, я же всё подробнейшим образом разжевал. Единственная проблема может возникнуть со слепками, это когда сервис вызывается из процедуры, которая вызывается из другой процедуры етц и нужно идентифицировать вызов из нужной процедуры. В этом случае весь код процедуры нужной описавыется слепком(массив описателей блоков, составляющих процедуру). В неё находится адрес возврата и выполняется маршрутизация. Иногда многократная, бывает весьма сложным запутанным образом Про щадов мало сказано, потому что в отличие от сервисов базовых, для этих нет конкретных стабов, чтобы можно было номер сервиса получить. Лишь для некоторых. Вот например скрывается окно отладчика: Code:
Можно конечно таблицами эти сервисы запилить, но это весьма не труъ. Их можно получить иначе, для примера выше - обёртка EnumWindows(). Значит при инициализации мы дёргаем эту апи, а в процедуре фильтрации сохраняем ID. Ещё одна проблема есть с шадовом, это стартап кода, до загрузки юзер32. Например из верифера или при инжекте в процессы. Если поток не GUI, тоесть вызывает теневой сервис в первый раз, а как следствие и апи user/gdi, то это приведёт к крэшу - ядро вызовет колбек в юзермод(apfnDispatch[]), а так как юзер не проинициализирован и массив векторов не загружен, всё отвалится. Посему шадов можно дёргать только после инициализации user32. И это событие нужно отловить, если есть необходимость свой код выполнять раньше например инициализации статики. Решается просто - описывается слепком UserClientDllInitialize(), она же дллмейн; фильтр для всякого теневого сервиса раскручивает стек и находит вызов из этой процедуры. Если это обнаружено, то выполняется маршрутизация - это ожидание возврата из процедуры. Когда тред вернётся в загрузчик, он покинет дллмейн юзер32, то только тогда можно юзать шадов. В целом в этом сложного ничего нет. |
|
Создано: 29 ноября 2013 02:19 · Личное сообщение · #10 Dr0p пишет: Кодес для скрытия дебаггера ... Не знаю что может быть не понятно, я же всё подробнейшим образом разжевал. Запили готовый плагин к ольке и 99,9% вопросов отпадут сами собой, в том же стронге тыкают себе флажки и большинству пох, как оно работает. | Сообщение посчитали полезным: bizdon |
|
Создано: 29 ноября 2013 02:23 · Поправил: Dr0p · Личное сообщение · #11 |
|
Создано: 29 ноября 2013 02:32 · Личное сообщение · #12 |
|
Создано: 29 ноября 2013 02:33 · Личное сообщение · #13 |
|
Создано: 29 ноября 2013 02:39 · Личное сообщение · #14 |
|
Создано: 29 ноября 2013 02:45 · Поправил: Dr0p · Личное сообщение · #15 F_a_u_s_t Лишнее это имхо. Имя поменять в реестре не проблема Я вообще плаги не юзаю никогда. У меня конпилер все задачи быстро решает Наверно самый не проработанный нюанс это опции. Тоесть их много: Code:
И нужно ребилдить при изменении каждой, что есно не имея сурсов сделать не получится. Наверно нужно будет их динамическими сделать. |
|
Создано: 29 ноября 2013 02:56 · Личное сообщение · #16 |
|
Создано: 29 ноября 2013 03:08 · Личное сообщение · #17 F_a_u_s_t > Python не многим медленнее. У него не системная область юзания, это же скрипт.) > Дык, а в чем сложность запилить if ( OPT_ENABLE_DBG_LOG == TRUE ) { write_dbg_log(); } ? Не совсем просто. Некоторые опции весьма сильно изменяют обработку, что в статике гораздо проще сделать на макро. | Сообщение посчитали полезным: dosprog |
|
Создано: 29 ноября 2013 13:13 · Личное сообщение · #18 |
|
Создано: 29 ноября 2013 13:20 · Личное сообщение · #19 |
|
Создано: 29 ноября 2013 13:56 · Личное сообщение · #20 |
|
Создано: 29 ноября 2013 15:39 · Поправил: Dr0p · Личное сообщение · #21 |
|
Создано: 29 ноября 2013 16:00 · Поправил: Dr0p · Личное сообщение · #22 Загрузочный лог(OPT_CHECK_BUILD) блокнота: Debug string: Filter(NTID{Rva: 0xDE8E, Id: 0x103, Name: ZwTestAlert} Debug string: Fret): 0x103 Debug string: Filter(NTID{Rva: 0xD05E, Id: 0x20, Name: ZwContinue} Debug string: Fret): 0x20 - поток покинул стартап апк. |
|
Создано: 29 ноября 2013 21:01 · Поправил: Rainbow · Личное сообщение · #23 Я просто в осадке с этой темы ))) Dr0p иди пойди в автомастерской моторы пособирай )) может хоть там от тебя польза будет )))) P.S. Dr0p пишет: Плаг не заведётся в контексте процесса да есчо и до старта кернел. А почему бы из плага-длл не загрузиться в ядро ? Dr0p пишет: Более того, весь запуск сводится к копированию дллки в сис32 и созданию ключа в реестре. Нахера ей там делать в сис32 че она там забыла ? Да и плаги я хз как собирать, никада это не изучал. ... |
|
Создано: 30 ноября 2013 02:09 · Личное сообщение · #24 |
|
Создано: 30 ноября 2013 02:17 · Личное сообщение · #25 Dr0p пишет: У него не системная область юзания, это же скрипт.) Дык это понятно, никто и не говорит, что нужно собирать на нем дрова, просто удобный ( для меня ) способ автоматизации рутины. Раньше не перле говнокодил, но сцуко со своими $ @ неудобен что звездец и располагает к говнокоду, а так никто не говорит о замене с\с++ асму, хотя иногда дрова загружаю из скрипта.) |
|
Создано: 30 ноября 2013 03:46 · Поправил: Модератор · Личное сообщение · #26 |
|
Создано: 30 ноября 2013 07:25 · Личное сообщение · #27 |
|
Создано: 30 ноября 2013 15:53 · Личное сообщение · #28 |
|
Создано: 30 ноября 2013 20:50 · Личное сообщение · #29 priag пишет: но что-то завести его у меня не получилось так с этом и соль. Dr0p пишет: Чтоб его юзать надо немного покодить это типа я написал gui - на дельфи например, компанентов бы накидал на форму мышкой, но функционал к гую пилите сами . как в старые добрые времена клерк пилилт что-то пилит, а запиленного - так чтоб юзать - ничего небыло и нет |
|
Создано: 01 декабря 2013 02:02 · Личное сообщение · #30 priag Что именно не получилось. Таким же образом, как вы выше заводили > Хочу отмониторить с помощью мотора эти действия. Как? Добавляете ссылку в массив нтапи(ZwList[]) на имя и хэш от имени. В батник дописываете свой обьектник(.obj) и дефейните прототип(public/extern blabla). Потом билдите. Если код на масме, то не вижу никаких проблем. > а запиленного - так чтоб юзать - ничего небыло и нет Тонны готового кода есть. Если ты про гуй, где мыщем по кнопкам тыкать, то да, такого у меня нет. Я последний раз гуй собирал пару лет назад. |
|
Создано: 02 декабря 2013 15:33 · Поправил: priag · Личное сообщение · #31 Получилось завести только в отладчике (flt в АП процесса для исследования, а его в отладчик, тогда сыпятся дбг-алерты и пишется лог), а вот если взять из второго сообщения темы CUI версию и поменять flt на шаблон (последнее сообщение), то будет ошибка: The procedure entry point g_Init could not be located in the dynamic link library Flt.dll. Глянь в Личные сообщения |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 13 . 14 . >> |
eXeL@B —› Софт, инструменты —› SIDE. |
Эта тема закрыта. Ответы больше не принимаются. |