文章 | 入侵攻击 | 安全防御 | 操作系统 | 网站建设 | 网络编程 | 路由交换 | 灾难恢复 | 新闻资讯 | 安全公告
下载 | 漏洞扫描 | 加密破解 | 入侵攻击 | 后门木马 | 溢出程序 | 综合工具 | 安全防护 | 原创发布 | 动画教程
论坛 | 黑客军火 | 配服务器 | 黑客情感 | 免费资源 | 美女贴图 | 灌水无罪 | 在线服务 | 会员照片 | 网站首页
 当前位置:主页 >> 技术文摘 >> 入侵攻击 >> 文章内容  
 

 
如何调整中注册表权限

www.hx99.org 阅读: 时间:2007-06-09 整理:华西黑盟
------------------------------------------------------------------
 

来自:chenzhd

在NT/XP/2000下,注册表中有些键即时使用Administrators登录,也没有办法读取下面的数据,例如:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum,默认是无法读取的,碰到这种情况,我们一个方面可以利用regedt32来设置注册表的权限,但是对于用户来说可能不熟悉注册表的操作,那么我们的程序应该能够自动处理,怎么做呢?

注意:下面的这些函数和讨论其中一个重要依据就是必须以Administrators登录才可以。

采用SDK函数:

#include"RegPermission.h"

说明:输入参数为所要设置权限的键值:
用VC++做成动态库的形式,然后在DELPHI中调用.
本函数已经过测试,验证.
若有问题,给我回EMAIL.
给分吧!哈哈!

#include"RegPermission.h"

voidWINAPISetRegPermission(char*KeyStr)
{
//TODO:Addyourcontrolnotificationhandlercodehere
HKEYhKey=0;
SID_IDENTIFIER_AUTHORITYsia=SECURITY_NT_AUTHORITY;
   PSIDpInteractiveSid=NULL;
PSIDpAdministratorsSid=NULL;
SECURITY_DESCRIPTORsd;
PACLpDacl=NULL;
   DWORDdwAclSize;
LONGlRetCode;
BOOLbRet;
   //charKeyStr[200];

//strcpy(KeyStr,"SOFTWARE\\LEGEND\\test");

lRetCode=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT(KeyStr),
0,
WRITE_DAC,
&hKey);
//openkey
/*lRetCode=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
TEXT("SOFTWARE\\LEGEND\\test"),
0,
WRITE_DAC,
&hKey);*/
//
   //prepareaSidrepresentinganyInteractivelylogged-onuser
   //
   bRet=AllocateAndInitializeSid(
       &sia,
       1,
       SECURITY_INTERACTIVE_RID,
       0,0,0,0,0,0,0,
       &pInteractiveSid
       );

//
   //preprateaSidrepresentingthewell-knownadmingroup
   //
   bRet=AllocateAndInitializeSid(
       &sia,
       2,
       SECURITY_BUILTIN_DOMAIN_RID,
       DOMAIN_ALIAS_RID_ADMINS,
       0,0,0,0,0,0,
       &pAdministratorsSid
       );
   
//
   //computesizeofnewacl
   //
   dwAclSize=sizeof(ACL)+
       2*(sizeof(ACCESS_ALLOWED_ACE)-sizeof(DWORD))+
       GetLengthSid(pInteractiveSid)+
       GetLengthSid(pAdministratorsSid);

   //
   //allocatestorageforAcl
   //
   pDacl=(PACL)HeapAlloc(GetProcessHeap(),0,dwAclSize);
   
   bRet=InitializeAcl(pDacl,dwAclSize,ACL_REVISION);

//
   //granttheInteractiveSidKEY_READaccesstotheperfkey
   //
bRet=AddAccessAllowedAce(
       pDacl,
       ACL_REVISION,
       KEY_ALL_ACCESS,
       pInteractiveSid
       );
   /*bRet=AddAccessAllowedAce(
       pDacl,
       ACL_REVISION,
       samDesired,
       pInteractiveSid
       );*/

   //
   //granttheAdministratorsSidKEY_ALL_ACCESSaccesstotheperfkey
   //
   bRet=AddAccessAllowedAce(
       pDacl,
       ACL_REVISION,
       KEY_ALL_ACCESS,
       pAdministratorsSid
       );

bRet=InitializeSecurityDescriptor(&sd,SECURITY_DESCRIPTOR_REVISION);

   bRet=SetSecurityDescriptorDacl(&sd,TRUE,pDacl,FALSE);

//
   //applythesecuritydescriptortotheregistrykey
   //
   lRetCode=RegSetKeySecurity(
       hKey,
       (SECURITY_INFORMATION)DACL_SECURITY_INFORMATION,
       &sd
       );

//cleanup
RegCloseKey(hKey);
   RegCloseKey(HKEY_LOCAL_MACHINE);

   //
   //freeallocatedresources
   //
   if(pDacl!=NULL)
       HeapFree(GetProcessHeap(),0,pDacl);

   if(pInteractiveSid!=NULL)
       FreeSid(pInteractiveSid);

   if(pAdministratorsSid!=NULL)
       FreeSid(pAdministratorsSid);
}

来自:DragonPC_???时间:2002-1-1911:19:00ID:869662

ProjectJEDICodeLibrary(JCL)

ProjectJEDIACLAPI,ACLUI头文件
(JwaAclUI.pas,JwaAclApi.pas)-

JCL中有一个JclSecurity.pasunit,有一个函数叫做AllowRegKeyForEveryone就是干这个
事情的,我调试通过

functionAllowRegKeyForEveryone(Key:HKEY;Path:string):Boolean;
var
 WidePath:PWideChar;
 Len:Integer;
begin
 caseKeyof
   HKEY_LOCAL_MACHINE:
     Path:='MACHINE\'+Path;
   HKEY_CURRENT_USER:
     Path:='CURRENT_USER\'+Path;
   HKEY_CLASSES_ROOT:
     Path:='CLASSES_ROOT\'+Path;
   HKEY_USERS:
     Path:='USERS\'+Path;
 end;
 Len:=(Length(Path)+1)*SizeOf(WideChar);
 GetMem(WidePath,Len);
 MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,PChar(Path),-1,WidePath,Len);
 Result:=SetNamedSecurityInfoW(WidePath,SE_REGISTRY_KEY,
   DACL_SECURITY_INFORMATION,nil,nil,nil,nil)=ERROR_SUCCESS;
 FreeMem(WidePath);
end;

SetNamedSecurityInfo函数设置特定securableobject的securitydescriptor,是AccessControlAPI,
在下载的JedObjectPascalAPILibrary里面声明了,给你这个函数对不起你,我跟你谈
谈我花了一晚上了解的冬冬吧。

   SID(Securityidentifiers)是一个可变记录体,用于WindowsNT的安全模型,它的主
要功能是定义安全对象(identifysecuritysubjects,泛指包含了securitydescriptor的
对象,用户进程,注册表,文件等等这些冬冬),一方面SID是一个通用而强大的系统权限控
制方式,另一方面,SID太TMD的复杂了。

   SID的主要功能
-获取用户、用户组可以使用到的对象(securableobject)
-获得访问特别的对象的权限,AccessControlList(ACL)就是干这个冬冬的,
 ACL由AccessControlEntries(ACE)组成,ACE就是由SID和AccessFlags
 共同标记的记录机构。
-等等等等(我都懒得仔细看下去)

   SID通常以字符串的形式保存,比如EVERYONE用户的SID通常为('S-1-1-0'),它可能存
储在文件里面,也可能存储在注册表(比如HKEY_USERS下面的键名),甚至通过文件夹的名字
(看看Windows回收站RECYCLER的子目录)来保存。所以,一般情况下面(什么是特殊情况我也
没有搞明白),我们使用字符串访问SID,WindowsAPI提供了函数用于SID和String之间相互
转换的函数(LookupAccountSid,LookupAccountName),下面是一些常用的SID字符串标记

Everyone             S-1-1-0
NTAuthority         S-1-5
Dialup               S-1-5-1
Network              S-1-5-2
Batch                S-1-5-3
Interactive          S-1-5-4
Service              S-1-5-6
AnonymousLogon       S-1-5-7      (akanulllogonsession)
Proxy                S-1-5-8
ServerLogon          S-1-5-9      (akadomaincontrolleraccount)
Self                 S-1-5-10     (selfRID)
AuthenticatedUser   S-1-5-11     (Authenticatedusersomewhere)
RestrictedCode      S-1-5-12     (Runningrestrictedcode)
TerminalServer      S-1-5-13     (RunningonTerminalServer)
RemoteLogon         S-1-5-14     (RemoteInteractiveLogon)
(LogonIDs)          S-1-5-5-X-Y
(NTnon-uniqueIDs)  S-1-5-0x15-...
(Built-indomain)    s-1-5-0x20

   这些定义并不一定是标准,比如俄文版Windows2000就会有所区别,也许中文版也会有
些不同(我用的是英文版Win2000,完全一样)

   当用户登陆进入WindowsNT/2000/XP系统,正确输入用户名和密码,成功的话,系统创
建一个Accesstoken,而这个用户运行的每个进程都自动制作一个Accesstoken的副本,
Accesstoken包括SID信息用以指明用户是那个用户和隶属于那个用户组,Accesstoken也
包含了用户或用户组的privilegeslist(特权列表),当用户进程需要使用系统对象的时候,
系统通过进程的SID判断进程隶属于那个用户,当用户需要执行一些系统任务的时候,系统
通过进程的privileges来判断,比如执行关机ExitWindows函数.看到这里,兄弟应该明白
NT下的关机程序和NT下的注册表处理程序是两个完全不同的概念了吧,关机是添加privileges
特权,注册表作为一个系统对象,需要的是修改securitydescriptor.

Sv-COMVCLComponent

SAM-SolutionNTSetVCLComponent

RegistryKeySecurityandAccessRights

SecurityIdentifiers(SIDs)

AccessTokens

SecurityDescriptors

SecurableObjects

另外,Jedei说最恨作弊的人,不是说我吧?看看我的已答问题,那题是作弊来得?我有两
个DFW帐号是不对,我只是为了有一个delphibbs的域名而已,如下

=>Error!!!

 

   -------------------------------------------------------------------------------------------
  上一篇:走进神秘的社会工程学
  下一篇:Ajax 让网页木马“悄悄的执行”
   -------------------------------------------------------------------------------------------
用户名:
Email:
评论内容:
 
  精品推荐
最新网吧免费上网方法
五招查出想要知道的IP地址
让星空极速彻底下岗,破解
QQ技术攻略-原来隐藏着这
网吧漏洞-自己加会员卡,丰
简单网站入侵(适合菜鸟)
恶搞!如何将你的QQ性别改
黑客最起码要懂的16个问题
如何利用QQ邮件发木马
我的黑客技术学习方法,仅
你会用Google?估计你会用
10秒钟让你和任意QQ号聊天
简单进网站后台(适合菜鸟)
只需一行代码就能让IE 6崩
菜鸟入门的八种安全工具
网上电影随意看 破解在线
推荐:挖掘鸡使用教程
Radmin密码破解新招
QQ聊天记录文件解密方式
一招就能搜尽所有QQ隐身好
菜鸟挖漏洞,黑站就是这么
电脑菜鸟必懂 常见木马连
找到肉鸡后如何做个好后门
推荐:3389的密码嗅探
2007.12 免费QQ秀
关于我们 | 发展历程 | 在线投稿 | 核心监督 | 友情链接 | 网站地图 | 网站留言 | 联系我们
Copyright © 2004-2007 Www.Hx99.Net
版本:华西黑盟网站系统V5.0 Email:root#hx99.org
中国·西安·宝鸡 请使用IE6.0版本, 分辩率1024×768进行浏览
版权所有 任意抄袭 注意完整
陕ICP备06000444号