Nmap学习笔记

基本操作

nmap 0.0.0.0(本机IP)

nmap默认发送一个arp的ping包,探测目标主机0-1000的端口。arp(地址解析协议)

nmap ip ip
nmap 0.0.0.0 1.1.1.1

快速扫描多个IP

nmap -p (范围) IP
nmap -p 80,20-200 1.1.1.1

指定端口和范围进行扫描

nmap 192.168.227.1/24 -exclude 192.168.227.1

扫描除过某一个ip外的所有子网主机

nmap -sL 192.168.227.1/24

显示扫描的所有主机的列表

namp -sp 1.1.1.1-255

扫描内网的一个IP范围(ping扫描)

nmap -sS 1.1.1.1
Tcp SYN Scan (sS) 这是一个基本的扫描方式,它被称为半开放扫描,因为这种技术使得Nmap不需要通过完整的握手,就能获得远程主机的信息。Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。这个就是SYN扫描的优势.如果Nmap命令中没有指出扫描类型,默认的就是Tcp SYN.但是它需要root/administrator权限。

SYN半开放扫描

namp -sT 192.168.227.154
不同于Tcp SYN扫描,Tcp connect()扫描需要完成三次握手,并且要求调用系统的connect().Tcp connect()扫描技术只适用于找出TCP和UDP端口。

TCP扫描

nmap -sU 192.168.206.124
这种扫描技术用来寻找目标主机打开的UDP端口.它不需要发送任何的SYN包,因为这种技术是针对UDP端口的。UDP扫描发送UDP数据包到目标主机,并等待响应,如果返回ICMP不可达的错误消息,说明端口是关闭的,如果得到正确的适当的回应,说明端口是开放的.

UDP扫描

nmap -sV 192.168.206.135
版本检测是用来扫描目标主机和端口上运行的软件的版本.它不同于其它的扫描技术,它不是用来扫描目标主机上开放的端口,不过它需要从开放的端口获取信息来判断软件的版本.使用版本检测扫描之前需要先用TCPSYN扫描开放了哪些端口。这个扫描的话,速度会慢一些,67.86秒扫一个IP

Version版本扫描

nmap -O 192.168.126.206

OS操作系统类型检测

nmap -O -PN 192.168.206.124
如果远程主机有防火墙,IDS和IPS系统,你可以使用-PN命令来确保不ping远程主机,因为有时候防火墙会组织掉ping请求.-PN命令告诉Nmap不用ping远程主机。使用-PN参数可以绕过PING命令,但是不影响主机的系统的发现。
这个扫描整个c段局域网的话还是比较耗时的,但是信息收集很详细,大概耗时9分钟。

NO ping 扫描

10.1.1.0/24 = 10.1.1.1-10.1.1.255 #c段扫描
10.1.1.0/16 = 10.1.1.1-10.1.255.255 #b段扫描
10.1.1.0/8 = 10.1.1.1-10.255.255.255 #a段扫描

网段扫描格式

nmap -iL ip-address.txt

从文件中读取需要扫描的列表

nmap高级用法之脚本使用

MYSQL暴力破解

nmap –script=mysql-brute

3306/tcp open mysql
| mysql-brute:
| Accounts
| root:root - Valid credentials

MsSQL进行暴力破解

nmap -p 1433 –script ms-sql-brute –script-args userdb=customuser.txt,passdb=custompass.txt

| ms-sql-brute:
| [192.168.100.128\TEST]
| No credentials found
| Warnings:
| sa: AccountLockedOut
| [192.168.100.128\PROD]
| Credentials found:
| webshop_reader:secret => Login Success
| testuser:secret1234 => PasswordMustChange
|_ lordvader:secret1234 => Login Success

对Oracle数据库进行暴破解

nmap –script oracle-brute -p 1521 –script-args oracle-brute.sid=ORCL

PORT STATE SERVICE REASON
1521/tcp open oracle syn-ack
| oracle-brute:
| Accounts
| system:powell => Account locked
| haxxor:haxxor => Valid credentials
| Statistics
|_ Perfomed 157 guesses in 8 seconds, average tps: 19

对SSH进行暴力破解

nmap -p 22 –script ssh-brute –script-args userdb=users.lst,passdb=pass.lst –script-args ssh-brute.timeout=4s

22/ssh open ssh
| ssh-brute:
| Accounts
| username:password
| Statistics
|_ Performed 32 guesses in 25 seconds.

利用DNS进行子域名暴力破解

nmap –script dns-brute www.baidu.com

λ nmap –script dns-brute www.baidu.com
Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 13:12 ?
Nmap scan report for www.baidu.com (180.97.33.108)
Host is up (0.018s latency).
Other addresses for www.baidu.com (not scanned): 180.97.33.10
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Host script results:
| dns-brute:
| DNS Brute-force hostnames:
| admin.baidu.com - 10.26.109.19
| mx.baidu.com - 61.135.163.61
| svn.baidu.com - 10.65.211.174
| ads.baidu.com - 10.42.4.225
Nmap done: 1 IP address (1 host up) scanned in 92.64 seconds

