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 //存活主机探测
随机推荐
- 实现一个CRDT工具库——LWWReg
LWWReg LWW Register是一种数据结构,用于存储一个值和一个时间戳,支持读取和写入操作.在写入时,如果新的时间戳比原来的时间戳更大,那么就更新值和时间戳:在读取时,直接返回当前的值.这个 ...
- Java高频面试题(2023最新整理)
Java的特点 Java是一门面向对象的编程语言.面向对象和面向过程的区别参考下一个问题. Java具有平台独立性和移植性. Java有一句口号:Write once, run anywhere,一次 ...
- jinjia2基本用法
前言这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希望 ...
- Mysql简明语法
show databases ; use mybatis; show tables ; select * from user; select * from user where id=1; updat ...
- java练习题:用递归反转单链表
问题:用递归反转单链表. 单链表结构: class ListNode{ int val; ListNode next; ListNode(int value){ this.val=value; }} ...
- 脚本:auto_send_tablespace定期发送表空间巡检到邮箱
简述:周期定时发送表空间到指定邮箱内 1.修改邮箱配置 /etc/mail.rc,具体细节见网上教程 $ vi /etc/mail.rc set from=123456@qq.comset smtp= ...
- 手动编写Swagger文档与部署指南
Swagger介绍 在Web开发中,后端开发者在完成接口开发后,需要给前端相应的接口使用说明,所以一般会写一份API文档.一般来说,有两种方式提供API接口文档,一种是利用插件在代码中自动生成,另一种 ...
- mysql查询表中一个字段第三个字母为A第五个字母为R的sql
select id ,name, age from user where name like ' _ _A_R%';
- 安装kafka和zookeeper以及使用
1.安装zookeeper zookeeper下载:http://zookeeper.apache.org/releases.html 从3.5.5开始,带有bin名称的包才是要下载的包可以直接使用 ...
- Python-pprint的简单使用
Data pretty printer 一.简介 print()和pprint()都是python的打印模块,功能基本一样,唯一的区别就是pprint()模块打印出来的数据结构 ...