ObCallback回调钩子检测

2013-12-20 Nie.Meining Coding

在 PatchGuard 的摧残下,通过 ObRegisterCallbacks 函数注册回调钩子已经成了 RK/ARK 中的主流技术之一。注册回调钩子的具体做法可以参考MSDN上的示例代码:http://code.msdn.microsoft.com/windowshardware/ObCallback-Sample-67a47841

今天研究了一下检测这类回调钩子的方法,发出来跟大家分享。本人水平有限,错漏之处还请大家指正。

首先关注的还是注册回调钩子时调用的 ObRegisterCallbacks 函数,MSDN上的函数声明如下:

NTSTATUS ObRegisterCallbacks(
	_In_   POB_CALLBACK_REGISTRATION CallBackRegistration,
	_Out_  PVOID *RegistrationHandle
);


也就是说调用该函数后,我们会得到一个神奇的 RegistrationHandle 指针,而该指针指向的数据结构必然用于描述本次注册的回调钩子(否则 ObUnRegisterCallbacks 就摘不掉钩子了)。

经过一番逆向和调试,发现这个数据结构由三个部分顺序组织在内存中:

-----------------------------------------------------------------------------------------------------

Part1:

钩子数据结构的头部信息,如版本号,CallbackOperator 个数等


Part2:(这个部分的长度取决于该回调钩子包含多少个CallbackOperator)

钩子数据结构的CallbackOperator1 相关信息

钩子数据结构的CallbackOperator2 相关信息

……


Part3:

钩子数据结构的额外信息,如 Altitude 等

-----------------------------------------------------------------------------------------------------

具体来讲,用 C 语言可以描述如下:

struct CALLBACK_NODE {
	// 版本号,目前是 0x100, 可通过 ObGetFilterVersion 获取该值
	USHORT		usVersion;

	// 本节点上有多少个 CallbackOperator,即多少个 CallbackBodies
	USHORT		usCallbackBodyCount;

	// 注册回调时设定的 OB_CALLBACK_REGISTRATION.RegistrationContext
	// 即 PreCallbackRoutine 和 PostCallbackRoutine 的参数
	PVOID		pContext;

	// 这里似乎是 0x000C000C/0x00080008 一类的值
	ULONG		ulXXX_000X000X;

	// 指向 Altitude 字符串
	// 注意这个字符串因为最大长度是恒定的,所以不一定以 NULL 结尾
	PWCHAR		wcsAltitude;

	// CALLBACK_BODY 数组,其元素个数为 ulCallbackCount
	struct CALLBACK_BODY CallbackBodies[1];
	
	//
	// CALLBACK_BODY数组后,紧接着 Altitude 字符串和一些其它数据
	//
};


其中的 struct CALLBACK_BODY CallbackBodies[] 数组就是描述该 CallbackNode 上的各个 CallbackOperator 的数据结构:

struct CALLBACK_BODY {

	// 所有的 CALLBACK_NODE 通过这个链表串在一起
	LIST_ENTRY	ListEntry;

	// 注册回调时设定的 OB_OPERATION_REGISTRATION.Operations,
	// 即 OB_OPERATION_HANDLE_CREATE 这些东西
	ULONG		ulOperations;

	// 这里似乎始终是 1
	ULONG		ulXXX_1;

	// 指向该 CallbackBody 对应的 CallbackNode
	struct CALLBACK_NODE* pCallbackNode;

	// 注册回调时设定的 OB_OPERATION_REGISTRATION.pObjectType
	// 即 PsProcessType,PsThreadType 这些东西
	PVOID		pObjectType;

	// 这就是注册回调时设定的 PreCallbackRoutine 函数地址
	PVOID		pPreCallbackRoutine;

	// 这就是注册回调时设定的 PostCallbackRoutine 函数地址
	PVOID		pPostCallbackRoutine;

	// 这里似乎是个引用计数
	ULONG		ulRefCount;

};


注意这里面的 CALLBACK_BODY.ListEntry 链表很有意思,它将系统中的其它 CALLBACK_NODE.CallbackBodies 都链在了一起。因此我们就可以通过遍历这个链表检测系统中的其它回调钩子。

检测的大致思路是,先自己调用ObRegisterCallbacks注册一个假钩子,这样就得到了一个节点,然后用这个节点开始遍历。

写了一个测试代码,在64位Win8系统上测试截图如下:

x64bd360.png

图中 CallbackDetect.sys 中钩子是我的检测模块注册的假钩子;bd0001.sys 中的钩子是百度卫士注册的钩子;其它是360注册的钩子。


完整测试代码下载(64位/32位系统通用):CallbackDetect.zip 

评论:

muiteuiop
2021-08-22 01:46
https://hydraruzxpnew4af-onion-site.com/


<a href "https://hydraruzxpnew4af-onion-site.com">гидра</a>
Покупатели заходят на <a href "https://hydraruzxpnew4af-onion-site.com">гидра</a> через Tor с луковой маршрутизацией. Они должны зарегистрироваться и пополнять свой баланс, с которого средства (криптовалюта) списываются продавцам. Товар может как находится в закладке к моменту оплаты, так и быть помещённым туда после. Магазины платят по 300 долларов за регистрацию на <a href "https://hydraruzxpnew4af-onion-site.com">гидра</a>, по 100 долларов ежемесячной абонентской платы, а также доплачивают при желании находиться повыше в выдаче на поисковый запрос. В течение суток после покупки клиент может оставить отзыв о товаре и продавце. При нарушениях магазин может быть <a href "https://hydraruzxpnew4af-onion-site.com">гидра</a> оштрафован или закрыт. С каждой покупки <a href "https://hydraruzxpnew4af-onion-site.com">гидра</a> берёт комиссию от 1,5 % (при сумме сделки больше 2 миллионов рублей) до 5 % (при сумме сделки меньше 200 тысяч).
muiteuiop
2021-08-22 00:49
https://hydraruzxpnew4af-onion-site.com/


