目录

  • 四层发现优缺点
  • TCP发现
    • 使用 scapy 定刢数据包迕行高级扫描——发送3、4层组合包头
    • 长组合语句
    • python脚本
  • UDP
    • 脚本
  • 总结:

只是记录
学习笔记
参考:这个

四层发现优缺点

  • 使用TCP/UDP协议(TCP、UDP各65535个端口)

优点:

  • 可路由且结果可靠;
  • 不太可能被防火墙过滤掉;
  • 甚至可以发现所有端口都被过滤的主机

缺点:

  • 基于状态过滤的防火墙可能过滤扫描;
  • 全端口扫描速度慢

原理:

  • 二、三、四层发现的目的都是发现网络中存活的IP地址。
  • 四层发现 针对 端口的探测 来识别主机是否在线,
  • 目标IP某个端口没有开放,会给我返回一个端口不可达数据包,由此确定IP是在线的
  • 并不对端口状态进行识别,其本质是利用四层协议来识别目标IP是否在线。

TCP发现

正常的TCP连接是通过三次握手建立通信过程:

  • 客户端(C)先给服务器(S)发送SYN包
  • S给C发送SYN、ACK包
  • 最后C给S发送ACK包,从而建立TCP连接。

未经请求的ACK(直接发送一个ACK):

  • 主机在线——会回一个RST,中断这种不正常的通信;
  • 主机不在线——则不会有响应。

基于正常的TCP连接:

  • 先发一个SYN包给目标主机
  • 主机在线、端口开放——会回一个SYN/ACK包
  • 主机在线、端口关闭——则会发RST包;
  • 主机不在线——则不会有响应。

使用 scapy 定刢数据包迕行高级扫描——发送3、4层组合包头

i=IP()
t=TCP()
r=(i/t)
r.display()
r[IP].dst="192.168.98.1"r[TCP].flags='A'        //使用TCP ACK进行扫描r.display()a=sr1(r)
a.display()
└─# scapy                                                                                  100 ⨯
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().aSPY//YASa       apyyyyCY//YCa       |sY//YSpcs  scpCY//Pp     | Welcome to Scapyayp ayyyyyyySCP//Pp           syY//C    | Version 2.4.4AYAsAYYYYYYYY///Ps              cY//S   |pCCCCY//p          cSSps y//Y   | https://github.com/secdev/scapySPPPP///a          pP///AC//Y   |A//A            cyPC   | Have fun!p///Ac            sC///a   |PYCpc           A//A   | Wanna support scapy? Rate it onscccccp///pSP///p          p//Y   | sectools!sY/y  caa           S//P   | http://sectools.org/tool/scapy/cayCyayP//Ya              pY/Ya   |             -- Satoshi NakamotosY/PsYYCc          aC//Yp    |sc  sccaCY//PCypaapyCP//YSs  spCPY//YPSps    ccaacs         using IPython 7.20.0
>>> i=IP()
>>> t=TCP()
>>> r=(i/t)
>>>
>>> r.display()
###[ IP ]### version= 4ihl= Nonetos= 0x0len= Noneid= 1flags= frag= 0ttl= 64proto= tcpchksum= Nonesrc= 127.0.0.1dst= 127.0.0.1\options\
###[ TCP ]### sport= ftp_datadport= httpseq= 0ack= 0dataofs= Nonereserved= 0flags= Swindow= 8192chksum= Noneurgptr= 0options= []>>> r[IP].dst="192.168.98.164"
>>> r[TCP].flags='A'
>>>  r.display()
###[ IP ]### version= 4ihl= Nonetos= 0x0len= Noneid= 1flags= frag= 0ttl= 64proto= tcpchksum= Nonesrc= 192.168.98.161dst= 192.168.98.164\options\
###[ TCP ]### sport= ftp_datadport= httpseq= 0ack= 0dataofs= Nonereserved= 0flags= Awindow= 8192chksum= Noneurgptr= 0options= []>>> a=sr1(r)
Begin emission:
Finished sending 1 packets.
.*
Received 2 packets, got 1 answers, remaining 0 packets
>>> a.display()
###[ IP ]### version= 4ihl= 5tos= 0x0len= 40id= 0flags= DFfrag= 0ttl= 64proto= tcpchksum= 0xf439src= 192.168.98.164dst= 192.168.98.161\options\
###[ TCP ]### sport= httpdport= ftp_dataseq= 0ack= 0dataofs= 5reserved= 0flags= Rwindow= 0chksum= 0x68e6urgptr= 0options= []
###[ Padding ]### load= '\x00\x00\x00\x00\x00\x00'>>> 

