空想网安の乌托邦
首页小说读书项目归档照片墙音乐说说杂谈关于
封面

HTB Academy:Footprinting(足迹收集)

写作时间:2026-09-20 12:23:20
# 网安
# HTB Academy

模块:Footprinting(共 21 小节)
整理原则:以“目标—前置条件—操作—结果判断—风险点”为主线重新归纳,不照搬原文。命令中的域名、IP、用户名和密码均为课程示例,只能在获授权环境中使用。

1. 本章要解决什么问题

Footprinting 的核心不是立刻寻找漏洞,而是尽可能准确地回答:目标有哪些资产、暴露了哪些服务、服务如何配置、哪些信息能够互相印证,以及下一步应把精力放在哪里。

一次有效的枚举通常形成如下闭环:

  1. 从公开信息或端口扫描获得线索。
  2. 判断服务、版本、协议和访问条件。
  3. 使用协议原生客户端或专用工具进一步查询。
  4. 比较多种工具的结果,手工验证关键发现。
  5. 把新发现的域名、主机名、账号、共享和凭据重新投入下一轮枚举。

​

 

‍六层枚举方法

​

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​ 和区域统计信息暴露。

​

 

‍DNS 枚举关系图

​

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​。

​

 

‍SSMS 管理界面

​

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 凭据。先确认认证类型,再选择连接参数。

​

 

‍MSSQL 认证方式

​

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 密钥。

建议工作流(不含答案)

  1. 扫描并确认 DNS、SSH 及其他服务。
  2. 对 DNS 进行 SOA、NS、ANY、AXFR 和子域名枚举。
  3. 把发现的主机名、用户名和共享路径加入线索表。
  4. 仅用题目提供的凭据验证其适用服务,不做无界暴力尝试。
  5. 根据“SSH 密钥”提示检查获授权可访问的文件服务或目录。
  6. 获得合法会话后定位题目要求的证明文件。

20. 综合实验:Medium

场景与约束

目标服务器可被内网所有用户访问,因此是高价值入口。任务是完整枚举服务器,并取得专为验证创建的 ​HTB​ 用户凭据。

建议工作流(不含答案)

  1. 完整识别开放端口和协议版本。
  2. 对每个服务优先尝试匿名、Guest、Null Session 或公开模块枚举。
  3. 比较 SMB、NFS、FTP、Rsync、数据库等文件与账号信息。
  4. 将配置文件、备份和用户名线索互相关联,而不是立即猜密码。
  5. 找到凭据后,用对应协议的原生客户端进行最小化验证。

21. 综合实验:Hard

场景与约束

第三台服务器同时承担内部网络的 MX、管理和域账号备份功能。任务仍是获取 ​HTB​ 用户凭据,但服务关系更复杂。

建议工作流(不含答案)

  1. 由 MX 角色切入,确认 SMTP、IMAP/POP3、DNS 与主机名关系。
  2. 识别管理协议,如 SSH、RDP、WinRM 或 WMI,并记录认证条件。
  3. 查找备份服务、共享目录或数据库暴露的账号资料。
  4. 用邮件地址和系统用户名规律建立候选身份映射。
  5. 对发现的凭据只做定向验证,避免高噪声或破坏性操作。

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​、明文密码参数、旧协议或默认凭据只适合受控实验;不能当作日常安全配置。
  • 完成验证后卸载临时挂载、删除测试文件,并保留命令与证据记录。

‍

avatar

Zybaxy918039

书本,学术,网安之间反复横跳的业余爱好者,目前在自学计算机网络和AI相关知识

RECOMMENDED

HTB Academy:使用 Nmap 进行网络枚举

2026-09-19 22:17:09

HTB Academy:信息收集-网络版(Web Reconnaissance)学习笔记

2026-09-19 22:22:34

HTB Academy:文件传输(File Transfers)

2026-09-20 12:30:29

Table of Contents