nmap工具使用
文章目录
nmap
nmap工具原理
1 nmap扫描主要有 TCP 全连接扫描(会被扫描机器留下记录), 半连接扫描(不会留下记录)
nmap使用入门
|
|
nmap 脚本
|
|
标志 | 原理 |
---|---|
URG | urg=1 时候,表示报文应尽快传送 【URGent】 |
PSH | 【急迫标志】表示立刻传给应用层,不要等待缓存满时候再交付 |
ACK | 为1时候,确认序号字段才有意义 |
RST | ReSeT,当RST=1 时候,表示严重错误,要释放连接,然后重新建立连接。 这还可以用来拒绝不合法的报文段和拒绝打开一个连接 |
SYN | 表明这个是请求建立连接报文段 |
FIN | fin=1 表示字节发送完,请求释放连接 |
主机发现
|
|
主机发现也叫 ping扫描, 发送简单的icmp请求报文
选项详情
-P*
选项用于选中 ping的类型,用于结合使用,可以使用不同的tcp端口、标志位
nmap 的几种选项
选项 | 原理 |
---|---|
-P0 (无ping) | 通常nmap在进行高强度扫描时候,用它确定正则运行的机器,默认情况下,nmap只对正运行的主机进行高强度扫描,如端口扫描,版本探测 【这个速度会快一点】 |
-PS | 【tcp syn ping】,发送tcp syn 空报文,默认目的端口是 80 ,但不同端口也可以作为选项指定,例如 nmap -PS 80,23,666 www.baidu.com |
-PA (tcp ack ping) | 【tcp ack ping】, 直接发送ack报文,因为没有先 syn 三次握手建立连接,所以服务器会认为是不合法连接,返回 RST报文,拒绝你的连接,这样就可以知道这个主机是存活的【因为拒绝了你,给你响应了报文】syn 不能用,就只能用 ack, |
-PU (udp ping) | 【udp没有建立连接请求,是无状态的】,这是基于ICMP端口作为扫描,这种好处是,穿越只过滤tcp协议流量的防火墙 |
-PE;-PP;-PM | 分别是 echo, timestamp , mask 请求,主机存活的话,就会响应, PM 扫描速度非常的慢 |
PR | arp ping,nmap优化了 arp请求的算法,如果目标主机在局域网上,nmap默认就是 arp,如果不想指定arp,可以设置 –send-ip |
-n | 不用域名解析,dns比较慢 |
-R | 为所有目标解析 域名,对目的ip地址反向域名解析。一般发现机器正在运行的时候才这样做 |
|
|
cidr风格的地址
nmap支持 CIDR风格的地址,
你可以附加一个 /<numbit>
在ip地址或者主机后面,nmap将会扫描所有该参考ip地址 具有 <numbit>
想用比特的所有ip地址 或者主机。 例如 , 192.168.10.0/24 将会扫描 192.168.10.0, scanme.nmap.org/16 也能成功使用
gateway/16
表示扫描 65535个ip地址 ,
gateway/24
表示 扫描 256个ip地址
范围列表语法
192.168.0-255.1-254
192.168.1,3,5.1-254
,
逗号表示并列, -
表示范围
-iR 随机选择扫描
选项 | 结束 |
---|---|
-iR<hostnum> |
随机选目标,例如nmap -sS -PS80 -iR 0 -p 80 ,随机的找一些网站浏览, 选项0 表示无休止扫描,后果自负 |
–exclude | 排除目标主机 |
端口扫描
选项理解
选项 | 理解 |
---|---|
-sT (tcp connect扫描) |
全扫描,当syn可以事后,它通常是更好的选择,用这个去扫描unix系统很容易在 syslog 留下记录 |
-sU (udp扫描) |
dns,snmp,dhcp 注册端口分别是,53,161/162, 67/68 这3个,通过这个选项可以激活, udp扫描非常慢,可以使用 –host-timeout跳过慢速主机, 重试几次没有反应会得到,open|filtered(开放|被过滤的) ,filtered表示不确定是开放或者关闭 |
-sA |
ack扫描 , 上面 pA ping ack ,用于主机发现,scan ack 用来扫描端口 |
-sW |
tcp窗口扫描, scan window 模式,这个我也没怎么理解 |
-sN;-sF;-sX | 分别是 tcp Null, FIN, 和 Xmas 扫描, sN不设置任何标志位,tcp标志头是0 , sF只设置 FIN标志位, -sX 设置 fin,psh, urg标志位 【-sX 比较快,因为设置了 URG 的标志位】 |
-sO |
ip协议扫描, 类似udp的扫描方式,结果也是非常的慢,一般不用,但是也是有一定的作用的 |
-sl <zombie host> |
允许你对目标进行tcp端口盲扫描 ,以防我们被发现 【利用僵尸主机,又叫肉鸡】 |
tcp syn流程如下
|
|
|
|
结果理解
端口状态 | 解释 |
---|---|
open | 应用程序正在该端口接收TCP 连接或者UDP报文 |
closed | 关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应) |
filtered | 由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由器规则 或者主机上的软件防火墙 |
unfiltered | 未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭 |
open|filtered | 当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。 |
closed|filtered | 该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。 |
操作系统探测扫描
-O
启动操作系统探测 Operating system
--max-os-tries
设置重复探测次数
原理是通过数据库的指纹对比,得出os版本
脚本扫描【漏洞扫描】
另外可以查看我文章的另一篇文章,db_nmap 上面有一些记录
脚本类型 | 说明 |
---|---|
auth | 绕开鉴权脚本 |
broadcast | 查看服务开启状态,例如dhcp,dns,sqlserver等服务 |
brute | 暴力破解等方式,比如爆破smb |
default | 默认脚本,-A选项等 |
discovery | smb枚举,snmp查询 |
dos | 拒绝服务攻击 |
exploit | 已知漏洞入侵系统 |
external | 利用第三方数据库或者资源 |
fuzzer | 模糊测试,发送异常的包到目标及其,探测出潜在漏洞 intrusive入侵性脚本,可能引发对方ips 的记录或者屏蔽 |
malware | 探测目标是否感染病毒,开启了后门等信息 |
safe | 属于安全性脚本和 intrusive类似 |
version | 负责增强服务和版本扫描 |
vuln | 检查是否有常见漏洞 (Vulnerability) |
--scriptredis-info |
redis-info为nmap 专门的插件,用于登录redis执行内部命令 |
附寻找脚本的方法:
|
|
|
|
扫描结果如下
|
|
|
|
|
|
|
|
查看 whois记录信息
whois 记录通常包含注册人姓名,联系方式等重要数据
|
|
joomla cms漏洞扫描
使用 http-joomla-brute 脚本检测弱密码账号
|
|
sql注入
|
|
用户审计
|
|
cve漏洞
mysql 最可怕的是 cve-2012-2122 ,攻击者用root尝试 300次登陆后进入数据库
|
|
实战演示
注意,本文章只是个人学习笔记,扫描的对象是靶机,请勿使用本文章的命令去扫任何网站,否则后果自负
文章作者 LYR
上次更新 2021-08-17