长组合语句

思路依然是定制包,发送,根据返回信息判断端口是否开放

>>> >>> a=sr1(IP(dst='192.168.98.164')/TCP(dport=80,flags='A'),timeout=1)
Begin emission:
Finished sending 1 packets.
.*
Received 2 packets, got 1 answers, remaining 0 packets
>>> a
<IP  version=4 ihl=5 tos=0x0 len=40 id=0 flags=DF frag=0 ttl=64 proto=tcp chksum=0xf439 src=192.168.98.164 dst=192.168.98.161 |<TCP  sport=http dport=ftp_data seq=0 ack=0 dataofs=5 reserved=0 flags=R window=0 chksum=0x68e6 urgptr=0 |<Padding  load='\x00\x00\x00\x00\x00\x00' |>>>
>>> 

python脚本

#!/usr/bin/python
from scapy.all import *
import sysaddress=sys.argv[1]
prefix=address.split(".")[0] + '.' + address.split(".")[1] + '.' +address.split(".")[2] + '.'for addr in range(1,254):answer=sr1(IP(dst=prefix+str(addr))/TCP(dport=80,flags='A'),timeout=1,verbose=0)try:if int(answer[TCP].flags) == 4:print prefix+str(addr)except:pass

UDP

  • UDP不需要进行三次握手
  • UDP使用的是尽力转发的传输机制
  • 因此进行主机发现的难度较高。
  • 目标IP不在线,发送UDP包,则不会有任何响应
  • 目标IP在线,目标端口开放,发送数据包且目标主机接收到后也不会有响应
  • 目标IP在线,且目标端口不开放时,目标主机会返回一个ICMP端口不可达数据包

>>> i=IP()
>>> u=UDP()
>>> r=(i/u)
>>> r.display()proto= udp              //udp协议chksum= Nonesrc= 127.0.0.1dst= 127.0.0.1\options\>>> r[IP].dst='192.168.247.129'
>>> r[UDP].dport=7345
>>> r.display()>>> a=sr1(r)
Begin emission:
.*Finished to send 1 packets.
Received 2 packets, got 1 answers, remaining 0 packets
>>> a.display()proto= icmp                   //目标主机存活,且端口不开放,回包的协议为icmpchksum= 0x8afbsrc= 192.168.247.129dst= 192.168.247.157\options\
###[ ICMP ]### type= dest-unreachcode= port-unreachable     //icmp端口不可达chksum= 0x6d87reserved= 0length= 0nexthopmtu= 0
###[ IP in ICMP ]### version= 4Lihl= 5Ltos= 0x0len= 28id= 1flags= frag= 0Lttl= 64proto= udpchksum= 0xa60src= 192.168.247.157dst= 192.168.247.129\options\
###[ UDP in ICMP ]### sport= domaindport= 7345len= 8chksum= 0x7287

脚本

#!/usr/bin/python
from scapy.all import *
import sysaddress=sys.argv[1]
prefix=address.split(".")[0] + '.' + address.split(".")[1] + '.' +address.split(".")[2] + '.'for addr in range(1,254):answer=sr1(IP(dst=prefix+str(addr))/UDP(dport=7345),timeout=1,verbose=0)try:if int(answer[IP].proto) == 1:    //该语句可判断目标主机是否返回ICMP端口不可达数据包print prefix+str(addr)except:pass

总结:

tcp:

基于正常的TCP连接:

  • 先发一个SYN包给目标主机
  • 主机在线、端口开放——会回一个SYN/ACK包
  • 主机在线、端口关闭——则会发RST包;
  • 主机不在线——则不会有响应。

udp:

  • UDP不需要进行三次握手
  • UDP使用的是尽力转发的传输机制
  • 因此进行主机发现的难度较高。
  • 目标IP不在线——不会有任何响应
  • 目标IP在线,目标端口开放,——不会有响应
  • 目标IP在线,且目标端口不开放时,——目标主机会返回一个ICMP端口不可达数据包

