经过上一期对Linux Desktop的学习,小伙伴们应该对在kali上的一些操作能看懂了,这期内容就是主要在kali的终端内,以root身份进
行操作

nmap的基本参数

学习本教程,我们应该明白每个工具/程序在终端下运行是可以通过添加修改参数来实现程序的不同功能,而参数的文本形式是类似
程序名 -参数程序名 /参数当然,多个参数是可以叠加的,以达到复杂的功能效果

以下是nmap的参数:

7.70 ()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
用法:nmap [扫描类型] [选项] {目标指定}
目标指定:
可以传递主机名、IP地址、网络等。
例如:scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <输入文件名>:从主机/网络列表中输入
-iR <主机数>:选择随机目标
--exclude <主机1 [,主机2] [,主机3] ,...>:排除主机/网络
--excludefile <排除文件>:从文件中排除列表
主机发现:
-sL:列表扫描 - 仅列出要扫描的目标
-sn:Ping扫描 - 禁用端口扫描
-Pn:将所有主机视为在线 - 跳过主机发现
-PS/PA/PU/PY [端口列表]:给定端口的TCP SYN/ACK、UDP或SCTP发现
-PE/PP/PM:ICMP回显、时间戳和网络掩码请求发现探测
-PO [协议列表]:IP协议Ping
-n/-R:从不进行DNS解析 / 总是解析 [默认:有时]
--dns-servers <服务器1 [,服务器2] ,...>:指定自定义DNS服务器
--system-dns:使用操作系统的DNS解析器
--traceroute:追踪到每个主机的路径
扫描技术:
-sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon扫描
-sU:UDP扫描
-sN/sF/sX:TCP Null、FIN和Xmas扫描
--scanflags <标志>:自定义TCP扫描标志
-sI <僵尸主机 [:探测端口]>:空闲扫描
-sY/sZ:SCTP INIT/COOKIE-ECHO扫描
-sO:IP协议扫描
-b <FTP中继主机>:FTP中继扫描
端口指定和扫描顺序:
-p <端口范围>:仅扫描指定端口
例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <端口范围>:排除指定端口不扫描
-F:快速模式 - 扫描比默认扫描更少的端口
-r:按顺序扫描端口 - 不随机化
--top-ports <数字>:扫描最常见的<数字>个端口
--port-ratio <比率>:扫描比<比率>更常见的端口
服务/版本检测:
-sV:探测开放端口以确定服务/版本信息
--version-intensity <级别>:设置从0(轻量)到9(尝试所有探测)
--version-light:限制为最可能的探测(强度2)
--version-all:尝试每个探测(强度9)
--version-trace:显示详细的版本扫描活动(用于调试)
脚本扫描:
-sC:等同于--script=default
--script=<Lua脚本>:<Lua脚本>是用逗号分隔的目录、脚本文件或脚本类别列表
--script-args=<n1=v1 [,n2=v2,...]>:为脚本提供参数
--script-args-file=文件名:在文件中提供NSE脚本参数
--script-trace:显示所有发送和接收的数据
--script-updatedb:更新脚本数据库。
--script-help=<Lua脚本>:显示脚本的帮助信息。
<Lua脚本>是用逗号分隔的脚本文件或脚本类别列表。
操作系统检测:
-O:启用操作系统检测
--osscan-limit:将操作系统检测限制在有希望的目标上
--osscan-guess:更积极地猜测操作系统
时间和性能:
接受<时间>的选项以秒为单位,或者在值后附加'ms'(毫秒),
's'(秒),'m'(分钟), 或'h'(小时)(例如30m)。
-T<0-5>:设置时间模板(数字越高越快)
--min-hostgroup / max-hostgroup <大小>:并行主机扫描组大小
--min-parallelism / max-parallelism <探测数>:探测并行化
--min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout <时间>:指定
探测往返时间。
--max-retries <尝试次数>:限制端口扫描探测重传次数。
--host-timeout <时间>:在这么长时间后放弃目标
--scan-delay / --max-scan-delay <时间>:调整探测之间的延迟
--min-rate <数字>:每秒发送的数据包数不少于<数字>
--max-rate <数字>:每秒发送的数据包数不多于<数字>
防火墙/IDS规避和欺骗:
-f;--mtu <值>:分片数据包(可选地使用给定的MTU)
-D <诱饵1,诱饵2 [,ME],...>:用诱饵掩盖扫描
-S <IP地址>:欺骗源地址
-e <接口>:使用指定接口
-g/--source-port <端口号>:使用给定端口号
--proxies <url1 [,url2],...>:通过HTTP/SOCKS4代理中继连接
--data <十六进制字符串>:在发送的数据包中附加自定义负载
--data-string <字符串>:在发送的数据包中附加自定义ASCII字符串
--data-length <数字>:在发送的数据包中附加随机数据
--ip-options <选项>:发送带有指定IP选项的数据包
--ttl <值>:设置IP生存时间字段
--spoof-mac <MAC地址/前缀/供应商名称>:欺骗你的MAC地址
--badsum:发送带有错误的TCP/UDP/SCTP校验和的数据包
输出:
-oN/-oX/-oS/-oG <文件>:将扫描结果以普通、XML、脚本小子、
和可检索的格式分别输出到指定的文件名。
-oA <基名>:同时以三种主要格式输出
-v:提高冗长级别(使用-vv或更多以获得更强效果)
-d:提高调试级别(使用-dd或更多以获得更强效果)
--reason:显示端口处于特定状态的原因
--open:仅显示开放(或可能开放)的端口
--packet-trace:显示所有发送和接收的数据包
--iflist:打印主机接口和路由(用于调试)
--append-output:将内容附加到指定的输出文件而不是覆盖
--resume <文件名>:恢复中断的扫描
--stylesheet <路径/URL>:用于将XML输出转换为HTML的XSL样式表
--webxml:从Nmap.Org引用样式表以获得更便携的XML
--no-stylesheet:防止将XSL样式表与XML输出关联
其他:
-6:启用IPv6扫描
-A:启用操作系统检测、版本检测、脚本扫描和traceroute
--datadir <目录名>:指定自定义Nmap数据文件位置
--send-eth/--send-ip:使用原始以太网帧或IP数据包发送
--privileged:假设用户完全有权限
--unprivileged:假设用户没有原始套接字权限
-V:打印版本号
-h:打印此帮助摘要页面。
示例:
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
请参阅手册页(https://nmap.org/book/man.html)以获取更多选项和示例。

nmap常见参数用法

在使用此工具前,先执行sudo su的命令,让终端进入root模式
常用参数一:nmap内网存活主机发现
示例一:nmap -sP CIDR(IP地址/子网掩码)(扫描过程中使用了TCP SYN扫描、ICMP echo Request来探测主机存活)
alt text
PS:此处博主使用了ifconfig的指令,是为了查看咱自己机器在内网IP地址,以便确定扫描范围,例如博主的IP是10.0.2.15
扫描时最好是扫描10.0.2.0/24
示例二:nmap -sn CIDR(对该网络中所有主机进行ping扫描,以探测主机存活性)
alt text
示例三:nmap -sn CIDR -oX test.xml(对该网络中所有主机进行ping扫描,以探测主机存活性。同时将结果输出到test.xml中,以便后续使用。)
alt text
常用参数二:nmap开发端口扫描
端口对于服务器/网站运维及网络安全都是非常重要的,这里博主先普及一下常见端口知识:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
21端口:FTP 文件传输服务
22端口:SSH协议、SCP(文件传输)、端口号重定向
23/tcp端口:TELNET 终端仿真服务
25端口:SMTP 简单邮件传输服务
53端口:DNS 域名解析服务
69/udp:TFTP
80/8080/3128/8081/9098端口:HTTP协议代理服务器
110/tcp端口:POP3(E-mail)
119端口:Network
123端口:NTP(网络时间协议)
135、137、138、139端口: 局域网相关默认端口,应关闭
161端口:SNMP(简单网络管理协议)
389端口:LDAP(轻量级目录访问协议)、ILS(定位服务)
443/tcp 443/udp:HTTPS服务器
465端口:SMTP(简单邮件传输协议)
873端口:rsync
1080端口:SOCKS代理协议服务器常用端口号、QQ
1158端口:ORACLE EMCTL
1433/tcp/udp端口:MS SQL*SERVER数据库server、MS SQL*SERVER数据库monitor
1521端口:Oracle 数据库
2100端口:Oracle XDB FTP服务
3389端口:WIN2003远程登录
3306端口:MYSQL数据库端口
5432端口:postgresql数据库端口
5601端口:kibana
6379端口:Redis数据库端口
8080端口:TCP服务端默认端口、JBOSS、TOMCAT、Oracle XDB(XML 数据库)
8081端口:Symantec AV/Filter for MSE
8888端口:Nginx服务器的端口
9000端口:php-fpm
9080端口:Webshpere应用程序
9090端口:webshpere管理工具
9200端口:Elasticsearch服务器端口
10050端口:zabbix_server 10050
10051端口:zabbix_agent
11211端口:memcache(高速缓存系统)
27017端口:mongoDB数据库默认端口
22122端口:fastdfs服务器默认端口

本教程不要求记住这些端口及其作用,因为在后续有涉及的端口会进行细讲,所以这边大家了解一下就好。
对指定IP或网站的开放端口的扫描命令是nmao IP/Doaim,这边博主直接扫描自己的博客了
alt text
可以看到这里博主开放了不少端口。
常用指令三:基础漏洞扫描
其实这个指令包含多个参数,已经不局限于漏洞扫描了,但是因为其全面性所以可以最大限度发挥出nmap的漏洞扫描挖掘能力,其中包括-O:启用操作系统检测
-A:启用操作系统检测、版本检测、脚本扫描和traceroute -sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon扫描
--script=<Lua脚本>:<Lua脚本>是用逗号分隔的目录、脚本文件或脚本类别列表
所以格式就是:nmap -O -sS -A --script vuln IP
此操作等待时间较久,可以不断回车查看进度
由于博主网络环境较差,限制严重,就不做演示了。