Kali linux 学习笔记(十三)主动信息收集——端口扫描(UDP扫描、TCP扫描) 2020.2.22

前言

端口扫描
在找到活的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 1.1.1.1 -sU -p 53
nmap -iL iplist.txt -sU -p 1-200

2、TCP端口扫描

所有的扫描方式都是基于三次握手的变化来判断端口状态
主要有全连接扫描、隐蔽扫描和僵尸扫描

(1)全连接扫描

  • 三次握手成功则目标端口开放 准
  • 确度会高点
  • 容易引起目标机器怀疑

全连接扫描——scapy

脚本

tcp_scan1.py

#!/usr/bin/python
import logging #导入日志
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
form scapy.all import *
response = sr1(IP(dst="192.168.60.3")/TCP(dport=80,flags="S"))
reply = sr1(IP(dst="192.168.60.3")/TCP(dport=80,flags="A",ack=(response[TCP].seq+1))) #回一个ack

tcp_scan2.py

#!/usr/bin/python
import logging #导入日志
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
form scapy.all import *
SYN = IP(dst="192.168.60.3")/TCP(dport=80,flags="S")
print("/n/n-- RECEIVED--")
response = sr1(SYN,timeout = 1,verbose=0)
response.display()
if int(response[TCP].flags)==18:
 print("/n/n-- SENT--")
 a=IP(dst="192.168.60.3")/TCP(dport=25,flags="A",ack=(response[TCP].seq+1))
 a.display()
 print("/n/n-- RECEIVED--")
 response2 = sr1(a,timeout=1,verbose=0)
 response.display()
else:
 print("SYN·ACK not returned")

需注意的是
操作系统里会有个RST包
导致三次握手失败
要取消掉

iptables -A OUTPUT -p tcp --tcp.flags RST RST -d 192.168.60.3 -j DROP

这是上面脚本工作的前提

全连接扫描——nmap

nmap -sT 1.1.1.1 #扫描默认的1000个常用端口
nmap -sT 1.1.1.1 -p 1-100
nmap -sT -iL iplist.txt -p 90 

全连接扫描——dmitry

这个命令比较简单

dmitry -p 1.1.1.1 #执行TCP扫描

全连接扫描——nc

nc -nv -w 1 -z 1.1.1.1 1-100 #-w指定超时时间,-z说明要做端口扫描

(2)隐蔽扫描

  • 只发syn包
  • 不建立完整连接
  • 应用日志不记录扫描行为

过程:发送syn,接收syn/ack说明端口开放,发送rst断开

隐蔽扫描——scapy

指令
a=sr1(IP(dst="192.168.60.3")/TCP(dport=80,flags="S"),timeout=1,verbose=0)
脚本

syn_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 : ./syn_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)/TCP(dport=port),timeout=1,verbose=0) #verbose=0指错误不显示
 time.sleep(1) #sleep了1s,避免指令太快,网络延迟,造成误判
 if answer == None:
  pass
 else:
  if int(answer[TCP].flags) == 18:
   print(port)
  else:
   pass
隐蔽扫描——nmap
namp -sS 1.1.1.1 -p 1-65535 --open #扫描所有端口,--open只显示open端口
nmap -sS 1.1.1.1 -p 80,21,25 #扫描80,21,25端口
nmap -sS -iL iplist.txt -p 90 #扫描list里所有IP的90端口
隐蔽扫描——hping3
hping3 1.1.1.1 --scan 1-100 -S #扫描1-100端口,显示是个表格
hping3 -c 10 -S -spoof 1.1.1.2 -p ++1 1.1.1.3 #--spoof地址欺骗,欺骗目标1.1.1.3我的IP是1.1.1.2,-p ++1说明端口从1递增到10

(3)僵尸扫描

  • 双方网络必须可实现地址伪造
  • 得有个僵尸机(闲置且IPID递增)

这个过程讲的有点绕,看图理解
在这里插入图片描述
实验过程

  • 攻击机:kali
  • 僵尸机:xp
  • 目标机:metasploitable

僵尸扫描——scapy

i=IP()
t=TCP()
rz=(i/t)
rt=(i/t)
rz[IP].dst=IPz #僵尸机的地址
rz[TCP].dport=445 #win默认445端口开放
rt[IP].src=IPz #僵尸机的地址
rt[IP].dst=IPt #目标机的地址
rt[TCP].dport=25 #目标端口25
rt[TCP].flags="S" #发SYN包
az1=sr1(rz) #僵尸机的第一个包
at=sr1(rt,timeout=1) #目标机的包
az2=sr1(rz) #僵尸机的第二个包
#注意三个包发的快点,避免期间其他包影响结果
az1.display()
az2.display() #比较两个包的IPID,+2说明端口开放,+1说明端口关闭

僵尸扫描——nmap

nmap -p445 1.1.1.2 --script=ipidseq.nse #寻找zombie,ipidseq为Incremental则为可用僵尸机
nmap 1.1.1.1 -sI 1.1.1.2 -Pn -p 1-100 #用1.1.1.2的僵尸机扫描1.1.1.1的1-100端口

结语

端口扫描的结果也只是作参考
可能因多种原因出现问题
nmap和scapy两个工具要熟练

下一节是服务扫描

发布了28 篇原创文章 · 获赞 2 · 访问量 1038

猜你喜欢

转载自blog.csdn.net/weixin_44604541/article/details/104446870