模块:Footprinting(共 21 小节)
整理原则:以“目标—前置条件—操作—结果判断—风险点”为主线重新归纳,不照搬原文。命令中的域名、IP、用户名和密码均为课程示例,只能在获授权环境中使用。
1. 本章要解决什么问题
Footprinting 的核心不是立刻寻找漏洞,而是尽可能准确地回答:目标有哪些资产、暴露了哪些服务、服务如何配置、哪些信息能够互相印证,以及下一步应把精力放在哪里。
一次有效的枚举通常形成如下闭环:
- 从公开信息或端口扫描获得线索。
- 判断服务、版本、协议和访问条件。
- 使用协议原生客户端或专用工具进一步查询。
- 比较多种工具的结果,手工验证关键发现。
- 把新发现的域名、主机名、账号、共享和凭据重新投入下一轮枚举。

2. 枚举原则与方法论
2.1 三条原则
- 表象之外还有信息:同一资产要从 DNS、证书、网络服务、配置和人员等不同角度观察。
- 区分可见与不可见:无法直接看到的内容也有价值,应思考它为什么被隐藏、可能位于哪一层。
- 信息总能继续关联:一个主机名、邮箱、TXT 记录或用户名,都可能成为下一轮查询的入口。
枚举是迭代过程,不是一次端口扫描。过早使用高噪声暴力探测,既可能打扰生产系统,也容易忽略已有信息之间的关系。
2.2 六层枚举模型
层级 关注对象 典型问题 互联网暴露面 域名、子域名、ASN、网段、IP、云服务 企业有哪些公开入口? 网关 防火墙、DMZ、IDS/IPS、代理、VPN、分段 哪些流量被允许,边界如何划分? 可访问服务 端口、协议、版本、配置、接口 服务是什么,是否需要认证? 进程 PID、任务、数据流、源与目的地 服务背后实际运行什么? 权限 用户、组、权限、限制、环境 当前身份能做什么? 操作系统 系统类型、补丁、网络与敏感文件 服务处于怎样的主机环境?

3. 域名信息
3.1 使用场景
在不直接接触目标基础设施的情况下,从网站、TLS 证书、证书透明度日志、搜索引擎、Shodan 和 DNS 记录中建立资产清单。此阶段适合发现子域名、邮件服务、第三方平台和云托管线索。
3.2 证书透明度日志(crt.sh)
curl -s 'https://crt.sh/?q=inlanefreight.com&output=json' | jq .
curl -s 'https://crt.sh/?q=inlanefreight.com&output=json' \
| jq . | grep name | cut -d":" -f2 | grep -v 'CN=' \
| cut -d'"' -f2 | awk '{gsub(/\\n/,"\n");}1;' | sort -u
第一条查看原始 JSON,第二条把证书中出现的名称整理为去重后的候选子域名。证书记录只是线索,还需解析验证。
for host_name in $(cat subdomainlist); do
host "$host_name" | grep 'has address' | grep inlanefreight.com | cut -d' ' -f1,4
done

3.3 从 IP 继续关联服务
for host_name in $(cat subdomainlist); do
host "$host_name" | grep 'has address' | grep inlanefreight.com | cut -d' ' -f4 >> ip-addresses.txt
done
for target_ip in $(cat ip-addresses.txt); do
shodan host "$target_ip"
done
Shodan 结果可帮助判断某 IP 历史上暴露过哪些端口、产品和版本。结果可能过时,最终仍须在授权范围内验证。
3.4 DNS 记录总览
dig any inlanefreight.com
重点理解:
- A/AAAA:主机地址。
- MX:邮件服务器。
- NS:权威 DNS。
- TXT:验证信息、邮件策略及第三方服务痕迹。
- SOA:区域负责人、序列号与刷新策略。
TXT 记录可能暴露企业使用的邮件、协作或域名服务商。第三方托管资产不自动属于测试授权范围,必须先确认边界。

