HIVE法过注册表监控很早就已经出现了 首先提出的是EST的xyzreg 下面我就和各位分享一下我对HIVE法的一些认识
现在注册表监控大多是挂RegSetValueEx这个函数,在攻击 者修改某些特定键值的时候拦截,那我们就想办法使用其他的注册表操作函数达到同样的效果,HIVE法目前对于绝大部分注册表监控都是能突破的,因为总是有在规则外的键。
操作Hive法要用的核心函数分别是RegSaveKey,RegRestoreKey,RegLoadKey这三个。作用用法大家可以自己去MSDN上查。我就不累赘了。
在使用这些函数前首先要提权,提权的函数是个模板,如下:
i nt enable_privilege(char *priv_name)
{
DWORD res=0;
HANDLE tok;
LUID luid;
TOKEN_PRIVILEGES privs;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY,&tok)) return 0;
if (LookupPrivilegeValue(NULL,priv_name,&luid))
{
privs.PrivilegeCount=1;
privs.Privileges[0].Luid=luid;
privs.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
DWORD ret_len;
res=AdjustTokenPrivileges(tok,0,&privs,sizeof(TOKEN_PRIVILEGES),NULL,&ret_len);
CloseHandle(tok);
}
return res;
}
int enable_backup_privilege(void) //RegSaveKey的权限
{
return enable_privilege(SE_BACKUP_NAME);
}
int enable_restore_privilege(void) //RegRestoreKey的权限
{
return enable_privilege(SE_RESTORE_NAME);
}