tryhackme_nmap
https://www.cnblogs.com/-Lucky-/p/17100073.html
Nmap基本端口扫描
nmap中考虑的端口状态
Open:表示服务正在侦听指定端口。
Closed:表示没有服务在指定端口上侦听,尽管该端口可以访问。可访问性是指它可以访问并且未被防火墙或其他安全设备/程序阻止。
Filtered : 表示 Nmap 无法确定端口是打开还是关闭,因为端口不可访问。这种状态通常是由于防火墙阻止 Nmap 到达该端口。Nmap 的数据包可能会被阻止到达端口;或者,响应被阻止到达 Nmap 的主机。
Unfiltered : 表示 Nmap 无法确定端口是打开还是关闭,尽管端口是可访问的。使用 ACK 扫描时会遇到此状态-sA。
Open|Filtered:这意味着Nmap无法确定端口是打开还是过滤。
Closed|Filtered:这意味着 Nmap 无法决定端口是关闭还是过滤。
六个标志位
URG :紧急标志表示紧急指针归档是重要的。紧急指针指示传入数据是紧急的,并且立即处理设置了 URG 标志的TCP段,而无需考虑必须等待先前发送的 TCP 段。
ACK :确认标志表示确认号是重要的。它用于确认收到TCP段。
PSH :推送标志,要求TCP及时将数据传递给应用程序。
RST :重置标志用于重置连接。另一个设备(例如防火墙)可能会发送它来断开TCP 连接。当数据发送到主机并且接收端没有服务响应时,也会使用此标志。
SYN :同步标志用于启动TCP 3 次握手并与其他主机同步序列号。序号应该在TCP连接建立时随机设置。
FIN:发送方没有更多数据要发送。
TCP扫描
运行 TCP 连接扫描 -sT
TCP连接扫描通过完成 TCP 3 次握手来工作。在标准的 TCP 连接建立中,客户端发送一个设置了 SYN 标志的 TCP 数据包,如果端口打开,服务器以 SYN/ACK 响应;最后,客户端通过发送 ACK 完成 3 次握手。
我们感兴趣的是了解TCP端口是否打开,而不是建立 TCP 连接。因此,一旦通过发送 RST/ACK 确认其状态,连接就会断开。
TCP SYN扫描
SYN扫描不需要建立三次握手,它会在收到服务器的SYN,ACK响应后断开连接 -sS
UDP扫描
UDP是一种无连接协议,因此它不需要任何握手来建立连接。我们不能保证侦听 UDP 端口的服务会响应我们的数据包。但是,如果将 UDP 数据包发送到关闭的端口,则会返回 ICMP 端口不可达错误。可以使用该选项选择 UDP 扫描 -sU。
微调范围和性能
# 端口
端口列表:-p22,80,443将扫描端口 22、80 和 443。
端口范围:-p1-1023将扫描 1 到 1023(含)之间的所有端口,同时-p20-25 将扫描 20 到 25(含)之间的端口。
请求扫描所有端口-p-
如果要扫描最常见的 100 个端口,请添加-F
--top-ports 10将检查十个最常见的端口。
控制扫描时间-T<0-5>,-T0是最慢的(偏执狂),而 -T5是最快的。
-T4通常在 CTF 和学习扫描练习目标时使用,而-T1通常在隐身性更重要的真实交战中使用。
# 数据包速率
--min-rate <number>
--max-rate <number>
--max-rate=10 确保您的扫描仪每秒发送的数据包不超过十个
# 指定可以并行运行的此类探测的数量
--min-parallelism <numprobes>
--max-parallelism <numprobes>
--min-parallelism=512推动 Nmap 保持至少 512 个并行探测
nmap 高级端口扫描
TCP 空扫描, FIN扫描, Xmas扫描
NULL Scan
空扫描不设置任何标志;所有六个标志位都设置为零。使用该 -sN选项选择此扫描。
一个没有设置标志的TCP数据包在到达一个开放端口时不会触发任何响应。
因此,从 Nmap 的角度来看,在空扫描中缺少回复表明端口已打开或防火墙正在阻止数据包。
FIN Scan
FIN 扫描发送一个设置了 FIN 标志的TCP数据包。使用该选项选择此扫描类型-sF 。
同样,如果 TCP 端口打开,则不会发送任何响应。同样,Nmap 无法确定端口是否打开或防火墙是否阻止与此 TCP 端口相关的流量。
Xmas Scan
Xmas 扫描同时设置 FIN、PSH 和 URG 标志。您可以使用选项选-sX
与Null scan 和FIN scan 一样,如果收到RST 包,则表示端口已关闭。否则,它将被报告为 open|filtered。
TCP ACK、窗口 扫描
TCP ACK Scan
ACK 扫描将发送一个设置了 ACK 标志的 TCP 数据包。使用该-sA选项选择此扫描。
无论端口状态如何,目标都会使用 RST 响应 ACK。发生此行为是因为设置了 ACK 标志的 TCP 数据包应该仅在响应接收到的 TCP 数据包时发送,以确认某些数据的接收,这与我们的情况不同。
因此,此扫描不会告诉我们目标端口是否在简单设置中打开。
window Scan
TCP窗口扫描。TCP窗口扫描和ACK扫描几乎一样;但是,它会检查返回的 RST 数据包的 TCP 窗口字段。在特定系统上,这可以表明端口已打开。
可以使用选项选择此扫描类型-sW。
无论端口是打开还是关闭,我们都希望得到一个 RST 数据包来回复我们“不请自来”的 ACK 数据包。
欺骗和诱饵
-S nmap -S SPOOFED_IP MACHINE_IP
Nmap 将使用提供的源 IP 地址制作所有数据包SPOOFED_IP。目标机器将响应传入的数据包,将回复发送到目标 IP 地址 SPOOFED_IP。为了使此扫描起作用并给出准确的结果,攻击者需要监控网络流量以分析回复。
攻击者向目标机器发送一个带有欺骗性源 IP 地址的数据包。
目标机器回复欺骗性 IP 地址作为目的地。
攻击者捕获回复以找出打开的端口。
指定源 MAC 地址--spoof-mac SPOOFED_MAC,只有处于同一子网才行
启动诱饵扫描-D。例如, nmap -D 10.10.0.1,10.10.0.2,ME MACHINE_IP。将使 MACHINE_IP 的扫描显示为
来自 IP 地址 10.10.0.1、10.10.0.2,然后ME指示您的 IP 地址应按第三顺序出现。
另一个示例命令是nmap -D 10.10.0.1,10.10.0.2,RND,RND,ME MACHINE_IP,其中第三个和第四个源 IP 地址是随机分配的,
而第五个源将是攻击者的 IP 地址。换句话说,每次执行后一个命令时,您都会期望两个新的随机 IP 地址成为第三个和第四个诱饵源。
碎片包
Nmap 提供了对数据包进行分段的选项-f。一旦选择,IP 数据将被分成 8 个字节或更少。添加另一个-f(-f -f或-ff)
会将数据拆分为 16 个字节片段而不是 8 个。您可以使用--mtu;更改默认值。但是,您应该始终选择 8 的倍数。
如果您希望增加数据包的大小以使它们看起来无害,则可以使用选项--data-length NUM,其中 num 指定要附加到数据包的字节数。
nmap后端扫描
服务检测
-sV 收集和确定开放端口的服务和版本信息
--version-intensity LEVEL级别介于 0(最轻)和 9(最完整)之间。
-sV --version-light强度为 2, -sV --version-all强度为 9
操作系统检测
启用操作系统检测 -O
跟踪路由 --traceroute
脚本引擎
--script
--script=default可以选择使用或简单地添加运行默认类别中的脚本-sC。除了default之外,
类别还包括 auth、broadcast、brute、default、discovery、dos、exploit、external、fuzzer、intrusive、malware、safe、version 和 vuln
保存输出
-oN 正常格式类似于您在扫描目标时在屏幕上获得的输出
-oG 将扫描结果保存为 grepable 格式
-oX 使用 以 XML 格式保存扫描结果
-oS 无用的
实例
nmap -sC -sV -sS -T4 -vv ip
nmap -T4 -A -v -p- ip //全端口扫描
nmap -sn -T4 -PE 192.168.96.4/24 //存活主机探测
随机推荐
- Redis 性能优化
一.Linux 操作系统 [1]ulimit 与 TCP backlog:1).修改 ulimit:通过 ulimit 修改 open files 参数,redis 建议把 open files 至少 ...
- Java 泛型与通配符 定义与使用
一.泛型 定义: 把类型明确的工作推迟到创建对象或调用方法时才明确的类型,简而言之,未明确的数据类型. 类型: 泛型类,泛型方法,方形接口. 格式 泛型类格式:class 类名<E变量>{ ...
- 在 Vue 中控制表单输入
Vue中v-model的思路很简单.定义一个可响应式的text(通常是一个ref),然后用v-model="text"将这个值绑定到一个input上.这就创造了一个双向的数据流: ...
- 源码安装slurm
一.源码安装munge 1.下载munge 下载地址:https://github.com/dun/munge/releases 2.安装编译 tar -Jxvf munge-0.5.15.tar.x ...
- CLion在工程中添加目录&新文件
1.将新建文件夹添加到cmake.txt文件里 include_directories(Core/新建文件夹 Core/UserInc Drivers/STM32L4xx_HAL_Driver/Inc ...
- SpringBoot入门(二):Controller的使用
Controller中注解的使用: @Controller ●该注解用来响应页面,必须配合模板来使用 @RestController ●该注解可以直接响应字符串,返回的类型为JSON格式 ...
- [操作系统] - 进程切换&进程控制
2.1.6 进程切换 名称解析 进程的上下文(Context) 当一个进程在执行时,CPU的所有寄存器的值.进程的状态以及堆栈中的内容被称为进程的上下文Context 进程的切换(switch) 当内 ...
- SpringBoot 使用 Sa-Token 完成权限认证
一.设计思路 所谓权限认证,核心逻辑就是判断一个账号是否拥有指定权限: 有,就让你通过. 没有?那么禁止访问! 深入到底层数据中,就是每个账号都会拥有一个权限码集合,框架来校验这个集合中是否包含指定的 ...
- MySQL对时间戳的格式化
时间转时间戳 select unix_timestamp('2022-02-22 22:22:22'); 时间戳转时间 select from_unixtime(1645539742); 格式化 SE ...
- Spring AOP 分享
初级篇 AOP是什么? Aspect-oriented Programming (AOP) 即面向切面编程.简单来说,AOP 是一种编程范式,允许我们模块化地定义横跨多个对象的行为.AOP 可以帮助我 ...