参数详解

Nmap支持主机名,ip,网段的表示方式
例如:blah.highon.coffee, namp.org/24, 192.168.0.1;10.0.0-25.1-254

-iL filename 从文件中读取待检测的目标,文件中的表示方法支持机名,ip,网段
-iR hostnum 随机选取,进行扫描.如果-iR指定为0,则是无休止的扫描
–exclude host1[, host2] 从扫描任务中需要排除的主机
–exculdefile exclude_file 排除文件中的IP,格式和-iL指定扫描文件的格式相同

主机发现

-sL 仅仅是显示,扫描的IP数目,不会进行任何扫描
-sn ping扫描,即主机发现
-Pn 不检测主机存活
-PS/PA/PU/PY[portlist] TCP SYN Ping/TCP ACK Ping/UDP Ping发现
-PE/PP/PM 使用ICMP echo, timestamp and netmask 请求包发现主机
-PO[prococol list] 使用IP协议包探测对方主机是否开启
-n/-R 不对IP进行域名反向解析/为所有的IP都进行域名的反响解析

扫描技巧

-sS/sT/sA/sW/sM TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCP Maimon扫描
-sU UDP扫描
-sN/sF/sX TCP Null,FIN,and Xmas扫描
–scanflags 自定义TCP包中的flags
-sI zombie host[:probeport] Idlescan
-sY/sZ SCTP INIT/COOKIE-ECHO 扫描
-sO 使用IP protocol 扫描确定目标机支持的协议类型
-b “FTP relay host” 使用FTP bounce scan

指定端口和扫描顺序

-p 特定的端口 -p80,443 或者 -p1-65535
-p U:PORT 扫描udp的某个端口, -p U:53
-F 快速扫描模式,比默认的扫描端口还少
-r 不随机扫描端口,默认是随机扫描的
–top-ports “number” 扫描开放概率最高的number个端口,出现的概率需要参考nmap-services文件,ubuntu中该文件位于/usr/share/nmap.nmap默认扫前1000个
–port-ratio “ratio” 扫描指定频率以上的端口

服务版本识别

-sV 开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测
–version-intensity “level” 设置版本扫描强度,强度水平说明了应该使用哪些探测报文。数值越高,服务越有可能被正确识别。默认是7
–version-light 打开轻量级模式,为–version-intensity 2的别名
–version-all 尝试所有探测,为–version-intensity 9的别名
–version-trace 显示出详细的版本侦测过程信息

脚本扫描

-sC 根据端口识别的服务,调用默认脚本
–script=”Lua scripts” 调用的脚本名
–script-args=n1=v1,[n2=v2] 调用的脚本传递的参数
–script-args-file=filename 使用文本传递参数
–script-trace 显示所有发送和接收到的数据
–script-updatedb 更新脚本的数据库
–script-help=”Lua script” 显示指定脚本的帮助

OS识别

-O 启用操作系统检测,-A来同时启用操作系统检测和版本检测
–osscan-limit 针对指定的目标进行操作系统检测(至少需确知该主机分别有一个open和closed的端口)
–osscan-guess 推测操作系统检测结果,当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认进行这种匹配
防火墙/IDS躲避和哄骗
-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来发送数据包
Nmap 输出
-oN 将标准输出直接写入指定的文件
-oX 输出xml文件
-oS 将所有的输出都改为大写
-oG 输出便于通过bash或者perl处理的格式,非xml
-oA BASENAME 可将扫描结果以标准格式、XML格式和Grep格式一次性输出
-v 提高输出信息的详细度
-d level 设置debug级别,最高是9
–reason 显示端口处于带确认状态的原因
–open 只输出端口状态为open的端口
–packet-trace 显示所有发送或者接收到的数据包
–iflist 显示路由信息和接口,便于调试
–log-errors 把日志等级为errors/warings的日志输出
–append-output 追加到指定的文件
–resume FILENAME 恢复已停止的扫描
–stylesheet PATH/URL 设置XSL样式表,转换XML输出
–webxml 从namp.org得到XML的样式
–no-sytlesheet 忽略XML声明的XSL样式表

其他nmap选项

-6 开启IPv6
-A OS识别,版本探测,脚本扫描和traceroute
–datedir DIRNAME 说明用户Nmap数据文件位置
–send-eth / –send-ip 使用原以太网帧发送/在原IP层发送
–privileged 假定用户具有全部权限
–unprovoleged 假定用户不具有全部权限,创建原始套接字需要root权限
-V 打印版本信息
-h 输出帮助

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信