4. 云资源
4.1 关注对象
常见对象包括 AWS S3、Azure Blob 和 Google Cloud Storage。风险往往不是云平台本身,而是桶、容器或对象权限配置错误。
4.2 章节中的发现方法
- 从 DNS 名称、网站源码和静态资源 URL 识别云端点。
- 使用搜索语法 inurl:、intext: 组合公司名称、缩写和文件类型。
- 使用 Domain.glass 查看域名与基础设施关系。
- 使用 GrayHatWarfare 按桶名、公司关键字或文件名搜索公开云存储。


4.3 判断与注意事项
发现可访问对象后,先记录 URL、提供商、访问方式和权限表现,再确认是否属于授权范围。重点关注配置文件、备份、源代码和 SSH 密钥等高敏感文件,但不要因“公开可见”就默认可下载或使用。
5. 员工与技术栈信息
招聘信息、LinkedIn/Xing、GitHub 等来源可以透露:
- 编程语言和框架,如 Java、C#、Python、Django、Spring、ASP.NET。
- 数据库,如 PostgreSQL、MySQL、SQL Server、Oracle。
- 开发与运维工具,如 Git、Atlassian、Docker、Kubernetes、Redis。
- 邮箱格式、用户名规律、团队结构和岗位权限。
- 代码仓库中误提交的邮箱、令牌或其他凭据痕迹。


