发现到存活的 IP 以后,那么下一步就是针对特定的主机进行端口扫描了,因为端口对应的是网络服务及其应用段的程序,一旦发现开放的端口,便可以借此进行渗透。
假设 ICMP 返回 port-unreachable 响应代表端口关闭,但是如果目标系统不响应 ICMP port-unreachable 时,那么此端口可能处于开放状态
scapy 端口扫描(基于 UDP)
#!/usr/bin/python
import logging
import subprocess
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import *
import time
if len(sys.argv) != 4:
print "Usage - ./udp_port.py [Target - TP] [First port] [Last port]"
print "Usage - ./udp-port.py 128.13.34.13 1 100"
sys.exit()
ip = sys.argv[1]
start = int(sys.argv[2])
end = int(sys.argv[3])
for port in range(start,end):
a = sr1(IP(dst=ip)/UDP(dport=port),timeout=5,verbose=0)
time.sleep(1)
if a == None:
print port
else:
pass
nmap 端口扫描(基于 UDP)
对特定 ip 端口扫描,如果不指定端口的话,namp 默认会对 1000 常用端口进行扫描,即使是 nmap 如果是基于 UDP 的扫描话,也只是利用了 UDP 端口不可达的这一个特征信息,即返回一个 ICMP 不可达
nmap -sU 192.168.0.101
指定端口扫描(-p53):
nmap -sU -p53 192.168.0.101
指定端口范围进行扫描(-p53-80):
nmap -sU -p53-80 192.168.0.100