我的Nmap

See the source image

目标说明

除了选项,所有出现在Nmap命令行上的都被视为对目标主机的说明。 最简单的情况是指定一个目标IP地址或主机名。

有时候您希望扫描整个网络的相邻主机。为此,Nmap支持CIDR风格的地址。您可以附加 一个**在一个IP地址或主机名后面, Nmap将会扫描所有和该参考IP地址具有 **相同比特的所有IP地址或主机。 例如,192.168.10.0/24将会扫描192.168.10.0 (二进制格式: 11000000 10101000 00001010 00000000)和192.168.10.255 (二进制格式: 11000000 10101000 00001010 11111111)之间的256台主机。 192.168.10.40/24 将会做同样的事情。假设主机 scanme.nmap.org的IP地址是205.217.153.62, scanme.nmap.org/16 将扫描205.217.0.0和205.217.255.255之间的65,536 个IP地址。 所允许的最小值是/1, 这将会扫描半个互联网。最大值是/32,这将会扫描该主机或IP地址, 因为所有的比特都固定了。

CIDR标志位很简洁但有时候不够灵活。例如,您也许想要扫描 192.168.0.0/16,但略过任何以.0或者.255 结束的IP地址,因为它们通常是广播地址。 Nmap通过八位字节地址范围支持这样的扫描 您可以用逗号分开的数字或范围列表为IP地址的每个八位字节指定它的范围。 例如,192.168.0-255.1-254 将略过在该范围内以.0和.255结束的地址。 范围不必限于最后的8位:0-255.0-255.13.37 将在整个互联网范围内扫描所有以13.37结束的地址。 这种大范围的扫描对互联网调查研究也许有用。

Nmap命令行接受多个主机说明,它们不必是相同类型。命令nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.0-255 将和您预期的一样执行。

虽然目标通常在命令行指定,下列选项也可用来控制目标的选择:

给定一个ip直接扫描

这种扫描方式以及-sP 扫描,检测网络上哪些主机正在运行 ,通过向指定的IP地址发送ICMP echo请求数据包,收到一个RST包,就表示主机正在运行。
直接扫描一个IP地址

-iL <inputfilename> (从列表中输入)

​ 从<inputfilename>中读取目标说明。在命令行输入 一堆主机名显得很笨拙

-iR <hostnum> (随机选择目标)

​ 对于互联网范围内的调查和研究, 您也许想随机地选择目标。 <hostnum> 选项告诉 Nmap生成多少个IP。 选项 0 意味着永无休止的扫描。记住,一些网管对于未授权的扫描可能会很感冒并加以抱怨。 使用该选项的后果自负! 如果在某个雨天的下午,您觉得实在无聊, 试试这个命令 nmap -sS -PS80 -iR 0 -p 80随机地找一些网站浏览。

主机发现

​**任何网络探测任务的最初几个步骤之一就是把一组IP范围(有时该范围是巨大的)缩小为 一列活动的或者您感兴趣的主机。**扫描每个IP的每个端口很慢,通常也没必要。
主机发现有时候也叫做ping扫描,但它远远超越用世人皆知的ping工具 发送简单的ICMP回声请求报文。用户完全可以通过使用列表扫描(-sL)或者 通过关闭ping (-P0)跳过ping的步骤,也可以使用多个端口把TPC SYN/ACK,UDP和ICMP 任意组合起来玩一玩。这些探测的目的是获得响应以显示某个IP地址是否是活动的(正在被某 主机或者网络设备使用)。 在许多网络上,在给定的时间,往往只有小部分的IP地址是活动的。 这种情况在基于RFC1918的私有地址空间如10.0.0.0/8尤其普遍。 那个网络有16,000,000个IP,但我见过一些使用它的公司连1000台机器都没有。 主机发现能够找到零星分布于IP地址海洋上的那些机器。

下列选项控制主机发现。

-sL (列表扫描)

列表扫描是主机发现的退化形式,它仅仅列出指定网络上的每台主机, 不发送任何报文到目标主机,并不能确定那些主机是否正在运行。

-sP (Ping扫描)@

该选项告诉Nmap仅仅 进行ping扫描 (主机发现),然后打印出对扫描做出响应即正在运行的那些主机。 没有进一步的测试 (如端口扫描或者操作系统探测)。 这比列表扫描更积极,常常用于和列表扫描相同的目的。它可以得到些许目标网络的信息而不被特别注意到。 对于攻击者来说,了解多少主机 正在运行 比列表扫描提供的一列IP和主机名往往更有价值。

