上一篇先是介绍了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. php的运行原理、cgi对比fastcgi以及php-cgi和php-fpm之间的联系区别

    最近项目中本地测试环境遇到了windows环境下的nginx使用file_get_contents/curl访问php文件导致的阻塞问题,一直在找解决的方案,这个问题研究了三天终于找到了解决方案,特别 ...

  2. 【aardio】如何对listview中某一列,某一行的特定值进行修改?

    用表格创建数组来实现. import win.ui; /*DSG{{*/ var winform = ..win.form( bottom=399;parent=...;right=599;text= ...

  3. 最小化webpack项目

    先把代码贴出来,以后慢慢加说明 参考资料:入门 Webpack,看这篇就够了 / webpack 搭建自动打开,刷新浏览器 一.功能代码1.index.html <!DOCTYPE html&g ...

  4. AJAX随笔2

    Ajax作用: 是用JavaScript向服务器发送异步请求,然后服务器给出响应,然后以XML格式的文件返回给浏览器端! 异步: 当浏览器向服务器发送请求的时候,不是整个页面刷新,而是局部刷新[局部信 ...

  5. bugku题目“cookie欺骗”

    先上成功截图 题目写的cookie欺骗,但其实是一道考察写脚本能力和代码审计类的题目,首先观察开始的页面 可以看到只有这一串字母,粗略观察可以认为这绝对不是密码,而是胡乱写上的字符,在观察页面源代码后 ...

  6. WindowsPE权威指南 第二章 小工具 PEInfo代码的C语言实现

    主程序代码 PEInfo.c #include <Windows.h> #include<Richedit.h> #include "resource.h" ...

  7. Linux学习---自定义数据类型

    struct   结构体 (地址递增) eg:struct myabc{ unsigned int a; unsigned int b; unsigned int c; unsigned int d; ...

  8. python模块:csv

    """ csv.py - read/write/investigate CSV files """ import re from _csv ...

  9. docker之tomcat简单部署

    将apache-tomcat-8.0.36.tar.gz及jdk-7u79-linux-x64.gz拷贝到创建的tomcat8目录下 在tomcat8目录下创建Dockerfile文件 在Docker ...

  10. java跨域问题

    public class SimpleCORSFilter implements Filter{ @Override public void destroy() { } @Override publi ...