CDN 技术
CDN (Content Delivery Network,内容分发网络) 是一种用于屏蔽运营商节点性能差异并实现数据高速传输的技术。
原理是在各个运营商的交互节点上部署高速缓存服务,将用户常用的静态数据资源(如HTML、CSS、JavaScript、图片、文件等)缓存在这些服务器上,当用户请求这些资源时,就直接从离用户最近的服务器上获取,而不需要从远程Web服务器上下载。
只用当用户需要进行动态数据交互时,才会与远程web服务器进行通行。这样可以显著提升网站的响应速度和用户体验。
域名
whois
whois 是一种用于查询域名或者IP地址注册信息 的工具。
它通过向特定的whois服务器发送查询请求,获取目标域名或者IP地址的相关信息,例如注册人 、注册机构 、注册时间 、过期时间 、联系方式 、DNS服务器信息 等。

shell
whois baidu.com

子域名
子域名是指一个域名的前缀,用于划分网站的不同部分和功能。
例如:blog.example.com 就是 example.com 的一个子域名,用于提供博客服务。
可以将子域名看作一个独立的网站,拥有自己的内容和结构,但它仍然属于主域名的一部分。
子域名可以有多个层级,例如a.b.c.example.com 是一个四级子域名
在信息收集中,子域名是一个重要的信息来源,因为它可以暴露目标网站的一些特征、状态、潜在漏洞等信息
Netcraft网站 在线查询子域名
Netcraft 网站 提供网络服务信息的网站,可以用于查询目标网站的子域名、IP地址、操作系统、服务器等信息。


DNS侦察
DNS侦察:是指通过查询目标的域名系统(DNS)来收集目标的相关信息,例如IP地址、子域名、邮件服务器、名称服务器等。
DNSMap
DNSMap 是一款DNS枚举工具,使用它可以快速获取目标域名的子域名和对应的IP地址。

shell
dnsmap baidu.com -r dnsmap.txt //枚举结果保存到 dnsmap.txt文件中

DNSRecon
DNSRecon 是一款DNS侦察工具,可以用来执行多种类型的请求,并显示详细的相应信息。

| A记录 | IP地址 |
|---|---|
| MX记录 | 邮箱服务器 |
| NS记录 | 名称服务器 |
| TXT记录 | 文本信息 |
| SOA记录 | SOA记录是每个DNS区域文件必须包含的记录,通常位于区域文件的第一条 。 SOA记录存储了该区域的关键管理信息,包括主名称服务器(MNAME)、管理员联系邮箱(RNAME)、序列号以及刷新时间、重试时间、过期时间和最小TTL等参数 |
shell
dnsrecon -d megacorpone.com //megacorpone.com 为Kali官方搭建的虚拟网站。但请仅进行信息搜集使用,不要对其进行Web攻击!
DNSEnum
- DNSEnum 是一款能够快速获取目标域名的子域名和IP地址的DNS枚举工具。
- 默认情况下,该工具还会验证是否存在区域传输漏洞。

shell
dnsenum baidu.com

Fierce
Fierce 是一款DNS扫描工具,可以用来发现目标域名的子域名和IP地址,以及不连续的IP地址块。

shell
fierce --domain baidu.com

主机枚举
主机枚举:是指在网络中发现和识别目标主机的活动,可以帮助渗透测试人员收集目标主机的信息,如IP地址、操作系统、开放端口、运行服务等。
ATK6
ATK6 是一套用于测试IPv6 和 ICMPv6 协议弱点的工具包,可执行枚举主机、发现新设备、发起拒绝服务攻击、利用已知漏洞等功能。
shell
atk6-alive6 eth0 //检测内网中存活的IPv6主机

fping
fping 是一款高性能的ping工具,可以发送ICMP回显探测包到网络主机,类似于ping,但在同时ping多个主机时性能更好。

枚举内网 指定网段内存活的主机
使用 ifconfig 查看

shell
fping -a -g -q 192.168.2.0/24

枚举指定IP范围内存活的主机
shell
fping -a -g -q 60.205.171.200 60.205.171.255

hping3
-
hping3 是一款能够发送自定义的 TCP/IP 数据包并显示目标回复信息的网络工具,它的功能类似于ping,但更强大和灵活。
-
可用于网络测试、端口扫描、协议分析、操作系统指纹提取、服务类型探测等。
-
支持TCP、UDP、ICMP 和 RAW IP等协议,可以根据需要对发送的数据包进行分割或组合,以适应不同的网络环境和测试目的
-
还可以用于传输在支持的协议下封装的文件

向IP主机发送ICMP请求来确定该主机是否存活
shell
hping3 --icmp -c 2 192.168.2.1 //-c 表示发送请求的次数

