• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Bypassing Antivirus Userland hooks with direct system calls in x64 bit with syswow64

Пожалуйста, обратите внимание, что пользователь заблокирован
Мы тут всегда забываем, что все решается через анклавы, хорошо, что я пригласил сюда Индия, чтобы он нам постоянно напоминал. Все решается через анклавы, поцоны.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Да, это единственный универсальный способ прокинуть авер вирту, другого нет
Ну вирту можно прокинуть и не универсальным способом, как бы вирта не может полностью эмулировать окружение реальной системы. Давай подумаем, как "прокинуть" hips/проактивку, которая в ядре сидит или на уровне гипервизора, или как "прокинуть" аверское облако, чтобы семпл не улетал на анализ туда. Я понимаю, что анклавы ты считаешь главным достижением своей жизни, но, поскольку ты на них зациклился, у тебя и мотивации больше нет что-то интересное делать.
 
> ips/проактивку, которая в ядре сидит или на уровне гипервизора

Не нужно всё мешать в одно, вирта иначе работает чем песочница. Более мне интересно что ты по jit трансляторам сделал за три года, ничего ?
 
Rel

Да, это единственный универсальный способ прокинуть авер вирту, другого нет.
Речь ведь была не совсем и про вирту. В последнем своём сообщении я раскрыл постановку вопроса более широко, касаясь в целом АВ технологий и средств обнаружения этой атаки.

Я, конечно, прошу прощения, за такую провокацию и проверку твоих познаний. Понимаю, нагло =)
Но на самом деле то, что ты считаешь детсадом и не работающим, уже было реализовано в качестве POC ребятами с blackhat конфы. Даже white paper для недоверчивых выкатили.

+9*% скрытия это, конечно, не 100% как в твоём визоре))) но это хотя бы реальная работа, которую потрогать можно и описание не на эльфийском

А ещё ROP используется часто, для обхода анти-читов. Суть в том, что античиты вроде VAC выполняют отслеживание и сканирование rwx буферов, надеясь обнаружить там чит, сама же rop цепочка не находится в исполняемой памяти и, кстати, при определенных раскладах, может ничего нового не алоцировать, если существующие гаджеты позволяют реализовать некий функционал Y на них. Я к чему, аверы аналогично следят за исполняемыми участками )

В общем, Инди, не все визор, что блестит.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
В общем, Инди, не все визор, что блестит.
По сабжу: да ну этот ваш ROP, все модные поцоны используют JOP!
 
Haunt

А я и забыл что это я написал. Искал тему а вот гугл это нашёл, искал я тему по OP..

Не знаю откуда это гугл нашёл, походу какой то сурец тк я всегда в конце оставлял ник и дату. Там описана задача, которую врядле можно решить.
 

Вложения

  • Inje (2).pdf
    249.5 КБ · Просмотры: 26
Последнее редактирование:
move eax,55h 55 is the system call number for NtCreateFile function ,
Это верно для Windows 10. Согласно https://j00ru.vexillium.org/syscalls/nt/64/ в предыдущих версиях Windows использовались номера 0x52, 0x53 и 0x54. Для некоторых других Nt*-функций номера вызовов изменялись при обновлениях Windows 10.

Я для обнаружения и вывода дизасма таких перехватов специальную тулзу делал тут: https://xss.pro/threads/43097/
Вот её, наверное, можно взять за основу: пусть дизассемблирует и вытаскивает номер сервиса из чистого образа.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
This is true for Windows 10. According to https://j00ru.vexillium.org/syscalls/nt/64/ , previous versions of Windows used the numbers 0x52, 0x53 and 0x54. For some other Nt * features, call numbers have changed with Windows 10 updates.


