上一篇先是介绍了UDP的端口扫描,又谈了TCP的不完全连接端口扫描

https://www.cnblogs.com/xuyiqing/p/9389276.html

接下来我们看看TCP的全连接端口扫描:

SYN扫描在网络环境非常复杂的情况下,无法正常工作,于是我们可以使用全连接扫描

即完整地建立三次握手

由于全连接,那么扫描结果相当准确,但是隐蔽性最低,容易被发现

具体的实现和上文介绍的不完全连接类似:

这里直接放脚本:

tcp_scan1.py:

这里简化下脚本,我明确知道要扫描的IP和端口:

#!/usr/bin/python
import logging logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import * response = sr1(IP(dst="192.168.22.129") / TCP(dport=80, flags="S"))
reply = sr1(IP(dst="192.168.22.129") / TCP(dport=80, flags="A", ack=(response[TCP].seq + 1)))

写好之后直接执行即可:

我们可以抓包来看:

这里前两个包正常发送接收,第三个RST包是Linux内核自动发送的RST,要中断连接

第四个包:强行发送ACK建立连接,最后一个包直接回RST因为要拒绝"莫名其妙"的连接

于是我们可以发现:这里并不是正确的一个三次握手的过程,因为操作系统内核的自动中断连

接下来,修改得到一个相对完善的脚本:

tcp_scan2.py:

#!/usr/bin/python
import logging logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import * SYN = sr1(IP(dst="192.168.22.129") / TCP(dport=80, flags="S")) print("- -SENT- -")
SYN.display() print("\n\n- -RECEIVE- -")
response = sr1(SYN, timeout=1, verbose=0)
response.display() if int(response[TCP].flags) == 18:
print("\n\n- -SENT- -")
A = sr1(IP(dst="192.168.22.129") / TCP(dport=80, flags="A", ack=(response[TCP].seq + 1)))
A.display()
print("\n\n- -RECEIVE- -")
response2 = sr1(A, timeout=1, verbose=0)
response2.display()
else:
print("SYN-ACK NOT RETURNED")

至于这里的flags==18在上文中已经说过

如果脚本是从windows移过来的:

vi tcp_scan2.py

:set fileformat=unix

:wq

chmod u+x tcp_scan2.py

./tcp_scan2.py

运行抓包发现还是存在着上边提到的问题而无法建立连接:

Linux操作系统内核自动回复的RST包中断连接

那么有没有方法能解决呢?

有的,直接配置IPTABLES:对于特点IP禁用出口RST

这时候执行发现建立了三次握手

我们发现拐了这么多弯才能够实现一个全连接扫描

有没有简单点的方式呢?有的,使用强大的Nmap:

-sT参数

直接输入ip效果是扫描1000个默认端口

指定范围端口也可以:

可以发现,速度是非常的快的,结果也比较完善

除了强大的Nmap,还有一些其他的工具,比如:

这个工具只能实现一些功能,相比于Nmap,优劣显而易见

还有一个小工具,也可以了解下:

还有一种奇妙的方式:僵尸扫描,不过很复杂,在下一篇专门介绍

端口扫描就介绍到这里,扫描完端口,接下来就是针对端口的服务扫描,将在后边介绍

Kali学习笔记10:端口扫描详解(下)的更多相关文章

  1. IP2——IP地址和子网划分学习笔记之《子网掩码详解》

    2018-05-04 16:21:21   在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...

  2. Kali学习笔记9:端口扫描详解(上)

    UDP端口扫描: 原理:回应ICMP不可达,代表端口关闭:没有回应,端口开启 建议了解应用层的UDP包头结构,构建对应的UDP数据包用来提高准确度 另外:所有的扫描都存在误判情况 我们用Scapy写个 ...

  3. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  4. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  5. C#学习笔记二: C#类型详解

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  6. 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

    这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...

  7. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  8. MyBatis学习笔记2--配置环境详解

    1.MyBatis-config.xml详解 一个完整的配置文件如下所示 <configuration> <!-- <properties resource="jdb ...

  9. [Spring学习笔记 5 ] Spring AOP 详解1

    知识点回顾:一.IOC容器---DI依赖注入:setter注入(属性注入)/构造子注入/字段注入(注解 )/接口注入 out Spring IOC容器的使用: A.完全使用XML文件来配置容器所要管理 ...

随机推荐

  1. C#使用反射获取对象变化的情况

    记录日志时, 经常需要描述对象的状态发生了怎样的变化, 以前处理的非常简单粗暴: a. 重写class的ToString()方法, 将重要的属性都输出来 b. 记录日志时:  谁谁谁  由  变更前实 ...

  2. CentOS 7 minimal网络配置

    centos最小化安装没有ifconfig命令,可以使用  ip addr  查看网络信息,习惯ifconfig的用户,则使用 yum -y install net-tools 即可 ; 如果yum不 ...

  3. 记录在Ubuntu 18.04系统中安装Apache, MySQL和PHP环境

    虽然我们在Linux VPS.服务器安装WEB环境比较方便,可以选择面板或者一键包,但是有些我们需要深入学习的网友不会选择一键安装,而是会尝试编译安装.这样可以学到一些内在的技术.一般我们较为习惯选择 ...

  4. 201771010134杨其菊《面向对象程序设计java》第九周学习总结

                                                                      第九周学习总结 第一部分:理论知识 异常.断言和调试.日志 1.捕获 ...

  5. 常用jquery

    水果:<input type="checkbox" name="shuiGuo" value="2">苹果<input t ...

  6. Spring事务,Bean生命周期

    一.事务相关: 1.Spring事务基于Spring AOP切面编程: 2.AOP基于代理模式,得到需要开启事务的代码的代理对象: 3.而没有开启事务的Service方法里调用了开启事务 @Trans ...

  7. Flask 学习目录

    Flask 学习目录 Flask 的学习过程是一个了解如何从单个模块搭建一个 Web 框架的过程. Python.Flask 的安装和设置 简单的 Hello World 程序 使用 Jinjia2 ...

  8. Koa源码分析(三) -- middleware机制的实现

    Abstract 本系列是关于Koa框架的文章,目前关注版本是Koa v1.主要分为以下几个方面: Koa源码分析(一) -- generator Koa源码分析(二) -- co的实现 Koa源码分 ...

  9. hashtable and hashmap

    hashmap的bucket 和 ‘负载因子’的介绍 https://blog.csdn.net/wenyiqingnianiii/article/details/52204136

  10. IDEA中通过工具类实现对数据库的增删改查

    package com.hu.dao; import com.hu.entity.Student; import java.util.List;import java.util.Map; public ...