整理时应把“人员—账号格式—技术—资产”做成关联,而不是孤立收集姓名。
6. FTP 与 TFTP
6.1 协议与前置条件
- FTP 通常以 TCP 21 为控制通道,传统主动模式使用 TCP 20 传输数据;被动模式由服务器提供数据端口。
- FTP 默认不加密,用户名、密码和文件内容可能明文传输。
- TFTP 使用 UDP,功能简单,通常无身份验证,也不能正常列目录。
- 连接前要确认目标允许访问;匿名 FTP 常使用用户名 anonymous。
6.2 首次搭建与配置检查
章节使用 vsftpd 进行本地实验:
sudo apt install vsftpd
cat /etc/vsftpd.conf | grep -v '#'
cat /etc/ftpusers
重点设置:anonymous_enable、anon_upload_enable、anon_mkdir_write_enable、no_anon_password、anon_root、write_enable、hide_ids、ls_recurse_enable。允许匿名写入、免密码或递归浏览会显著扩大泄露面。
6.3 实际使用示例
ftp <目标IP>
# Username: anonymous
ls
status
debug
trace
ls -R
get 'Important Notes.txt'
put testupload.txt
仅在服务器明确允许且测试范围授权时验证上传。镜像下载示例:
wget -m --no-passive ftp://anonymous:anonymous@<目标IP>
6.4 指纹识别与 TLS
sudo nmap --script-updatedb
sudo nmap -sV -p21 -sC -A <目标IP>
sudo nmap -sV -p21 -sC -A <目标IP> --script-trace
nc -nv <目标IP> 21
telnet <目标IP> 21
openssl s_client -connect <目标IP>:21 -starttls ftp
观察 banner、支持的功能、匿名登录、目录内容和 TLS 证书。证书可能额外透露主机名、邮箱或组织位置。
7. SMB
7.1 协议与场景
SMB/CIFS 用于文件、打印机和进程间共享。旧式 NetBIOS 常用 TCP 139,直接托管 SMB 使用 TCP 445。Linux/Unix 上常见实现是 Samba。
关键前置条件是:目标端口可达;若访问受限,则需要有效账号/密码或允许 Guest/Null Session。
7.2 配置与危险项
服务端主要配置文件为 /etc/samba/smb.conf。需关注 Guest 访问、可写共享、目录是否可浏览、map to guest 以及文件/目录掩码。共享级配置与文件系统 ACL 要一起判断。
7.3 第一次枚举
smbclient -N -L //<目标IP>
smbclient //<目标IP>/notes
进入交互会话后:
help
ls
get prep-prod.txt
服务器本地可通过 smbstatus 查看会话和锁定文件。
7.4 进一步枚举与交叉验证
sudo nmap <目标IP> -sV -sC -p139,445
rpcclient -U '' <目标IP>
rpcclient 中常用:srvinfo、enumdomains、querydominfo、netshareenumall、enumdomusers、queryuser 、querygroup 。
samrdump.py <目标IP>
smbmap -H <目标IP>
crackmapexec smb <目标IP> --shares -u '' -p ''
git clone https://github.com/cddmp/enum4linux-ng.git
cd enum4linux-ng
pip3 install -r requirements.txt
./enum4linux-ng.py <目标IP> -A
工具输出可能因权限、超时和 RPC 接口差异而不同。重要用户名、共享和域信息要用第二种工具或原生客户端确认。
8. NFS
8.1 协议与风险
NFS 主要用于 Unix/Linux 文件共享,常见端口为 TCP/UDP 2049,并依赖 ONC-RPC 111。访问控制经常依赖客户端 IP 与 UID/GID 映射,因此错误导出可能让远程用户以意外身份读写文件。
服务端配置位于 /etc/exports。高风险选项包括 rw、insecure、nohide、no_root_squash;其中 no_root_squash 会让客户端 root 保留 root 身份。
8.2 服务端检查
cat /etc/exports
exportfs
8.3 远程枚举、挂载与验证
sudo nmap <目标IP> -p111,2049 -sV -sC
sudo nmap --script 'nfs*' <目标IP> -sV -p111,2049
showmount -e <目标IP>
mkdir target-NFS
sudo mount -t nfs <目标IP>:/ ./target-NFS/ -o nolock
tree ./target-NFS
ls -l ./target-NFS
ls -n ./target-NFS
sudo umount ./target-NFS
ls -n 直接显示 UID/GID,适合判断身份映射。验证写权限时应使用无害测试文件并在结束后清理。
9. DNS 服务
9.1 认识服务
DNS 服务器可承担根、权威、递归、缓存或转发角色。BIND 常见配置由主配置、选项、区域和反向区域文件组成。
9.2 基础查询
dig soa <域名>
dig ns <域名> @<DNS服务器IP>
dig CH TXT version.bind @<DNS服务器IP>
dig any <域名> @<DNS服务器IP>
先从 SOA、NS 和版本线索判断服务器角色,再决定后续查询。ANY 结果不一定完整,不能替代逐类记录查询。
9.3 区域传送
dig axfr <域名> @<DNS服务器IP>
dig axfr internal.<域名> @<DNS服务器IP>
若 AXFR 未限制,可能一次泄露大量主机记录。需分别测试已发现的父域与内部子域,但不得越过授权域。
9.4 子域名枚举
for sub in $(cat /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt); do
dig "$sub.<域名>" @<DNS服务器IP> | grep -vE '(^;|^$)' | grep "$sub"
done
dnsenum --dnsserver <DNS服务器IP> --enum -p 0 -s 0 \
-o subdomains.txt \
-f /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt <域名>
危险配置包括过宽的 allow-query、allow-recursion、allow-transfer 和区域统计信息暴露。

