Kali学习笔记10:端口扫描详解(下)
上一篇先是介绍了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:端口扫描详解(下)的更多相关文章
- IP2——IP地址和子网划分学习笔记之《子网掩码详解》
2018-05-04 16:21:21 在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...
- Kali学习笔记9:端口扫描详解(上)
UDP端口扫描: 原理:回应ICMP不可达,代表端口关闭:没有回应,端口开启 建议了解应用层的UDP包头结构,构建对应的UDP数据包用来提高准确度 另外:所有的扫描都存在误判情况 我们用Scapy写个 ...
- [读书笔记]C#学习笔记三: C#类型详解..
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
- CDN学习笔记二(技术详解)
一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...
- C#学习笔记二: C#类型详解
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
- 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析
这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...
- jQuery学习笔记之Ajax用法详解
这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...
- MyBatis学习笔记2--配置环境详解
1.MyBatis-config.xml详解 一个完整的配置文件如下所示 <configuration> <!-- <properties resource="jdb ...
- [Spring学习笔记 5 ] Spring AOP 详解1
知识点回顾:一.IOC容器---DI依赖注入:setter注入(属性注入)/构造子注入/字段注入(注解 )/接口注入 out Spring IOC容器的使用: A.完全使用XML文件来配置容器所要管理 ...
随机推荐
- php的运行原理、cgi对比fastcgi以及php-cgi和php-fpm之间的联系区别
最近项目中本地测试环境遇到了windows环境下的nginx使用file_get_contents/curl访问php文件导致的阻塞问题,一直在找解决的方案,这个问题研究了三天终于找到了解决方案,特别 ...
- 【aardio】如何对listview中某一列,某一行的特定值进行修改?
用表格创建数组来实现. import win.ui; /*DSG{{*/ var winform = ..win.form( bottom=399;parent=...;right=599;text= ...
- 最小化webpack项目
先把代码贴出来,以后慢慢加说明 参考资料:入门 Webpack,看这篇就够了 / webpack 搭建自动打开,刷新浏览器 一.功能代码1.index.html <!DOCTYPE html&g ...
- AJAX随笔2
Ajax作用: 是用JavaScript向服务器发送异步请求,然后服务器给出响应,然后以XML格式的文件返回给浏览器端! 异步: 当浏览器向服务器发送请求的时候,不是整个页面刷新,而是局部刷新[局部信 ...
- bugku题目“cookie欺骗”
先上成功截图 题目写的cookie欺骗,但其实是一道考察写脚本能力和代码审计类的题目,首先观察开始的页面 可以看到只有这一串字母,粗略观察可以认为这绝对不是密码,而是胡乱写上的字符,在观察页面源代码后 ...
- WindowsPE权威指南 第二章 小工具 PEInfo代码的C语言实现
主程序代码 PEInfo.c #include <Windows.h> #include<Richedit.h> #include "resource.h" ...
- Linux学习---自定义数据类型
struct 结构体 (地址递增) eg:struct myabc{ unsigned int a; unsigned int b; unsigned int c; unsigned int d; ...
- python模块:csv
""" csv.py - read/write/investigate CSV files """ import re from _csv ...
- docker之tomcat简单部署
将apache-tomcat-8.0.36.tar.gz及jdk-7u79-linux-x64.gz拷贝到创建的tomcat8目录下 在tomcat8目录下创建Dockerfile文件 在Docker ...
- java跨域问题
public class SimpleCORSFilter implements Filter{ @Override public void destroy() { } @Override publi ...