网络扫描

姓名:贾昊龙

学号:18307130049

TCP端口扫描

  • Target:当被扫描端口收到SYN数据包的时候,返回一个SYN+ACK数据包给源主机,同时过滤RST数据包。
  • Python:
#!/usr/bin/python
from scapy.all import * 
def process(pkt): 
    IP_src = pkt[IP].src 
    IP_dst = pkt[IP].dst 
    TCP_sport = pkt[TCP].sport 
    TCP_dport = pkt[TCP].dport 
    TCP_seq = pkt[TCP].seq 
    TCP.ack = pkt[TCP].ack 
    #对应的源主机端口信息的获取
    send_pkt = IP(src = IP_dst, dst = IP_src) / TCP(dport = TCP_sport, sport = TCP_dport, ack = TCP_seq + 1, flags = "SA") 
    #发送数据包
    send(send_pkt) 
    
sniff(filter = "tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0", prn = process)
#进行过滤

通过嗅探函数来进行过滤并且抓取对应的SYN数据包,回复的SYN+ACK数据包构造如下:从抓取到的数据包当中获取源主机的IP以及端口号,之后ACK 号为抓取包的序列号加 1 。同时需要重新设置防火墙,过滤掉系统自动返回的 RST 数据包:

iptables -F 
iptables -P INPUT ACCEPt 
iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP

之后使用zenmap来进行扫描:

1

UDP端口扫描

通过过滤掉 ICMP port unreachable 数据包,来使扫描方无法判断端口是否开放。

使用防火墙来进行过滤

iptables -A OUTPUT -p icmp --icmp-type 3 -j DROP

之后还是使用zenmap来进行扫描

2

可以看到处于ignore state


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

安全攻防综合实验4 上一篇
安全综合攻防实验2 下一篇