一、 端口扫描
(一)端口扫描基础
Nmap 根据自己分析的需要把端口分为:Open Close Filter Unfilter
当然有组合的(Open| Filter , Close|Filter ) 开发或者被过滤,关闭或者被过滤。
Open : 说明这个端口在提供一定的服务,可以通过TCP \UDP 连接到这里。
Closed : 关闭端口,我们用nmap 扫描了,这个主机存活,RST发来了,说明端口关闭,没有服务在监听,但是最好还是Closed &&Filter ,这个以防有些软件无意中打开,被hacker 利用。
Filter : 这个是nmap 扫描者最头痛的事情了,因为很多时候Filter 是防火墙或者过滤规则直接丢弃调(反馈 3/13 网络不可达/通信被管理员禁止) ,你要多次连接,确定不是网络问题丢弃数据包,所以这类的扫描时间就相对长。
Open|Filter : 有时候你不知道这个端口到底是开放的还是过滤掉得,因为有时候ids 可以提供一些机制,模拟你扫描的包不见了,不知道是真正与端口建立连接,还是由于某种机制,人为反馈的数据包,所以一些扫描工具归为此类。
Closed | Filter :该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中。
(二) 端口扫描技术
端口扫描基本语法: -s
-sS SYN 扫描,速度快,明确端口类型: OPEN,CLOSED,FILTER
-sT TCP 扫描,和SYN应该都能被IDS 写入日志。
UDP扫描用-sU选项激活。它可以和TCP扫描如 SYN扫描 (-sS)结合使用来同时检查两种协议。
UDP扫描发送空的(没有数据)UDP报头到每个目标端口。如果返回ICMP端口不可到达错误(类型3,代码3),该端口是closed(关闭的)。 其它ICMP不可到达错误(类型3,代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。如果几次重试后还没有响应,该端口就被认为是 open|filtered(开放|被过滤的)。这意味着该端口可能是开放的,也可能包过滤器正在封锁通信。可以用版本扫描(-sV)帮助区分真正的开放端口和被过滤的端口。
-sN ,-sF,-sX (TCP Null,FIN,and Xmas扫描)
如果扫描系统遵循该RFC,当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致一个RST返回,当端口开放是应该没有任何响应。 只要不包含SYN,RST,或者ACK,任何其它三种(FIN,PSH,and URG)的组合都行。
Null 扫描: 不设置任何标志(tcp 标志头 0)
FIN: 只设置 FIN 位
Xmas: (-sX): FIN ,URG,PSH 都设置。
QOS 选项中的6 个,Xmas : 是去掉 SYN ,RST,ACK 的其他三个。
这些扫描的关键优势是它们能躲过一些无状态防火墙和报文过滤路由器。另一个优势是这些扫描类型甚至比SYN扫描还要隐秘一些。但是别依赖它 -- 多数现代的IDS产品可以发现它们
-sA: 这类的包发送出去可以辨别是否是呗过滤掉得: 返回-RST 就是unfilter 。不响应的端口或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10,或者13)的端口,标记为 filtered(被过滤的)
-sW:比ACK 还有牛逼, 他可以通过查看返回来的RST ,可以明白窗口中的数是>0 ,或者=0 ,来确定是Close/Open 。
-sM (TCP Maimon扫描):发现者Uriel Maimon命名的。除了探测报文是FIN/ACK。根据RFC 793 (TCP),无论端口开放或者关闭,都应该对这样的探测响应RST报文。然而,Uriel注意到如果端口开放,许多基于BSD的系统只是丢弃该探测报文。
--scanflags (定制的TCP扫描) :可以对QOS重的6 个进行定制,URG ACK PSH RST SYN FIN(顺序) ,当然如果你指定的 --scanflags 9 ==PSH /FIN
-sO (IP协议扫描):IP 协议扫描可以让您确定目标机支持哪些IP协议 (TCP,ICMP,IGMP,等等)。
-b
(三)端口说明和扫描技术
-p 指定扫描的端口 -p U:53,111,137,T:21-25,80,139,8080
-F 快速扫描
-r 随即顺序扫描被禁止