-P0 (无ping)**

该选项完全跳过Nmap发现阶段。 通常Nmap在进行高强度的扫描时用它确定正在运行的机器。 **默认情况下,Nmap只对正在运行的主机进行高强度的探测如 端口扫描,版本探测,或者操作系统探测。用-P0禁止 主机发现会使Nmap对每一个指定的目标IP地址 进行所要求的扫描。**所以如果在命令行指定一个B类目标地址空间(/16), 所有 65,536 个IP地址都会被扫描。 -P0的第二个字符是数字0而不是字母O。 和列表扫描一样,跳过正常的主机发现,但不是打印一个目标列表, 而是继续执行所要求的功能,就好像每个IP都是活动的。

-PS [portlist] (TCP SYN Ping)

基于SYN的主机发现
该选项发送一个设置了SYN标志位的空TCP报文。SYN标志位告诉对方您正试图建立一个连接。 通常目标端口是关闭的,一个RST (复位) 包会发回来。 如果碰巧端口是开放的,目标会进行TCP三步握手的第二步,回应 一个SYN/ACK TCP报文。然后运行Nmap的机器则会扼杀这个正在建立的连接, 发送一个RST而非ACK报文,否则,一个完全的连接将会建立。

Nmap并不关心端口开放还是关闭。 无论RST还是SYN/ACK响应,只要你回复了,都告诉Nmap该主机正在运行。

-PA [portlist] (TCP ACK Ping)

基于ACK的主机发现
TCP ACK ping和刚才讨论的SYN ping相当类似。 也许您已经猜到了,区别就是设置TCP的ACK标志位而不是SYN标志位。 ACK报文表示确认一个建立连接的尝试,但该连接尚未完全建立。 所以远程主机应该总是回应一个RST报文, 因为它们并没有发出过连接请求到运行Nmap的机器,如果它们正在运行的话。

-PA选项使用和SYN探测相同的默认端口(80),也可以用相同的格式指定目标端口列表。提供SYN和ACK两种ping探测的原因是使通过防火墙的机会尽可能大。

-PU [portlist] (UDP Ping)

基于UDP的主机发现
它发送一个空的(除非指定了–data-length)UDP报文到给定的端口。 端口列表的格式和前面讨论过的-PS和-PA选项还是一样。 如果不指定端口,默认是31338。默认使用这样一个奇怪的端口是因为对开放端口进行这种扫描一般都不受欢迎。

如果目标机器的该端口是关闭的,UDP探测应该马上得到一个ICMP 端口无法到达 的回应报文。 这对于Nmap意味着该机器正在运行。

该扫描类型的主要优势是它可以穿越只过滤TCP的防火墙和过滤器。 例如。我曾经有过一个Linksys BEFW11S4无线宽带路由器。默认情况下, 该设备对外的网卡过滤所有TCP端口,但UDP探测仍然会引发一个端口不可到达的消息,从而暴露了它自己。
在这里插入图片描述

-PR (ARP Ping)

最常见的Nmap使用场景之一是扫描一个以太局域网。 在大部分局域网上,在一个给定的时间绝大部分IP地址都是不使用的。当Nmap试图发送一个原始IP报文时, 操作系统必须确定对应于目标IP的硬件 地址(MAC),这样它才能把以太帧送往正确的地址。
这一般比较慢而且会有些问题,因为操作系统设计者认为一般不会在短时间内对没有运行的机器作几百万次的ARP请求。

当进行ARP扫描时,Nmap用它优化的算法管理ARP请求。 当它收到响应时, Nmap甚至不需要担心基于IP的ping报文,因为它已经知道该主机正在运行了。 这使得ARP扫描比基于IP的扫描更快更可靠。 所以默认情况下,如果Nmap发现目标主机就在它所在的局域网上,它会进行ARP扫描。 即使指定了不同的ping类型(如 -PI或者 -PS) ,Nmap也会对任何相同局域网上的目标机使用ARP。 如果您真的不想要ARP扫描,指定 --send-ip。

-n (不用域名解析)

告诉Nmap 永远不对它发现的活动IP地址进行反向域名解析。 因为DNS一般比较慢,这可以让事情更快些。

-R (为所有目标解析域名)

