日期:2019-07-03 21:23:39
更新:
作者:Bay0net
介绍:汇总一下笔记里面的 nmap 使用方式


0x01、 基本信息

Nmap: the Network Mapper - Free Security Scanner
Download the Free Nmap Security Scanner for Linux/Mac/Windows

0x02、使用说明

2.1 参数介绍

-iL:扫描文件
-V:输出版本信息
-O:操作系统探测
-R:总是使用域名解析
-f:分片扫描,挺好用
-A:同时输出-O和-sV 的信息
-D:可以指定几个假的 IP,来扫描
-n:不使用域名解析,可以加快速度。
-sV:版本探测
-sS:SYN 扫描
-sT:TCP 扫描
-sU:UDP 扫描
-sF:FIN 扫描
-sP:ping scan
-sn: 跳过端口扫描
-P0:不 ping,直接扫描,【默认主机是存活的】
-F:默认扫描 1000 个端口,使用 -F 只扫描 100 个 -oN:输出为普通文件
-oX:输出为 xml 文件



欺骗的艺术

-f; --mtu value---------------- 指定使用分片、指定数据包的 MTU
-D decoy1,decoy2,ME------------ 使用诱饵隐蔽扫描
-S IP-ADDRESS------------------ 源地址欺骗
-e interface------------------- 使用指定的接口
-g / --source-port PROTNUM------ 使用指定源端口
--proxies url1,[url2],...------ 使用 HTTP 或者 SOCKS4 的代理
--data-length NUM-------------- 填充随机数据让数据包长度达到 NUM
--ip-options OPTIONS----------- 使用指定的IP选项来发送数据包
--ttl VALUE-------------------- 设置 IP time-to-live 域
--spoof-mac ADDR/PREFIX/VEBDOR- MAC 地址伪装
--badsum----------------------- 使用错误的 checksum 来发送数据包

2.2 举个栗子

局域网扫描存活主机

nmap -sP 172.16.1.0/24 |grep 172

扫描多个主机

nmap 192.168.1.2 192.168.1.5
nmap -sn 192.168.1.100,101,102,103,105
nmap 192.168.1.1-100
nmap 192.168.1.1/24

扫描时排除某主机

nmap 192.168.1.1/24 -exclude 192.168.1.1

猜测操作系统

nmap -O --osscan-guess 192.168.1.1

指定几个假 IP去做分片扫描

nmap -D 192.168.0.1,192.168.0.250,192.168.0.254 10.211.55.3 -f



2.3 常用脚本

发现相关信息时,可以搜索可用的 nse.

NSEDoc Reference Portal

HTTP DOS 攻击

nmap --script http-slowloris --max-parallelism 400  <target>

IIS 短文件名

nmap -p80 --script http-iis-short-name-brute <target>

获取 HTTP 方法

nmap --script http-methods <target>

检测 HTTP.SYS 漏洞

nmap -p80 --script http-vuln-cve2015-1635.nse <target>

验证 SSL 各种漏洞

nmap --vv --script sshv1,ssl-ccs-injection,ssl-cert,ssl-date,ssl-dh-params,ssl-enum-ciphers,ssl-heartbleed,ssl-known-key,sslv2 <target>

识别端口的服务

nmap --script unusual-port <ip>

收集 VNC 信息

nmap -sV -sC <target>

各种爆破

# ftp-brute
nmap --script ftp-brute --script-args brute.emptypass=true,ftp-brute.timeout=30,userdb=/root/dirtionary/usernames.txt,brute.useraspass=true,passdb=/root/dirtionary/passwords.txt,brute.threads=3,brute.delay=6 <target> # mongodb-brute
nmap -p 27017--script mongodb-brute <host> # mssql-brute
nmap -p 445 --script ms-sql-brute --script-args mssql.instance-all,userdb=customuser.txt,passdb=custompass.txt <host> # mysql-empty-password
nmap -sV --script=mysql-empty-password <target> # mysql-brute
nmap --script=mysql-brute <target> # oracle-brute
nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL <host> # pop3-brute
nmap -sV --script=pop3-brute <target> # redis-brute
nmap -p 6379 <ip> --script redis-brute
# rsync-brute
nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' <ip> # smtp-brute
nmap -p 25 --script smtp-brute <host> # smb-brute
nmap --script smb-brute.nse -p445 <host> # rsync-brute
nmap -p 873 --script rsync-brute --script-args 'rsync-brute.module=www' <ip> # rlogin-brute
nmap -p 513 --script rlogin-brute <ip> # ssh-brute
nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst --script-args ssh-brute.timeout=4s <target> # socks-brute
nmap --script socks-brute -p 1080 <host> # telnet-brute
nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst --script-args telnet-brute.timeout=8s <target> # svn-brute
nmap --script svn-brute --script-args svn-brute.repo=/svn/ -p 3690 <host>