hping3 发起DDoS攻击
shell
hping3 -S --flood --rand-source -p 80 192.168.8.1

扫描主机/域名,端口范围内哪些处于开放状态
shell
hping3 --scan 80-100,200-255 -S baidu.com

Fin扫描来判断指定地址的主机是否开启80端口
shell
hping3 -c 4 -V -p 80 -F baidu.com
nping
- nping 是一款能够生成和分析网络数据包的工具,可以用于测试网络延迟和性能。
- nping可以生成多种协议的网络数据包,并允许用户完全控制协议头部。
- nping既可以作为简单的ping工具来检测活动的主机,可可以作为原始数据包生成器来进行网络压力测试、ARP欺骗、拒绝服务攻击、路由跟踪等。
- nping的一个创新是可以显示数据包在源和目标主机之间传输时的变化,这对于理解防火墙规则、检测数据包损坏等很有帮助。
- nping有一个非常灵活和强大的命令行界面,让用户对生成的数据包进行完全的控制。

简单的存活主机扫描任务=
shell
nping baidu.com

shell
nping 192.168.2.23 //使用电脑的IP

IP地址范围内的主机扫描
shell
nping 192.168.2.1-50 -H // -H表示不显示发送的请求包


指定的范围端口继续进行扫描
shell
nping --tcp -p 80,443 192.168.2.23 //扫描80和443端口

shell
nping --tcp -p 80-443 192.168.2.23 //扫描80至443端口

Nmap
- Nmap是一款开源免费的网络发现和安全审计工具
- 可以扫描网络上的主机和端口,检测主机的在线状态、端口的开放情况、服务的类型和版本、操作系统和设备类型等。
- Nmap支持多种爱国扫描技术,如TCP SYN扫描、TCP Connect扫描、UDP扫描、ACK扫描、IPID扫描、窗口扫描等。
- Nmap还有强大的脚本引擎,可以用NSE(Nmap Scripting Engine)编写和运行各种扫描任务。

检测目标主机的操作系统和版本,显示路由追踪的结果,并通过自带的NSE漏洞利用脚本来验证目标主机是否存在漏洞

shell
nmap -A -T4 scanme.nmap.org

| Open(开放)状态 | 目标服务器正在接收TCP连接或UDP连接。 该状态证明端口是开放的 |
|---|---|
| Closed(关闭)状态 | 目标服务器的该端口是关闭的, 但Nmap依旧可以探测到,也许后续能正常访问 |
| Filtered(过滤)状态 | 由于端口上启用了数据包过滤机制,Nmap发出的探测数据包无法到达该端口,Nmap无法确定该端口是否为开放状态 |
| UnFiltered(未过滤)状态 | 该端口可以访问,但是Nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则的ACK扫描才会把端口分类到该状态,可以采用其他扫描技术来确认该端口是否开放 |
| OpenFiltered(开放或过滤)状态 | 无法确定该端口是开放还是过滤状态。 端口开放的情况下也可能会不响应Nmap的探测数据包,所有无法确定端口是否开放 |
| ClosedFiltered(关闭或过滤)状态 | 无法确定端口是关闭还是过滤状态, 该端口状态只会出现在IPID扫描中 |
Nmap默认只扫描常见的1000各端口,对所有的端口进行检测
shell
nmap -T4 scanme.nmap.org -p 1-65535


检测目标主机的操作系统和版本
shell
nmap -O 192.168.2.20 //该地址内网连接一台苹果PAD

指纹识别
- 指纹识别是指通过一些特征或者特定文件来识别目标网站或系统的类型、版本、组件等信息,以便寻找相应的漏洞或攻击方式
- 在Web程序中,通常会在HTML、CSS、JavaScript等文件或响应数据包中包含特征码,这些特征码就是它特征码,可以快速识别Web应用的类型,了解其潜在的漏洞等信息。
Wappalyzer插件
Wappalyzer插件是一款浏览器扩展插件(也称组件),可以用于分析当前网站使用的技术,如CMS、Web服务器、编程语言、框架、库、分析工具等。




利用 Wappalyzer 插件对 testphp.vulnweb.com 测试网站进行演示测试

WhatWeb
WhatWeb 是一款开源的网站指纹识别工具,可以识别网站使用的CMS、博客平台、中间件、Web框架模块、网站服务器、脚本、JavaScript库、IP、Cookie等技术。

