前言
端口扫描
在找到活的IP后寻找开放端口
- 端口对应的网络服务及应用端程序
- 服务端程序的漏洞通过端口攻入
- 发现开放的端口
- 更具体的攻击面
可根据TCP和UDP来进行扫描
1、UDP端口扫描
UDP扫描一般假设ICMP port-unreachable 响应代表端口关闭
但目标系统不响应ICMP port-unreachable 时,可能误判
其特点是:
- 完整的UDP应用层请求
- 准确性高
- 耗时巨大
UDP端口扫描——scapy
- 端口关闭:ICMP port-unreachable
- 端口开放:没有回应
- 需要了解每一种基于UDP的应用层包结构
- 与三层发现的技术相同
脚本
udp_scan.py
#!/usr/bin/python
import logging #导入日志
import subprocess #系统指令
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
form scapy.all import *
import sys
import time
if len(sys.argv) != 4: #命令后面如果没跟参数
print("Example : ./udp_scan.py 1.1.1.1 1 100")
sys.exit
ip = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])
for port in range(start,end):
answer = sr1(IP(dst=ip)/UDP(dport=port),timeout=5,verbose=0) #verbose=0指错误不显示
time.sleep(1) #sleep了1s,避免指令太快,网络延迟,造成误判
if answer == None:
print(port)
else:
pass
UDP端口扫描——nmap
nmap的指令一向简单
nmap -sU 1.1.1.1 #默认的1000个端口
nmao