2.4 模糊扫描

nmap 脚本主要分为以下几类,在扫描时可根据需要设置 --script= 类别这种方式进行比较笼统的扫描:

auth--------负责处理鉴权证书(绕开鉴权)的脚本
broadcast---在局域网内探查更多服务开启状况,如 dhcp/dns/sqlserver 等服务
brute-------提供暴力破解方式,针对常见的应用如 http/snmp 等
default-----使用 -sC 或 -A 选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery---对网络进行更多的信息,如 SMB 枚举、SNMP 查询等
dos---------用于进行拒绝服务攻击
exploit-----利用已知的漏洞入侵系统
external----利用第三方的数据库或资源,例如进行 whois 解析
fuzzer------模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞
intrusive---入侵性的脚本,此类脚本可能引发对方的 IDS/IPS 的记录或屏蔽
malware-----探测目标机是否感染了病毒、开启了后门等信息
safe--------此类与 intrusive 相反,属于安全性脚本
version-----负责增强服务与版本扫描(Version Detection)功能的脚本
vuln--------负责检查目标机是否有常见的漏洞(Vulnerability)

一些参数

-sC: 等价于--script=default,使用默认类别的脚本进行扫描。
--script=<Lua scripts>: <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述
--script-args=<n1=v1,[n2=v2,...]>: 为脚本提供默认参数
--script-args-file=filename: 使用文件来为脚本提供参数
--script-trace: 显示脚本执行过程中发送与接收的数据
--script-updatedb: 更新脚本数据库
--script-help=<Lua scripts>: 显示脚本的帮助信息,其中<Lua scripts>部分可以逗号分隔的文件或脚本类别。

2.5 端口开放状态

官方文章,推荐看英文版

Port Scanning Basics | Nmap Network Scanning
端口扫描基础 |

其中的 open 和 closed 很好理解,就是开放和关闭,但是 Filtered 和 Unfiltered,个人见解如下。

  • Filtered:如果网络中有防火墙等安全设备,拦截下来了我们发送的探测包,这时我们收到的返回包可能是主机不可达,此时 nmap 就会把端口标记为 Filtered。

  • Unfiltered:只会发生在 TCP ack 扫描类型时当返回 RST 的报文,此时的端口,是能被 nmap 访问的,但是 nmap 无法通过返回的报文来判断端口是否开放,需要我们手工做探测。

2.6 扫描方式

Port Scanning Techniques | Nmap Network Scanning

1、TCP 扫描(-sT)

通过建立 TCP 的三次握手连接来进行信息的传递

① Client 端发送SYN;
② Server 端返回SYN/ACK,表明端口开放;
③ Client 端返回ACK,表明连接已建立;
④ Client 端主动断开连接。
Client->Server:SYN
Server->Client:SYN+ACK
Client->Server:ACK
note right of Client:Client closed connection,finish

2、SYN 扫描(-sS)

需要高权限,因为没有建立三次握手,所以一般无痕迹

Client->Server:SYN
Server->Client:SYN+ACK
Client->Server:RST

3、NULL 扫描、ACK 扫描

发送一个没有任何标志位的数据包给服务器,然后等待服务器的返回内容。隐蔽,但准确率低。可以用来扫描 Windows,Windows 不遵守 RFC 793 标准,不论端口是开启还是关闭的都返回 RST 包

Client->Server:NULL
Server->Client:RST

4、ACK 扫描

通过判断 RST 包中的 TTL 来判断端口是否开启。

Client->Server:ACK
Server->Client:RST
note left of Server:if ttl ≤ 64,host is alive

0x03、其他内容

目录相关

Mac 下使用 brew 安装,默认的一些路径,注意版本

# scripts
/usr/local/Cellar/nmap/7.70/share/nmap/scripts # nselib
/usr/local/Cellar/nmap/7.70/share/nmap/nselib # 字典所在的目录
/usr/local/Cellar/nmap/7.70/share/nmap/nselib/data # mac 地址厂家列表
/usr/local/share/nmap/nmap-mac-prefixes # 端口和服务映射表
/usr/local/share/nmap/nmap-services

alias

n='sodu nmap -sS -T4 -P0 -n -v'

Reference

Nmap Network Scanning—The Official Nmap Project Guide to Network Discovery and Security Scanning

Index of /nsedoc/scripts

端口扫描之王——nmap入门精讲(一) - 谢灿勇 - 博客园

