|
一、发现 Host
1.1 工具
- Fierce - Fierce 是一款半轻量级别的扫描器,可帮助针对指定域定位不连续的 IP 空间和主机名。它实际上是作为 nmap、unicornscan、nessus、nikto 等的前导,因为所有这些都要求你已经知道要查找的 IP 空间;
- hosthunter - 该软件包包含一个工具,可有效发现和提取提供大量目标 IP 地址的主机名。HostHunter 利用简单的 OSINT 技术将 IP 地址与虚拟主机名映射;
1.2 Host 命令
Name Servers
Email Server
1.3 ICMP
- #ping -c 1 199.66.11.4 #1 echo request to a host
- #fping -sagq 192.168.0.0/24 #Send echo requests to ranges
- #nmap -PEPM -sP -n 199.66.11.0/24 #Send echo, timestamp requests and subnet mask requests
复制代码
1.4 ARP
arp-scan - 发送 arp 请求以查找链路层设备
- #sudo arp-scan -l
- #nmap -sn <Network> #ARP Requests (Discover IPs)
- #netdiscover -r <Network> #ARP requests (Discover IPs)
复制代码
1.5 NBT
- nbtscan -r 192.168.0.1/24 #Search in Domain
复制代码
1.6 Bettercap2
Bettercap2 - https://github.com/bettercap/bettercap
- net.probe on/off #Activate all service discover and ARP
- net.probe.mdns #Search local mDNS services (Discover local)
- net.probe.nbns #Ask for NetBios name (Discover local)
- net.probe.upnp # Search services (Discover local)
- net.probe.wsd # Search Web Services Discovery (Discover local)
- net.probe.throttle 10 #10ms between requests sent (Discover local)
复制代码
1.7 Wake On Lan
Wake On Lan 用于通过网络消息打开计算机,用于打开计算机的 magic 包只是一个提供 MAC Dst 的包,然后在同一个包内重复 16 次,然后这种数据包通常在以太网 0x0842 或 UDP 数据包中发送到端口 9。如果没有提供 [MAC],则将数据包发送到广播以太网 (广播 MAC 将是被重复的那个)。
- #WOL (without MAC is used ff:...:ff)
- wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847
- wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9
- ## Bettercap2 can also be used for this purpose
复制代码
二、端口扫描
- Open port: SYN --> SYN/ACK --> RST
- Closed port: SYN --> RST/ACK
- Filtered port: SYN --> [NO RESPONSE]
- Filtered port: SYN --> ICMP message
2.1 NMAP
2.1.1 资源
2.1.2 命令
2.1.2.1 方便选项
- -sS - Stealthy SYN scan
- -sV - Loud version scan, will make complete connection, grab banner, and version info
- -A - run service enumeration scripts
- -oA [filename] - Print nmap output to file name
- -Pn - disable ping. Most big companies will have ping diabled on most external entities
- -n - disable DNS resolution, helps speed up scan
2.1.2.2 基本扫描
- #nmap [IP Address] or nmap [website.com]
复制代码
2.1.2.3 指定端口
Top Ports
- #nmap [IP Address] --top-ports
复制代码
All Ports
UDP Ports
TCP Ports (Connect Scan)
Quick TCP Scan
- nmap -sC -sV -vv -oA quick 10.10.10.10
复制代码
Quick UDP Scan
- nmap -sU -sV -vv -oA quick_udp 10.10.10.10
复制代码
Full TCP Scan
- nmap -sC -sV -p- -vv -oA full 10.10.10.10
复制代码
2.1.2.4 Port knock
- for x in 7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x 10.10.10.10; done
复制代码
2.1.2.5 网络扫描
针对感兴趣的主机进行广泛扫描
2.1.2.5 Banner grabbing
- nmap -sV -v -p- [IP Address]
复制代码
2.1.2.6 操作系统扫描
- #sudo nmap -O -sV [IP Address]
复制代码
- -osscan-guess 提供更快、更积极的扫描,这在 Nmap 检索到接近 100% 的操作系统检测时很有用,但是,激进的扫描可能会导致丢失某些端口
- --osscan-limit 是一个用于限制要扫描的目标的选项,当你要扫描的 IP 范围很大时,此选项很有用
2.1.3 NSE - Nmap 脚本引擎
Nmap 脚本引擎 (NSE) 允许用户运行自定义和社区生成的脚本,存放在 /usr/share/nmap/scripts,运行 Nmap 脚本的最基本方法是使用 -sC 选项,调用默认脚本
- #nmap -sV -sC 192.168.1.1
复制代码
要针对目标运行特定脚本,必须在命令中指定脚本的名称
- #nmap -sV --script http-sql-injection.nse 192.168.1.1
复制代码
除了指定脚本的名称外,有时还需要指定参数以实现所需的行为
- #nmap --script http-wordpress-brute.nse --script-args ‘passdb=passwords.txt’ 192.168.1.1
- #nmap -sV --script mysql-dump-hashes 10.102.9.39 --script-args='username=root,password=abc123'
复制代码
针对找到的端口运行所有 NSE 脚本
- $nmap -Pn -sV -O -pT:{TCP ports found},U:{UDP ports found} --script *vuln* $ip
复制代码
2.1.3.1 vulscan
vulscan - 使用 Nmap NSE 进行高级漏洞扫描
- $ mkdir /usr/share/nmap/scripts/vulnscan
- $ cd /usr/share/nmap/scripts/vulnscan
- $ git clone https://github.com/scipag/vulscan.git
- $ nmap -sS -sV --script=/usr/share/nmap/scripts/vulnscan/vulscan.nse $ip
复制代码
2.1.4 逃避 IDS 和 IPS
2.1.4.1 TTL 操作
发送一些 TTL 足以到达 IDS/IPS 但不足以到达最终系统的数据包,然后,发送另一个与其他数据包具有相同序列的数据包,这样 IPS/IDS 就会认为它们是重复的,不会检查它们,但它们确实携带了恶意内容
Nmap 选项:--ttlvalue <value>
2.1.4.2 避免特征检测
只需将垃圾数据添加到数据包中即可避免 IPS/IDS 检测出特征
Nmap 选项:--data-length 25
2.1.4.3 分片数据包
只需对数据包进行分段并发送它们,如果 IDS/IPS 没有能力重新组装它们,它们将到达最终主机
Nmap 选项:-f
2.1.4.4 无效的校验和
出于性能原因,传感器通常不计算校验和,因此,攻击者可以发送一个数据包,该数据包将被传感器解释但被最终主机拒绝。示例:发送带有 RST 标志和无效校验和的数据包,因此,IPS/IDS 可能认为该数据包将关闭连接,但最终主机将丢弃该数据包,因为校验和无效
2.1.4.5 不常见的 IP 和 TCP 选项
传感器可能会忽略在 IP 和 TCP 标头中设置了某些标志和选项的数据包,而目标主机在收到数据包时会接受该数据包
2.1.4.6 Overlapping
当对数据包进行分段时,数据包之间可能存在某种 overlapping (可能数据包 2 的前 8 个字节与数据包 1 的后 8 个字节 overlapping,数据包 2 的最后 8 个字节与数据包 3 的前 8 个字节 overlapping),然后如果 IDS/IPS 以不同于最终主机的方式重新组装它们,则会解释不同的数据包。或者可能会出现 2 个具有相同偏移量的数据包,主机必须决定接收哪个数据包
- BSD:优先选择偏移量较小的数据包,对于具有相同偏移量的数据包,它将选择第一个
- Linux:与 BSD 类似,但它更喜欢具有相同偏移量的最后一个数据包
- First (Windows):第一个出现的值,留下的值
- Last (cisco):最后的值,留下的值
2.1.5 视频介绍
Hackersploit 拥有关于使用 NMAP 的最佳视频系列之一
2.2 Masscan
Masscan 是一个互联网规模的端口扫描器,可以在 5 分钟内扫描整个互联网,从单台机器每秒传输 1000 万个数据包。
- # sudo apt install masscan
- # sudo masscan -p [port(s)] [IP CIDR]
复制代码
- -oL [log file]
- -e specify interface
- --rate rate of packet transmission
- --router-ip - specify the IP address for the appropriate gateway
2.3 其它端口扫描工具
- WebMap - Nmap Web 仪表板和报告
- Scantron - Scantron 是一个分布式 nmap 和 Masscan 扫描仪,由两个组件组成。第一个是一个控制台节点,包含一个用于调度扫描和存储扫描目标和结果的 Web 前端。第二个组件是从控制台提取扫描作业并进行实际扫描的引擎
- Scanless - 这是一个 Python 3 命令行实用程序和库,可以代表执行端口扫描的网站
- naabu - 一个用 go 编写的快速端口扫描器,专注于可靠性和简单性。旨在与其他工具结合使用,以在 Bug 赏金和渗透测试中发现攻击面
- RustScan - 现代端口扫描器,快速查找端口 (最快 3 秒),通过脚本引擎运行脚本 (支持 Python、Lua、Shell)
- knocker - Knocker 是一种新的、简单且易于使用的 TCP 安全端口扫描程序,使用 C 语言编写,使用线程,能够分析主机及其上运行的网络服务
- unicornscan - Unicornscan 是对用户级分布式 TCP/IP 堆栈的尝试,旨在为研究人员提供一个高级接口,用于将刺激引入启用 TCP/IP 的设备或网络并测量来自启用 TCP/IP 的设备或网络的响应
视频:https://www.youtube.com/watch?v=X_DdYUeKS-o
2.4 端口手动检测
Netcat banner grab
Telnet banner grab
三、应用程序检测
AMAP - 尝试识别应用程序,即使它们在与正常不同的端口上运行
四、漏洞扫描
- BTFM: Scanning and Vulnerabilities - pg. 11
- Penetration Testing: Finding Vulnerabilities - pg.133
4.1 Nessus
Nessus - 网络上最流行的漏洞扫描工具
命令
4.2 OpenVAS
OpenVAS - 开源的漏洞评估扫描器,免费并预安装在 Kali Linux 上
命令
- 设置
- 更新
- 设置和更新后,检查监听端口以查看 OpenVAS 是否处于活动状态
- 导航到 WebUI
视频:
https://www.youtube.com/watch?v=fEANg6gyV5A
https://www.youtube.com/watch?v=koMo_fSQGlk
4.3 其它扫描工具
- Reconmap - Reconmap 是一个漏洞评估和渗透测试 (VAPT) 平台,可帮助软件工程师和信息安全专业人员在安全项目上进行协作,从规划到实施和文档,目的是在尽可能短的时间内从侦察到报告
- Vulmap - Vulmap 在线本地漏洞扫描程序项目
- Vuls - Linux/FreeBSD 的用 Go 编写的无代理漏洞扫描器
- Tsunami - Tsunami 是一个通用的网络安全扫描器,带有一个可扩展的插件系统,用于以高可信度检测高严重性漏洞
- Flan Scan - Flan Scan 是一个轻量级的网络漏洞扫描器,使用 Flan Scan 可以轻松找到网络上的开放端口、识别服务及其版本,并获取影响你的网络相关 CVE 列表
- NSE Nmap Scripts - NSE 脚本可以执行各种扫描技术来枚举服务和扫描特定漏洞的目标
- 显示所有可用脚本及其详细信息
- # nmap --script-help default
- 显示所有 vuln/exploit 脚本
- # cat script.db | grep '"vuln"\|"exploit"'
- 运行 "vuln" 类别中的所有脚本
- # sudo nmap --script vuln [ip]
五、攻击面映射/资产发现
5.1 Amass
5.2 其它工具
六、SSL\TLS 扫描
七、DNS 扫描/枚举
7.1 命令
DNS 枚举
- Host 命令 - 查找与域关联的 IP 地址
- # host [domain]
- -t [mx, txt, cname, etc] 要返回的特定记录,默认为 A 记录
- DNS 区域传输 - 真实 dns 服务器之间的数据库复制
- DNSRecon - DNS 枚举脚本 [url=DNSRecon - DNS 枚举脚本 - https://github.com/darkoperator/dnsrecon]https://github.com/darkoperator/dnsrecon[/url]
- DNSenum
- #dnsrecon -d [domain] -t axfr
- -d specify domain
- -t specify the type of enumeration
- #dnsrecon -d [domain] -D ~/name.txt -t brt
视频:https://www.youtube.com/watch?v=rQ-dc5kwRtU
八、其它扫描工具
|
|