告诉Nmap 永远 对目标IP地址作反向域名解析。 一般只有当发现机器正在运行时才进行这项操作。

–system-dns (使用系统域名解析器)

**默认情况下,Nmap通过直接发送查询到您的主机上配置的 域名服务器 来解析域名。**为了提高性能,许多请求 (一般几十个 ) 并发执行。如果您希望使用系统自带的解析器,就指定该选项。 一般不使用该选项,因为它慢多了。系统解析器总是用于IPv6扫描。

端口扫描基础

许多传统的端口扫描器只列出所有端口是 开放 还是 关闭 的, Nmap的信息粒度比它们要细得多。 它把端口分成六个状态: open(开放的), closed(关闭的),filtered(被过滤的), unfiltered(未被过滤的), open|filtered(开放或者被过滤的),或者 closed|filtered(关闭或者被过滤的)。

Nmap所识别的6个端口状态。

open(开放的)

​ 应用程序正在该端口接收TCP 连接或者UDP报文。发现这一点常常是 端口扫描 的主要目标。安全意识强的人们知道每个开放的端口都是攻击的入口。攻击者或者入侵测试者想要发现开放的端口。 而管理员则试图关闭它们或者用防火墙保护它们以免妨碍了合法用户。 非安全扫描可能对开放的端口也感趣,因为它们显示了网络上哪些服务可供使用。

closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其 上监听。 它们可以显示该IP地址上 (主机发现,或者ping扫描) 的主机正在运行up 也对部分操作系统探测有所帮助。 因为关闭的关口也是可访问的,也许过会儿值得再扫描一下,可能又开放了。系统管理员可能会考虑用防火墙封锁这样的端口。 那样他们就会被显示为 被过滤 的状态,下面讨论。

filtered(被过滤的)

由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则或者主机上的软件防火墙。 这样的端口让攻击者感觉很挫折,因为它们几乎不提供 任何信息。有时候它们响应ICMP错误消息如类型3代码13 (无法到达目标: 通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧,不做任何响应。 这迫使Nmap重试若干次以访万一探测包是由于网络阻塞丢弃的呢。 这使得扫描速度明显变慢。

unfiltered(未被过滤的)

未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。 只有用于映射防火墙规 则集的ACK扫描才会把端口分类到这种状态。 用其它类型的扫描如窗口扫描,SYN扫描,或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。

open|filtered(开放或者被过滤的)

当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。

closed|filtered(关闭或者被过滤的)

该状态用于Nmap不能确定端口是关闭的还是被过滤的。

端口扫描技术

这一节讨论Nmap支持的大约十几种扫描技术。 一般一次只用一种方法, 除了UDP扫描(-sU)可能和任何一种TCP扫描类型结合使用。 友情提示一下,端口扫描类型的选项格式是-s<C>

-sS (TCP SYN扫描)

SYN扫描作为默认的也是最受欢迎的扫描选项,是有充分理由的。 它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。 SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成完整的TCP连接。 它还可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态

它常常被称为 半开放扫描 , 因为它不打开一个完全的TCP连接。它发送一个SYN报文, 就好像您真的要打开一个连接,然后等待响应。 回应SYN/ACK表示端口在监听 (开放),而回应 RST (复位)表示没有监听者。如果数次重发后仍没响应, 该端口就被标记为被过滤。

-sT (TCP connect()扫描)

当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立完全的连接,而不像其它扫描类型直接发送原始报文。

当SYN扫描可用时,它通常是更好的选择。因为Nmap对高层的 connect()调用比对原始报文控制更少, 所以效率较低。 **该系统调用完全连接到开放的目标端口而不是像SYN扫描进行 半开放的复位。这不仅花更长时间,需要更多报文得到同样信息,目标机也更可能 记录下连接。IDS(入侵检测系统)可以捕获两者,但大部分机器没有这样的警报系统。 ** 当Nmap连接,然后不发送数据又关闭连接, 许多普通UNIX系统上的服务会在syslog留下记录,有时候是一条加密的错误消息。如果管理员在日志里看到来自同一系统的 一堆连接尝试,她应该知道她的系统被扫描了。

-sA (TCP ACK扫描)

这种扫描与目前为止讨论的其它扫描的不同之处在于 它不能确定open(开放的)或者 open|filtered(开放或者过滤的))端口。 它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的。

