如有侵权,请联系删除
linux下安装
sudo apt install nmap
windows网上有教程
nmap功能有一些,但是身为小白的我,能用到的也就是端口扫描,对目标主机的端口扫描
如果是扫Web应用,有一款漏扫工具叫AWVS
,这个后边再介绍吧
nmap [相关参数] [ip/域名]
具体例子,我们扫一下千峰教育
的官网
nmap -T4 -A -v qfedu.com
其中:
-A
:表示以进攻行方式扫描-T4
:指定扫描时的时序,一共0 - 5
6个级别,数字越大,扫的越快。但是更容易被发现也更容易被拦截-v
:表示显示扫面细节nmap --help
使用--help
即可获得全部参数说明,四级没过的甩到任意一个翻译软件即可
目标主机的IP全部使用127.0.0.1代替
扫描单个地址
nmap 127.0.0.1
扫描多个地址
当你想扫描的主机不在同一网段或者只是想单独扫那么两三个主机时
中间使用“ ”(空格)连接
nmap 127.0.0.1 127.0.0.2
扫描连续的网段
当你想扫描的网段是127.0.0.1~127.0.0.100时
中间使用“-”(减号)连接
nmap 127.0.0.1-100
扫描目标主机所在的某个网段
当你想扫描的是和目标主机同在某一网段(比如说C段),也就是想扫的是127.0.0.1~127.0.0.255时
nmap 127.0.0.1/24
这里可以科普一下这个/24
是啥意思:
192.168.0.0/24这是IP地址的一个规范写法,前面是IP地址,后面跟一个斜杠以及一个数字,这条斜杠及后面的数字称为网络掩码(network mask)。斜杠后面的数字表示有意义的比特位的个数(从左到右)。例如IP地址:255.255.255.255是IPv4中最大可能的IP地址,每个数字(255)都是由8个比特位表示的,每个比特位非0即1,最大值即为11111111,即2^8=256(0-255)。了解了IP地址之后,就很容易理解上述的写法了。比如192.168.0.0/24中的24表示从左到右的24位(也就是前24位)有效,那么剩下的8位可以是任意数值,可以是0-254之间的任一地址(255为广播地址)。同样192.168.0.0/32也很好理解,就是上述IP地址的前32位有效,也就是所有的位都是有效的,即为192.168.0.0。
而上边提到的有意义的比特位个数
是怎么回事呢?
就是把子网掩码转换成二进制之后,1的个数,比如
255.255.255.0
--二进制-> 11111111 11111111 1111111 00000000
(24个1组成)
255.255.255.252
--二进制-> 11111111 11111111 1111111 11111100
(30个1组成)
这里再附赠一份表
IP总数 | 子网掩码 | C段个数 | |
---|---|---|---|
/30 | 4 | 255.255.255.252 | 1/64 |
/29 | 8 | 255.255.255.248 | 1/32 |
/28 | 16 | 255.255.255.240 | 1/16 |
/27 | 32 | 255.255.255.224 | 1/8 |
/26 | 64 | 255.255.255.192 | 1/4 |
/24 | 256 | 255.255.255.0 | 1 |
/23 | 512 | 255.255.254.0 | 2 |
/22 | 1024 | 255.255.252.0 | 4 |
/21 | 2048 | 255.255.248.0 | 8 |
/20 | 4096 | 255.255.240.0 | 16 |
/19 | 8192 | 255.255.224.0 | 32 |
/18 | 16384 | 255.255.192.0 | 64 |
/17 | 32768 | 255.255.128.0 | 128 |
/16 | 65536 | 255.255.0.0 | 256 |
扫描txt文档中主机列表
只需要使用-iL
将文件导入即可,注意要是绝对路径
namp -iL ~/home/xxx/Documents/test.txt
扫描除某个地址之外所有的地址
只需要使用-exclude
参数将地址排除即可
nmap 127.0.0.1-100 -exclude 127.0.0.50
扫描某个地址的指定端口
使用-p
参数进行指定即可,多个端口之间使用“,”(逗号)连接
nmap 127.0.0.1 -p 21,22,80,3389
目标地址所在C段的在线状况
nmap -sP 127.0.0.1
对目标地址进行路由跟踪
namp --traceroute 127.0.0.1
目标地址操作系统的指纹识别
nmap -O 127.0.0.1
目标地址的端口对应的服务版本检测
nmap -sV 127.0.0.1
这里可以和普通扫描进行一下对比,深入理解一下什么叫做服务版本
nmap 43.247.91.228
sudo nmap 43.247.91.228 -T5
Starting Nmap 7.60 ( https://nmap.org ) at 2020-04-10 15:42 CST
Warning: 43.247.91.228 giving up on port because retransmission cap hit (2).
Nmap scan report for 43.247.91.228
Host is up (0.93s latency).
Not shown: 536 filtered ports, 457 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
81/tcp open hosts2-ns
82/tcp open xfer
83/tcp open mit-ml-dev
84/tcp open ctf
85/tcp open mit-ml-dev
Nmap done: 1 IP address (1 host up) scanned in 28.81 seconds
nmap -sV 43.247.91.228
sudo nmap 43.247.91.228 -T5 -sV
Starting Nmap 7.60 ( https://nmap.org ) at 2020-04-10 15:44 CST
Warning: 43.247.91.228 giving up on port because retransmission cap hit (2).
Nmap scan report for 43.247.91.228
Host is up (0.88s latency).
Not shown: 535 filtered ports, 458 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4 (protocol 2.0)
80/tcp open http nginx 1.16.1
81/tcp open http Apache httpd 2.4.7 ((Ubuntu))
82/tcp open xfer?
83/tcp open http Apache httpd 2.4.7 ((Ubuntu))
84/tcp open http Apache httpd 2.4.7 ((Ubuntu))
85/tcp open mit-ml-dev?
STATE(状态)有那些以及含义是什么
STATE | 含义 |
---|---|
open | 开放的,外部可以访问 |
filtered | 被过滤的,端口被防火墙或其他什么东西阻止,外部不可访问 |
closed | 关闭的,未开启该端口 |
unfiltered | 未被过滤的,表示nmap无法确定当前端口的状态 |
open/filtered | 开放的或被过滤的,nmap不能识别 |
closed/filtered | 关闭的或未被过滤的,nmap不能识别 |
常用脚本
-sC/--script=default
:使用默认脚本--script=
:指定某个脚本--script-args=key1=value1,key2=value2...
:用于传递脚本里的参数,key是参数名,value是参数值,多个参数用逗号连接。(无敌菜鸡的我表示,根本不知道脚本传惨是要干嘛,但总觉得有用,就记在这里)--scirpt-args-file=filename
:使用文件为脚本提供参数。(TIPS:args的意思就是变量名)--script-trace
:显示脚本执行过程中发送和接受的数据--script-updatedb
:更新脚本数据库。nmap的脚本存在一个文件中,类似一个小型数据库,执行该命令即可更新--script-help=
:显示一个脚本的详细信息(超级不推荐使用)实例
鉴权扫描:对目标进行弱口令检测
nmap --script=auth 127.0.0.1
暴力破解:对数据库进行爆破
nmap --script=brute 127.0.0.1
(Q:等下,这个和burp的爆破有什么区别呢?)
(A:我觉得可能nmap更多的是对于主机进行扫描,burp是针对应用那个层面的)
扫描常见漏洞:扫描主机是否存在特别常见的漏洞(一般就是不存在喽)
nmap --script=vuln 127.0.0.1
总的来说,我觉得前边的那部分对我来说还是蛮有用的,让我更加熟悉了nmap扫描结果的含义,以及怎么扫描多个地址,怎么扫描一个网段,还有各种参数的介绍
但是后边nmap脚本的使用真的给我干懵了,我只能大概拜读一下,不敢深看