10. SMTP
10.1 协议与前置条件
SMTP 常用 TCP 25 进行服务器间传输,587 用于经过身份验证的邮件提交并可升级到 STARTTLS,465 常用于隐式 TLS。邮件通常依次经过 MUA、MSA、MTA/Relay、MDA,最终进入邮箱。
Postfix 的主要配置文件是 /etc/postfix/main.cf。重点检查允许中继的网络、认证和 TLS 设置。
10.2 手工会话示例
telnet <目标IP> 25
HELO client.example
EHLO client.example
VRFY username
MAIL FROM:<sender@example.com>
RCPT TO:<receiver@example.com>
DATA
Subject: authorized test
test
.
QUIT
VRFY 可用于观察用户验证行为,但有的服务器对所有输入都返回 252,因此不能把单一状态码当作账号存在证明。
10.3 自动化检查
sudo nmap <目标IP> -sC -sV -p25
sudo nmap <目标IP> -p25 --script smtp-open-relay -v
mynetworks = 0.0.0.0/0 之类的配置可能造成开放中继。测试邮件发送会改变外部状态,只能在明确授权下执行。
11. IMAP 与 POP3
11.1 区别与端口
协议 明文/STARTTLS TLS 特点 IMAP 143 993 邮件保留在服务器,可同步目录和状态 POP3 110 995 以下载、列出、取回和删除为主
章节建议在本地实验环境安装 dovecot-imapd 与 dovecot-pop3d,通过真实配置理解协议行为。
11.2 扫描与登录验证
sudo nmap <目标IP> -sV -p110,143,993,995 -sC
curl -k 'imaps://<目标IP>' --user user:password
curl -k 'imaps://<目标IP>' --user user:password -v
openssl s_client -connect <目标IP>:995
openssl s_client -connect <目标IP>:993
-k 会忽略证书校验,适合课程实验,不应成为生产环境默认做法。
11.3 常用交互命令
- IMAP:LOGIN、LIST、SELECT、FETCH、CLOSE、LOGOUT。
- POP3:USER、PASS、STAT、LIST、RETR、DELE、QUIT。
使用前必须有有效凭据;读取或删除真实邮件属于高影响操作,课程外应严格限制。
12. SNMP
12.1 协议基础
SNMP 通常使用 UDP 161 查询/管理,UDP 162 接收 Trap。MIB 描述对象结构,OID 标识具体对象。SNMPv1/v2c 依赖社区字符串且缺少强加密;SNMPv3 提供更完善的认证和加密。
社区字符串相当于访问口令。服务端配置常见于 /etc/snmp/snmpd.conf。
12.2 首次使用与枚举
snmpwalk -v2c -c public <目标IP>
sudo apt install onesixtyone
onesixtyone -c /opt/useful/seclists/Discovery/SNMP/snmp.txt <目标IP>
sudo apt install braa
braa <community>@<目标IP>:.1.3.6.*
snmpwalk 用已知版本和社区字符串遍历 OID;onesixtyone 用候选列表识别社区字符串;braa 可批量查询指定 OID 范围。输出中重点寻找主机名、接口、路由、运行进程、软件和配置描述。
13. MySQL
13.1 场景与前置条件
MySQL 常见于 LAMP/LEMP。连接通常需要目标 TCP 3306 可达,并具备允许远程连接的账号;账号还必须有对应数据库或表的权限。
13.2 本地安装与配置观察
sudo apt install mysql-server -y
cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v '#' | sed -r '/^\s*$/d'
重点关注监听地址、用户/密码处理、日志、调试以及 skip-grant-tables。后者会绕过权限表,风险极高。
13.3 服务枚举与连接
sudo nmap <目标IP> -sV -sC -p3306 --script 'mysql*'
mysql -u root -h <目标IP>
mysql -u root -pP4SSw0rd -h <目标IP>
课程示例中 -p 与密码之间没有空格。把密码直接写在命令行会进入历史或进程信息,实际环境应避免。
13.4 SQL 操作示例
SHOW DATABASES;
USE <数据库名>;
SHOW TABLES;
SHOW COLUMNS FROM <表名>;
SELECT * FROM <表名>;
SELECT * FROM <表名> WHERE <列名> = '<字符串>';
SELECT VERSION();
先列数据库和表,再只查询必要字段,避免无目的地导出全部业务数据。
14. MSSQL
14.1 场景与组成
MSSQL 常见于 Windows 与 .NET 环境,默认 TCP 1433。系统数据库包括 master、model、msdb、tempdb 和 resource。图形客户端可使用 SSMS,Linux 端可使用 Impacket 的 mssqlclient.py。

