THM学习笔记——Nmap

2024-01-29 14:12
文章标签 学习 笔记 nmap thm

本文主要是介绍THM学习笔记——Nmap,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nmap是一款用于网络发现和安全审计的网络安全工具,通常情况下,Nmap用于:

  • 列举网络主机清单

  • 管理服务升级调度

  • 监控主机

  • 服务运行状况

Nmap可以检测目标主机是否在线、端口开放情况、侦测运行的服务类型及版本信息、侦测操作系统与设备类型等信息。

系统管理员可以利用Nmap来探测工作环境中未经批准使用的服务器,黑客通常会利用Nmap来搜集目标电脑的网络设定,从而计划攻击的方法。

Nmap通常用在信息搜集阶段,用于搜集目标机主机的基本状态信息。扫描结果可以作为漏洞扫描、漏洞利用和权限提升阶段的输入。

Nmap不仅可以用于扫描单个主机,也可以适用于扫描大规模的计算机网络

Nmap是一个功能强大的网络扫描工具,用于发现主机、服务和开放端口等信息。

Nmap的基本用法:

扫描单个主机或主机范围

nmap target
nmap 192.168.1.1
nmap example.com
nmap 192.168.1.1-100

扫描整个子网

nmap 192.168.1.0/24

扫描多个目标

nmap target1 target2 target3

扫描特定端口

nmap -p port target
nmap -p 80,443 example.com

扫描常见端口

nmap -F target

指定扫描技术

nmap -sS target   # TCP SYN 扫描
nmap -sT target   # TCP 连接扫描
nmap -sU target   # UDP 扫描

指定扫描范围

nmap -p1-100 target   # 扫描端口范围
nmap -sS -p- target   # 扫描所有65535个TCP端口

扫描速度和详细级别

nmap -T4 target   # 设置扫描速度
nmap -v target    # 详细输出

指定输出格式

nmap -oN output.txt target   # 输出到文本文件
nmap -oX output.xml target   # 输出到XML文件

禁用主机发现

nmap -Pn target   # 禁用Ping扫描

指定脚本扫描

nmap --script scriptname target   # 执行特定脚本

这些是Nmap的一些基本用法,但Nmap具有更多高级功能和选项,可以根据需要进行深入研究和学习。

详细介绍

在使用Nmap进行端口扫描时,有三种基本的扫描类型。它们分别是:

- TCP连接扫描 (-sT)
- SYN "半开放"扫描 (-sS)
- UDP扫描 (-sU)

TCP连接扫描

要理解TCP连接扫描 ,最重要的是对 TCP三次握手熟悉。

三次握手包括三个阶段。首先,连接的终端向目标服务器发送一个带有SYN标志的TCP请求。然后,服务器用一个包含SYN标志和ACK标志的TCP响应确认此数据包。最后,我们的终端通过发送一个带有ACK标志的TCP请求来完成握手。

TCP连接扫描通过依次与每个目标端口执行三次握手来工作。换句话说,Nmap尝试连接到每个指定的TCP端口,并通过接收到的响应确定服务是否开放。

SYN扫描

与TCP扫描类似,SYN扫描用于扫描目标或目标的TCP端口范围;然而,这两种扫描类型的工作方式略有不同。SYN扫描有时被称为“半开放”扫描,或“隐秘”扫描。

TCP扫描与目标执行完整的三次握手,而SYN扫描在从服务器收到SYN/ACK后发送一个RST TCP数据包(这可以防止服务器重复尝试请求)。

这对我们有很多优势:

- 它可以用来绕过旧版入侵检测系统,因为它们正在寻找完整的三次握手。对于现代IDS解决方案来说,情况通常不再是这样;正是因为这个原因,SYN扫描仍然经常被称为“隐秘”扫描。
- SYN扫描通常不会被打开端口上侦听的应用程序记录,因为标准做法是在建立连接后记录连接。这再次体现了SYN扫描的隐蔽性。
- 由于不必为每个端口完成(和断开)三次握手,SYN扫描比标准TCP连接扫描快得多。

然而,SYN扫描也有一些缺点,即:

- 它们需要sudo权限才能在Linux中正确工作。这是因为SYN扫描需要创建原始数据包的能力(与完整的TCP握手相反),这是仅root用户默认拥有的特权。
- 不稳定的服务有时会被SYN扫描关闭,如果客户端为测试提供了生产环境,则可能会出现问题。

总的来说,优点胜过缺点。

因此,如果具有sudo权限运行,则SYN扫描是Nmap使用的默认扫描。如果没有sudo权限运行,则Nmap默认使用我们在前面任务中看到的TCP连接扫描。

在使用SYN扫描识别关闭和过滤端口时,与使用TCP连接扫描相同的规则适用。

如果端口关闭,则服务器将以RST TCP数据包做出响应。如果防火墙过滤了端口,则TCP SYN数据包要么被丢弃,要么被伪造成TCP重置。