WAF(Web应用防火墙)
- 目前,企业或个人用户一般采用防火墙作为安全保障体系的第一道防线,但是在现实生活中,防火墙并不一定拦得住所有的攻击,由此产生了WAF(Web Application Firewall,WAF)
- WAF代表了一类新兴的信息安全技术,用于解决防火墙等传统设备无法应对Web安全防护的问题。
- 与传统防火墙不同,WAF与Web同样工作在应用层,因此对Web应用防护具有先天的技术优势。
- WAF可对来自Web应用客户端的各类请求进行内容检测和验证,确保其安全性和合法性,对非法的请求及时阻断,从而对网站提供有效的防护。
WAF识别
- WAF识别:是指通过一些特征或特定文件来识别目标网站是否使用了WAF(如D盾、云锁、安全狗等),还可以识别WAF的类型和规则等。
- WAF识别可以帮助渗透测试人员了解目标网站的防护情况,从而寻找相应的绕过方法或攻击点。
- 现有的WAF识别技术可以通过向目标网站的WAF构造并发送恶意请求,然后分析返回的响应内容,从而来判断目标网站使用的WAF
wafw00f
wafw00f 工具是一款开源的WAF识别工具,可以检测目标网站使用的WAF类型,支持多种扫描技术和输出格式。
shell
wafw00f www.baidu.com

目录扫描
- 目录扫描是一种信息收集技术,它可以帮助渗透测试人员发现网站中的隐藏或敏感目录,从而获取更多的信息或利用漏洞。
- 原理是使用字典或暴力破解的方法,对网站的URL进行拼接和访问,根据响应状态码或内容来判断目录是否存在。
Dirb
- Dirb 是一个基于命令行界面的目录扫描工具
- 它可以使用内置的字典或自定义的字典对网站进行扫描,同时支持代理、鉴权、忽略状态码等功能

shell
dirb http://testphp.vulnweb.com

Dirb 默认使用 /usr/share/wordlists/dirb/common.txt文件作为字典
指定其他字典文件进行枚举
shell
dirb http://testphp.vulnweb.com /usr/share/wordlists/dirb/big.txt

模拟使用Chrome浏览器的User-Agent来扫描目标网站的目录和文件
shell
dirb http://testphp.vulnweb.com -a "Mozilla/5.0 (windows NT 10.0;Win64;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36"

DirBuster
- DirBuster 是一款基于图形用户界面的目录扫描工具,它的功能与Dirb基本相同
- 都可以使用内置的字典或自定义的字典对网站进行扫描,同时支持多线程、代理、鉴权、忽略状态码等功能。

字典位置 /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt




配置其他功能


Gobuster
- GoBuster 是一款相当出色的目录扫描工具。
- 能够利用多线程、自定义请求头、代理、鉴权等功能,对目标网站的目录或文件进行扫描。

shell
gobuster dir -w /usr/share/wordlists/dirb/small.txt -u http://testphp.vulnweb.com
| dir | 进行目录扫描 |
|---|---|
| -w | 表示使用的字典类型 |
| -u | 表示要扫描的网站地址 |

ffuf
- ffuf 是一个命令行工具,可以快死地对Web应用程序进行模糊测试,检测其安全性和功能。
- 它具有字典模糊、递归模式、过滤器模式等多种模式。这些模式可以帮助我们发现多层目录,并过滤无关结果等。
- 它还允许我们自定义请求和响应的各种参数,如HTTP方法、请求头、Cookie、User-Agent等。
- 还可以用不同颜色和进度条显示扫描结果。

shell
ffuf -u http://testphp.vulnweb.com/FUZZ -w /usr/share/wordlists/wfuzz/general/common.txt -c
| -w | 表示指定字典文件 |
|---|---|
| -u | 表示指定URL地址 |
| -c | 表示开启彩色输出 |
URL中使用FUZZ关键字来表示要替换的位置,ffuf会用字典文件中的每一行来替换 FUZZ 关键字,并发送请求到目标URL,然后根据响应的状态码、大小、时间等过滤和排序结果,最后显示出可能存在的文件或目录

Wfuzz
- Wfuzz 是一个Web应用程序的模糊测试工具,它是一个命令行工具
- 可以用来发现Web应用程序的隐藏资源,如文件、目录、参数、脚本等。
- 它的特点是支持多种编码、注入、过滤和代理技术。
- 例如:我们可以用URL编码、HTML编码、Base64编码等来绕过一些防火墙或过滤器,或者使用SQL注入、XSS注入、LDAP注入等来测试Web应用程序的漏洞。
- 它还可以灵活地定制请求和响应的参数,如HTTP头、Cookie、User-Agent等,还可以使用不同的颜色和统计信息来显示扫描结果。

shell
wfuzz -w /usr/share/wordlists/wfuzz/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ
| -hc 404 | 表示隐藏404状态码的文件或目录输出 |
|---|

