公开文集
0x01 SRC 资产管理系统
0x02 Web 漏洞案例库
0x03 小程序漏洞案例库
第一章:小程序渗透基础
1.1 微信小程序反编译与动态调试
1.2 微信小程序强制开启开发者模式
0x99 信息安全学习体系
01-网络安全基础
Day-001-TCP-IP协议栈安全分析
Day-002-DNS协议安全与DNS劫持攻防
Day-003-IPv6 安全基础与过渡
Day-004-HTTP-HTTPS协议深度解析
Day-005-网络嗅探与流量分析技术
Day-006-防火墙原理与配置实践
Day-007-网络地址转换 NAT 安全分析
Day-008-路由协议安全 RIP-OSPF-BGP
Day-009-VLAN 安全与 VLAN-Hopping
Day-010-无线网络基础与安全 802.11
Day-011-网络访问控制 802.1X-NAC
Day-012-网络分段与微隔离设计
Day-013-负载均衡器安全配置
Day-014-CDN安全与防护
Day-015-NTP安全
Day-016-DHCP安全与攻击防护
Day-017-ICMP协议安全分析
Day-018-网络协议模糊测试基础
Day-019-网络流量基线建立
Day-020-网络取证基础
Day-021-网络入侵检测系统 NIDS
Day-022-网络入侵防御系统 NIPS
Day-023-网络流量加密与解密
Day-024-网络协议逆向工程基础
Day-025-网络性能与安全权衡
Day-026-SDN 安全
Day-027-网络虚拟化安全
Day-028-网络欺骗技术
Day-029-网络威胁情报应用
Day-030-网络容量规划与安全
Day-031-网络安全架构设计实战
02-Web 安全
Day-032-OWASP-Top-10-2021详解
Day-033-SQL 注入原理与手工检测
Day-034-SQL注入进阶报错注入与盲注
Day-035-XSS跨站脚本攻击基础
Day-036-XSS 进阶绕过与利用
Day-037-XSS进阶绕过与利用
Day-038-CSRF 跨站请求伪造
Day-039-文件上传漏洞
Day-040-反序列化漏洞基础
Day-041-PHP反序列化深入
Day-042-Java反序列化深入
Day-043-SSTI 服务端模板注入
Day-044-文件包含漏洞 LFI-RFI
Day-045-命令注入漏洞
Day-046-XXE-XML 外部实体注入
Day-047-反序列化漏洞进阶
Day-048-API 安全基础
Day-049-API认证与授权安全
Day-050-API漏洞挖掘实战
Day-051-文件上传漏洞进阶
Day-052-反序列化漏洞实战
Day-053-Web 安全综合实战
Day-054-移动安全基础
Day-055-Android 应用安全测试
Day-056-iOS 应用安全测试
Day-057-移动应用综合实战
Day-058-云安全基础
Day-059-AWS 安全实战
Day-060-Azure 安全实战
Day-061-GCP 安全实战
Day-062-云安全综合实战
Day-063-容器安全基础
Day-064-Docker 安全实战
Day-065-Kubernetes 安全实战
Day-066-容器安全综合实战
Day-067-API 安全进阶
Day-068-服务端请求伪造 SSRF 深入
Day-069-文件上传漏洞进阶
Day-070-反序列化漏洞实战进阶
Day-071-业务逻辑漏洞深入
Day-072-前端安全深入
Day-073-Web 安全综合实战
Day-074-云安全进阶
Day-075-移动安全进阶
Day-076-API 安全进阶
Day-077-前端安全进阶
Day-078-业务逻辑漏洞进阶
Day-079-反序列化漏洞实战进阶
Day-080-文件上传漏洞实战进阶
Day-081-SSTI 服务端模板注入进阶
Day-082-XXE-XML 外部实体注入进阶
Day-083-SSRF 服务端请求伪造进阶
Day-084-命令注入漏洞进阶
Day-085-文件包含漏洞进阶
Day-086-反序列化漏洞实战进阶
Day-087-文件上传漏洞实战进阶
Day-088-SSTI 服务端模板注入实战进阶
Day-089-XXE-XML 外部实体注入实战进阶
Day-090-SSRF 服务端请求伪造实战进阶
Day-091-命令注入漏洞实战进阶
Day-092-Web 安全综合实战
Day-093-GraphQL 安全
Day-094-JWT 与 OAuth2 安全
03-系统安全
Day-095-系统监控与检测
Day-096-主机防火墙配置
Day-097-系统审计与合规
Day-098-Linux 系统安全进阶
Day-099-Windows 系统安全进阶
Day-100-容器安全进阶
Day-101-容器编排安全进阶
Day-102-Linux 内核安全
Day-103-Windows 内核安全
Day-104-系统安全总结与实战
Day-105-Linux 系统安全基础
Day-106-Windows 系统安全基础
Day-107-容器安全基础
Day-108-系统加固技术
Day-109-日志分析技术
Day-110-威胁狩猎技术
04-应用安全
Day-111-安全编码规范
Day-112-输入验证技术
Day-113-输出编码技术
Day-114-错误处理安全
Day-115-会话管理安全
Day-116-认证安全
Day-117-授权安全
Day-118-数据保护安全
Day-119-日志安全
Day-120-API 安全
Day-121-微服务安全
Day-122-新兴技术安全概论
Day-123-DevSecOps 流水线安全
Day-124-云原生安全架构
Day-125-API 安全最佳实践
Day-126-安全编码规范
Day-127-SDL 安全开发生命周期
Day-128-威胁建模实战
Day-129-安全需求分析
Day-130-安全架构设计
Day-131-安全编码实践Java
Day-132-安全编码实践Python
Day-133-代码审计方法论
Day-134-静态代码分析SAST
Day-135-动态应用测试DAST
Day-136-交互式测试IAST
Day-137-软件成分分析SCA
Day-138-依赖漏洞管理
Day-139-安全测试自动化
Day-140-漏洞管理与响应
Day-141-应用安全总结与展望
Day-142-OWASP-Top10-2024 详解
Day-143-CWE-Top25 分析
Day-144-漏洞挖掘方法论
Day-145-模糊测试技术
Day-146-逆向工程基础
Day-147-漏洞利用开发基础
Day-148-漏洞复现与验证
Day-149-漏洞披露流程
Day-150-CVE 申请与管理
Day-151-漏洞赏金计划
Day-152-等保2.0详解
Day-153-GDPR 合规实践
Day-154-数据安全法解读
Day-155-个人信息保护法与合规指南
Day-156-个人信息保护法解读
Day-157-ISO-27001 信息安全管理体系
Day-158-SOC-2 合规与审计
Day-159-PCI-DSS 支付卡行业数据安全标准
Day-160-网络安全审查办法解读
Day-161-数据出境安全评估办法
Day-162-应用安全评估实战
Day-163-红蓝对抗演练
Day-164-安全应急响应
Day-165-安全运营中心建设
Day-166-应用安全总结与展望
05-密码学
Day-167-密码学基础
Day-168-对称加密算法详解
Day-169-非对称加密算法详解
Day-170-哈希函数与数字签名
Day-171-密钥管理与PKI
Day-172-TLS-SSL 协议详解
Day-173-国密算法详解
Day-174-认证与密钥协议
Day-175-随机数生成与熵源
Day-176-椭圆曲线密码学详解
Day-177-后量子密码学详解
Day-178-高级密码学主题
Day-179-密码学行业应用精选
Day-180-常用加密算法原理与实现
Day-181-密码学总结与展望
Day-182-密码学系列总结与展望
06-渗透测试
Day-183-渗透测试方法论
Day-184-信息收集技术详解
Day-185-漏洞扫描技术详解
Day-186-漏洞利用技术详解
Day-187-渗透测试中的漏洞利用框架
Day-188-漏洞利用框架与 Metasploit 深入
Day-189-渗透测试中的 WAF 绕过技术
Day-190-渗透测试中的模糊测试技术
Day-191-渗透测试中的代码审计与静态分析
Day-192-渗透测试中的密码哈希破解技术
Day-193-渗透测试报告编写指南
Day-194-Web 应用渗透测试
Day-195-渗透测试中的 API 安全测试
Day-196-渗透测试中的 GraphQL 安全测试
Day-197-渗透测试中的前后端分离应用测试
Day-198-渗透测试中的小程序安全测试
Day-199-渗透测试中的浏览器安全测试
Day-200-OAuth-SSO安全测试
Day-201-渗透测试中的业务逻辑漏洞测试
Day-202-渗透测试中的厚客户端安全测试
Day-203-渗透测试综合实战演练
Day-204-内网渗透技术详解
Day-205-渗透测试中的内网信息收集进阶
Day-206-渗透测试中的域森林渗透技术
Day-207-渗透测试中的权限维持技术
Day-208-渗透测试中的横向移动技术
Day-209-渗透测试中的痕迹清理与反取证技术
Day-210-渗透测试中的数据窃取与 Exfiltration 技术
Day-211-渗透测试中的内部威胁与数据泄露测试
Day-212-渗透测试中的物理安全渗透
Day-213-社会工程学攻击技术
Day-214-移动应用渗透测试
Day-215-云安全渗透测试
Day-216-渗透测试中的容器与 Kubernetes 安全渗透
Day-217-渗透测试中的 Serverless 安全测试
Day-218-渗透测试中的微服务安全测试
Day-219-物联网安全渗透测试
Day-220-工业控制系统安全渗透测试
Day-221-无线网络安全渗透测试
Day-222-数据库安全渗透测试
Day-223-渗透测试中的供应链安全测试
Day-224-红队演练技术详解
Day-225-渗透测试中的红队基础设施搭建
Day-226-渗透测试中的威胁情报与狩猎
Day-227-渗透测试中的综合指纹识别技术
Day-228-自动化渗透测试技术
Day-229-渗透测试中的运维安全测试
Day-230-渗透测试中的区块链与智能合约安全测试
Day-231-渗透测试中的漏洞管理与修复验证
Day-232-渗透测试法律与合规
Day-233-后渗透攻击技术详解
Day-234-渗透测试中的人工智能应用
Day-235-漏洞利用开发深入
Day-236-云原生渗透测试深入
07-应急响应
Day-237-应急响应概述与核心概念
Day-238-应急响应流程框架
Day-239-CSIRT 团队组建与职责分工
Day-240-应急响应工具包准备
Day-241-应急响应法律与合规要求
Day-242-安全事件检测方法与指标
Day-243-云原生应急响应
Day-244-日志收集与分析技术
Day-245-网络流量分析与异常识别
Day-246-自动化响应与 SOAR
Day-247-端点监控与 EDR 技术
Day-248-威胁狩猎方法论
Day-249-威胁情报在检测中的应用
Day-250-数字取证基础与证据链管理
Day-251-内存取证技术
Day-252-磁盘取证与文件恢复
Day-253-网络取证与数据包分析
Day-254-云环境与容器取证
Day-255-恶意代码静态分析技术
Day-256-恶意代码动态分析技术
Day-257-恶意代码行为分析方法
Day-258-逆向工程基础与工具
Day-259-沙箱技术与自动化分析
Day-260-事件隔离与遏制策略
Day-261-威胁根除与系统修复
Day-262-系统恢复与数据重建
Day-263-业务连续性计划
Day-264-事件复盘与经验总结
Day-265-APT 攻击事件复盘分析
Day-266-勒索软件事件响应实战
Day-267-数据泄露事件处置流程
Day-268-内部威胁调查与取证
Day-269-综合应急响应演练
08-安全运维
Day-270-安全运营中心 SOC 概述
Day-271-安全监控指标体系
Day-272-安全告警管理
Day-273-安全可视化与仪表盘
Day-274-监控工具选型
Day-275-日志采集技术
Day-276-日志标准化与解析
Day-277-日志存储与归档
Day-278-日志分析技术
Day-279-日志合规要求
Day-280-SIEM 架构与设计
Day-281-关联规则引擎
Day-282-高级关联分析
Day-283-UEBA 用户实体行为分析
Day-284-威胁狩猎
Day-285-SOAR 基础概念
Day-286-剧本设计
Day-287-自动化响应技术
Day-288-安全工具集成
Day-289-SOAR 度量与优化
Day-290-安全基线管理
Day-291-漏洞管理流程
Day-292-补丁管理策略
Day-293-变更安全管理
Day-294-合规审计技术
Day-295-7x24 安全运营
Day-296-安全事件管理流程
Day-297-安全运营度量体系
Day-298-持续改进机制
Day-299-安全运维综合演练
Day-300-云原生安全运营
Day-301-AI 与机器学习安全运营
Day-302-安全自动化脚本实战
09-移动安全
Day-303-移动安全威胁概述
Day-304-移动设备安全架构
Day-305-移动操作系统安全模型
Day-306-移动应用权限管理
Day-307-移动端数据加密
Day-308-330-Android 安全合集
Day-309-Android 安全架构
Day-310-Android 组件安全
Day-311-Android 权限与隐私
Day-312-Android 逆向工程
Day-313-Android 应用加固
Day-314-iOS 安全架构
Day-315-iOS 应用沙盒机制
Day-316-越狱与反越狱
Day-317-iOS 逆向工程
Day-318-iOS 企业分发安全
Day-319-移动安全开发生命周期
Day-320-移动应用安全测试
Day-321-移动应用加固技术
Day-322-移动威胁防护
Day-323-移动安全合规
10-云安全
Day-324-云计算安全模型
Day-325-责任共担模型
Day-326-云安全威胁模型
Day-327-云安全合规框架
Day-328-云安全架构设计
Day-329-AWS IAM 安全
Day-330-AWS 网络安全
Day-331-AWS 存储安全
Day-332-AWS 安全监控
Day-333-AWS 安全最佳实践
Day-334-Azure AD 安全
Day-335-Azure 网络安全
Day-336-Azure 存储安全
Day-337-Azure 安全中心
Day-338-Azure 安全最佳实践
Day-339-容器安全基础
Day-340-Kubernetes 安全
Day-341-Serverless 安全
Day-342-云原生 DevSecOps
Day-343-云安全态势管理 CSPM
11-物联网工控
Day-344-物联网安全概述
Day-345-IoT 通信协议安全
Day-346-IoT 设备安全
Day-347-IoT 平台安全
Day-348-IoT 应用安全
Day-349-工业控制系统概述
Day-350-工控协议安全
Day-351-PLC 安全
Day-352-SCADA 系统安全
Day-353-工控安全防护
12-综合与总结
Day-354-安全职业发展路径
Day-355-安全技术趋势展望
Day-356-安全建设方法论
Day-357-经典攻防案例复盘
Day-358-安全学习资源指南
Day-359-信息安全行业求职指南
-
+
首页
Day-205-渗透测试中的内网信息收集进阶
# Day 234: 渗透测试中的内网信息收集进阶 > 渗透测试系列第 24 天 | 预计阅读时间:35 分钟 | 难度:★★★★★ --- ## 清单 目录 1. [内网信息收集概述](#内网信息收集概述) 2. [网络拓扑发现](#网络拓扑发现) 3. [主机存活检测](#主机存活检测) 4. [端口与服务扫描](#端口与服务扫描) 5. [Windows 内网侦察](#windows-内网侦察) 6. [Active Directory 侦察](#active-directory-侦察) 7. [Linux 内网侦察](#linux-内网侦察) 8. [云环境内网侦察](#云环境内网侦察) 9. [被动信息收集](#被动信息收集) 10. [信息收集自动化](#信息收集自动化) 11. [检测与防御](#检测与防御) 12. [实战案例](#实战案例) 13. [总结与思考](#总结与思考) 14. [参考资料](#参考资料) --- ## 内网信息收集概述 ### 什么是内网信息收集 内网信息收集(Internal Network Reconnaissance)是渗透测试中获得初始访问权限后的关键阶段,指攻击者在进入内网后,系统地收集网络拓扑、主机信息、服务配置、用户账户等各类情报,为后续横向移动和权限提升做准备的过程。 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 攻击链中的内网信息收集 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 初始访问 → 内网信息收集 → 权限提升 → 权限维持 → 横向移动 │ │ ↑ │ │ 本阶段重点 │ │ │ │ 信息收集目标: │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 网络拓扑 │ │ 主机信息 │ │ 服务配置 │ │ 用户账户 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ ↓ ↓ ↓ ↓ │ │ 网段划分、 操作系统、 开放端口、 域用户、 │ │ 防火墙位置 补丁级别 运行服务 权限组 │ │ │ │ 后续利用: │ │ - 识别高价值目标 (域控、数据库、文件服务器) │ │ - 发现薄弱点 (未打补丁系统、弱口令服务) │ │ - 规划攻击路径 (最优横向移动路线) │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### 为什么内网信息收集至关重要 在真实的渗透测试场景中,我观察到内网信息收集的重要性体现在以下几个方面: 1. **避免盲目攻击**: 了解目标环境,避免随机扫描触发告警 2. **识别高价值目标**: 快速定位域控、数据库、核心业务系统 3. **发现攻击路径**: 基于网络拓扑和信任关系规划最优路径 4. **评估防御能力**: 了解安全设备部署和配置情况 5. **减少检测风险**: 有针对性的扫描比大规模扫描更隐蔽 ### 信息收集的核心原则 | 原则 | 说明 | 重要性 | |------|------|--------| | **隐蔽性** | 低速扫描、避免触发 IDS/IPS | ★★★★★ | | **系统性** | 按层次、有顺序地收集信息 | ★★★★☆ | | **完整性** | 不遗漏关键信息源 | ★★★★☆ | | **准确性** | 验证收集的信息,避免误判 | ★★★★☆ | | **可追溯性** | 记录所有发现,便于后续利用 | ★★★★★ | ### 信息收集层次 ``` 内网信息收集层次模型 ├── 网络层 │ ├── 网段划分 │ ├── 路由拓扑 │ ├── 防火墙位置 │ └── VLAN 配置 ├── 主机层 │ ├── 存活主机 │ ├── 操作系统 │ ├── 补丁级别 │ └── 安全软件 ├── 服务层 │ ├── 开放端口 │ ├── 运行服务 │ ├── 服务版本 │ └── 配置信息 ├── 应用层 │ ├── Web 应用 │ ├── 数据库 │ ├── 中间件 │ └── API 接口 └── 身份层 ├── 域信息 ├── 用户账户 ├── 权限组 └── 信任关系 ``` --- ## 网络拓扑发现 ### 1. 本地网络信息 #### Windows 本地网络信息 ```powershell # 查看 IP 配置 ipconfig /all # 查看路由表 route print Get-NetRoute | Select-Object DestinationPrefix, NextHop, InterfaceAlias # 查看 ARP 缓存 arp -a # 查看 DNS 配置 Get-DnsClientServerAddress | Select-Object InterfaceAlias, ServerAddresses # 查看网络接口 Get-NetIPConfiguration | Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGateway # 查看网络发现 Get-NetConnectionProfile | Select-Object Name, NetworkCategory, IPv4Connectivity ``` #### Linux 本地网络信息 ```bash # 查看 IP 配置 ip addr show ifconfig -a # 查看路由表 ip route show route -n # 查看 ARP 缓存 ip neigh show arp -a # 查看 DNS 配置 cat /etc/resolv.conf systemd-resolve --status # 查看网络接口 ip link show # 查看网络连接 ss -antp netstat -antp ``` ### 2. 网段发现 #### 识别内网网段 ```powershell # PowerShell: 从路由表提取内网网段 $routes = Get-NetRoute | Where-Object { $_.DestinationPrefix -like "10.*" -or $_.DestinationPrefix -like "172.16.*" -or $_.DestinationPrefix -like "172.17.*" -or $_.DestinationPrefix -like "172.31.*" -or $_.DestinationPrefix -like "192.168.*" } $routes | Select-Object DestinationPrefix, NextHop # 从 IP 配置推断相邻网段 $ip = (Get-NetIPConfiguration).IPv4Address.IPAddress $subnet = $ip -replace '\.\d+$', '.' Write-Host "推测相邻网段:${subnet}0/24" ``` ```bash # Linux: 识别内网网段 # 从 IP 地址推断 ip addr show | grep "inet " | grep -v "127.0.0.1" # 从路由表提取 ip route show | grep -E "^(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.)" # 常见内网网段扫描 for subnet in 10.0.0 10.1.0 192.168.1 192.168.0; do echo "Scanning ${subnet}.0/24" done ``` ### 3. 网络拓扑测绘 #### 使用 traceroute/tracert ```powershell # Windows: 路由追踪 tracert -d 8.8.8.8 # 不解析主机名 tracert -h 30 8.8.8.8 # 最大跳数 30 # 追踪内网目标 tracert -d 192.168.1.1 ``` ```bash # Linux: 路由追踪 traceroute -n 8.8.8.8 # 不解析主机名 traceroute -m 30 8.8.8.8 # 最大跳数 30 # 使用 mtr (结合 ping 和 traceroute) mtr -n -c 10 8.8.8.8 ``` #### 使用 nmap 进行网络测绘 ```bash # nmap 网络发现 # Ping 扫描整个网段 nmap -sn 192.168.1.0/24 # 带端口扫描的网络发现 nmap -sS -sV 192.168.1.0/24 # 操作系统检测 nmap -O 192.168.1.0/24 # 全面扫描 (耗时较长) nmap -A 192.168.1.0/24 # 输出格式 nmap -sn 192.168.1.0/24 -oG alive_hosts.txt # grepable 格式 nmap -sn 192.168.1.0/24 -oX alive_hosts.xml # XML 格式 nmap -sn 192.168.1.0/24 -oN alive_hosts.txt # 普通格式 ``` ### 4. 防火墙与安全设备检测 #### 防火墙位置推断 ```powershell # 通过 TTL 推断防火墙 # Windows 默认 TTL=128, Linux 默认 TTL=64 # 如果 TTL 异常,可能经过防火墙/NAT Test-Connection -ComputerName 192.168.1.1 -Count 1 | Select-Object ResponseTime, ResponseTimeToLive ``` ```bash # Linux: 防火墙检测 # 使用 nmap 检测防火墙规则 nmap -sS --script firewall-bypass 192.168.1.1 # 检测防火墙类型 nmap -sV --script firewall-info 192.168.1.1 # 常见防火墙端口 # - 8080, 8443: Web 管理界面 # - 443: HTTPS 管理 # - 22: SSH 管理 ``` #### 安全设备识别 ```bash # 常见安全设备特征 # IDS/IPS: Snort, Suricata # 防火墙:Palo Alto, Fortinet, Check Point # WAF: ModSecurity, AWS WAF # nmap 脚本检测 nmap --script http-waf-detect 192.168.1.1 nmap --script http-waf-fingerprint 192.168.1.1 ``` --- ## 主机存活检测 ### 1. ICMP Ping 扫描 #### PowerShell Ping 扫描 ```powershell # 基础 Ping 扫描 $subnet = "192.168.1" 1..254 | ForEach-Object { $ip = "$subnet.$_" if (Test-Connection -ComputerName $ip -Count 1 -Quiet -Timeout 100) { Write-Host "[+] $ip is alive" -ForegroundColor Green } } # 并行 Ping 扫描 (更快) $subnet = "192.168.1" $jobs = 1..254 | ForEach-Object { $ip = "$subnet.$_" Start-Job -ScriptBlock { param($ip) if (Test-Connection -ComputerName $ip -Count 1 -Quiet -Timeout 100) { return $ip } } -ArgumentList $ip } # 收集结果 $jobs | Wait-Job | Receive-Job | Where-Object { $_ } | ForEach-Object { Write-Host "[+] $_ is alive" -ForegroundColor Green } $jobs | Remove-Job ``` #### Linux Ping 扫描 ```bash #!/bin/bash # 基础 Ping 扫描 subnet="192.168.1" for i in {1..254}; do ip="$subnet.$i" if ping -c 1 -W 1 $ip > /dev/null 2>&1; then echo "[+] $ip is alive" fi done # 并行 Ping 扫描 (更快) subnet="192.168.1" for i in {1..254}; do ip="$subnet.$i" ping -c 1 -W 1 $ip > /dev/null 2>&1 & done wait # 使用 fping (更高效) fping -a -g 192.168.1.0/24 2>/dev/null ``` ### 2. TCP 端口扫描 #### 当 ICMP 被阻止时 ```powershell # PowerShell: TCP Connect 扫描 function Test-TcpPort { param($Target, $Port, $Timeout = 1000) $tcp = New-Object System.Net.Sockets.TcpClient $tcp.BeginConnect($Target, $Port, $null, $null) | Out-Null $tcp.Client.SetSocketOption([System.Net.Sockets.SocketOptionLevel]::Socket, [System.Net.Sockets.SocketOptionName]::SendTimeout, $Timeout) Start-Sleep -Milliseconds $Timeout if ($tcp.Connected) { $tcp.Close() return $true } return $false } # 扫描常见端口 $ports = @(22, 80, 443, 445, 3389, 5985, 8080) 1..254 | ForEach-Object { $ip = "192.168.1.$_" foreach ($port in $ports) { if (Test-TcpPort -Target $ip -Port $port) { Write-Host "[+] $ip:$port is open" -ForegroundColor Green } } } ``` ```bash # Linux: TCP 扫描 # 使用 nmap nmap -sS -p 22,80,443,445,3389,5985,8080 192.168.1.0/24 # 使用 masscan (超快) masscan -p22,80,443,445,3389,5985,8080 192.168.1.0/24 --rate 1000 # 使用 bash (慢但无需工具) for ip in 192.168.1.{1..254}; do (echo >/dev/tcp/$ip/22) 2>/dev/null && echo "$ip:22 open" & done wait ``` ### 3. ARP 扫描 #### 局域网 ARP 扫描 ```powershell # PowerShell: 读取 ARP 缓存 arp -a | Select-String "192.168.1" # 强制更新 ARP 缓存 1..254 | ForEach-Object { Test-Connection -ComputerName "192.168.1.$_" -Count 1 -Quiet | Out-Null } arp -a | Select-String "192.168.1" ``` ```bash # Linux: ARP 扫描 # 使用 arp-scan (需要安装) arp-scan --localnet # 使用 nmap ARP 扫描 nmap -PR -sn 192.168.1.0/24 # 查看 ARP 缓存 ip neigh show arp -a ``` ### 4. 隐蔽扫描技术 #### 低速扫描避免检测 ```bash # nmap 低速扫描 nmap -sS -T2 192.168.1.0/24 # 礼貌模式 nmap -sS -T1 192.168.1.0/24 # 慢速模式 # 随机化扫描顺序 nmap -sS --randomize-hosts 192.168.1.0/24 # 限制扫描速率 nmap -sS --max-rate 10 192.168.1.0/24 # 每秒最多 10 个包 # 分片扫描 nmap -sS -f 192.168.1.0/24 # 分片 nmap -sS --mtu 24 192.168.1.0/24 # 指定 MTU ``` #### 源端口欺骗 ```bash # 使用常见端口作为源端口 nmap -sS -g 80 192.168.1.0/24 # 源端口 80 nmap -sS -g 443 192.168.1.0/24 # 源端口 443 nmap -sS -g 53 192.168.1.0/24 # 源端口 53 (DNS) ``` --- ## 端口与服务扫描 ### 1. 全端口扫描 #### nmap 全端口扫描 ```bash # 扫描所有端口 (65535 个) nmap -p- 192.168.1.100 # 全端口 + 服务版本 nmap -p- -sV 192.168.1.100 # 全端口 + 操作系统 + 脚本 nmap -p- -A 192.168.1.100 # 分阶段扫描 (先快速扫描常见端口) nmap --top-ports 1000 192.168.1.0/24 -oG quick_scan.txt # 然后对发现的主机进行全端口扫描 ``` ### 2. 服务版本检测 #### 服务指纹识别 ```bash # nmap 服务版本检测 nmap -sV 192.168.1.100 # 更详细的版本检测 nmap -sV --version-intensity 5 192.168.1.100 # 特定端口版本检测 nmap -sV -p 80,443,8080 192.168.1.100 ``` #### 常见服务识别 | 端口 | 服务 | 风险等级 | |------|------|----------| | **21** | FTP | 高 (明文传输) | | **22** | SSH | 中 (需弱口令检测) | | **23** | Telnet | 高 (明文传输) | | **25** | SMTP | 中 | | **53** | DNS | 中 (可能区域传输) | | **80** | HTTP | 中 (Web 漏洞) | | **110** | POP3 | 高 (明文传输) | | **135** | RPC | 高 (Windows) | | **139/445** | SMB | 高 (永恒之蓝等) | | **389** | LDAP | 高 (信息泄露) | | **443** | HTTPS | 中 (SSL 漏洞) | | **1433** | MSSQL | 高 (数据库) | | **3306** | MySQL | 高 (数据库) | | **3389** | RDP | 高 (蓝屏等) | | **5432** | PostgreSQL | 高 (数据库) | | **5985/5986** | WinRM | 高 (远程执行) | | **6379** | Redis | 高 (未授权访问) | | **27017** | MongoDB | 高 (未授权访问) | ### 3. 漏洞扫描集成 #### nmap NSE 脚本 ```bash # 漏洞检测脚本 nmap --script vuln 192.168.1.100 # 特定漏洞检测 nmap --script smb-vuln-ms17-010 192.168.1.100 # 永恒之蓝 nmap --script http-shellshock 192.168.1.100 # Shellshock nmap --script ssl-heartbleed 192.168.1.100 # Heartbleed # 默认脚本扫描 nmap -sC 192.168.1.100 # 所有脚本扫描 (耗时) nmap --script=default,safe,discovery,vuln 192.168.1.100 ``` ### 4. Web 服务侦察 #### Web 指纹识别 ```bash # 使用 whatweb whatweb http://192.168.1.100 # 使用 whatpy whatweb http://192.168.1.100 -v # 使用 nmap nmap -sV --script http-enum,http-title 192.168.1.100 # 手动获取 curl -I http://192.168.1.100 curl http://192.168.1.100/robots.txt curl http://192.168.1.100/.git/config ``` #### 目录扫描 ```bash # 使用 gobuster gobuster dir -u http://192.168.1.100 -w /usr/share/wordlists/dirb/common.txt # 使用 dirb dirb http://192.168.1.100 # 使用 ffuf ffuf -w /usr/share/wordlists/dirb/common.txt -u http://192.168.1.100/FUZZ # 使用 nmap nmap --script http-enum 192.168.1.100 ``` --- ## Windows 内网侦察 ### 1. 本地信息收集 #### 系统信息 ```powershell # 系统信息 systeminfo Get-ComputerInfo | Select-Object CsName, OsName, OsVersion, OsArchitecture # 补丁信息 Get-HotFix | Select-Object HotFixID, Description, InstalledOn # 安装的软件 Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher Get-ItemProperty HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher # 运行的进程 Get-Process | Select-Object Name, Id, CPU, WorkingSet | Sort-Object CPU -Descending # 网络连接 Get-NetTCPConnection | Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess ``` #### 用户与组信息 ```powershell # 当前用户 whoami whoami /all $env:USERNAME $env:USERDOMAIN # 本地用户 Get-LocalUser | Select-Object Name, Enabled, LastLogon # 本地组 Get-LocalGroup | Select-Object Name, Description # 组成员 Get-LocalGroupMember Administrators | Select-Object Name, PrincipalSource Get-LocalGroupMember "Remote Desktop Users" | Select-Object Name ``` #### 共享与驱动器 ```powershell # 网络共享 Get-SmbShare | Select-Object Name, Path, Description net share # 映射的驱动器 Get-PSDrive -PSProvider FileSystem | Select-Object Name, Root, Used, Free # 可访问的远程共享 net view \\192.168.1.100 ``` ### 2. 域环境侦察 #### 域信息 ```powershell # 需要域环境或 RSAT 工具 # 加载 Active Directory 模块 Import-Module ActiveDirectory # 域信息 Get-ADDomain | Select-Object DomainMode, DNSRoot, NetBIOSName Get-ADForest | Select-Object ForestMode, Domains, Sites # 域控制器 Get-ADDomainController -Filter * | Select-Object Name, IPv4Address, OperatingSystem # 域用户 Get-ADUser -Filter * -Properties EmailAddress, Department, Title | Select-Object SamAccountName, EmailAddress, Department, Title | Export-Csv users.csv -NoTypeInformation # 域计算机 Get-ADComputer -Filter * -Properties OperatingSystem, IPv4Address | Select-Object Name, OperatingSystem, IPv4Address # 域组 Get-ADGroup -Filter * | Select-Object Name, GroupCategory, GroupScope # 高权限组 Get-ADGroupMember "Domain Admins" | Select-Object Name Get-ADGroupMember "Enterprise Admins" | Select-Object Name Get-ADGroupMember "Administrators" | Select-Object Name ``` #### 组策略信息 ```powershell # 组策略对象 Get-GPO -All | Select-Object DisplayName, Id, CreationTime # 组策略链接 Get-GPOReport -All -ReportType Html -Path "C:\temp\GPOReport.html" # 应用的组策略 gpresult /h report.html ``` ### 3. PowerView 侦察 #### PowerView 基础使用 ```powershell # 下载 PowerView # https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1 Import-Module .\PowerView.ps1 # 域信息 Get-NetDomain Get-NetForest # 域控制器 Get-NetDomainController # 用户信息 Get-NetUser Get-NetUser -AdminCount # 管理员账户 Get-NetUser -SPN # 有 SPN 的账户 (Kerberoastable) # 计算机信息 Get-NetComputer Get-NetComputer -OperatingSystem "*Server*" # 服务器 Get-NetComputer -Ping # 存活计算机 # 组信息 Get-NetGroup Get-NetGroupMember -GroupName "Domain Admins" # 会话信息 Get-NetSession -ComputerName "DC01" # 进程信息 Get-NetProcess -ComputerName "192.168.1.100" # 文件共享 Get-NetShare -ComputerName "192.168.1.100" Find-InterestingFile -ComputerName "192.168.1.100" -Path "\\192.168.1.100\*" ``` #### PowerView 高级查询 ```powershell # 查找管理员登录的计算机 Invoke-UserHunter -Verbose # 查找特定用户登录的计算机 Invoke-UserHunter -TargetUser "admin" -Verbose # 查找本地管理员 Invoke-LocalAdminHunter -Verbose # 查找未约束委派 Get-NetComputer -Unconstrained # 查找约束委派 Get-NetComputer -TrustedToAuth # GPO 分析 Get-NetGPO Get-NetGPOGroup # GPO 修改的组成员 ``` ### 4. BloodHound 数据收集 #### Sharphound 使用 ```powershell # 下载 Sharphound # https://github.com/BloodHoundAD/SharpHound # PowerShell 版本 Import-Module .\SharpHound.ps1 Invoke-BloodHound -CollectionMethod All -OutputDirectory C:\temp # 可执行文件版本 SharpHound.exe -c All SharpHound.exe -c Group,LocalAdmin,GPOLocalGroup,Session,LoggedOn,Trusts,ACL,Container,DCOM,SPNTargets,RDP,ObjectProps,PSRemote # 特定域 SharpHound.exe -d corp.local -c All # 输出 # 生成 JSON 文件,导入 BloodHound GUI 分析 ``` #### BloodHound 分析 ``` BloodHound 预定义查询: ├── Find Shortest Paths to Domain Admins ├── Find All Domain Admins ├── Find Unconstrained Delegation Systems ├── Find Kerberoastable Users ├── Find AS-REP Roastable Users ├── Find Shortest Paths to High Value Targets ├── Map Domain Trusts └── Find DCSync Rights ``` --- ## Active Directory 侦察 ### 1. LDAP 查询 #### LDAP 基础查询 ```powershell # 使用 ADSI 进行 LDAP 查询 $domain = [ADSI]"LDAP://DC=corp,DC=local" $searcher = New-Object System.DirectoryServices.DirectorySearcher($domain) # 查询所有用户 $searcher.Filter = "(objectClass=user)" $searcher.FindAll() | ForEach-Object { $_.Properties } # 查询所有计算机 $searcher.Filter = "(objectClass=computer)" $searcher.FindAll() | ForEach-Object { $_.Properties } # 查询管理员 $searcher.Filter = "(adminCount=1)" $searcher.FindAll() | ForEach-Object { $_.Properties.samaccountname } ``` #### LDAP 高级查询 ```powershell # 查询特定属性 $searcher.Filter = "(&(objectClass=user)(memberOf=CN=Domain Admins,*))" $searcher.PropertiesToLoad.Add("samaccountname") $searcher.PropertiesToLoad.Add("mail") $searcher.FindAll() # 查询最近活动的用户 $searcher.Filter = "(&(objectClass=user)(lastLogonTimestamp=*))" $searcher.FindAll() | ForEach-Object { $props = $_.Properties [PSCustomObject]@{ User = $props.samaccountname[0] LastLogon = [DateTime]::FromFileTime($props.lastlogontimestamp[0]) } } ``` ### 2. Kerberos 侦察 #### Kerberos 信息收集 ```powershell # 查看当前票据 klist # 导出票据 (需要 Mimikatz) mimikatz # sekurlsa::tickets /export # 查询 SPN setspn -Q */* Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName # Kerberoast 目标 Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName,PasswordLastSet | Select-Object Name, ServicePrincipalName, PasswordLastSet ``` ### 3. DNS 侦察 #### DNS 信息收集 ```powershell # DNS 区域传输 (如果允许) nslookup > server 192.168.1.10 > ls -d corp.local # 使用 dig dig @192.168.1.10 corp.local AXFR # DNS 枚举 nslookup -querytype=any corp.local # 子域名枚举 $subdomains = @("www", "mail", "ftp", "vpn", "dc", "dc1", "dc2") $subdomains | ForEach-Object { $host = "$_.corp.local" try { $ip = [System.Net.Dns]::GetHostAddresses($host) Write-Host "[+] $host = $ip" -ForegroundColor Green } catch { Write-Host "[-] $host not found" -ForegroundColor Red } } ``` --- ## Linux 内网侦察 ### 1. 本地信息收集 #### 系统信息 ```bash # 系统信息 uname -a cat /etc/os-release hostnamectl # 内核版本 uname -r # 补丁/更新信息 # Debian/Ubuntu dpkg -l | grep -i linux-image # RHEL/CentOS rpm -qa | grep kernel # 运行的进程 ps auxf ps aux --sort=-%cpu | head -20 # 网络连接 ss -antp netstat -antp # 监听端口 ss -lnpt netstat -lnpt ``` #### 用户与组信息 ```bash # 当前用户 whoami id groups # 所有用户 cat /etc/passwd # 所有组 cat /etc/group # 最后登录 last lastlog # 当前登录用户 w who # sudo 权限 sudo -l ``` #### 服务信息 ```bash # systemd 服务 systemctl list-units --type=service --state=running systemctl list-unit-files --type=service --state=enabled # 启动项 ls -la /etc/init.d/ ls -la /etc/rc*.d/ # cron 任务 crontab -l cat /etc/crontab ls -la /etc/cron.* ``` ### 2. 网络侦察 #### 网络扫描 ```bash # 使用 nmap nmap -sn 192.168.1.0/24 nmap -sS -sV 192.168.1.0/24 # 使用 masscan masscan -p22,80,443,445,3389 192.168.1.0/24 --rate 1000 # 使用 arp-scan arp-scan --localnet # 使用 fping fping -a -g 192.168.1.0/24 2>/dev/null ``` #### NFS 共享发现 ```bash # 枚举 NFS 共享 showmount -e 192.168.1.100 # 批量枚举 for ip in 192.168.1.{1..254}; do showmount -e $ip 2>/dev/null | grep -v "clnt_create" done ``` #### Samba 共享发现 ```bash # 枚举 SMB 共享 smbclient -L //192.168.1.100 -N # 无需密码 smbclient -L //192.168.1.100 -U username # 需要密码 # 批量枚举 for ip in 192.168.1.{1..254}; do smbclient -L //$ip -N 2>/dev/null | grep -v "Connection failed" done ``` ### 3. 容器环境侦察 #### Docker 环境 ```bash # 检查是否在容器中 cat /proc/1/cgroup ls /.dockerenv # 列出容器 docker ps docker ps -a # 容器信息 docker inspect <container_id> # 网络信息 docker network ls docker network inspect bridge ``` #### Kubernetes 环境 ```bash # 检查是否在 K8s 环境 cat /var/run/secrets/kubernetes.io/serviceaccount/token # 使用 kubectl kubectl get pods kubectl get services kubectl get nodes kubectl get namespaces # 服务发现 kubectl get endpoints ``` --- ## 云环境内网侦察 ### AWS 环境 #### VPC 信息收集 ```bash # 使用 AWS CLI # VPC 信息 aws ec2 describe-vpcs # 子网 aws ec2 describe-subnets # 安全组 aws ec2 describe-security-groups # 实例 aws ec2 describe-instances # 网络接口 aws ec2 describe-network-interfaces # 路由表 aws ec2 describe-route-tables ``` #### 内网 IP 发现 ```bash # 实例元数据服务 curl http://169.254.169.254/latest/meta-data/local-ipv4 curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/ # 同一 VPC 内的其他实例 # 需要适当权限 aws ec2 describe-instances --filters "Name=vpc-id,Values=vpc-xxxxx" ``` ### Azure 环境 #### VNet 信息收集 ```bash # 使用 Azure CLI # VNet 信息 az network vnet list # 子网 az network vnet subnet list # NSG (网络安全组) az network nsg list # VM 信息 az vm list az vm list-ip-addresses ``` ### GCP 环境 #### VPC 信息收集 ```bash # 使用 gcloud # VPC 信息 gcloud compute networks list # 子网 gcloud compute networks subnets list # 防火墙规则 gcloud compute firewall-rules list # 实例 gcloud compute instances list ``` --- ## 被动信息收集 ### 1. 流量监听 #### 网络流量捕获 ```bash # 使用 tcpdump tcpdump -i eth0 -n -c 1000 # 捕获 1000 个包 tcpdump -i eth0 -n port 80 # 只捕获 HTTP 流量 tcpdump -i eth0 -n -w capture.pcap # 保存到文件 # 使用 tshark (Wireshark CLI) tshark -i eth0 -n -c 1000 tshark -i eth0 -n -Y "http.request" # 只捕获 HTTP 请求 # 被动指纹识别 p0f -i eth0 # 被动 OS 指纹识别 ``` #### 流量分析 ```bash # 分析捕获的流量 tshark -r capture.pcap -Y "dns" # DNS 查询 tshark -r capture.pcap -Y "smb2" # SMB 流量 tshark -r capture.pcap -Y "kerberos" # Kerberos 流量 # 提取凭证 (如果未加密) tshark -r capture.pcap -Y "http.request.method == POST" -T fields -e http.file_data ``` ### 2. 日志分析 #### 本地日志分析 ```bash # Linux 日志 cat /var/log/auth.log | grep "Accepted" # SSH 成功登录 cat /var/log/auth.log | grep "Failed" # SSH 失败登录 cat /var/log/syslog | tail -100 # 系统日志 # Windows 日志 (从事件查看器导出) Get-WinEvent -LogName Security -MaxEvents 100 Get-WinEvent -LogName System -MaxEvents 100 ``` #### 应用日志分析 ```bash # Web 服务器日志 cat /var/log/apache2/access.log | tail -100 cat /var/log/nginx/access.log | tail -100 # 数据库日志 cat /var/log/mysql/error.log | tail -100 ``` --- ## 信息收集自动化 ### 1. 自动化脚本 #### 综合侦察脚本 ```bash #!/bin/bash # 内网侦察自动化脚本 TARGET_NET="192.168.1.0/24" OUTPUT_DIR="/tmp/recon_$(date +%Y%m%d_%H%M%S)" mkdir -p $OUTPUT_DIR echo "[*] 开始内网侦察..." echo "[*] 输出目录:$OUTPUT_DIR" # 1. 主机发现 echo "[*] 主机发现..." nmap -sn $TARGET_NET -oG $OUTPUT_DIR/hosts_alive.txt # 2. 提取存活主机 alive_hosts=$(cat $OUTPUT_DIR/hosts_alive.txt | grep "Host:" | awk '{print $2}') # 3. 端口扫描 echo "[*] 端口扫描..." for host in $alive_hosts; do nmap -sS -sV -p 22,80,443,445,3389,5985,8080 $host -oN $OUTPUT_DIR/port_$host.txt & done wait # 4. Web 指纹 echo "[*] Web 指纹识别..." for host in $alive_hosts; do if grep -q "80/open" $OUTPUT_DIR/port_$host.txt || grep -q "443/open" $OUTPUT_DIR/port_$host.txt; then whatweb http://$host > $OUTPUT_DIR/web_$host.txt 2>/dev/null fi done # 5. 生成报告 echo "[*] 生成报告..." cat > $OUTPUT_DIR/report.txt << EOF 内网侦察报告 ============ 时间:$(date) 网段:$TARGET_NET 存活主机: $(cat $OUTPUT_DIR/hosts_alive.txt | grep "Host:") 开放端口摘要: $(grep "open" $OUTPUT_DIR/port_*.txt) Web 服务: $(ls $OUTPUT_DIR/web_*.txt 2>/dev/null) EOF echo "[+] 侦察完成!报告:$OUTPUT_DIR/report.txt" ``` ### 2. 工具集成 #### Recon-ng 使用 ```bash # 安装 Recon-ng apt install recon-ng # 启动 recon-ng # 基本使用 [recon-ng][default] > workspace create internal_recon [recon-ng][internal_recon] > modules search [recon-ng][internal_recon] > modules load recon/domains-hosts/brute_hosts [recon-ng][internal_recon] > options set SOURCE domains.csv [recon-ng][internal_recon] > run ``` #### Maltego 使用 ``` Maltego 转换: ├── Domain → DNS Name ├── DNS Name → IP Address ├── IP Address → Netblock ├── Netblock → IP Address ├── Email Address → Person └── Person → Social Network ``` --- ## 检测与防御 ### 1. 扫描检测 #### IDS/IPS 规则 ``` Snort 规则示例: # 检测 nmap 扫描 alert tcp any any -> any any (msg:"NMAP SYN Scan"; flags:S; threshold:type threshold, track by_src, count 20, seconds 60; sid:1000001;) # 检测端口扫描 alert tcp any any -> any any (msg:"Port Scan Detected"; flags:S; threshold:type threshold, track by_src, count 50, seconds 60; sid:1000002;) # 检测 ICMP 扫描 alert icmp any any -> any any (msg:"ICMP Ping Scan"; itype:8; threshold:type threshold, track by_src, count 20, seconds 60; sid:1000003;) ``` #### 网络流量分析 ```powershell # Windows: 检测异常扫描 Get-WinEvent -FilterHashtable @{LogName='Security'; Id=5156} -MaxEvents 100 | Group-Object -Property {$_.Message -replace '.*Source Port: (\d+).*', '$1'} | Sort-Object Count -Descending ``` ```bash # Linux: 检测扫描 # 使用 fail2ban apt install fail2ban # 配置扫描检测 vim /etc/fail2ban/jail.local [scan-detector] enabled = true filter = scan-detector logpath = /var/log/auth.log maxretry = 10 bantime = 3600 ``` ### 2. 防御措施 #### 网络分段 ``` 最佳实践: ├── 隔离敏感网络区域 ├── 限制跨网段通信 ├── 实施最小权限访问 └── 监控东西向流量 ``` #### 主机防护 ```powershell # Windows: 限制网络发现 # 组策略 → 计算机配置 → 管理模板 → 网络 → 网络连接 # 启用"关闭网络发现" # 禁用不必要的服务 Get-Service | Where-Object {$_.Status -eq 'Running'} | Where-Object {$_.Name -like "*Remote*" -or $_.Name -like "*Sharing*"} | Stop-Service -Force ``` ```bash # Linux: 防火墙配置 ufw default deny incoming ufw allow from 192.168.1.0/24 to any port 22 ufw enable # 禁用不必要的服务 systemctl disable telnet.socket systemctl disable rsh.socket ``` --- ## 实战案例 ### 案例一:企业内网渗透测试侦察 #### 场景描述 在某大型制造企业的红队演练中,我通过钓鱼邮件获得了财务部门工作站的访问权限,现在需要进行内网侦察以识别高价值目标。 #### 侦察流程 ``` Step 1: 本地信息收集 ┌─────────────────────────────────────────────────────────┐ │ 目标:财务工作站 (192.168.10.50) │ │ 收集: │ │ - 系统信息:Windows Server 2019 │ │ - 用户:finance_user (本地管理员) │ │ - 网络:192.168.10.0/24, 网关 192.168.10.1 │ │ - DNS: 192.168.10.2 (域控制器) │ │ - 域:CORP.LOCAL │ └─────────────────────────────────────────────────────────┘ Step 2: 网段发现 ┌─────────────────────────────────────────────────────────┐ │ 发现网段: │ │ - 192.168.10.0/24 (办公网) │ │ - 192.168.20.0/24 (服务器网) │ │ - 10.0.0.0/8 (生产网) │ └─────────────────────────────────────────────────────────┘ Step 3: 主机发现 ┌─────────────────────────────────────────────────────────┐ │ 使用 nmap 扫描: │ │ nmap -sn 192.168.10.0/24 │ │ nmap -sn 192.168.20.0/24 │ │ 发现: │ │ - 50 台工作站 │ │ - 10 台服务器 │ │ - 2 台域控制器 │ └─────────────────────────────────────────────────────────┘ Step 4: 端口扫描 ┌─────────────────────────────────────────────────────────┐ │ 对服务器网段进行端口扫描: │ │ nmap -sS -sV 192.168.20.0/24 │ │ 发现关键服务: │ │ - 192.168.20.10:445 (SMB, 文件服务器) │ │ - 192.168.20.11:1433 (MSSQL, 数据库) │ │ - 192.168.20.12:3389 (RDP, 跳板机) │ │ - 192.168.20.2:53,389 (DNS,LDAP, 域控) │ └─────────────────────────────────────────────────────────┘ Step 5: 域侦察 ┌─────────────────────────────────────────────────────────┐ │ 使用 PowerView: │ │ Get-NetDomainController # 发现 2 台 DC │ │ Get-NetUser -AdminCount # 发现 15 个管理员 │ │ Get-NetComputer -OperatingSystem "*Server*" # 20 台服务器│ │ Get-NetShare -ComputerName "192.168.20.10" # 10 个共享 │ └─────────────────────────────────────────────────────────┘ Step 6: BloodHound 分析 ┌─────────────────────────────────────────────────────────┐ │ 运行 Sharphound 收集数据 │ │ 导入 BloodHound 分析: │ │ - 发现到域管的 3 跳路径 │ │ - 发现 5 个 Kerberoastable 账户 │ │ - 发现未约束委派服务器 │ └─────────────────────────────────────────────────────────┘ 输出: - 高价值目标列表 - 攻击路径规划 - 漏洞和弱点清单 ``` ### 案例二:云环境内网侦察 #### 场景描述 某云原生企业的 AWS 环境中,需要评估内网侦察和横向移动风险。 #### 侦察内容 ``` VPC 信息: - VPC ID: vpc-12345678 - CIDR: 10.0.0.0/16 - 子网:10.0.1.0/24 (Public), 10.0.2.0/24 (Private) 实例发现: - Public 子网:5 台 EC2 (Web 服务器) - Private 子网:10 台 EC2 (应用 + 数据库) 安全组分析: - sg-web: 允许 80,443 从互联网 - sg-app: 允许 8080 从 sg-web - sg-db: 允许 3306 从 sg-app 风险点: - 实例元数据服务未禁用 (IMDSv1) - 部分安全组规则过于宽松 - 未启用 VPC Flow Logs ``` --- ## 总结与思考 ### 核心要点回顾 1. **内网信息收集是渗透测试的基础** - 了解目标环境是成功攻击的前提 - 系统性收集比随机扫描更有效 - 信息质量决定后续攻击成功率 2. **网络层侦察** - 网段发现和拓扑测绘 - 主机存活检测 (ICMP, TCP, ARP) - 防火墙和安全设备识别 3. **Windows/AD 侦察** - PowerView 和 BloodHound 是核心工具 - 域信息、用户、组、计算机是关键目标 - Kerberos 配置可能暴露攻击面 4. **Linux 侦察** - 本地信息、网络扫描、服务发现 - NFS/SMB 共享可能泄露敏感数据 - 容器环境需要特殊技术 5. **云环境侦察** - 使用云提供商 CLI 工具 - 元数据服务可能泄露信息 - 云网络架构与传统网络不同 ### 深入思考 #### 如何平衡侦察速度与隐蔽性? 1. **分阶段侦察**: 先快速发现,再针对性深入 2. **低速扫描**: 使用 -T2 或 -T1 参数,避免触发 IDS 3. **随机化**: 随机扫描顺序,避免模式检测 4. **时间分散**: 在不同时间段进行扫描 5. **合法掩护**: 使用正常业务流量作为掩护 #### 云环境侦察的特殊性 云环境与传统内网有显著差异: 1. **API 优先**: 大量信息通过 API 获取 2. **元数据服务**: 实例元数据是重要信息源 3. **软件定义网络**: 传统网络扫描技术可能无效 4. **权限模型**: IAM 权限决定信息收集能力 5. **日志集中**: CloudTrail 等记录所有活动 ### 实战建议 1. **对红队人员**: - 先被动后主动,减少检测风险 - 使用自动化工具提高效率 - 详细记录所有发现 - 验证关键信息准确性 2. **对蓝队人员**: - 部署网络流量分析 - 配置扫描检测规则 - 实施网络分段 - 定期审查暴露面 3. **对组织**: - 最小化网络暴露面 - 实施零信任架构 - 定期渗透测试 - 建立威胁情报能力 --- ## 参考资料 ### 学习资源 - **MITRE ATT&CK - Discovery** - https://attack.mitre.org/tactics/TA0007/ - **SANS Institute - Network Reconnaissance** - https://www.sans.org/white-papers/network-reconnaissance/ - **BloodHound Documentation** - https://bloodhound.readthedocs.io/ ### 工具资源 | 工具 | 用途 | 链接 | |------|------|------| | **nmap** | 网络扫描 | https://nmap.org/ | | **masscan** | 高速端口扫描 | https://github.com/robertdavidgraham/masscan | | **PowerView** | AD 侦察 | https://github.com/PowerShellMafia/PowerSploit | | **BloodHound** | AD 分析 | https://github.com/BloodHoundAD/BloodHound | | **SharpHound** | AD 数据收集 | https://github.com/BloodHoundAD/SharpHound | | **Recon-ng** | 侦察框架 | https://github.com/lanmaster53/recon-ng | | **gobuster** | 目录扫描 | https://github.com/OJ/gobuster | | **fping** | 快速 Ping 扫描 | https://fping.org/ | | **arp-scan** | ARP 扫描 | https://github.com/royhills/arp-scan | ### 书籍推荐 1. **《Red Team Development and Operations》** - 章节:Internal Network Reconnaissance 2. **《Advanced Penetration Testing》** - 章节:Network Reconnaissance and Scanning 3. **《Blue Team Handbook: Incident Response Edition》** - 章节:Detecting Network Reconnaissance 4. **《Active Directory for Hackers》** - 作者:Sean Metcalf - AD 安全权威指南 --- *365 天信息安全技术系列 | Day 234 | 渗透测试系列 | 内网信息收集进阶* *创建时间:2026-04-12 | 作者:安全专家 · 严谨专业版*
myh0st
2026年4月13日 23:20
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码