来源如下图:(微信公众号:0x00实验室)
拿到跳板后,先探测一波内网存活主机,用net user /domian命令查看跳板机是否在域内,探测存活主机、提权、提取hash、进行横向移动,定位dc位置,查看是否有能直接提权域管的漏洞,拿到dc控制权后进行提权,然后制作黄金票据做好维权,清理一路过来的日志擦擦脚印
金票:在 Kerberos 认证中,Client 通过 AS(身份认证服务)认证后,AS 会给 Client
一个Logon Session Key 和 TGT,而 Logon Session Key 并不会保存在 KDC 中,
krbtgt 的NTLM Hash 又是固定的,所以只要得到 krbtgt 的 NTLM Hash,就可以伪造
TGT 和Logon Session Key 来进入下一步 Client 与 TGS 的交互。而已有了金票后,
就跳过AS 验证,不用验证账户和密码,所以也不担心域管密码修改
银票:如果说黄金票据是伪造的 TGT,那么白银票据就是伪造的 ST。在 Kerberos 认证的第三步,Client 带着 ST 和Authenticator3 向 Server 上的某个服务进行请求, Server 接收到 Client 的请求之后,通过自己的 Master Key 解密 ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问 server 上的指定服务了。所以我们只需要知道 Server 用户的 Hash 就可以伪造出一个 ST,且不会经过 KDC,但是伪造的门票只对部分服务起作用
金票和银票的区别
- 获取的权限不同
- 认证流程不同
- 加密方式不同
- 用户名爆破
- 密码喷洒和密码爆破
- Kerberoasting
- ASRepRoasting
- 黄金票据和白银票据
- MS14-068
- 非约束委派、约束委派、基于资源的约束委派
- 票据传递(ptt/ptk/ptc)
- mimikatz加密降级攻击(万能钥匙)
- 使用恶意的kerberos证书做权限维持
- 域名称[AD PowerShell模块:(Get-ADDomain).DNSRoot]
- 域的SID 值[AD PowerShell模块:(Get-ADDomain).DomainSID.Value](就是域成员SID值去掉最后的)
- 目标服务器的 FQDN
- 可利用的服务
- 域的KRBTGT账户NTLM密码哈希
- 需要伪造的用户名
一旦攻击者拥有管理员访问域控制器的权限,就可以使用Mimikatz来提取KRBTGT帐户密码哈希值
$IPC、Psexec、WMI、Schtasks、AT、SC、WINRM
(143条消息) p66 内网安全-域横向批量at&schtasks&impacket_正经人_____的博客-CSDN博客
(143条消息) p67 内网安全-域横向 smb&wmi 明文或 hash 传递_正经人_____的博客-CSDN博客
p68 内网安全-域横向 PTH&PTK&PTT 哈希票据传递_正经人_____的博客-CSDN博客
p69 内网安全-域横向 CobaltStrike&SPN&RDP_正经人_____的博客-CSDN博客
可以使用命令:net user /domian
使用扫描器扫一下:kail - 扫描与爆破_正经人_____的博客-CSDN博客
- 通过webshell实现内网socket代理
- 正向链接
- ssh隧道
- 协议不同出网的方式不同,如dns对应dnscat2 tcp对应
- 测试是否是特定协议或端口出网
p71 内网安全-域横向网络&传输&应用层隧道技术_正经人_____的博客-CSDN博客
p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)_正经人_____的博客-CSDN博客
Kerberos是一种网络身份认证的协议,协议设计目的是通过使用秘钥加密技
术为客户端/服务器应用程序提供强身份验证。该认证过程的实现不依赖于主机操作系统的认
证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据 包可以被任意的读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,通过传统的密码技术执行认证服务。
Kerberos认证流程:
- DC,Domain Controller,域控
- KDC,Key Distribution Center,秘钥分发中心
- AD,Account Database,账户数据库
- AS,Authentication Server,身份验证服务
- TGS,Ticket Granting Server,票据授予服务
- TGT,Ticket Granting Ticket,票据中心授予的票据先去AS身份验证服务,返回身份验 证,带着身份验证去TGS拿票据,带着拿回来的票据去服务器。
mimikatz是一款强大的系统密码破解获取工具。可以破解哈希值,是一个可加载的
Meterpreter模块。
如果system的权限无法执行执行。需要先进行提权。
在meterpreter中输入run post/multi/recon/local_exploit_sugge
ster,进行提权漏洞检测
票据分为黄金票据和白银票据。
黄金票据是伪造TGT
伪造黄金票据必须拿到域控管理员的权限才可以。
伪造黄金票据的要求
- 域名城
- 域SID值
- 域的KRBTGT账户NTLM哈希密码
- 伪造用户名
拿下机器后,使用代理访问内网
windows环境:reGeorg与proxifier
Linux环境:reGeorg与proxychains, 使用nmap等工具进行扫描,发现web服务的主机和其它信息。有时这些边界机器上会记录一些 内网服务器上的一些信息(用户 ssh known_hosts hosts 防火墙设置 记录、内网之间好多waf 规则基本都是空,大多数waf防外部威胁,这时候可以拿到探测的内部一些开放的端 口判断进行渗透,通常用户这里基本是统一命名的,拿到的各种记录 会暴露出部分内网通讯的 ip
windows
- Regedit 查看策略表(windows+R执行命令)
- Msconfig 查看系统配置
- Taskmgr 启动任务管理器
- Eventvwr,msc 打开日志的命令
- Gpedit.msc 打开本地组策略
- Compmgmt.msc 计算机管理
- Lusrmgr.msc 打开用户与组
- Taskschd 打开计划任务
- Net user xxx /add 添加用户(cmd执行命令)
- Net localgroup administrators xxxx /add 把某用户放到管理员组里面
- Net session 查询当前会话
- Net start 查看当前运行的服务
- Net use 查看当前共享连接(Net share)
- Net share xxx /del 删除共享的链接
- 查看隐藏用户可以去,用户管理
- Findstr /s /I “hellow” ** # 查询包含hellow 的关键字
Linux
- 查看帐号文件
cat /etc/passwd
- 查看历史命令记录文件和命令
cat ~/.history
history // 显示终端执行过的命令
history 10 // 显示最近10条终端执行过的命令
Ctrl+r // 搜索已经执行过的命令
- 查看网站日志
先进入日志文件所在目录(`/var/log`),然后使用 `tail -f `日志文件`.log` 命令
进行查看(查看的命令有:`cat`(查看全部)、`tail`(查看最后多少行)、`head`(查
看最开始多少)、`more`,配合`grep`使用)
- 查看cpu占用率
top`,简化版`top -bn 1 -i -c
- 查看ssh登陆日志
lastlog` 会列出所有用户最近登陆的信息(引用的是`/var/log/lastlog`文件中的信
息),只看`ssh`的话就`cat /var/log/lastlog
- 查看是否有其他ssh登陆在线
通过`who`命令检查当前在线用户
在`/var/log/secure`可以看到登陆的情况在`/var/log/btmp`中可以查看到登陆失败的记录(可通过`lastb`命令进行检查)在`/var/log/lastlog`中可以查看最近登陆的记录(可通过`last`命令进行检查)
如果在`ssh`的配置文件里(一般在`/etc/ssh/sshd_config`)和`syslog`配置文件中对日志文件做过定制的话那么需要根据具体情况定位日志文件
- 查看中间件的日志
进入/var/log下然后进入要查看的中间件日志目录进行查看
- 分析命令被替换
对linux几个指令集进行md5sum定期验证,md5sum如果变了那说明指令变了,然后对指令集进行还原
- uid提权 (find / -perm -u=s -type f 2>/dev/null)
- (sudo git help config !/bin/bash或者!'sh'完成提权)
- 脏牛提权
- 内核提权
- 环境劫持
- suid提权
- cve-2021-4034
- docker提权
Windows机器:
- 替换系统文件类(shift 后门,放大镜后门)
- 修改注册表类 - 自启动项、屏幕保护程序注册表、用户登陆初始化、登录脚本、映像劫持、影子账户、AppCertDlls 注册表项、AppInit_DLLs 注册表项、文件关联、用户登陆初始化、xx.Netsh Helper DLL
- 文件类 - 自启动文件夹、office Word StartUp 劫持
- 计划任务 - schtasks 、WMI、bitsadmin
Linux:
- 预加载型动态链接库后门
- strace 后门
- SSH 后门
- SUID 后门
- inetd 服务后门
- 协议后门
- vim 后门
- PAM 后门
- 进程注入
- Rootkit
- 端口复用
如果拿到的就是域内用户,定位一下域控,提取本机`hash`看域管是否登陆过本机,是否有域用户的进程之类的注入域用户进程窃取下权限,然后使用一些域内漏洞来提权到域管从而接管域控,然后通过`dcsync`权限维持或者`adminsdhound`权限维持,也可以修改机器账号的 `useraccount`位 8192权限维持
frp、ew、ssh、Neo-reGeorg、netsh、Lcx
===========
网络层:Ipv6情况、icmp情况、Gre隧道0
传输层:Tcp 隧道、udp 隧道 常规端口转发
应用层:ssh隧道、http隧道、https隧道、dns隧道
密码喷洒、IPC$、WMI、mimikatz、PTH、MS14-068、web漏洞、系统漏洞
88 kerberos krb5、464kerberos kpasswd(v5)
提权到system权限,然后去通过工具,就能够劫持任何处于已登录用户的会话,而无需获得该用户的登录凭证。
终端服务会话可以是连接状态也可以是未连接状态
MS14-068、Roasting攻击离线爆破密码、非约束性委派、基于资源的约束委派、ntlm
relay、CVE-2021-42287/CVE-2021-42278
procdump+mimikatz 转储然后用mimikatz离线读取
Sam获取然后离线读取
windows server 2012之后,或者打了补丁
抓不到的话怎么办
翻阅文件查找运维等等是否记录密码。或者hash传递、或者获取浏览器的账号密码
psexec会记录大量日志,wmic不会记录日志并且更为隐蔽
psexec,wmic,smbexec,winrm,net use共享+计划任务+type命令
利用已在白名单中的软件执行目标代码,甚至发动无文件攻击
白名单污染
暴力破解白名单防护软件
爆破用户、wmic执行命令进行横向
cmd定位:net group "Domain controllers" /Domain // 查询域控
net time /domain // 方式来定位域控,显示域控时间
DNS解析记录定位:nslookup -type=all _ldap._tcp.dc._msdcs.tubai.com`
// 若当前主机dns为域内dns,则可以通过解析记录定位
端口探测定位:扫描内网中同时开放`389`、`636`与`53`的机器,`389`默认是`LDAP`协
议端口,`636`端口是`LDAPS`,`53`端口默认是DNS端口,主要用于域名解析,通过DNS服
务器可以实现域名与ip地址之间转换,他们都是域控机器开放的端口
SPN扫描定位:由于`SPN`本身就是正常的`kerberos`请求,所以扫描隐蔽,它不同于
`TCP`与`UDP`常规端口扫描。大部分windows已经自带`setspn.exe`,且此操作无需管
理权限
命令:setspn -T tubai.com -Q /
扫描结果中根据:`CN=AD-SERVER,OU=Domain Controllers,DC=tubai,DC=com`来
进行域控的定位
net group "Domain Admins" /domain // 查询域管理员
此外还可以通过一些工具定位:PSloggedon.exe、PVefindaduser.exe、
powerView.ps1
lsass.exe
hash pth传递
正向Shell:
攻击者连接被攻击者机器,可用于攻击者处于内网,被攻击者处于公网的情况
反向Shell:
被攻击者主动连接攻击者,可用于攻击者处于外网,被攻击者处于内网的情况
web日志,如 apache 的 access.log,error.log。直接将日志清除过于明显,一般使用
sed 进行定向清除
e.g. sed -i -e ‘/192.169.1.1/d’
history 命令的清除,也是对~/.bash_history 进行定向清除
wtmp日志的清除,/var/log/wtmp
登录日志清除 /var/log/secure
A.系统漏洞提权
- 通过 Webshell 命令行执行systeminfo 命令查看系统是否打了提权补丁,未打补丁的 统可通过 github 下载系统提权漏洞 exp 进行提权,KB2592799、KB3000061、 KB2592799等。
- 通过 Webshell 找网站读写执行目录,把 cs 马或提权 exp 上传到对方服务器(如果 cmd无法执行命令可单独上传 cmd.exe 到对方服务器,菜刀终端设置为 setp c:\XXX\cmd.exe)
B.sc 命令提权(administrator–>system)
例如:sc Create syscmd binPath= “cmd /K start” type= own type=
interactsc start systcmd,就得到了一个system权限的cmd环境
C.不带引号的服务路径
当服务路径带空格的时候,路径空格目录前面一断就会当作文件执行,如C:\ProgramFiles\MSBuild 这个目录,攻击者只要在c盘创建名为 Program.exe 的木
马,最后只要系统重启就会执行 C:\Program.exe 文件。
D.不安全的服务权限提升
即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,我们用木马替换服务调用的默认文件。
E.绕过系统 UAC 提升
可通过 msf 里面的 getsystem 绕过 UAC,也可以通过 kail 模块的
exploit/windows/local/bypassuac_injection、
exploit/windows/local/bypassuac_vbs
、exploit/windows/local/ask 绕过 UAC
第一种方法:在具备Webshell的情况下,通过Webshell直接上传CS木马到对方服务器运
行,在CS软件上面开启 SocksProxy代理,把 kail 直接通过cs socksProxy代理攻击内
网进行横向渗透。
第二种方法:通过reGeorg+Proxifie进行内网渗透,把 tunnel.nosocket.php 脚本
通过Webshell上传到 Web 站点目录进行访问,在本地自己电脑上面执行
reGeorgSocksProxy.py -p 9999 –u http://IP 地址/tunnel.nosocket.php,最后配置 Proxifier 本地代理地址与端口进行横向内网渗透。
34 - 内网横向渗透一般攻击技巧
- 通过 nmap、nessus 扫描整个内网 ip 主机漏洞,如如 ms08-067、ms17-010、 ms12-020、ms15-035、ms19-0708、永恒之蓝2代、cve-2017-7494(samba)、cve- 2014-6271(破壳)、php cgi 等相关漏洞。
- 通过 nmap 扫内网 80、8080 端口,看内网是否存在大量 Web 站点,如果存在进行手 工或工具对 Web 站点进行漏洞检测,如注入、命令执行、反序列化、文件上传、弱口令等相关漏洞。
- 通过 ntscan、Bruter、hydra 工具对内网弱口令探测,如果发现一个服务器弱口令, 可以通过这个弱口令跑整个内网,一般密码一样。
- 适当的对内网主机进行 ARP 抓取密码。
- 如果内网有 AD 域的情况下,可以通过 MS14-068 漏洞、黄金票据、白银票据进行域控攻击,拿下域控就等于基本拿下整个内网。
- certutil.exe
- powershell
- bitsadmin
- vbs
- ftp
- 跳板
- 代理服务器
- Tor
- 日志
- 清除历史记录
- 粉碎文件
NTLM Hash(NT LAN Manager)是支持Net NTLM认证协议及本地认证过程中的一个重要
参数。其长 度为32位,由数字与字母组成。它的前身是LM Hash,目前基本淘汰,两者相差
不大,只是使用的加密 算法不同。
ntml hash生成方式 将明文口令转换成十六进制的格式 转换成Unicode格式,即在每个字
节之后添加0x00对Unicode字符串作MD4加密,生成32位十六进制数字串
# 主机信息收集
- 网络配置 ipconfig /all
- 操作系统 systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
- 软件信息 systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
- 服务信息 wmic /namespace:\root\securitycenter2 path antivirusproduct GET displayName,productState, pathToSignedProductExe
- 用户列表 net user
- 本地管理员信息 net localgroup administrators
- 端口信息 netstat –ano
- 补丁信息 wmic qfe get Caption,Description,HotFixID,InstalledOn
- 查防火墙 netsh firewall show config
# 2域内信息收集
是否有域 使用ipconfig /all命令可以查看网关IP地址、DNS的IP地址以及判断当前主机
是否在域内:通过反 向解析查询命令nslookup来解析域名的IP地址,使用解析出来的IP地
址进行对比,判断域控制器和 DNS服务器是否在同一台服务器上
登录域信息 net config workstation
域内信息收集
ICMP探测内网 for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.174.%I
| findstr "TTL="
ARP探测内网
端口信息收集
查询域信息 net view /domain
查询域主机 net view /domain:XXX
查询域用户 net group /domain
查找域控 Nslookup -type=SRV _ldap._tcp net time /domain net group
"Domain Controllers" /domain
查域用户信息 net user /domain
查询域管理员 net group "Domain Admins" /domain
查询域sid信息 whoami /all