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 //存活主机探测

随机推荐

  1. 实现一个CRDT工具库——LWWReg

    LWWReg LWW Register是一种数据结构,用于存储一个值和一个时间戳,支持读取和写入操作.在写入时,如果新的时间戳比原来的时间戳更大,那么就更新值和时间戳:在读取时,直接返回当前的值.这个 ...

  2. Java高频面试题(2023最新整理)

    Java的特点 Java是一门面向对象的编程语言.面向对象和面向过程的区别参考下一个问题. Java具有平台独立性和移植性. Java有一句口号:Write once, run anywhere,一次 ...

  3. jinjia2基本用法

    前言这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希望 ...

  4. Mysql简明语法

    show databases ; use mybatis; show tables ; select * from user; select * from user where id=1; updat ...

  5. java练习题:用递归反转单链表

    问题:用递归反转单链表. 单链表结构: class ListNode{ int val; ListNode next; ListNode(int value){ this.val=value; }} ...

  6. 脚本:auto_send_tablespace定期发送表空间巡检到邮箱

    简述:周期定时发送表空间到指定邮箱内 1.修改邮箱配置 /etc/mail.rc,具体细节见网上教程 $ vi /etc/mail.rc set from=123456@qq.comset smtp= ...

  7. 手动编写Swagger文档与部署指南

    Swagger介绍 在Web开发中,后端开发者在完成接口开发后,需要给前端相应的接口使用说明,所以一般会写一份API文档.一般来说,有两种方式提供API接口文档,一种是利用插件在代码中自动生成,另一种 ...

  8. mysql查询表中一个字段第三个字母为A第五个字母为R的sql

    select id ,name, age from user where name like ' _ _A_R%';

  9. 安装kafka和zookeeper以及使用

    1.安装zookeeper zookeeper下载:http://zookeeper.apache.org/releases.html 从3.5.5开始,带有bin名称的包才是要下载的包可以直接使用 ...

  10. Python-​​pprint的简单使用

    ​​Data pretty printer 一.简介​ ​​print()​和​​pprint()​都是python的打印模块,功能基本一样,唯一的区别就是​​pprint()​模块打印出来的数据结构 ...