FUZZ占位符枚举指定后缀名的文件
shell
wfuzz -w /usr/share/wordlists/wfuzz/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ.php

枚举登录凭据(即用户名和密码) 或 POST参数
先创建/root/pass.txt文件,并写入一些常用的用户和密码

shell
wfuzz -z file,/root/pass.txt -d "uname=FUZZ&pass=FUZZ" --hc 302 http://testphp.vulnweb.com/userinfo.php

结果保存
shell
wfuzz -f /root/output.html,html -w /usr/share/wordlists/wfuzz/general/common.txt --hc 404 http://testphp.vulnweb.com/FUZZ

打开output.html 以网页形式查看结果

综合侦察
综合侦察是信息收集中的一个重要步骤,它涉及从多个来源收集和分析目标信息,以了解其背景、特征、潜在漏洞和风险
Dmitry
- 是一个命令行工具,可以使用不同的选项来收集目标的各种信息,例如域名、IP地址、端口、服务、邮箱、子域名等。
- Dmitry可以与whois服务 和 Netcraft 服务结合使用,以获取目标的注册信息、操作系统、网络服务等详细信息。
shell
dmitry -winsepo vulnweb.txt testphp.vulnweb.com
-winsepo参数 表示在目标主机上执行whois查询、检索关于主机的Netcraft信息、搜索子域名和电子邮件地址、执行TCP端口扫描,并将结果保存到文件中

Maltego
- 图形化界面,可以使用不同的实体和转换来展示目标之间的关系
- 可以与 whois服务、Netcraft服务、Shodan服务等结合使用
- 通过综合多个数据源的信息来获取目标的详细信息
Maltego安装与配置





注册Maltego账号




Normal Privacy Mode 这种模式提供了最丰富的Maltego体验。在信息收集过程中,这种模式允许 Maltego直接从互联网获取某些数据类型。例如:当一个URL实体被返回为一个图像实体时,Maltego直接获取图像。当一个网站实体被返回时,Maltego 从网站获取网站图标,并将其显示为实体覆盖。
Stealth Privacy Mode 这种模式用于在信息收集过程中避免与目标服务器或网络直接联系。在这种模式下,Maltego 不会直接从互联网获取任何数据。例如:下载实体图像和图像覆盖将被阻止。


工具上方各标签的作用
| Investigate | 对操作图形文件进行创建、打开、保存、导出、打印 |
|---|---|
| View | 对操作图形视图进行放大、缩小、适应窗口或全屏显示 |
| Entities | 对操作实体进行添加、删除、编辑等 |
| Collections | 用来添加、删除、编辑操作实体的集合 |
| Transforms | 用来管理数据集成 |
| Machines | 用来运行、停止、暂停等操作机器 |
| Collaboration | 用来与其他使用Maltego的人协作 |
| Import/Export | 对操作实体和变换的数据进行导入、导出等 |
| Windows | 用来显示、隐藏、排列操作窗口和面板 |
使用Maltego


| Company Stalker | 获取域名中的所有邮件地址并查看与那些社交网络关联 |
|---|---|
| DNSDB Enumerate Domain | 从DNS数据库中寻找域名 |
| Find Wikipedia edits | 从维基百科中寻找域名 |
| Footprints L1 | 执行域名的基本信息收集 |
| Footprints L2 | 执行域名的中等信息收集 |
| Footprints L3 | 执行域名的深度信息收集 |
| Footprints XXL | 适用于大型的目标信息收集 |
| Person Email Address | 用于获取某人的电子邮件地址 |
| To similar Images and To Pages | 寻找类似的图片和网页地址 |
| Url To Network And Domain Information | 使用URL地址来标识域名的详细信息 |


SpiderFoot
- SpiderFoot 是一个用于收集开源情况的自动化工具,它可以帮助渗透测试人员自动收集目标的各种信息,如域名、IP地址、邮箱、电话号码、社交媒体账号等。
- 以图形化的方式展示目标之间的关联关系
启动 SpiderFoot
本机启动访问 SpiderFoot 的 Web服务
shell
spiderfoot -l 127.0.0.1:5001


所有主机启动访问 SpiderFoot 的 Web服务
shell
spiderfoot -l 0.0.0.0:5001

使用 SpiderFoot

| Scan Name | 设置该扫描的任务名称 |
|---|---|
| Seed Target | 设置目标(为域名、子域名、邮箱、电话、用户名等) |
All 获取有关目标的所有信息,并启动Spiderfoot所有模块进行搜集
Footprint 获取目标在互联网中的公开信息
Investigate 查询可能包含目标为恶意信息的黑名单和其他信息源,并执行基础的Footprint信息搜索
Passive 对目标进行被动模式的信息搜索,不会直接与目标进行交互