【命令汇总】nmap 使用教程的更多相关文章

  1. 73条日常Linux shell命令汇总,总有一条你需要!

    转载: 73条日常Linux shell命令汇总,总有一条你需要! 1.检查远程端口是否对bash开放: echo >/dev/tcp/8.8.8.8/53 && echo &q ...

  2. 【Linux】Linux 常用命令汇总

    查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpk ...

  3. Nmap扫描教程之基础扫描详解

    Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在 ...

  4. Nmap扫描教程之网络基础服务DHCP服务类

    Nmap扫描教程之网络基础服务DHCP服务类 Nmap网络基础服务 网络基础服务是网络正常工作的基石,常见的网络基础服务包括DHCP服务和DNS服务.其中,DHCP服务用来为计算机动态分配IP地址:D ...

  5. linux命令汇总1

    允许非root用户使用“sudo” root身份登录系统,执行“visudo”,根据示例添加新的一个规则(记住输入的密码是当前用户密码,而不是root密码)#不需要密码执行sudo命令hadoop   ...

  6. Nmap扫描教程之基础扫描具体解释

    Nmap扫描教程之基础扫描具体解释 Nmap扫描基础扫描 当用户对Nmap工具了解后,就可以使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具能够分别对主机.port.版本号.操作系统等实施扫 ...

  7. [转帖]Linux企业运维人员最常用150个命令汇总

    Linux企业运维人员最常用150个命令汇总 https://clsn.io/clsn/lx998.html 基本上都用过了. 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的 ...

  8. 20145222《信息安全系统设计基础》Linux常用命令汇总

    学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...

  9. Keystone 命令汇总

    Keystone 命令汇总   目录 [隐藏] 1 用户(User) 1.1 查看用户列表 1.2 创建用户 1.3 删除用户 1.4 显示用户详细信息 1.5 更新用户的密码 1.6 赋予用户一个角 ...

  10. Oozie命令行常用命令汇总[转]

    Oozie命令行常用命令汇总 有时候脚本跑多了就不愿意在OozieWeb端去看脚本的运行情况了.还好Oozie提供了很多命令行命令.能通过命令行直接检索自己想看到的脚本信息.在这里简单进行一下总结.一 ...

随机推荐

  1. keepalived和lvs实现mysql读负载均衡

    keepalived+lvs实现对mysql读负载均衡 环境:redhat 6.5 real server: 172.25.254.189 172.25.254.224 lvs: 172.25.254 ...

  2. super、this关键字

    super调用(父类) 调用方法   语法: super.父类方法名(形参列表);        可以在子类方法和构造器中使用,调用父类被覆盖的方法. 实例变量 语法: super.父类实例变量名;  ...

  3. Directed Roads CodeForces - 711D (基环外向树 )

    ZS the Coder and Chris the Baboon has explored Udayland for quite some time. They realize that it co ...

  4. 【洛谷P4393】Sequence

    题目大意:给定一个长度为 N 的序列,每次可以合并相邻的两个元素,代价是两者中较大的值,合并之后的值也为两者较大的值,求合并 N-1 次后的最小代价是多少. 题解: 除了最大值以外,每个值均只会被合并 ...

  5. @ResponseStatus注解作用

    @ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中 这里我们说一下加在目标方法上的这种情况,注解中有两个参数,value属性设置异常的状态码,reaseon是 ...

  6. 【转】原生js实现移动端h5长按事件

    $("#target").on({ touchstart: function(e) { // 长按事件触发 timeOutEvent = setTimeout(function() ...

  7. px2rem在vue项目中的使用

    使用方式: 1.安装 cnpm install px2rem-loader2. https://www.npmjs.com/package/px2rem-loader module.exports = ...

  8. day2计算机基础作业题

    1.什么是编程? 编程就是程序员用某种编程语言的语法格式将将自己脑中想让计算机做的事情写成文件.所以编程的结果就是一堆的文件,一堆文件就是的程序. 2.计算机的组成: 1).CPU 其中CPU又分为控 ...

  9. 【NOIP2016提高A组五校联考1】排队

    题目 分析 首先预处理出每个点的优先级,当有一个人进入时,一定会走到优先级最大的空房间中. 把所有空的房间扔到一个堆中,按优先级大小维护这个堆. 答案怎么求就不说了,很容易想到,就只讲操作吧. 对于第 ...

  10. 【leetcode&CN&竞赛】1198.Find Smallest Common Element in All Rows

    题目如下: 给你一个矩阵 mat,其中每一行的元素都已经按 递增 顺序排好了.请你帮忙找出在所有这些行中 最小的公共元素. 如果矩阵中没有这样的公共元素,就请返回 -1. 示例: 输入:mat = [ ...