UDP扫描

与TCP不同,UDP连接是无状态的。这意味着,UDP连接不是通过来回的“握手”来建立连接,而是依靠将数据包发送到目标端口,并希望它们能到达。这使得UDP非常适用于速度优先于质量的连接(例如视频共享),但是缺乏确认使得UDP扫描变得更加困难(也更加缓慢)。

当一个数据包发送到一个打开的UDP端口时,不应该有响应。当这种情况发生时,Nmap将端口标记为 open|filtered。换句话说,它怀疑该端口是开放的,但可能已经被防火墙过滤。如果它收到UDP响应(这是非常不寻常的),那么该端口将被标记为open。更常见的情况是没有响应,此时请求会第二次发送以进行双重检查。如果仍然没有响应,则端口将被标记为 *open|filtered*,并且Nmap继续进行扫描。

当一个数据包发送到一个关闭的UDP端口时,目标应该用包含端口不可达消息的ICMP(ping)数据包做出响应。这清楚地标识了关闭的端口,Nmap会将其标记为关闭并继续进行扫描。

由于很难确定UDP端口是否真正开放,与各种TCP扫描相比,UDP扫描往往非常缓慢(在良好连接下扫描前1000个端口需要大约20分钟)。因此,通常最好使用启用了 --top-ports <number> 的Nmap扫描。例如,

使用 nmap -sU --top-ports 20 <target> 进行扫描,将扫描最常用的20个UDP端口,从而获得更可接受的扫描时间。

在扫描UDP端口时,Nmap通常发送完全空的请求 -- 仅仅是原始的UDP数据包。也就是说,对于通常由众所周知的服务占用的端口,它将发送一个特定于协议的有效载荷,这更有可能引发响应,并得出更准确的结果。

ICMP网络扫描

在黑盒分配中第一次连接到目标网络时,我们想看看哪些IP地址包含活动主机,哪些不包含。

其中一种方法是使用Nmap执行所谓的“ping扫描”。这正如其名字所示:Nmap向指定网络的每个可能的IP地址发送一个ICMP数据包。当它收到响应时,它将标记响应的IP地址为活动。

要执行ping扫描,我们使用 -sn 开关与IP范围结合使用,IP范围可以用连字符(-)或CIDR表示法指定。例如,我们可以使用以下命令扫描192.168.0.x网络:

- nmap -sn 192.168.0.1-254

或者

- nmap -sn 192.168.0.0/24

-sn 开关告诉Nmap不要扫描任何端口 -- 强制其主要依赖ICMP回显数据包(或者在本地网络上运行时使用sudo或直接作为根用户的ARP请求)来识别目标。

除了ICMP回显请求外,-sn 开关还将导致nmap向目标的端口443发送TCP SYN数据包,并向目标的端口80发送TCP ACK(或如果未以根用户身份运行,则发送TCP SYN)数据包。

NSE脚本概述

Nmap脚本引擎(NSE)是Nmap的一个非常强大的补充,它相当大地扩展了Nmap的功能。NSE脚本使用 Lua 编程语言编写,可用于各种用途:从扫描漏洞到自动化对其的利用。NSE特别适用于侦察,但是值得注意的是脚本库有多么庞大。

有许多可用的类别。一些有用的类别包括:

- safe:不会影响目标
- intrusive:不安全:可能会影响目标
- vuln:扫描漏洞
- exploit:尝试利用漏洞
- auth:尝试绕过运行服务的认证(例如,匿名登录FTP服务器)
- brute:尝试对运行服务的凭据进行暴力破解
- discovery:尝试查询运行服务以获取有关网络的更多信息(例如,查询SNMP服务器)。

使用NSE

要运行特定的脚本,我们将使用 --script=<script-name> ,例如 --script=http-fileupload-exploiter。

可以通过用逗号分隔它们来以这种方式同时运行多个脚本。例如:--script=smb-enum-users,smb-enum-shares。

某些脚本需要参数(例如,如果它们正在利用经过身份验证的漏洞,则需要凭据)。这些参数可以使用 --script-args Nmap开关提供。例如,http-put 脚本(用于使用PUT方法上传文件)就需要两个参数:要上传文件的URL和磁盘上文件的位置。例如:
nmap -p 80 --script http-put --script-args http-put.url='/dav/shell.php',http-put.file='./shell.php'

注意,参数由逗号分隔,并且与相应的脚本用句点连接(即 <script-name>.<argument>)。

防火墙规避

Nmap提供了一个选项:-Pn,告诉Nmap在扫描之前不要费心ping主机。这意味着Nmap将始终将目标主机视为活动的,有效地绕过ICMP阻塞;但是,它的代价是可能需要很长时间才能完成扫描(如果主机确实死了,那么Nmap仍将检查和重复检查每个指定的端口)。

这篇关于THM学习笔记——Nmap的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/657185

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件