端口扫描介绍(一)——带僵尸扫描详解

端口扫描
1、端口对应网络服务及应用端程序
2、服务端程序的漏洞通过端口攻入
3、发现开放的端口
4、更具体的攻击面

UDP端口扫描:
假设ICMP port-unreachable 响应代表端口关闭(目标系统不响应ICMP port-unreachable 时,可能产生误判)

对于完整的UDP应用层请求:准确性高、耗时巨大(比TCP快)

#与之前相反,响应ICMP表示端口关闭

扫描工具:Scapy UDP Scan、Nmap

Scapy UDP Scan:

端口关闭呈现ICMP port-unreachable,端口开放是没有回包,同时是与三层相同的技术。

举例:

 sr1(IP(dst="1.1.1.1")/UDP(dport=53),timeout=1,verbose=1) 
./udp_scan.py 1.1.1.1 100

Nmap:

基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。

举例:

nmap -sU 1.1.1.1 
#默认的1000个参数
nmap 1.1.1.1 -sU -p 53
nmap -sU 1.1.1.1 -p-  //1-65535端口
nmap -iL iplist.txt -sU -p 1-200
//同样基于ICMP的不可达

 列举多余的:

进行ping扫描,打印出对扫描做出响应的主机,不做进一步测试(如端口扫描或者操作系统探测):

nmap -sP 192.168.1.0/24

仅列出指定网络上的每台主机,不发送任何报文到目标主机:

nmap -sL 192.168.1.0/24

探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):

nmap -PS 192.168.1.234

使用UDP ping探测主机:

nmap -PU 192.168.1.0/24

使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:

nmap -sS 192.168.1.0/24

当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描:

nmap -sT 192.168.1.0/24

UDP扫描用-sU选项,UDP扫描发送空的(没有数据)UDP报头到每个目标端口:

nmap -sU 192.168.1.0/24

确定目标机支持哪些IP协议 (TCP,ICMP,IGMP等):

nmap -sO 192.168.1.19

探测目标主机的操作系统:

nmap -O 192.168.1.19

nmap -A 192.168.1.19


这个选项扫描主机scanme中 所有的保留TCP端口。选项-v启用细节模式。

nmap -sS -O scanme./24

TCP端口扫描:


1、基于连接的协议
2、三次握手:
            1-SYN——>2-SYN、ACK——>3-ACK
3、隐蔽扫描        //不与目标建立完整连接,不让对方知道我们在扫描他
4、僵尸扫描     //比隐蔽扫描更加隐蔽
5、全连接扫描     //完整的三次握手,行为暴露
#所有的TCP扫描方式都是基于三次握手的变化来判断目标端口状态


隐蔽扫描————syn                        //只发SYN包,不发ACK包


1、不建立完整连接
2、应用日志不记录扫描行为————隐蔽

僵尸扫描:


1、极度隐蔽
2、实施条件苛刻
3、可伪造源地址                       //目标与自己必须要有
4、选择僵尸机         //要有僵尸机,即:下面的要求
        闲置系统           //特别闲
5、系统使用递增的IPID
            0
            随机


过程(扫描者、僵尸机、目标机):


端口打开状态:
一:由扫描者给僵尸机发一个SYN/ACK包(为发生三次握手),正常情况下,僵尸机返回一个RST给扫描者,收到一个IPID值
二:扫描者向目标服务器发一个SYN包(这个包是要伪造源地址的,不能透露scanner,这个包的源IP是要为造成僵尸机的IP),因为是SYN包,这个目标服务器就会向僵尸机的IP发一个SYN/ACK包,僵尸机(莫名奇妙收到一个ACK包,这个包是我们扫描目标,目标回给我们的ACK包,但是是僵尸机的IP,所以包给了僵尸机)收到后,有两个ACK包?(一个我们发的,一个目标给的),僵尸机看来这个不是正常的数据包,再返回一个RST包,因为是递增的就是IPID+1。
因为不能让IPID稳定能是被识别,僵尸机要足够空闲不可发生通信。
三:扫描者再向僵尸机发一个SYN/ACK,僵尸机而话不说直接回一个RST包,这里的RST的IPID+2了
四:如果扫描者接受到IPID+2这个RST包,那么就能判定目标的这个端口就是开放的状态。

(IPID——>IPID+1——>IPID+2)

端口关闭状态:
第一步一样;
第二步扫描者向目标发一个SYN包,端口未开,就会给僵尸机发一个RST是IPID,僵尸机不会再跟目标通信;
第三步:扫描者给僵尸机发一个SYN/ACK包,僵尸机返回一个RST给扫描者,但是这里扫描者扫收是IPID+1。(IPID——>IPID+1)
 

#通过一个特别绕的方式隐藏自己的IP地址。——>僵尸扫描:极度隐蔽

猜你喜欢

转载自blog.csdn.net/Jack0610/article/details/88173207