主动扫描系列文章(1):nmap的基础使用

20201024 -

目录

主动扫描系列文章(1):nmap的基础使用
主动扫描系列文章(2):masscan/zmap扫描主机与端口
主动扫描系列文章(3):nmap与masscan的配合使用

0. 引言

关于nmap的使用,这种文章网上满天飞,本篇文章不打算讲多细致的东西,仅仅是记录一些基础的使用方法,用作后续翻阅的记录。

nmap能干什么就不用说了,在主动探测的领域算是一顶一的大拿,使用方法也不是很难,我这段时间也发现了一些能够图形化来使用nmap的程序,也有一些基于b/s架构的web操作方式,同时,为了能够更快速的进行扫描,通过masscan+nmap的方式来实现快速扫描,关于这部分内容会在另一篇文章中进行具体介绍。本篇文章主要参考了一篇基础的介绍文章[1]。

1. nmap的功能

nmap的主要功能是通过主动发包的形式来探测目的IP的一些信息,这些信息包括以下这些内容:

  • 主机发现(主机是否存活)
  • 端口发现(检测主机开放的端口)
  • 服务发现(检测主机中开放的端口都运行着哪些服务以及版本)
  • 操作系统检测(检测目的IP所运行的操作系统)
  • 漏洞检测(利用NSE脚本来进行探测)

上述功能中,漏洞检测我没有使用过,但是github上能找到一些相关的脚本。其他的功能都在自己的网络中进行过测试,但对于操作系统检测和服务发现的功能,并不一定能够得到非常准确的结果,这部分可能就需要一些其他的手段来实现了。

2. nmap使用方法

2.1 简单用法

最简单的方法,莫过于直接加一个目标IP进行扫描的过程。

nmap 10.0.0.1
nmap 10.0.0.1/16

经过测试(环境:nmap 7.80 centos7),默认进行syn扫描,同时扫描的端口是1-1024加上一些namp-services列出的端口[2]。在nmap的帮助文档中,提到需要拥有一定的权限才能使用原始套接字来进行sS扫描过程。

注意:使用yum安装nmap时,在阿里云的yum源上,只有6.4版本的nmap,版本比较老了,在后面介绍的服务发现的功能中很多主机都不能准确发现,因为自己下载了rpm包进行了7.8的安装。

2.2 目标IP的指定方式

在前面的方式中,已经写出两种方式,一种是直接写IP,如果是多个目标,可以空格隔开;子网就是直接写CIDR的方式。还有一种方式是通过文件的形式,文件的内容是一行IP或者是一个子网。

nmap -iL ip.txt

有时候可能排除一些IP,比如在某个子网中不要扫描网关,再比如某个IP已经扫描过了,不需要再次扫描。

nmap 10.0.0.1/24 --exclude 10.0.0.1
nmap 10.0.0.1/24 --excludefile exclude_file

以上内容都可以通过nmap --help来查看。

另外,可以只打印出来要扫描的目的IP。

nmap -sL 10.0.0.1/24

2.3 扫描技术

在nmap的帮助文档中,列举了非常多的扫描技术,这里不打算全部介绍,仅仅介绍一些用到的。
(1)syn扫描
这种扫描就是通过仅仅发送一个syn包,mirai僵尸网络和masscan在扫描的时候都是使用的这种方式,通过raw_socket编程来实现。

nmap -sS 10.0.0.1

(2)全连接扫描

nmap -sT 10.0.0.1

(3)UDP扫描

nmap -sU 10.0.0.1

(4)FIN扫描
这种是应用于某些部署在IDS/IPS之后的机器。

nmap -sF 10.0.0.1

(5)ping扫描
仅用于主机存货扫描

nmap -sP 10.0.0.1

(6)版本检测
在扫描端口开放的同时,查看其上所运行的软件版本,当然在执行版本探测之前,还是要使用syn扫描来发现端口。

nmap -sV 10.0.0.1

(7)idle扫描

nmap -sI 10.0.0.1

这种扫描方式相对来说比较高级,这里不展开介绍,只需要理解,这种方式不需要跟目标IP进行流量交互。

2.4 OS探测

使用方法

nmap -O 10.0.0.1

该部分探测的方式,是通过一系列的手段,查看系统协议栈中的指纹来实现识别,具体的指纹可以在/usr/share/nmap(centos7下安装)中找到,关于这部分的具体识别方法可以看文章[3]。在实验室中进行了一些扫描,对于一些打印机能够识别到这个是打印机,但是并不能识别出来具体型号,会误报。对于摄像头就更不用提了。关于这边指纹后续会更深入来了解。
在文章[1]中指出,指定参数-PN可以不发送ping请求,以此来躲避防火墙。在进行操作系统检测的时候,有两个参数可以添加。

  • 当无法得到准确的检测结果的时候,一般是无法满足端口要求,使用参数--osscan-limit
  • 猜测最相近的操作系统,--osscan-guess

不过这部分的检测结果,当前场景下,我是不太相信的。识别效果是能够识别出来这个是什么东西,但是具体型号不对,比如说这里有一个华为的防火墙,我能识别出来这是防火墙,但是具体型号不对,当然这也不能算是错误吧,毕竟可能虽然不同的型号,可能他们内置的软件是一样的。

2.5 小节

在本篇文章中,简单介绍了nmap的基础使用方法,但是也挖了很多坑,主要包括以下内容:

  • 漏洞检测的脚本如何编写?或者说我自己怎么写nse的脚本呢
  • 关于nmap使用的操作系统指纹具体是什么原理
  • 怎么和masscan结合起来

还有一个问题比较关键,其实也是之前的时候一直比较关注的,那就是是否支持多线程工作方式,在使用一些开源的框架的时候,比如ivre,会发现扫描的过程非常满,我看过他的工作方式,他是使用的多进程的方式,就是开了多个进程同时工作,但nmap自己也有相应的快速方式,这个是需要后续进阶使用的时候需要了解的。

参考

[1]Nmap from Beginner to Advanced [Updated 2019]
[2]nmap扫描开放端口
[3]Nmap是怎么识别主机指纹的

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值