Nmap:Network Mapper,网络扫描和嗅探的工具包
基本功能有3个:
1.扫描主机端口,嗅探所提供的网络服务
2.探测一组主机是否在线
3.推断主机所用的操作系统,到达主机经过的路由,系统已开放端口的软件版本
首先需要温习一下tcp包头的相关基础知识
TCP Header:
Source port:源端口 占16位 2个字节,计算机一共65536个端口。0端口保留,1-1024为系统服务端口,如果扫描时不指定端口范围,nmap默认扫描1-1024端口。
Destination port :目的端口 16位 2个字节
Sequence number:序列号 4个字节,用来标识从TCP源端向TCP目的端
Acknowledgment number:确认号
Data offset:数据偏移
Reserved:保留位
TCP标志位:
1.ACK Acknowledgment 确认标志
2.RST Reset 复位标志
3.URG Urgent 紧急标志
4.SYN Synchronize 建立连接标志
5.PSH Push 推标志
6.FIN Finish 结束标志
Window Size:TCP窗口,用于流量控制,滑动窗口控制机制。每次只能接受一定量的数据
Checksum:校验和
三次握手,一般先发送SYN请求,再发RST重设就断开
ICMP协议属于IP协议的一部分,主要诊断网络的问题
ping 用的是 -0类型 Echo Reply
-3 目标不可达,或者到了那回不来,路由过不去
下面是一个ping的包,可以看到code参数和 Echo replay
下面是常见端口对应的服务,Telnet主要用于路由器交换机远程调试,在设备上开启Telnet服务,可以远程登录进行调试。Telnet是明文协议,可以用抓包抓到密码,很多现在用ssh,可以用xshell登录。但是Telnet登录需要有这个命令,现在win10基本没有了telnet命令。如果想在win10使用telnet需要自己设置。
SMTP邮件服务器。
DNS发送请求的时候用udp协议
SNMP:网络管理协议
HTTPS:会在链路中对数据加密 443或者8433
RDP:远程桌面协议
1.如果用wireshark抓包分析,会发现几乎所有的情况都是在使用UDP,使用TCP的情况非常罕见,神秘兮兮。其实当解析器发出一个request后,返回的response中的tcp删节标志比特位被置1时,说明反馈报文因为超长而有删节。这是因为UDP的报文最大长度为512字节。解析器发现后,将使用TCP重发request,TCP允许报文长度超过512字节。既然TCP能将data stream分成多个segment,它就能用更多的segment来传送任意长度的数据。
2. 另外一种情况是,当一个域的辅助域名服务器启动时,将从该域的主域名服务器primary DNS server执行区域传送。除此之外,辅域名服务器也会定时(一般时3小时)向PDS进行查询以便了解SOA的数据是否有变动。如有变动,也会执行一次区域传送。区域传送将使用TCP而不是UDP,因为传送的数据量比一个request或response多得多。
发现主机是否存活,有些时候防火墙存在我们扫描不到主机是否存活,-p0或者-pn参数可以跳过发现主机直接扫描端口。局域网扫描时会经常抓到ARP的包,默认先发送ARP请求,如果有ARP的包说明这个主机就已经存在了。
Nmap端口扫描常用命令:
1.进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):
nmap -sP 192.168.1.0/24
2.仅列出指定网络上的每台主机,不发送任何报文到目标主机:
nmap -sL 192.168.1.0/24
3.探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):
nmap -PS 192.168.1.234
4.使用UDP ping探测主机:
nmap -PU 192.168.1.0/24
5.使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:
nmap -sS 192.168.1.0/24
6.当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:
nmap -sT 192.168.1.0/24
7.UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:
nmap -sU 192.168.1.0/24
8.确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):
nmap -sO 192.168.1.19
9.探测目标主机的操作系统:
nmap -O 192.168.1.19
nmap -A 192.168.1.19
另外,nmap官方文档中的例子:
1.nmap -v scanme.
这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。
2.nmap -sS -O scanme./24
进行秘密SYN扫描,对象为主机Scanme所在的“C类”网段 的255台主机。同时尝试确定每台工作主机的操作系统类型。因为进行SYN扫描 和操作系统检测,这个扫描需要有根权限。
3.nmap -sV -p 22,53,110,143,4564 188.116.0-255.1-127
进行主机列举和TCP扫描,对象为B类188.116网段中255个8位子网。这 个测试用于确定系统是否运行了sshd、DNS、imapd或4564端口。如果这些端口 打开,将使用版本检测来确定哪种应用在运行。
其他选项:
-p (只扫描指定的端口)
单个端口和用连字符表示的端口范 围(如 1-1023)都可以。当既扫描TCP端口又扫描UDP端口时,可以通过在端口号前加上T: 或者U:指定协议。 协议限定符一直有效直到指定另一个。 例如,参数 -p U:53,111,137,T:21-25,80,139,8080 将扫描UDP 端口53,111,和137,同时扫描列出的TCP端口。
-F (快速 (有限的端口) 扫描)
其他
比如探测操作系统,利用ping命令,去观察TTL的值 Linux和windows对应的TTL值是不同的,可依此判断操作系统类型。
防火墙/IDS躲避和哄骗
Nmap保存和输出
漏洞扫描:根据版本信息可以上网查询已知的其存在的漏洞并进行渗透测试。