域内横向移动
域内横向移动
域内横向移动是指在获取到内网某台机器的控制权的基础上,会以被攻陷的主机为跳板,通过收集域内凭证等各种方法,访问域内其他主机,扩大资产(包括跳板机中的文档和存储的凭证,以及通过跳板机连接的数据库,域控制器等其他重要资产),进一步扩大成果。
IPC window远程连接
虽然很老了,但是挺经典的。。
IPC(Internet Process Connection)是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通过ipc$可以与目标机器建立连接,利用这个连接可以在目标机器上运行命令。
为了配合IPC共享工作,Windows操作系统(不包括Windows 98系列)在安装完成后,自动设置共享的目录为:C盘、D盘、E盘、ADMIN目录(C:\WINNT\)等,即为ADMIN、C、D、E等等,但要注意,这些共享是隐藏的,只有管理员能够对他们进行远程操作。在MS-DOS中键入“net share”命令来查看本机共享资源
1 |
|
1 |
|
利用条件:开启139、445端口;管理员开启了默认共享。
139端口的开启表示NetBIOS协议的应用
既然需要用户账号密码的话,用ssh连接也可以吧,且拿到shell了再反弹交互性比较好的shell就可以较为方便的去执行命令了,那这种方式在什么实战情景会派上用场呢?先了解着吧
获取Windows系统散列值
LM Hash和NTLM Hash
在域环境中,用户信息存储在域控的ntds.dit(C:\Windows\NTDS\NTDS.dit)中;
非域环境也就是在工作组环境中,当前主机用户的密码信息存储着在sam文件(C:\Windows\System32\config\SAM)。
Windows操作系统通常使用两种方法(LM和NTLM)对用户的明文密码进行加密处理。
LM Hash其本质是使用DES加密,从windows vista和windows server2008开始 windows默认禁用LM Hash。
如果LM Hash被禁用了,攻击者通过工具抓取LM Hash通常为”aad3b435b51404eeaad3b435b51404ee“(表示LM Hash为空或被禁用)。
NTLM Hash是基于MD4加密算法进行加密的。从windows vista和windows server2003以后均为NTLM Hash加密。
NTLM HASH比LM HASH的安全性要更高。
单机散列值(密码)抓取
要想在Windows操作系统中抓取散列值或明文密码,必须将权限提升至System
由于本地用户名、散列值和其他安全验证信息都保存在SAM文件中。lsass.exe进程用于实现Windows的本地安全策略和登陆策略。
可以使用工具将散列值和明文密码从内存中的lsass.exe进程或SAM文件中导出。
SAM文件保存位置C:\Windows\System32\config
,该文件不允许复制,但可以使用U盘进入PE系统进行复制
常用工具: GetPassword、PwDump7、QuarksPwDump、mimikatz、PowerShell
具体使用方式网上随便搜都能找到,这里就记录一下mimikatz和PowerShell,方便平时查阅
mimikatz使用
项目地址:https://github.com/gentilkiwi/mimikatz/
使用教程:Mimikatz——使用教程
绕过杀软执行mimikatz:九种姿势运行Mimikatz
当目标为win10或2012R2以上时(或打了KB997补丁),默认关闭WDigest,默认在内存缓存中禁止保存明文密码
但可以通过修改注册表的方式抓取明文。
mimikatz许多功能都需要管理员权限,如果不是管理员权限不能debug
1 |
|
1.利用reg导出SAM和System文件,通过mimikatz从文件读取NTLM hash。
通过reg的save选项将注册表中的SAM,System文件导出到本地磁盘
需要system权限 cmd执行:
1 |
|
2.管理员权限打开minikatz执行:
1 |
|
2.使用mimikatz直接读取本地SAM文件
需要将mimikatz上传至目标机器,在命令行中打开mimikatz,同时注意是否有杀软
1 |
|
或者在线读取散列值及明文密码
1 |
|
3.mimikatz离线读取lsass.dmp文件
使用Procdump导出lsass.dmp文件
下载地址及使用说明参考:https://learn.microsoft.com/zh-cn/sysinternals/downloads/procdump
1 |
|
也可以使用任务管理器直接Dump,找到lsass.exe进程,右键->Create Dump File
mimikatz导出lsass.dmp文件中的密码散列值
1 |
|
使用hashcat获取密码
kali自带
1 |
|
有时候需要使用--force
参数强制执行
如果能得到明文密码,可以尝试进行密码喷洒
密码和散列值抓取防范
设置Active Diretory 2012 R2功能级别
Windws Sever 2012R2新增了一个名为“受保护的用户”的用户组。只要将需要保护的用户放入该组
打KB2871997补丁
确保注册表项Wdigest值为0
1 |
|
哈希传递攻击(PTH)
哈希传递(Pass The Hah)通过找到与账户相关的密码散列值(通常是NTLM Hash)来进行攻击
散列值:当用户需要登录某网站时,如果该网站使用明文的方式保存用户的密码,那么,一且该网站出现安全漏洞,所有用户的明文密码均会被泄露。由此,产生了散列值的概念。当用户设置密码时,网站服务器会对用户输人的密码进行散列加密处理(通常使用MD5算法)。散列加密算法一般为单向不可逆算法。当用户登录网站时,会先对用户输人的密码进行散列加密处理,再与数据库中存储的散列值进行对比,如果完全相同则表示验证成功。
为什么要使用HASH传递?
一是目标主机在win server 2012之后,lsass.exe进程中是抓不到明文密码的;
二是随着信息安全意识的提高,弱口令情况逐渐降低,我们经常会遇到拿到hash却解不开的情况,
综上,只要我们获取到hash,我们依然可以正常登录,进行类似密码喷洒的操作
原理:在域环境中,用户登录计算机时使用的大都都是域账号,如果有一些计算机在安装时使用相同的本地管理员账户和密码,就可以使用pth登录内网中其他计算机,这种方式不需要破解hash的明文
1.NTLM Hash
获取ntlm hash的方法前面已经提过
minikatz进行hash传递,user对应用户,domin对应域名,ntlm就是抓取到的hash
1 |
|
此时会弹出一个cmd.exe,执行命令,例:列出c盘内容
1 |
|
2.AES-256密钥(Pass The Key)
必须要在目标机器上安装KB28711997,才可以导入AES-256密钥的方式进行横向移动(Pass The Key)
AES-128同样也可以用来传递
利用AES-256密钥进行横向移动,又称Pass The Key。
使用mimikatz抓取AES-256密钥
1 |
|
minikatz进行传递
1 |
|
需要注意以下几点:
- dir 后跟要使用的主机名,而不是IP地址,否则会提示用户名或密码错误。
- 除了AES-256密钥,AES-128密钥也可以用来进行哈希传递。
- 使用AES密钥对远程主机进行哈希传递的前提是在本地安装KB2871997。
- 如果安装了KB2871997,仍然可以使用SID为500的用户的NTLM Hash进行哈希传递。
- 如果要使用mimikaz的哈希传递功能,需要具有本地管理员权限。这是由mimikatz的实现机制决定的(需要高权限进程lsass.exe的执行权限)。
票据传递攻击(PTT)
票据传递攻击(Pass The Ticket)是基于Kerberos认证的一种攻击方式,常用来做后渗透权限维持。黄金票据攻击利用的前提是得到了域内krbtgt用户的NTLM 哈希或AES-256的值,白银票据攻击利用的前提是得到了域内服务账号的NTLM 哈希或AES-256的值。票据传递攻击常用来做域控权限维持。
相较于PTH有一个优点,就是不需要本地管理员权限来进行横向移动
缺点:票据是有有效期的,一般为10小时,所以如果当前主机10h之内连接过域控的话,我们可以利用该票据,但是如果超过10h,就没法利用了。
深入的理解需要了解kerberos基本原理,这一块还没学,后面找时间专门补上:域渗透-票据传递攻击Pass the Ticket ,顺便深入了解一下kerberos基本原理
1.mimikatz进行票据传递
使用mimikatz(管理员权限)将内存的票据导出:(运行以下命令会在当前目录生成多个服务的票据文件)
1 |
|
删除票据,排除干扰
1 |
|
从生成的票据选择一个目标系统自己的,将票据文件注入内存:
1 |
|
1 |
|
2.kekeo进行票据传递
kekeo 下载地址:https://github.com/gentilkiwi/kekeo/releases/
kekeo 需要使用域名、用户名、NTLM Hash 三者配合生成票据,再将票据导入,从而直接连接远程计算机。
在当前目录生成一个票据文件
1 |
|
清除当前内存中的票据
1 |
|
使用kekeo将票据文件导入内存,导入完成,exit推出
1 |
|
使用dir命令查看远程主机的文件。
1 |
|
注意:
- 使用dir命令时,务必使用主机名。如果使用IP地址,就会导致错误。
- 票据文件注人内存的默认有效时间为10 小时。
- 在目标机器上不需要本地管理员权限即可进行票据传递。
- 当你获取某个机子的域名、用户名、NTLM Hash 三者,即便后来修改了密码,你也可以根据域名、用户名、NTLM Hash生成(黄金)票据,已经保持对该计算机的权限
这里只是对PTT的使用进行一个了解,有关金银票据的利用并没有深入了解,关于如何利用票据进行权限维持后面再深入学习