<a href "https://hydraruzxpnew4af-onion-site.com">hydraruzxpnew4af onion</a>
Маркетплейс имеет четкий и удобный функционал: от регистрации и актуальных курсов btc/рубль до выбора товаров и магазинов. Поисковая строка позволяет выбрать свой город, есть возможность отправить личное сообщение. Работает гарант-сервис, который профессионально регулирует отношения между покупателем и продавцом. Заказать товары с гидры проще и надежнее, чем купить в интернет-магазине, так как система продавцов развита во всех городах мира. Hydra onion доступна по ссылке - <a href "https://hydraruzxpnew4af-onion-site.com">hydraruzxpnew4af onion</a>.
sukkutui
2021-08-21 17:48
<a href=https://hydraruzxinew4aff-onion.com/>
гидра</a> <a href="https://hydraruzxinew4aff-onion.com/">
gidra</a>
https://hydraruzxinew4aff-onion.com/
saragkiaa
2021-08-21 06:58
<a href "https://hydraruzxpnew4af-onion-site.com">hydra</a>
yternyuir
2021-08-19 07:30
<a href=https://mine-exchenge.net/>
где продать биткоин</a> <a href="https://mine-exchenge.net/">
Обмен с бтк на сбер</a>
nitragares
2021-08-18 19:55
https://hydra-2web.net/
<a href=https://hydra-2web.net/>
гидра</a> <a href="
https://hyrda-official.com/">
hydraruzxpnew4af.onion</a>
sikirses
2021-08-18 06:13
[url=https://mine-exchenge.org/]
Обменник шахта[/url] <a href="https://mine-exchenge.org/">
mine exchange обменник</a>
buzywsase
2021-08-17 18:19
[url=https://lordfilmq.net/]
скайп гей[/url]
https://lordfilmq.net/
cercowebu
2021-08-17 00:03
Престолы и жертвенники в православной церкви используются во время богослужения. Это столы, которые стоят в алтаре. Через Златые врата к престолу можно входить только в определенное время. Являясь священными атрибутами службы, они несут в себе древнюю информацию о становлении церкви, жизни и смерти Иисуса Христа, а также являются символами небесного Престола. Обращаться с ними следует также осторожно. К престолу и жертвеннику имеет право дотрагиваться только священнослужитель. Ходить около престола тоже нужно по-разному. Кадить кадилом жертвенник тоже можно по-разному, зависимо от того, что на нем расположено.
[url=
https://cerkovna-lavka.com/product-category/ikony-tserkovnye/svyatye-zheny]
https://cerkovna-lavka.com/product-category/ikony-tserkovnye/ikony-iz-dereva[/url]
cercowebu
2021-08-16 15:03
Еще до появления икон храм разделялся на определенные зоны с помощью перегородки. Но когда начали писать лик Христа или святых, возникла идея разместить эти иконы вместе. Но во всем должен быть порядок. Иконы в иконостасе объединяются в четкой
[url=
https://cerkovna-lavka.com/product-category/ikony-tserkovnye/raznye-ikony]
https://cerkovna-lavka.com/product-category/ikony-tserkovnye/ikony-iz-kamnya[/url]
ojnguite
2021-08-15 16:18
<a href=https://lordfilm.vet/>
красноярск проститутка</a>
hresanika
2021-08-13 06:06
<a href=https://hydraruzxpnew4uf.com/>
hydraruzxpnew4af.onion</a> <a href="https://hydraruzxpnew4uf.com/">  
ссылка гидры</a>
https://hydraruzxpnew4uf.com/
hresarnika
2021-08-12 08:44
<a href=https://hydraruzxipnew4af-onion.com/>  
гидра сайт в тор</a> <a href="https://hydraruzxipnew4af-onion.com/">  
гидра онион</a>
https://hydraruzxipnew4af-onion.com/
bitlevexcomx
2021-02-11 15:20
Earn BIG With
Every BTC Price Swing!

Secure and reliable worldwide trading platform

Zero deposit and trading fees, no commissions

Quick registration and verification, 24/7 support


<a href=https://soundcloud.com/bitlevex>
bitlevex scam</a>

https://soundcloud.com/bitlevex
hydratorru
2021-01-09 14:04
Как пользоваться шлюзом <a href=https://hydra-site-tor.ru/>
сайт гидра</a> для входа на Гидру ?



Не все могут установить ТОР-браузер, чтобы попасть в теневую зону интернета. Именно там находится магазин Гидра. Не беда, можно воспользоваться сайтом <a href=https://hydra-site-tor.ru/>
гидра тор</a>, который является интернет-шлюзом. Он открывает доступ в закрытую, не индексируемую часть интернета для обычных браузеров.



<h2>Как достигается анонимность при покупке на сайте Гидра</h2>



Во время совершения покупки скрывается реальный IP-адрес покупателя. Оплата производится при помощи анонимной криптовалюты биткоин. Для доставки заказа не используется стандартная почта, а применяются закладки. При регистрации, покупатель не указывает никаких личных данных, только электронную почту, которая также может быть анонимной.
https://hydra-site-tor.ru/

发表评论:

Powered by emlog