【KALI使用】17 主动信息收集——四层发现(TCP、UDP、使用 scapy 定刢数据包迕行高级扫描)相关推荐

  1. Kali Linux 从入门到精通(八)-主动信息收集

    Kali Linux 从入门到精通(八)-主动信息收集 基本介绍 直接与目标系统交互通信 无法避免留下访问的痕迹 使用受控的第三方电脑进行探测 使用代理或已经被控制的主机 做好被封杀的准本 使用噪声迷 ...

  2. 信息收集之主动信息收集(一)

    信息收集之主动信息收集(一) 主动信息收集: 1.主机发现 1.1二层主机发现 1.2三层主机发现 1.3四层主机发现 2.端口扫描 2.1TCP端口扫描 2.2UDP端口扫描 2.3僵尸扫描 3.服 ...

  3. Kali Linux渗透测试——信息收集

    笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程 渗透测试标准(PTES:http://www.pentest-standard.org)的七个阶段: 1.前期交互阶段:讨论确定渗透 ...

  4. 被动与主动信息收集 | 系统性学习 | 无知的我费曼笔记

    文章目录 信息收集-被动信息收集介绍 收集手段 收集内容 信息用途 信息收集-域名解析过程以手段 域名解析过程 信息收集 DNS **DNS 信息收集-NSLOOKUP** **DNS 信息收集-DI ...

  5. 目标资产主动信息收集

    22.06.23.04(目标资产主动信息收集) 1.1 主动信息收集的原理 1.1.1 主动信息收集的特点 1.直接与目标系统交互通信 2.无法避免留下访问的痕迹 3.使用受控的第三方电脑进行探测,使 ...

  6. Kali渗透测试之被动信息收集

    一.渗透测试的流程 信息收集(很重要,时间占比30% ~ 50%) 漏洞扫描 漏洞利用 提权 清除痕迹,留后门 写渗透测试报告 其中信息收集很重要,它通常占整个渗透测试过程所需时间的30% ~ 50% ...

  7. kali渗透测试系列---信息收集

    kali 渗透测试系列 文章目录 kali 渗透测试系列 信息收集 信息收集 信息收集阶段可以说是在整个渗透测试或者攻击很重要的阶段,毕竟知己知彼才能百战百胜,否则从目标主机使用的平台到数据库的使用再 ...

  8. 【安全牛学习笔记】主动信息收集-发现(三)

    ╋━━━━━━━━━━━━━╋ ┃发现-----三层发现         ┃ ┃优点                      ┃ ┃    可路由                ┃ ┃    速度比 ...

  9. kali 主动信息收集之dmitry和amap

    DMitry (Deepmagic Information Gathering Tool)是一个一体化的信息收集工具 功能简单,使用简单 默认150个最常用的端口 root@bogon:~# dmit ...

最新文章

  1. 分析并写出下列程序的运行结果_知到APP2020分析化学(福州大学)章节答案
  2. 核心概念——节点分组 Group
  3. 利用 python 的 http.server 包快速搭建web server 服务
  4. 关于数组方面的算法分析
  5. “scikit-learn(sklearn) 官方文档中文版”
  6. 导入导出mysql数据库
  7. CrazyWing:Python自动化运维开发实战 七、Python数据类型之数字
  8. JSP 实现登录注册功能
  9. 中文字体下载大全+传世书法墨迹珍藏..等20款
  10. 企业微信通讯录可以导出吗?如何导出?
  11. notability录音定位_请问如何在iPad上科学地使用good notes和notability?
  12. 本周AI热点回顾:波士顿动力机器狗去新西兰放羊了、微软WSL将支持GPU、ERNIE-GEN刷新SOTA
  13. 计算机无理数转根号,[转载]从根号二是无理数到孤独的根号三
  14. verilog latch
  15. 通过漫画学习MySQL索引及优化
  16. 安卓手机如何查看手机控制台输出
  17. 曹大带我学 Go(2)—— 迷惑的 goroutine 执行顺序
  18. Linux yum的在线安装(yum命令)
  19. 2022年RocketMQ面试题及答案
  20. mv命令 – 移动或改名文件

热门文章

  1. Vlayout使用详细介绍
  2. 嫡权法赋权法_变异系数法_客观赋权法
  3. N点出现错误代码-100001的解决方法
  4. Java项目-宠物商城管理系统
  5. 英特尔Wind River将开放网络功能虚拟化
  6. wps 模拟分析 规划求解_WPS表格怎么进行规划求解运算?
  7. iOS设备限制境外交易(支付交易风险控制)
  8. react 面试题 高级_常见 React 面试题
  9. 倒计时软件下载,桌面倒计时便签软件推荐
  10. 嵌入式安卓开发:使用Camera2获取相机