nmap用法
今天想发现某个主机运行的端口,但是无论怎么用nmap扫描结果都是All 1000 scanned ports on ****** are filtered
感觉应该是防火墙直接把包给过滤掉了,看不到结果。。
-----------------------------------nmap 的主机发现--------------------------------------------------------------------
------------------------------------------------------------------主机发现的原理-----------------------------------------------------------------------
主机发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,那么说明目标主机是开启的。Nmap支持十多种的主机探测方式,
各报文格式如右
比如发送ICMP ECHO/TIMESTAMP/NETMASK报文,发送TCPSYN/ACK包,发送 TSCTPINIT/COOKIE-ECHO包。
timestamp-reply报文
时间戳请求报文(TYPE=13)和时间戳应答报文(TYPE=14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,
接收方收到请求后一Type=14的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文
NETMASK地址掩码请求报文
假定请求的主机知道自己的Internet地址,然后向目的地址255.255.255.255广播地址掩码请求报文,这时地址掩码域中全部为“0”,
知道正确掩码的路由器就会返回一个地址掩码应答报文,该应答报文中就包含了请求主机所需的地址掩码。地址掩码应答是一对查询报文,用于获得一个主机所在网络的子网掩码。
默认情况下,Nmap会发送四种不同类型的数据包来探测目标主机是否在线
1. ICMP echo request
2. a TCP ACK packet to port 80
3.a TCP SYN packet to port 443
4 an ICMP timestamp request
----------------------------------------------------------------主机扫描的用法--------------------------------------------------------
-sL列表扫描,仅将指定的目标的IP列举出来,不进行主机发现
-sn:ping scan:只进行主机发现,不进行端口扫描
-Pn:将所有指定的主机视作开启的,跳过主机发现的过程
-PS/pA/pU/PY:使用TCP/SYN/ACK或UDP/SCTP INIT/ECHO方式发现
—PE/PP/PM:使用ICMP echo,timestamp,and netmask请求包发现主机
-PO【protocolist】:使用IP协议包探测对方主机是否开启
探测对方主机是否开启
-n/-R -n:表示不进行DNS解析,-R表示总是进行DNS解析
eg:
nmap -sn -PE -PS80,135 -PU 53 scanme.nmap.org

局域网扫描
nmap -sn 192.168.0.1-200 nmap -iL target.txt nmap a b c namp xxx.a-b
通过ARP回复的报文来确定是否在线
----------------------------------------------nmap端口扫描----------------------------------------
端口的6个状态
open :端口是开放的
closed:端口是关闭的
filtered:端口被防火墙屏蔽,无法确定状态
unfiltered:端口没有被屏蔽,但无法确定状态
-------------------------------------------------------------------端口扫描方式和原理------------------------------------------------------------------------------------
1 TCP SYN scanning
这是nmap默认的扫描方式,通常被称作半开放扫描
该放手发送SYN到目标端口,如果收到SYN/ACK回复,那么端口是开放的,如果收到RST,说明端口是关闭的,如果没有收到
回复,那么判断端口被屏蔽

2.tcp connectscanning
是使用系统网络API connect向目标主机的端口发起连接,如果无法连接,说明端口关闭,是标准
的三次握手,会在日志中留下信息。
整个流程图如下

3.TCP ACK scanning
向目标主机的端口发送ACK包,根据是否收到RST包判断防火墙的情况,可以辅助
TCP SYN的方式来判断目标主机防火墙的情况。注意到,由于发送的是ACK包,因此无法
获得端口的情况。

4 TCP 秘密扫描
发送TCP FIN包或Smas tree包/Null包。

5.UDP扫描
因为tcp与UDP本身的区别
udp探测端口关闭是目标主机回复icmp port unreachable
但如果没收到回复也不能判断是否被屏蔽
因为本来udp就不回复ack确认

6.-sW window扫描
当然也可以利用Window扫描方式,得出一些端口信息,可以与之前分析的结果相互补充
注(Window扫描方式只对某些TCP/I协议栈才有效)window扫描原理与ACK类似,发送ACK包探测目标端口
对回复的RST包中的window saize进行解析。在某些TCP/IP协议栈实现中,关闭的端口在RST中会将Window size
设置为0 .由此可见该种扫描方式在包被drop后是无法进行的。
7.-sM(TCP Maimon扫描)
这种扫描方式探测报文时FIN/ACK.无论端口开放或关闭,都应该对这样的探测相应RST报文,
但是,许多基于BSD的系统只是丢弃该探测报文
8 --scanflags 可以设URG,ACK,PSH,RST,SYN,FIN
9.-sI zombie ip)( target ip)
真实步骤:i>:探查zombie的IPID并记录下来
ii>:在zombie主机上位置一个包,然后把包发送给目标主机的端口,根据端口的状态,目标主机有可能会也有可能不会导致zombie 主机的IPID值增加。
iii>:再次探查zombie主机的IPID,比较两次的IPID值
个人理解:每发送一次数据包ip id+1,每次扫描后,僵尸主机数据包的IP ID应该增加 1或 2,增加1说明僵尸主机没有发送任何数据包,仅仅由于攻击者向目标探测所伪造的那个数据包而导致了加1,可能因为被屏蔽,也可能是因为端口关闭
而如果增加2说明僵尸主机在两次主机探测之间发送了一个额外的数据包,这表明了目标主机是开放的。
10-oA 以...形式输出
11 -sC 根据端口的服务,采用默认的NSE脚本
-----------------------------------------NMAP的信息搜集-------------------------------------------
1. -O:识别操作系统
2.--iflist:列举接口或路由
3.-sV 识别web组件的相关信息
--------------------------------------NMAP防火墙逃逸技术------------------------------------------
-source-port改变发送包的端口
-min-rate 175 -max-rate 300控制包的发送速度
-randomize-hosts打乱顺序(如果你伪造的ip被排序了的话)
-f把IP头分片
-D源IP欺骗
--max_parallelism n 设置并行报文数量,一般设置为1,以防止nmap在同一时间内向探测主机发送多个探测报文
-g 设置源端口(53好端口一般不会无理由的拒绝)
--spoof-mac 进行mac地址欺骗
--data-length 向报文段内添加随机数据
-T设置扫描速度
定制包nmap -scanflags URGACKPSHRSTSYNFIN targetip
-scan-delay +ms调整探测包之间的发送延迟
--mtu设置最大传输单元
--------------------------------------NMAP脚本--script--------------------------------
dns-brute DNS暴力破解
ftp-brute -p 21 ftp暴力破解
whoif-domain(能显示ip,地点和位置)
hostmap-ip2hosts:代表你的ip有那些域名在用
mysql-databases --script-args mysqluser=root,mysqlpass ip猜解表名
smb-brute samba服务暴力破解
mysql-brutemysql口令爆破
--script-updatedb

浙公网安备 33010602011771号