ACK扫描探测报文只设置ACK标志位(除非您使用 --scanflags)。当扫描未被过滤的系统时, open(开放的)和closed(关闭的) 端口 都会返回RST报文。Nmap把它们标记为 unfiltered(未被过滤的),意思是 ACK报文不能到达,但至于它们是open(开放的)或者 closed(关闭的) 无法确定。 不响应的端口 或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10, 或者13)的端口,标记为 filtered(被过滤的)。

自定义端口扫描

nmap -P(扫描范围)< 要扫描的目标ip地址>
在这里插入图片描述
也可以对指定端口扫描
例:nmap -p80,135,139,666 192.168.1.190在这里插入图片描述

-Pn 非ping扫描,不执行主机发现,可以跳过防火墙 ( 常用

nmap -Pn < 要扫描的目标ip地址> 常与其他命令联合使用

-sV 探测打开端口对应服务的版本信息

nmap -sV < 要扫描的目标ip地址>
例:
在这里插入图片描述

-vv 对扫描结果详细输出(vv小写)

**`nmap -vv < 要扫描的目标ip地址>`**

输出结果里包含了开放端口扫描方法端口对应服务协议
显示详细扫描结果

操作系统检测 -O(O大写)

**`nmap -O < 要扫描的目标ip地址>`**

在这里插入图片描述

路由追踪扫描

nmap -traceroute < 要扫描的目标ip地址>
例:
路由追踪扫描

  • 路由器追踪功能,能够帮助网络管理员了解网络通行情况
  • 通过路由器追踪可以查找从我们电脑所在地到目的地之间所经常的网络节点, 并可以看到通过各个结点所花费的时间。(图中TRACEROUTE下面的内容)

@万能开关扫描@

包含了1-10000端口ping扫描,操作系统扫描,脚本扫描,路由跟踪,服务探测 (花费时间长)
nmap -A < 要扫描的目标ip地址>
在这里插入图片描述
在这里插入图片描述

识别和绕过防火墙和IDS

-f (数据分片)

即将一个正常数据分成几个包(分片大小必须是8的整数倍)。-f选项要求扫描时(包挺ping扫描)使用小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、 IDS以及其它工具的检测更加困难。必须小心使用这个选项,有些系统在处理这些小包时存在问题,例如旧的网络嗅探器Sniffit在接收 到第一个分段时会立刻出现分段错误。

-D <decoy1 [,decoy2][,ME],...> (使用诱饵隐蔽扫描)

使用这个命令可能会让目标主机管理员认为该扫描使用的是诱饵主机进行扫描的,而不是真实的扫描地址,因此会忽略这次扫描,从而,我们可以使用自己真实的ip地址进行扫描,以达到欺骗目标主机管理员的目的。

生成一堆欺骗性的地址的数据包。为使诱饵扫描起作用,需要使远程主机认为是诱饵在扫描目标网络。 IDS可能会报个某个IP的5-10个端口扫描,但并不知道哪个IP在扫描以及 哪些不是诱饵。使用逗号分隔每个诱饵主机,也可用自己的真实IP作为诱饵,这时可使用 ME选项说明。

注意,作为诱饵的主机须在工作状态,否则会导致目标主机的SYN洪水攻击 如果在网络中只有一个主机在工作,那就很容易确定哪个主机在扫描。

使用过多的诱饵没有任何价值,反而导致扫描变慢并且结果不准确。 此外,一些ISP会过滤哄骗的报文,但很多对欺骗IP包没有任何限制。

使用Decoy(诱骗)方式来掩盖真实的扫描地址,例如-D ip1,ip2,ip3,ip4,ME,这样就会产生多个虚假的ip同时对目标机进行探测,其中ME代表本机的真实地址,这样对方的防火墙不容易识别出是扫描者的身份。

nmap -T4 -F -n -Pn -D 192.168.1.100,192.168.1.101,192.168.1.102,ME 192.168.1.1

实例: 使用诱饵扫描方法来扫描主机端口

sudo nmap -sS 192.168.0.10 -D 192.168.0.2

-S <IP_Address> (源地址哄骗)

​ 生成一个欺骗性的源地址的数据包

-S <IP_Address> 伪装成其他IP地址

这个标志的一个用处是哄骗性的扫描,使得目标认为是 另一个地址 在进行扫描。

-e <interface> (使用指定的接口)

​ 告诉Nmap使用哪个接口发送和接收报文。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值