Here it can probably be taken as a basis: let it disassemble and pull out the service number from a clean image.
yes, every windows version has defferent sys call number windows vista not like windows 7 and windows 7 not like windows 10 and there.
thanks for mentioning sys call table from j0rru
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вот её, наверное, можно взять за основу: пусть дизассемблирует и вытаскивает номер сервиса из чистого образа.
Вообще, я где то слышал (сам пока не тестил), что номер сервиса однозначно соответствует порядковому номеру соответствующей Zw* функции в ntdll. То есть, если взять все экспорты из ntdll, которые начинаются на Zw, отсортировать их по имени, то индекс отсортированного массива на практике будет номером сисколла. Но на слово не верьте, это надо протестировать хорошо на всех системах, прежде, чем утверждать.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вообще, я где то слышал (сам пока не тестил), что номер сервиса однозначно соответствует порядковому номеру соответствующей Zw* функции в ntdll. То есть, если взять все экспорты из ntdll, которые начинаются на Zw, отсортировать их по имени, то индекс отсортированного массива на практике будет номером сисколла. Но на слово не верьте, это надо протестировать хорошо на всех системах, прежде, чем утверждать.
Может быть так было когда-то (т.к. местами какой-то порядок прослеживается), но сейчас точно нет. Проверил на ntdll.dll и win32u.dll. Плюс где-то лежат еще другие базы системных dll с сиськами, но найти не могу и названия не помню. Может что-то с directx. Вообще Майки периодически удаляют и добавляют новые сиськи, в десятке биндифом наблюдал.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
что номер сервиса однозначно соответствует порядковому номеру соответствующей Zw* функции в ntdll
Такой вариант не слышал, посмотрю. Но в целом, найти их несложно - парсим таблицу экспорта , оттуда все функции, что начинаются на Zw/Nt, и смотрим первые байты
B8 72 01 00 00 mov eax, 172h ; NtTerminateProcess
вот то, что после B8 , делаем MAKEWORD и будет номер сискола. Проверено на всех ОС, вроде ты также писал в своей статье про хуки?
Но все равно, мне методика сисколов кажется не особо радужной из-за
1) палева , т.к. инструкция sysenter /syscall не морфится, и аверы видят ее в коде
2) сложности разработки, т.к. большинство софта 32 битные (смотри все локеры рынка, все стиллеры и т.д.), а ОС 64 битные; можно как ТС использовать шлюз, но тогда теряется весь смысл сисколов - авер ставит перехват туда и всё, были статьи на эту тему.
3) надежность кода также под вопросом. Как оно будет работать в боевых условиях? Конечно, запустить какой-то мимик или еще что , это одно. А взять даже локер - вот заюзать NtCreateThread, NtCreateFile, причем массово и многопоточно. Будет ли оно норм работать - вопрос. На рынке не встречал (имею ввиду популярный софт) тех, что юзают сисколы, хотя условные ревилы и локбиты имели много бабла, чтобы переписать софт на сисколы. Локбит вроде как юзает натив апи, но последние его релизы (2 версия) не видел. Был такой локер гандкраб, который якобы 2 ярда заработал, тоже анонсировали сисколы, в итоге отказались от этой затеи (неясно почему, но думаю не все так гладко в деле, как в статье).
 
Пожалуйста, обратите внимание, что пользователь заблокирован
I haven’t heard such an option, I’ll take a look. But in general, it is not difficult to find them - we parse the export table, from there all the functions that begin with Zw / Nt, and look at the first bytes
B8 72 01 00 00 mov eax, 172h ; NtTerminateProcess
here is what after B8, do MAKEWORD and there will be a siskol number. Tested on all OS, like you also wrote in your article about hooks?
But all the same, the method of siskols seems to me not particularly rosy due to
1) pale, because the sysenter / syscall instruction does not morph, and avers see it in the code
2) the complexity of development, tk. most of the software is 32 bit (see all the lockers on the market, all the stealers, etc.), and the OS is 64 bit; you can use the gateway as a TS, but then the whole point of the siskols is lost - the Aver puts the interception there and that's it, there were articles on this topic.
3) the reliability of the code is also questionable. How will it work in combat conditions? Of course, running some kind of facial expression or something is one thing. And even if you take a locker, you can use NtCreateThread, NtCreateFile, and in bulk and multithreaded. Whether it will work as normal is a question. On the market I have not met (I mean popular software) those that use siskols, although conventional reviles and locks had a lot of dough to rewrite software for siskols. Lokbit seems to be using native api, but I haven't seen its latest releases (version 2). There was such a locker handcrab, which allegedly earned 2 yards, they also announced siskols, in the end they abandoned this venture (it's not clear why, but I think not everything is as smooth in business as in the article).
Yes i wrote about userland hooks as you know some of AV vendors use NT or Winapi hooking to can read buffer from function args like if we WriteProcessmemory they can read the buffer we wrote to address . so this code will just skipe the hook but if the AV hook in kernel or listing on kernel call or minifilters this will not work , and i tested this on KasperSky on windows 10 64bit he go bypassed in some Rats and some rats just get detected i think this becouse the rat has so many signitures
 
мне методика сисколов кажется не особо радужной из-за
1) палева , т.к. инструкция sysenter /syscall не морфится, и аверы видят ее в коде
Отсюда вытекает дальнейшее развитие "дизассемблера": поскольку чистый образ ntdll уже загружен в память и адреса переходников получены, может быть достаточно добавить соответствующим страницам право на исполнение (либо скопировать куда-то B8 xx xx 00 00 + хвост). С другой стороны, сам факт обхода юзеромодного хука может быть зафиксирован в ядре (минифильтром или нотификатором) - а это явный признак, что софт делает что-то не то.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх