原创文章如转载,请注明:转载自冠威博客 [ http://www.guanwei.org/ ]
本文链接地址:http://www.guanwei.org/post/platformsecurity/08/shadow-account.html

特别注意:

★本文仅针对Windows 2000/XP/2003,Windows 9x不在本文讨论范畴。
★本文涉及注册表重要位置的修改,在实际操作前应好备份。

评评管理员账户的安全性

Windows 2000/XP/2003中都能找到一个系统内置的默认管理员账户——Administrator,该账户具有Windows的最高管理权限,用来完成软件安装、系统设置等任务。如果系统由于存在漏洞而被黑客入侵,黑客为了下次还能方便地进来,通常会留一个管理员账户的影子账户(关于影子账户的概念将在下文中介绍)。

1.为什么黑客选择Administrator账户作为突破口

如果黑客希望远程登录系统的话,就必须拥有具有远程登录权限的账户,而管理员账户自然是具备了远程登录的权限。另外,由于Administrator是系统中默认建立的管理员账户,而且一般无法删除,所以黑客都会选择Administrator作为用户名猜解登录密码。虽然使用“组策略”可以修改Administrator的用户名,可是一旦黑客给Administrator起了个“小名”(影子账户),再怎么改用户名也没用了。

2.Windows XP的安全策略

Windows XP在安装过程中会提示建立一个管理员账户,但实际上默认的Administrator账户仍是存在的,并且密码为空。笔者的Windows XP SP2没有修改此空密码,但黑客却无从下手,原因何在?原来在安全策略中有一条禁止了空密码账户的远程登录,黑客即使知道密码为空仍无法登录。

小知识

什么是Windows内置账户

内置账户是微软在开发Windows时预先为用户设置的能够登录系统的账户。使用最多的有Administator和Guest,它们两个默认都无法从系统中删除,即使从未使用这两个账户登录系统!如果在安装系统后使用其他账户登录系统,这样在“Documents and Settings”目录中就不会产生它们两个所对应的配置文件目录,但这两个账户仍是存在的。用此账户登录一次后,系统就会生成相应的目录。

谈谈管理员账户的安全防范

既然已经列举了这么多不安全因素,那么必须给出解决之道。

1.为Administrator账户设置强壮的密码

强密码通常在8位以上,以大小写字母、数字、特殊符号混合排列而成。不应使用名字缩写及自己、家人的生日作为密码元素。不宜将常用单词用作为密码元素,即使要使用,也要使用特殊符号或数字使其略为变形,如将“apple”改为“@pp1e”等。

2.更改Administrator为其他用户名

Administrator是系统内建账户,默认情况下无法更改,可是强大的组策略又为我们提供了一次安全机会。运行“gpedit.msc”打开“组策略编辑器”,点击展开左侧窗格的“‘本地计算机’策略→Windows设置→安全设置→本地策略→安全选项”,然后在右侧窗格的一大堆列表中找到“重命名系统管理员账户”,双击它后就能设置新的账户名了(见图1)。
看看账户是如何变成影子的

刚才曾经提到黑客在入侵系统后常常会建立一个影子账户。之所以称其为“影子账户”,是因为这种账户用系统中提供的工具或方法都无法看到,并且无论是“用户账户”、“计算机管理”,还是命令行中,都无法删除此账户。无法删除?也就是说即使知道已经有人建立了后门,都无法将他赶出去。如果你已经“中招”了,先别忙着重装系统,且看下文分解。

常用的账户建立/查看方法

①用户账户:打开“控制面板→用户账户”,在打开的“用户账户”管理窗口中点击“创建一个新账户”,然后根据提示即可完成一个新用户的建立。在这里还可以查看曾经登录过系统的账户,但没有在“Documents and Settings”目录中生成用户数据的账户是不会显示的(如没有登录过系统的Administrator账户),在这里检查系统中存在的账户是不准确的,对于稍微有点经验的入侵者而言,把残留在这里的痕迹抹去并非难事。

②控制台:系统控制台是Windows 2000及其后续版本中一个非常重要的系统组件,集中安置了系统中的多个系统配置维护工具。依次打开“控制面板→计算机管理”打开“计算机管理”控制台,在窗口左侧定位到“本地用户和组→用户”,在窗口右侧就罗列了当前系统已经建立的账户,一些在“用户账户”中没有显示的账户都可以在这里查到。在窗口右侧空白处点右键选择“新用户”,然后输入账户信息就可以建立一个新用户了。

③命令行:以上两种都是图形界面中的操作方法,现在我们回归到命令行模式。要查看当前系统中的账户,运行CMD打开“命令提示符”窗口,输入“net user”命令后系统就会返回系统中存在的账户(见图2)。键入“net user cfan 123 /add”命令可以新建一个用户名为“cfan”,密码为“123”的受限账户(即Users组成员)。如果要将cfan账户提升为管理员,就需要将此账户加入Administrators用户组,运行命令“net localgroup Administrators cfan /add”即可,如果要删除则用“net user cfan /del”,要查看某个账户的详细情况则可以执行“net user 用户名”。

④账户配置文件目录:在系统盘符下的“Documents and Settings”目录中,凡是登录过系统的账户都会在此生成一个与账户名同名的目录。

⑤查看“用户配置文件”:打开“我的电脑”属性,切换到“高级”,单击“用户配置文件”对应的“设置”按钮,在弹出的“用户配置文件”窗口中显示了登录过系统的账户(见图3)。在此具备管理员权限的用户可以删除账户及其配置文件(包括有密码保护的账户)。

⑥巧用权限设置:在NTFS格式的分区中,如果已经取消了“文件夹选项→查看→使用简单文件共存”的勾选,那么右击一个文件或者目录选择“属性”后就能看到“安全”选项卡,在这个选项卡中简单罗列了对此文件/目录具备权限的用户或组(见图4),而依次单击“添加→高级→立即查找”后,系统就会显示整个系统中的“用户、组或内置安全性原则”,可以非常方便地找出系统中的可疑账户。

1.歪门邪道:从注册表剖析账户信息

注册表是Windows核心部分,相当于系统设置的总数据库,几乎所有与系统设置相关的选项都能在其中找到对应的键值。本刊2005年第2期的《把根留住——备份Windows密码》中提供了移植Windows 2000/XP/2003账户密码的方法,其实[HKEY_LOCAL_MACHINE/SAM/SAM]还大有潜力可挖。

第一步:由于涉及注册表的权限修改,所以必须使用具有管理员权限的账户登录系统。

第二步:打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE/
SAM/SAM],右击该项选择“权限(Windows 2000中要使用regedt32.exe修改权限)”,选中“组或用户名称”列表中的“Administrators”,勾选“完全控制”后点击“确定”(见图5)。

第三步:按F5刷新一下注册表就会发现可以打开该项的下级分支了,找到[HKEY_LOCAL_MACHINE/SAM/SAM
/Domains/Account/Users/Names],其下的子项就是系统中的账户名,这是最保险的查看方式。

2.恐怖的实验:账户移形换位

第一步:建立2个账户cfan1和cfan2,分别设置密码并登录一次系统,这样做是为了在“Documents and Settings”目录中生成各自的配置文件和在注册表产生各自的SID值(SID值是Windows中设计用来区分不同账户而采用的一个随机码,即使是在同一系统中先后用相同的账户名建立一个新账户,它们的SID值也是不一样的)。

第二步:用系统管理员账户登录系统,打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/
Account/Users/Names],将账户cfan1和cfan2的键名互换,接着注销系统并分别使用cfan1和cfan2登录系统,原密码已经失效了,不过将它们的密码互换后却可以正常登录。

第三步:用cfan1登录后发现当前使用的用户配置文件是cfan2的,除了用户名换成cfan1外,其他的数据(密码、用户设置等)都是cfan2的。而用cfan2登录则恰好相反,除了用户名外也都是cfan1的。

结论:[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/
Users/Names]下的各个子项相当于一把能够开启用户配置文件“保管箱”的“钥匙”,而[HKEY_LOCAL_MACHINE/SAM/SAM/
Domains/Account/Users]下的其他各子项(除了Names项)才是真正记录了用户数据的位置,而复制影子账户就相当于给同一个用户数据“保管箱”配了2把“钥匙”,用其中任意一把都能打开“保管箱”。

小提示

[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/Names]各子项的默认值是一个指针,并不包含用户的数据,其值与[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users]下的某个子项名相同,也就是说指向了这个保存了用户数据位置的子项,如[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/
Account/Users/Names/Administrator]的默认值为“0x1f4”(即十六进制的000001f4),则Administrator的用户数据在[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/000001f4](见图6)。

3.当回杀手:亲手建立影子账户

第一步:以管理员账户登录系统,打开“注册表编辑器”,选中[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/
Users/Names/Administrator]项并右击,选择“导出”,保存为ad.reg。

第二步:用“记事本”打开ad.reg,将其中的“[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/Names
/Administrator]”修改为“[HKEY_LOCAL_MACHINE/SAM/SAM/
Domains/Account/Users/Names/cfan]”,保存后双击导入注册表。

第三步:注销当前登录用户,以“cfan”为用户名,密码则使用Administrator的密码,登录系统。

如果你是黑客,那么现在不管对方将用户名“Administrator”改为“user123”还是“user321”,你都能用“cfan”作为用户名进行登录。更为可怕的是,通过上文中介绍的6种常规账户检测方法均无法找出这个影子账户!但庆幸的是,还是有办法找出这个“隐形杀手”的。

小提示

用影子账户登录后所进行的用户设置及修改,相当于原账户所进行的修改(比如用影子账户修改了登录密码,则用原账户登录时也需使用新密码),反之亦然。

4.神探出手:轻松找出影子账户

以彼之道还施彼身乃是上策,既然黑客能利用注册表建立影子账户,那么通过注册表我也能找出影子账户。

第一步:打开“注册表编辑器”,然后点击左侧分支找到[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/
Names/Administrator],查看并记录下该项的默认值。

第二步:依次检查[HKEY_LOCAL_MACHINE/SAM/SAM/
Domains/Account/Users/Names]下的所有子项,如果某个子项的默认值与刚才记录下的Administrator的默认值相同,那么这个就是影子账户了,当然不能给黑客留一把后门“钥匙”,毫不犹豫地删除之。

第三步:除Administrator外,黑客还可能复制出其他账户的用户数据“保管箱”的“钥匙”,所以保险起见还需检查[HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/
Names]下所有子项的默认值是否有相同的,如果有,那么就该小心了。

影子账户全面解析(图) 给账户起个“小名”相关推荐

  1. 给账户起个“小名”——影子账户全面解析

    特别注意: ★本文仅针对Windows 2000/XP/2003,Windows 9x不在本文讨论范畴. ★本文涉及注册表重要位置的修改,在实际操作前应好备份. 评评管理员账户的安全性 Windows ...

  2. 【问链财经-区块链基础知识系列】 第三十八课 以太坊智能合约账户全解析

    以太坊是有账户的,每个用户都可以开设账户,账户余额是我们拥有的以太币或其他基于 ERC20 标准的通证.账户的设计使得以太坊与比特币不同,根据之前的讨论我们知道,比特币只有钱包地址和未使用的交易输出. ...

  3. 腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测)

    文章由GIT博客迁移过来 程序下载地址(源码也在):点我下载 设计说明 10月20号晚上,准备写这么一个程序. 腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测) 可以在截图之后,直接点击上传 ...

  4. C#实验报告 类与对象的访问性:银行账户存取款、新建账户、查询余额

    实验4 C#程序的流程控制 一.实验目的 (1)理解面向对象的概念,掌握C#定义类和创建对象的方法 (2)区分类的不同数据成员,包括常量.字段和属性的定义方法,并学会控制其访问性 (3)掌握类的方法成 ...

  5. windows7计算机用户账户,win7系统删除用户账户的方法(图文)

    步骤一.鼠标点击桌面右下角的"开始菜单--控制面板",找到控制面板中的"用户账户",在点击打开用户账户.如图所示: 步骤二.在用户账户窗口上面只显示出管理员的账 ...

  6. ad禁用计算机账户命令,AD-禁用账户命令 Disable-ADAccount

    学习自:徐鹏老师的 AD Powershell 系列视频课程用户当前状态是禁用执行下列命令,用户已启用(以下是针对Lab组织单位下的用户进行操作)Get-ADUser -SearchBase& ...

  7. 银行账户类(Accoount)可以为账户存储交易。取款和存款都会产生交易信息。需要记录账户每次交易的信息,包括取钱还是存钱,交易的金额,交易时间和交易之后的余额。系统可以通过账户查询所有的交易次数(最

    不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 1.题目背景 银行账户类(Accoount)可以为账户存储交易.取款和存款都会产生交易信息. ...

  8. 计算机用户账户添加,windows添加用户账户

    windows server 2003, "我的电脑"->右键"管理" "本地用户和组"->右键"用户"-& ...

  9. EOS账户系统(4)账户权限分级

    1. 一个分层的权限结构 每个账户都可以通过其他账户和密钥的组合来控制.EOS 允许账户定义什么样的账户名和密钥的组合可以把特定的操作发送到另一个账户.eg. 可以使用一个密钥访问用户的社交媒体账户, ...

最新文章

  1. .Net Core 商城微服务项目系列(八):购物车
  2. Logminer实战
  3. 粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构
  4. 千牛通知栏常驻是什么意思_店铺运营|内贸1688 店铺真正的权重是什么?
  5. linux代码_Sonar代码走查的配置(linux)
  6. 一篇好的技术博文,快速让你通俗理解Python闭包!
  7. AsyncTask异步加载的源码分析与实现实例
  8. C#网络连接 socket支持post,get之类http协议(chunked,gzip),同时支持webservice协议。...
  9. 数字通信原理_计算机网络原理梳理丨物理层
  10. 如何更优雅的写for循环
  11. Reflector使用详解,把DLL文件转换为.cs文件
  12. 佳能mf4400打印机无线服务器,佳能mf4400打印机驱动最新版
  13. centos gcc卸载_CentOS gcc多版本的卸载与修复
  14. Excel 有哪些可能需要熟练掌握而很多人不会的技能2
  15. 表情包受保护无法发送怎么破解和制作gif表情包
  16. ROS(四)——创建工作空间与功能包 Catkin编译系统
  17. Java处理带小数的数字
  18. casili计算机按音乐,CASILI计算器怎么按反对数
  19. Direct buffer memory
  20. 【物联网】WiFi基础知识 (一)【看评论区领取资料】

热门文章

  1. CoreAnimation1-图层树、寄宿图以及图层几何学
  2. C++中的map排序
  3. Operator Splitting Methods in PDEs
  4. 阻止windows关机时自动结束进程,导致数据丢失或异常
  5. idea配置git版本管理
  6. Makefile中的双冒号规则
  7. 平板点餐linux系统下载,基于Linux的智能点餐系统.pdf
  8. 在 FEKO 的 CADFEKO 中创建弧线的方法
  9. carsim/trucksim动画里设置多个车辆(ghost)
  10. redis namespace