14.2 首次定位工具和服务枚举
locate mssqlclient
sudo nmap -sV -p1433 --script 'ms-sql-*' <目标IP>
Nmap 的 MS SQL 脚本可查询实例信息、配置和认证表现。课程还使用 Metasploit:
use auxiliary/scanner/mssql/mssql_ping
set RHOSTS <目标IP>
run
14.3 Windows 身份验证连接示例
python3 mssqlclient.py Administrator@<目标IP> -windows-auth
SELECT name FROM sys.databases;
前置条件是可达的 SQL 服务和有效 Windows/SQL 凭据。先确认认证类型,再选择连接参数。

15. Oracle TNS
15.1 协议和配置
Oracle TNS 常监听 TCP 1521。客户端/监听器配置常位于:
$ORACLE_HOME/network/admin/tnsnames.ora
$ORACLE_HOME/network/admin/listener.ora
枚举前需要确认监听器、SID/服务名、凭据和账号角色。
15.2 ODAT 与 SID 枚举
章节使用 ODAT 对 Oracle 服务进行集中检查:
./odat.py -h
sudo nmap -p1521 -sV <目标IP> --open
sudo nmap -p1521 -sV <目标IP> --open --script oracle-sid-brute
./odat.py all -s <目标IP>
oracle-sid-brute 用来识别 SID,ODAT 将多个 Oracle 检查组合执行。自动化结果仍需用 SQL 客户端验证。
15.3 SQL*Plus 首次配置与连接
sudo apt install oracle-instantclient-sqlplus
sudo sh -c 'echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf'
sudo ldconfig
sqlplus -v
sqlplus scott/tiger@<目标IP>/XE
sqlplus scott/tiger@<目标IP>/XE as sysdba
SELECT table_name FROM all_tables;
SELECT * FROM user_role_privs;
SELECT name, password FROM sys.user$;
as sysdba 需要相应高权限,不能因普通登录成功就假定可用。
15.4 授权环境中的文件写入验证
./odat.py utlfile -s <目标IP> -d XE -U scott -P tiger --sysdba \
--putFile C:\inetpub\wwwroot testing.txt ./testing.txt
curl -X GET http://<目标IP>/testing.txt
该示例用于验证数据库文件写入权限与 Web 路径关系,会改变目标文件系统,只能在授权实验中使用并及时清理。
16. IPMI
16.1 使用场景
IPMI 通过 BMC 在操作系统之外管理硬件,常使用 UDP 623。常见产品包括 HP iLO、Dell DRAC 和 Supermicro BMC。由于它能控制电源、控制台和硬件配置,暴露或默认凭据的影响很大。
16.2 服务识别
sudo nmap -sU --script ipmi-version -p623 <目标IP>
Metasploit 示例:
use auxiliary/scanner/ipmi/ipmi_version
set RHOSTS <目标IP>
run
16.3 IPMI 2.0 RAKP 风险验证
use auxiliary/scanner/ipmi/ipmi_dumphashes
set RHOSTS <目标IP>
run
IPMI 2.0 的 RAKP 过程可能向未认证客户端提供可离线验证的密码哈希。输出还可能暴露用户名或默认凭据;这类操作必须限定在获授权设备上。
17. Linux 远程管理协议
17.1 SSH
SSH 默认使用 TCP 22,在不可信网络上提供加密终端、命令执行、文件传输和端口转发。连接前至少需要:可达的 SSH 服务、用户名,以及密码或对应私钥。应优先使用 SSH-2。
OpenSSH 支持密码、公钥、基于主机、键盘交互、挑战响应和 GSSAPI 等认证方式。公钥认证的关键关系是:私钥只保存在客户端并由口令保护,服务器保存公钥;首次连接还必须正确核验服务器主机密钥。
配置检查:
cat /etc/ssh/sshd_config | grep -v '#' | sed -r '/^\s*$/d'
高风险设置包括:PasswordAuthentication yes、PermitEmptyPasswords yes、PermitRootLogin yes、Protocol 1、X11Forwarding yes、AllowTcpForwarding yes、PermitTunnel 和会暴露系统信息的 Banner。
17.2 SSH 指纹与认证方式判断
git clone https://github.com/jtesta/ssh-audit.git
cd ssh-audit
./ssh-audit.py <目标IP>
结果用于判断 banner、软件版本、密钥交换、主机密钥、加密与 MAC 算法。
ssh -v user@<目标IP>
ssh -v user@<目标IP> -o PreferredAuthentications=password
-v 输出中的 Authentications that can continue 可确认服务器允许哪些认证方式;第二条显式优先尝试密码认证。实际登录仍需要有效密码或私钥。
17.3 Rsync
Rsync 常用 TCP 873,可在本地或网络间同步文件。开放模块如果未正确认证,可能暴露目录和密钥。
sudo nmap -sV -p873 <目标IP>
nc -nv <目标IP> 873
连接后发送 #list 可观察服务器是否公开模块。原生客户端列举示例:
rsync -av --list-only rsync://<目标IP>/<模块名>
重点查看备份、配置、secrets.yaml、.ssh 等目录,但下载或同步前仍需确认权限。
17.4 R-Services
传统 R-Services 常见端口:512(rexec)、513(rlogin/rwho)、514(rsh)。它们依赖主机信任关系,安全性弱,现代环境中已少见。
cat /etc/hosts.equiv
sudo nmap -sV -p512,513,514 <目标IP>
cat ~/.rhosts
.rhosts 或 /etc/hosts.equiv 中的 + + 等宽泛规则可能让未预期主机/用户获得信任。
rlogin <目标IP> -l <用户名>
rwho
rusers -al <目标IP>
rwho 和 rusers 可显示已登录用户、主机、TTY、时间和空闲时长,为后续用户名枚举提供线索。
18. Windows 远程管理协议
18.1 RDP
RDP 通常使用 TCP/UDP 3389,提供 Windows 图形远程控制。连接需要端口及防火墙放行;跨 NAT 时还需要正确的地址与端口转发;实际登录需要有效账号。服务器常要求网络级身份验证(NLA)。
nmap -sV -sC <目标IP> -p3389 --script 'rdp*'
nmap -sV -sC <目标IP> -p3389 --packet-trace --disable-arp-ping -n
可识别 NLA、加密层、主机名、域名、产品版本和系统时间。
RDP Security Check 首次配置
sudo cpan
# 在 CPAN shell 中:
install Encoding::BER
git clone https://github.com/CiscoCXSecurity/rdp-sec-check.git
cd rdp-sec-check
./rdp-sec-check.pl <目标IP>
它用于验证服务器支持的 RDP、TLS、CredSSP/NLA 与加密层。
建立会话
xfreerdp /u:<用户名> /p:'<密码>' /v:<目标IP>
18.2 WinRM
WinRM 实现 WS-Management,默认常见端口为 TCP 5985(HTTP)和 5986(HTTPS)。需要服务已启用、防火墙放行,以及具备远程管理权限的有效凭据。
nmap -sV -sC <目标IP> -p5985,5986 --disable-arp-ping -n
evil-winrm -i <目标IP> -u <用户名> -p '<密码>'
Nmap 先确认端口与 Microsoft HTTPAPI,Evil-WinRM 再用于获授权登录验证。
18.3 WMI
WMI 能读取和修改大量 Windows 管理信息。初始化通常使用 TCP 135,连接建立后转到动态端口;调用常依赖 SMB/RPC 与有效管理员权限。
/usr/share/doc/python3-impacket/examples/wmiexec.py \
'<用户名>:<密码>@<目标IP>' 'hostname'
若返回目标主机名,说明认证和远程 WMI 命令执行链路有效。课程强调应在自己的 Windows Server 实验机上反复修改配置并比较扫描结果。
19. 综合实验:Easy
场景与约束
目标是内部 DNS 服务器。任务要求尽可能收集信息,并找到可用于访问服务器的线索;生产服务禁止使用漏洞进行激进攻击。题目另给出一组已知凭据,并提示员工讨论过 SSH 密钥。
建议工作流(不含答案)
- 扫描并确认 DNS、SSH 及其他服务。
- 对 DNS 进行 SOA、NS、ANY、AXFR 和子域名枚举。
- 把发现的主机名、用户名和共享路径加入线索表。
- 仅用题目提供的凭据验证其适用服务,不做无界暴力尝试。
- 根据“SSH 密钥”提示检查获授权可访问的文件服务或目录。
- 获得合法会话后定位题目要求的证明文件。
20. 综合实验:Medium
场景与约束
目标服务器可被内网所有用户访问,因此是高价值入口。任务是完整枚举服务器,并取得专为验证创建的 HTB 用户凭据。
建议工作流(不含答案)
- 完整识别开放端口和协议版本。
- 对每个服务优先尝试匿名、Guest、Null Session 或公开模块枚举。
- 比较 SMB、NFS、FTP、Rsync、数据库等文件与账号信息。
- 将配置文件、备份和用户名线索互相关联,而不是立即猜密码。
- 找到凭据后,用对应协议的原生客户端进行最小化验证。
21. 综合实验:Hard
场景与约束
第三台服务器同时承担内部网络的 MX、管理和域账号备份功能。任务仍是获取 HTB 用户凭据,但服务关系更复杂。
建议工作流(不含答案)
- 由 MX 角色切入,确认 SMTP、IMAP/POP3、DNS 与主机名关系。
- 识别管理协议,如 SSH、RDP、WinRM 或 WMI,并记录认证条件。
- 查找备份服务、共享目录或数据库暴露的账号资料。
- 用邮件地址和系统用户名规律建立候选身份映射。
- 对发现的凭据只做定向验证,避免高噪声或破坏性操作。
22. 端口与首选枚举命令速查
服务 常见端口 首选起手式 FTP TCP 21 nmap -sV -sC -p21 、ftp SMB TCP 139/445 smbclient -N -L // NFS/RPC TCP/UDP 2049、111 showmount -e 、Nmap nfs* DNS TCP/UDP 53 dig soa、dig axfr、dnsenum SMTP TCP 25/587/465 nmap -sV -sC -p25 、telnet POP3 TCP 110/995 Nmap、openssl s_client IMAP TCP 143/993 Nmap、curl imaps://、OpenSSL SNMP UDP 161/162 snmpwalk、onesixtyone MySQL TCP 3306 Nmap mysql*、mysql 客户端 MSSQL TCP 1433 Nmap ms-sql-*、mssqlclient.py Oracle TNS TCP 1521 oracle-sid-brute、ODAT、SQL*Plus IPMI UDP 623 Nmap ipmi-version SSH TCP 22 ssh -v、ssh-audit.py Rsync TCP 873 rsync --list-only R-Services TCP 512–514 Nmap、rlogin、rwho/rusers RDP TCP/UDP 3389 Nmap rdp*、rdp-sec-check WinRM TCP 5985/5986 Nmap、evil-winrm WMI TCP 135 + 动态端口 wmiexec.py
23. 实战记录模板
对每个主机使用同一格式,能避免线索散落:
### <IP / 主机名>
- 资产来源:DNS / 证书 / 扫描 / 员工信息
- 开放端口:
- 服务与版本:
- 认证条件:匿名 / Guest / 用户密码 / 密钥 / 社区字符串
- 配置线索:
- 可访问内容:
- 账号与凭据线索:
- 已验证结论:
- 尚未验证的假设:
- 下一步:
24. 本章关键注意事项
- 不把单一工具输出当作事实;关键发现至少交叉验证一次。
- 区分“服务存在”“允许连接”“认证成功”“拥有足够权限”四个层次。
- 记录所有主机名、域、用户名、共享名、SID、证书和软件版本,它们会在后续枚举中复用。
- 对生产环境避免暴力、开放中继测试、批量邮件、文件写入和破坏性数据库语句。
- 公开云资源、第三方邮件或 CDN 不一定在授权范围内。
- 使用 -k、明文密码参数、旧协议或默认凭据只适合受控实验;不能当作日常安全配置。
- 完成验证后卸载临时挂载、删除测试文件,并保留命令与证据记录。
