Nmap扫描器 --- 简单使用

 

扫描器是一种能够自动检测主机安全性弱点的程序。扫描器通过发送特定的网络数据包,记录目标主机的应答消息,从而收集关于目标主机的各种信息。目前网络上有很多扫描软件,比较著名的扫描器有SSS,X-Scan,Superscan等,功能最强大的当然是Nmap了。

Nmap(Network Mapper)是一款开放源代码的网络探测和安全审核工具。它用于快速扫描一个网络和一台主机开放的端口,还能使用TCP/IP协议栈特征探测远程主机的操作系统类型。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。Nmap最初是用于unix系统的命令行应用程序。在2000年的时候,这个应用程序有了windows版本,可以直接安装使用。

 

Nmap命令的格式为:

Nmap [ 扫描类型 ... ] [ 通用选项 ] { 扫描目标说明 }

下面对Nmap命令的参数按分类进行说明:

1. 扫描类型

-sTTCP connect()扫描,这是最基本的TCP扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sSTCP同步扫描(TCP SYN),因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF,-sX,-sN秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。
-sPping扫描,用ping方式检查网络上哪些主机正在运行。当主机阻塞ICMP echo请求包是ping扫描是无效的。nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。
-sU如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用此选项。
-sAACK扫描,这项高级的扫描方法通常可以用来穿过防火墙。
-sW滑动窗口扫描,非常类似于ACK的扫描。
-sRRPC扫描,和其它不同的端口扫描方法结合使用。
-bFTP反弹攻击(bounce attack),连接到防火墙后面的一台FTP服务器做代理,接着进行端口扫描。

2. 通用选项

-P0在扫描之前,不ping主机。
-PT扫描之前,使用TCP ping确定哪些主机正在运行。
-PS对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。
-PI设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。
-PB这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志,也就是操作系统类型。
-I打开nmap的反向标志扫描功能。
-f使用碎片IP数据包发送SYN、FIN、XMAS、NULL。包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。
-v冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。
-S <IP>在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况使用这个选项给出你的IP地址。
-g port设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。
-oN把扫描结果重定向到一个可读的文件logfilename中。
-oS扫描结果输出到标准输出。
--host_timeout设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。
--max_rtt_timeout设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。
--min_rtt_timeout设置nmap对每次探测至少等待你指定的时间,以毫秒为单位。
-M count置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。

3. 扫描目标

目标地址可以为IP地址,CIRD地址等。如192.168.1.2,222.247.54.5/24
-iL filename从filename文件中读取扫描的目标。
-iR让nmap自己随机挑选主机进行扫描。
-p端口 这个选项让你选择要进行扫描的端口号的范围。如:-p 20-30,139,60000。
-exclude排除指定主机。
-excludefile排除指定文件中的主机。

 扫描案例

1. 扫描C段(局域网)存活主机

nmap -sP www.XXX.com/24

nmap -sP 192.168.1.*  (注释:“*”为通配符)

2. 扫描指定IP开放端口号

nmap -sS -p- -v 192.168.1.100

-p-为全端口扫描,和[1-65535]一样,建议使用

不使用默认Nmap认为危险的100个端口号

3. 扫描指定IP所开端口及服务版本

nmap -sV -v 192.168.1.100

4. 探测主机操作系统

nmap -O www.XXX.com

扫描准确度以百分比显示,未必准确

5. 穿透防火墙扫描

nmap -P0  www.XXX.com

6. 全面探测,-A包含OS 探测,版本探测,脚本扫描,traceroute

nmap -A www.XXX.com

7. 使用脚本扫描

nmap –script=”脚本名称” www.XXX.com

如在局域网上扫找 Conficker 蠕虫病毒

nmap -PN -T4 -p139,445 -n -v –script=smb-check-vulns –script-args safe=1 192.168.0.1-254

脚本放在Nmap安装目录script下(在Kali Linux系统中,Nmap脚本位于目录/usr/share/nmap/scripts),官网可查各个脚本功能。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

auth:此类脚本使用暴力破解等技术找出目标系统上的认证信息。

f

default:启用--sC 或者-A 选项时运行此类脚本。这类脚本同时具有下述特点:执行速度快;输出的信息有指导下一步操作的价值;输出信息内容丰富、形式简洁;必须可靠;不会侵入目标系统;能泄露信息给第三方。

 

discovery:该类脚本用于探索网络。

 

dos:该类脚本可能使目标系统拒绝服务,请谨慎使用。

 

exploit:该类脚本利用目标系统的安全漏洞。在运行这类脚本之前,渗透测试人员需要获取 被测单位的行动许可。

 

external:该类脚本可能泄露信息给第三方。

 

fuzzer:该类脚本用于对目标系统进行模糊测试。

 

instrusive:该类脚本可能导致目标系统崩溃,或耗尽目标系统的所有资源。

 

malware:该类脚本检査目标系统上是否存在恶意软件或后门。

 

safe:该类脚本不会导致目标服务崩溃、拒绝服务且不利用漏洞。

 

version:配合版本检测选项(-sV),这类脚本对目标系统的服务程序进行深入的版本检 测。

 

vuln:该类脚本可检测检査目标系统上的安全漏洞。

注意:以上仅仅只是一些常用的参数和案例,要想学习更多的方法可参考以下链接:http://www.yunshouce.com/g62/nmap-man-page/5.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Windows系统下使用Python-nmap可以进行网络扫描和端口扫描。Python-nmap是一个Python库,它封装了Nmap安全扫描工具的功能,可以通过Python代码来调用Nmap进行扫描操作。 要在Windows系统中使用Python-nmap,首先需要确保已经安装了Python和Nmap。以下是使用Python-nmap的基本步骤: 1. 安装Python:从Python官方网站下载并安装适合您系统的Python版本。 2. 安装Nmap:从Nmap官方网站下载并安装适合您系统的Nmap版本。 3. 安装Python-nmap库:打开命令提示符或者PowerShell,并执行以下命令来安装Python-nmap库: ``` pip install python-nmap ``` 4. 编写Python代码:创建一个Python脚本文件,例如`scan.py`,并在其中编写扫描代码。以下是一个简单的示例: ```python import nmap nm = nmap.PortScanner() result = nm.scan('127.0.0.1', '22-443') for host in result['scan']: print('Host: %s' % host) for port in result['scan'][host]['tcp']: print('Port: %s\tState: %s' % (port, result['scan'][host]['tcp'][port]['state'])) ``` 上述代码使用了`nmap.PortScanner()`创建了一个扫描器对象,然后使用`scan()`方法对指定IP地址和端口范围进行扫描扫描结果存储在`result`变量中,可以根据需要进行处理和输出。 5. 运行Python脚本:在命令提示符或者PowerShell中执行以下命令来运行Python脚本: ``` python scan.py ``` 执行后,您将看到扫描结果输出在命令行中。 希望以上介绍对您有帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daibaohui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值