常规端口扫描和半开放扫描区别_常规端口扫描和半开放

hacker|
368

网吧问题?

介绍你看本书!《黑客入门饕餮网吧黑客2007》

网上没下的!只有买了哦!

详细目录:

Ⅰ 透视网吧限制

0、Intro

1、常见本地限制遍历

1.1、界面限制

1.1.1、隐藏桌面

1.1.2、去除任务栏上下文菜单

1.1.3、禁止访问任务栏属性

1.1.4、“开始”菜单中删除“关机”菜单项

1.1.5、开始菜单中删除“运行”菜单项

1.1.6、禁止浏览访问硬盘资源

1.1.7、开始菜单中删除“查找”菜单项

1.1.8、开始菜单中删除“注销用户”菜单项

1.1.9、开始菜单中删除“设置”

1.1.10、在shell文件夹中关闭上下文菜单

1.1.11、禁止使用网上邻居

1.2、浏览器限制

1.2.1、禁止使用“Internet选项”

1.2.2、禁止更改各个“安全区域”的安全级别

1.2.3、禁止增加或删除“安全区域”中的站点

1.2.4、禁止下载

1.3、其他限制

1.3.1、禁止使用注册表工具

1.3.2、禁止用户更改口令

1.3.3、禁止使用任务管理器

1.3.4、禁止运行命令解释器和批处理文件

1.3.5、禁止使用控制面板

1.3.6、禁止启动时使用F5,F8键(Win9x)

1.3.7、禁止修改时间

2、组策略与注册表

2.1、组策略编辑器

2.1.1、什么是组策略

2.1.2、直观组策略

2.1.3、正文序言

2.2、组策略安全相关设置与注册表对应键值汇总

2.2.1、用户配置\管理模板\Windows 组件\Internet Explorer

2.2.2、用户配置\管理模板\Windows 组件\Internet Explorer\Internet控制面板

2.2.3、用户配置\管理模板\Windows 组件\Internet Explorer\Internet控制面板\安全页\Internet区域

2.2.4、用户配置\管理模板\Windows 组件\Internet Explorer\浏览器菜单

2.2.5、用户配置\管理模板\windows组件\windows 资源管理器

2.2.6、用户配置\管理模板\windows组件\Microsoft Management Console

2.2.7、用户配置\管理模板\windows组件\Microsoft Management Console\受限的/许可的管理单元\组策略

2.2.8、用户配置\管理模板\windows组件\Microsoft Management Console\受限的/许可的管理单元\组策略\组策略管理单元扩充

2.2.9、用户配置\管理模板\windows组件\Windows Messenger

2.2.10、用户配置\管理模板\windows组件\应用程序兼容性

2.2.11、用户配置\管理模板\任务栏和「开始」菜单

2.2.12、用户配置\管理模板\桌面

2.2.13、用户配置\管理模板\控制面板

2.2.14、用户配置\管理模板\控制面板\添加或删除程序

2.2.15、用户配置\管理模板\控制面板\显示

2.2.16、用户配置\管理模板\网络\网络连接

2.2.17、用户配置\管理模板\系统

2.2.18、用户配置\管理模板\系统\Ctrl+Alt+Del 选项

2.3、小结

3、注册表简介

3.1、注册表简述

3.1.1、注册表的由来

3.1.2、注册表与INI文件的不同

3.2、注册表的数据结构

3.2.1、注册表编辑器

3.2.2、注册表结构

3.2.3、注册表的数据类型

3.3、注册表应用

3.3.1、注册表编辑器的功能

3.3.2、注册表修改实例

3.4、小结

Ⅱ 网吧破解新大陆

0、Intro

1、下载者天堂

1.1、VBS出奇招

1.2、Internet缓存.尘封记忆

1.2.1、双塔奇兵

1.2.2、得到什么

1.3、命令行初露锋芒

1.3.1、MT——浓缩是精华

1.3.2、FTP——专业下载

1.4、Active-X 在线

2、潜入寂静岭

2.1、在隐藏了所有本地驱动器的情况下

2.1.1、IE的利用

2.1.2、其他方法

2.2、在禁止访问所有本地驱动器的情况下

2.2.1、利用“运行”

2.2.2、利用IE

2.2.3、利用Winrar

2.2.4、利用记事本

2.2.5、利用快捷方式

2.3、小结

3、From The Inside

3.1、应用控制面板

3.1.1、Internet 选项

3.1.2、安全中心

3.1.3、管理工具

3.1.4、计划任务

3.1.5、任务栏和「开始」菜单

3.1.6、日期和时间

3.1.7、添加或删除程序

3.1.8、网络连接

3.1.9、文件夹选项

3.1.10、系统

3.1.11、显示

3.1.12、用户帐户

3.1.13、从命令行启动控制面板项目

3.2、系统盘中隐藏的杀机

3.2.1、在Windows目录下

3.2.2、在SYSTEM32目录下

3.2.3、在Program Files目录下

3.3、使用VBS和JS脚本文件

3.3.1、使用VBS和JS脚本运行程序

3.3.2、使用VBS和JS脚本操作注册表

3.4、使用inf文件

3.4.1、inf文件的语法和格式设置规则

3.4.2、INF文件的节

3.4.3、Inf文件编写实例

3.4.4、使用inf文件破解网吧限制

3.5、DLL文件简述及修改

3.5.1、DLL文件简介

3.5.2、DLL文件的修改

3.5.3、DLL文件相关

4、永远的特洛伊

4.1、木马的使用

4.1.1、超强B/S远程控制软件Rmtsvc

4.2、木马的自启动

4.2.1、启动文件夹

4.2.2、利用注册表

4.2.3、利用服务实现自启动

4.2.4、文件捆绑与压缩

4.2.5、来自Autorun.inf的攻击

4.2.6、修改文件关联

4.3、突破网吧的还原系统

4.3.1、冰点还原的破解与利用

4.3.2、还原精灵的破解

4.3.3、还原卡破解相关

4.3.4、捆绑法绕过网吧还原系统

4.4、木马的免杀

4.4.1、伯乐相马

4.4.2、秘密行动

4.5、木马的伪装和隐蔽技巧

4.5.1、文件图标的修改

4.5.2、修改文件时间

4.5.3、其它方法

Ⅲ 命令行下的精彩

0、Intro

1、命令行初步

1.1、认识命令提示符

1.2、CMD基础命令

1.2.1、几个内部命令的使用

1.2.2、目录操作命令

1.2.3、文件操作命令

1.3、使用cmd的帮助

1.4、其它

1.4.1、Windows对与含有空格的目录或文件的处理

1.4.2、Windows的通配符

1.4.3、命令行下的复制与粘贴

2、命令行的本地利用

2.1、命令行下的本地信息获取

2.1.1、Systeminfo

2.1.2、Ipcongfig Tracert

2.1.3、Net user Net Localgroup

2.1.4、Netstat -an

2.1.5、Net Start

2.1.6、Net Share

2.1.7、Tasklist

2.2、命令行下的本地限制破解

2.2.1、命令行的破解神话

2.2.2、Regedit的命令行用法

2.2.3、REG - 强大的命令行注册表编辑器

2.2.4、START命令的用法

2.2.5、路径映射命令SUBST的利用

2.2.6、进程结束命令Taskkill

2.2.7、关机命令Shutdown

3、命令行的网络应用

3.1、网络诊断能手PING

3.1.1、探测远程主机的OS

3.1.2、探测远程主机的IP或主机名

3.1.3、PING的其它选项

3.2、NetBIOS工具NBTSTAT

3.2.1、刺探远程主机的NetBIOS名称表

3.2.2、查看NetBIOS名称缓存

3.3、网络路径探测工具Tracert

3.4、DNS服务器验证工具Nslookup

3.5、超级网络工具Netsh

3.5.1、网络配置的查看

3.5.2、修改网络配置

3.6、其它命令网络功能扩展演示

3.6.1、远程信息查询

3.6.2、远程计算机进程的查看与结束

3.6.3、远程管理注册表

4、无敌批处理

4.1、初级批处理命令

4.1.1、Echo

4.1.2、Goto和标签

4.1.3、Rem

4.1.4、Call

4.2、批处理中的符号与参数

4.2.1、命令重定向操作符

4.2.2、其它符号

4.2.3、批处理的参数

4.3、高级批处理命令

4.3.1、IF

4.3.2、For

4.3.3、Set命令与环境变量

4.3.4、使用筛选器

4.4、批处理命令周边

4.4.1、Color

4.4.2、Title

4.4.3、设置CMD窗口大小

4.4.4、Pushd和Popd

4.5、批处理编写实例

4.5.1、修改IP的批处理

4.5.2、创建服务的批处理程序

Ⅳ Pubwin安全日志

0、Intro

1、Pubwin系列产品简介

1.1、Pubwin网吧管理软件的组成

1.1.1、Pubwin4 的组成

1.1.2、Pubwin EP的组成

1.2、Pubwin的保护与限制

1.2.1、Pubwin EP的保护与限制

1.2.2、Pubwin4的保护措施

2、Pubwin客户端破解

2.1、Pubwin4的客户端破解

2.1.1、登陆前的破解

2.1.2、Pubwin4的多进程与破解

2.1.3、无法访问外网的解决方案

2.2、Pubwin EP的客户端破解

2.2.1、未登陆前的破解

2.2.2、登陆以后的破解

2.3、断开网络连接的破解

2.3.1、禁用网络连接

2.3.2、停用网卡

2.3.3、利用防火墙阻断网络连接

2.3.4、绑定服务端错误的MAC地址

2.4、小结

3、Pubwin4客户端密码的破解

3.1、Pubwin4管理员密码破解回顾

3.2、绕过管理员密码验证

3.2.1、反汇编Pubwin.exe

3.2.2、修改Pubwin.exe

4、Pubwin4服务端安全与免费冲值

4.1、Pubwin4服务端数据库结构

4.1.1、Business.mdb

4.1.2、Control.mdb

4.1.3、Member.mdb

4.2、Pubwin4的服务端操作

4.2.1、工具栏上按钮的功能

4.2.2、菜单栏中的一些操作

4.2.3、Pubwin4服务端的密码安全

4.3、Pubwin4下的免费冲值

4.3.1、临时卡用户的免费冲值

4.3.2、会员卡的免费冲值

4.3.3、冲值记录的消除和总帐的修改

4.4、小结

Ⅴ 网吧入侵全程讲解

0、Intro

1、网络技术基础

1.1、网络技术术语

1.1.1、节点

1.1.2、工作站

1.1.3、服务器

1.1.4、局域网和广域网

1.1.5、网关

1.1.6、通信和会话

1.1.7、端口

1.1.8、网络协议

1.2、网络硬件设备

1.2.1、网络适配器

1.2.2、网络传输介质

1.2.3、集线器和交换机

1.2.4、网桥

1.2.5、路由器

1.2.6、调制解调器

1.3、网络拓扑与网吧布局

1.3.1、星型拓扑结构

1.3.2、网吧布局

2、信息搜集

2.1、本地信息搜集

2.1.1、系统信息

2.1.2、本地主机系统密码的获取

2.2、目标踩点

2.2.1、端口扫描

2.2.2、利用SNMP刺探远程主机信息

2.2.3、漏洞与综合扫描

2.3、社会工程学

2.3.1、物理信息收集

2.3.2、利用搜索引擎

3、信息整理

3.1、远程密码猜解的前提

3.1.1、目标操作系统为Win2000的情况下

3.1.2、目标操作系统为WinXP/2003的情况下

3.2、首选缓冲区溢出漏洞攻击

3.3、ARP欺骗发生前

4、远程密码猜解及利用

4.1、SMB下远程猜解密码全解

4.1.1、SMB与NTLM验证机制

4.1.2、通过SMB实现远程猜解密码

4.2、利用密码进行远程控制

4.2.1、经典的IPC$入侵

4.2.2、IPC$入侵中的相关问题

4.2.3、Telnet与NTLM解惑

4.2.4、终端服务的利用

4.2.5、WMI的利用

4.3、基于其它服务的远程密码猜解

4.3.1、针对FTP的密码猜解

4.3.2、终端服务的密码猜解

5、缓冲区溢出漏洞

5.1、缓冲区溢出漏洞攻击原理

5.1.1、什么是缓冲区

5.1.2、缓冲区溢出漏洞

5.2、远程溢出前的准备工作

5.2.1、获得一个有效的攻击代码

5.2.2、Exploit代码编译DIY

5.2.3、缓冲区溢出漏洞分类

5.3、缓冲区漏洞利用

5.3.1、Windows的缓冲区溢出漏洞利用

5.3.2、IE的缓冲区溢出漏洞

5.3.3、本地权限提升漏洞利用

5.4、黑掉整个星球——Metasploit

5.4.1、MSFConsole的使用

5.4.2、MSFWeb的使用

6、ARP欺骗及基于ARP欺骗的攻击

6.1、ARP协议的工作原理

6.1.1、MAC与局域网中的数据传输

6.1.2、ARP协议以及工作原理

6.2、ARP协议的漏洞以及ARP欺骗

6.3、ARP欺骗实例精讲

6.3.1、ARP欺骗初步

6.3.2、实战中间人攻击

6.3.3、基于交换网络的嗅探

6.4、小结

7、权限保持

7.1、后门与RootKit的使用

7.1.1、后门及隐蔽技术简介

7.1.2、系统卧底RootKit

7.2、帐户克隆

7.2.1、简单的帐户隐藏

7.2.2、帐户克隆与原理解析

7.3、其它

Ⅵ 安全防护相关

0、Intro

1、入侵者如何保护自己

1.1、寻找入侵者的替身

1.1.1、代理的使用

1.1.2、跳板与网吧中的IP隐藏

1.2、入侵前的保护措施

1.2.1、探测远程主机的防火墙

1.2.2、半开放与欺骗扫描

1.3、入侵成功后的收尾工作

1.3.1、一般系统日志的删除

1.3.2、其它

2、网吧客户如何保护自己的信息

2.1、上机前的准备工作

2.1.1、初步判断可疑进程

2.1.2、利用网络连接分辨可疑进程

2.1.3、利用自启动项判断可以进程

2.2、使用中需要注意

2.3、下机前的遗留信息清除

2.3.1、清除IE留下的历史记录

2.3.2、Windows中的一些历史纪录

2.3.3、其它的泄密的地方

2.4、小结

3、网管的反击

3.1、Windows的安全设置

3.1.1、做好Windows基本防御

3.1.2、设置Windows的权限

3.2、软件设置

3.2.1、还原系统

3.2.2、设置网吧限制

3.2.3、安全防护软件

3.2.4、网吧管理与更新软件

3.3、网络安全设置

3.3.1、如何防止ARP欺骗

3.3.2、其它

附录:

1、你尽力了吗?

2、Windows系统文件速查

3、批处理常用命令的返回值及其代表的意义

4、组策略安全选项对应注册表项汇总

THE END

定价:29元

nmap扫描工具的使用二 网络探测

Nmap的6种端口状态:

            Open:开放状态

            Closed:关闭状态

            Filtered: 过滤状态(可能被过滤,可能网络阻塞)

            Unfiltered:未被过滤状态(可以访问,但未知端口处于开放还是关闭状态)

            Open|Filtered:开放还是过滤的

            Closed|Filtered:不能确定端口事关闭还是被过滤的

-T 时序选项

        -p|-F|-r  常用扫描方式

        -sS   TCP SYN扫描:(需要root权限)

        -sT  TCP连接扫描:完整三次握手,最基础最稳定的扫描方式

        -sU   UDP扫描(速度非常慢,一般用-p指定端口范围以节约时间)

        -sN/sF/sX  隐蔽扫描

        -sA   TCP ACK扫描

        -sW  TCP窗口扫描

        -sM   TCP Maimon扫描

        –scanflags  自定义TCP扫描

        -sI   空闲扫描

        -sO  IP协议扫描

        -b *  FTP Bounce扫描

时序选项:

        -T0(偏执的):非常慢的扫描,用于IDS逃避

        -T1(鬼祟的):缓慢的扫描,用于IDS逃避

        -T2(文雅的):降低速度以降低对带宽的消耗,一般不同

        -T3(普通的):默认,根据目标的反应自动调整时间

        -T4(野蛮的):快速扫描,常用,需要在很好的网络环境下进行扫描,请求可能会淹没目标

        -T5(疯狂的):极速扫描,以牺牲准确度来提升扫描速度

例子:

(1)指定端口扫描:

nmap -p 80 192.168.20.16

    如图,直接输入nmap -p 80 192.168.20.16的时候提示Host seems down。我们可以通过ping命令来确定网络的连通性,此处使用的命令是ping 192.168.20.16,发现可以ping通,即网络是通的, 使用Ctrl+z停止执行ping命令。 再使用nmap -p 80 192.168.20.16命令的时候就可以出现正确的结果了。

ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

nmap -p 80-1000 192.168.20.16

(2)TCP SYN扫描:

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sS 192.168.20.16

     又称为半开放(需要root权限),常见扫描方式,扫描速度较快,由于未进行TCP连接,比较隐蔽,很难背防火墙或管理员发现

(3)隐蔽扫描

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sN 192.168.20.16

     -sN是Null扫描

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sF 192.168.20.16

     -sF是Fin扫描(发送FIN包)

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sX 192.168.20.16    

           -sX是Xmas扫描(将数据包的FIN/PSH/URG都标记为1)

(4)TCP ACK扫描

         ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

         nmap -sA 192.168.20.16

致命缺点:无法确定端口是否开放还是被过滤

nmap和masscan 在半开放模式下扫描速度的对比分析

 

一、扫描命令和参数:

 

1、nmap x.x.x.x -sS -sU -Pn -p T:80, --source-port 58914 --min-rate 100 --max-rate 100 -n -v -T3 --open --stats-every 5s --min-hostgroup 100 --max-hostgroup 100 

2、masscan  x.x.x.x --ports T:80, --source-port 58914 --rate 100 --wait 1

带宽都是100,端口都是T:80。都为半开放扫描(其中masscan默认半开放扫描,nmap -sS 指定为半开放扫描)。

二、扫描结果:

1、masscan扫描时会回RST包,有时会回两次RST。

masscan扫描80端口

多回了一个RST包。

masscan扫描C段的80、443端口

用时:

masscan扫描C段的全部常用端口

用时

2、nmap半开放扫描时不回RST包,等待服务器自己关闭。

nmap扫描一个ip的80端口

nmap扫描C段的80、443端口

 目标地址会重试连接并返回RST包。

用时:

nmap扫描C段的全部常用端口

三、对比:

经过对比发现,masscan有时会多回一个RST包,而nmap根本不回RST包让目标服务器自己关闭。

由此可以看出,nmap对每个目标会少发一到两个RST包,用时会更少,nmap扫描较快。 

 

四、外网对比:

masscan默认不开启重试。nmap在网络性能差的情况下会触发重试机制,可以设置--max-retries=0关闭重试

1、masscan扫描C段全部常用端口,用时 

2、nmap扫描C段全部常用端口,用时

扫描C段全部常用端口,用时 

nmap扫描C段全部常用端口,关闭重试,用时

外网扫描速度比较:nmap关闭重试扫描 masscan默认扫描  nmap默认扫描

外网扫描端口存活数据比较:nmap默认扫描存活数 masscan默认扫描存活数 nmap关闭重试扫描存活数

如何用Scapy写一个端口扫描器

常见的端口扫描类型有:

1. TCP 连接扫描

2. TCP SYN 扫描(也称为半开放扫描或stealth扫描)

3. TCP 圣诞树(Xmas Tree)扫描

4. TCP FIN 扫描

5. TCP 空扫描(Null)

6. TCP ACK 扫描

7. TCP 窗口扫描

8. UDP 扫描

下面先讲解每种扫描的原理,随后提供具体实现代码。

TCP 连接扫描

客户端与服务器建立 TCP 连接要进行一次三次握手,如果进行了一次成功的三次握手,则说明端口开放。

客户端想要连接服务器80端口时,会先发送一个带有 SYN 标识和端口号的 TCP 数据包给服务器(本例中为80端口)。如果端口是开放的,则服务器会接受这个连接并返回一个带有 SYN 和 ACK 标识的数据包给客户端。随后客户端会返回带有 ACK 和 RST 标识的数据包,此时客户端与服务器建立了连接。如果完成一次三次握手,那么服务器上对应的端口肯定就是开放的。

当客户端发送一个带有 SYN 标识和端口号的 TCP 数据包给服务器后,如果服务器端返回一个带 RST 标识的数据包,则说明端口处于关闭状态。

代码:

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=80

tcp_connect_scan_resp = sr1(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="S"),timeout=10)

if(str(type(tcp_connect_scan_resp))=="type 'NoneType'"):

print "Closed"

elif(tcp_connect_scan_resp.haslayer(TCP)):

if(tcp_connect_scan_resp.getlayer(TCP).flags == 0x12):

send_rst = sr(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="AR"),timeout=10)

print "Open"

elif (tcp_connect_scan_resp.getlayer(TCP).flags == 0x14):

print "Closed"

TCP SYN 扫描

这个技术同 TCP 连接扫描非常相似。同样是客户端向服务器发送一个带有 SYN 标识和端口号的数据包,如果目标端口开发,则会返回带有 SYN 和 ACK 标识的 TCP 数据包。但是,这时客户端不会返回 RST+ACK 而是返回一个只带有 RST 标识的数据包。这种技术主要用于躲避防火墙的检测。

如果目标端口处于关闭状态,那么同之前一样,服务器会返回一个 RST 数据包。

代码:

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=80

stealth_scan_resp = sr1(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="S"),timeout=10)

if(str(type(stealth_scan_resp))=="type 'NoneType'"):

print "Filtered"

elif(stealth_scan_resp.haslayer(TCP)):

if(stealth_scan_resp.getlayer(TCP).flags == 0x12):

send_rst = sr(IP(dst=dst_ip)/TCP(sport=src_port,dport=dst_port,flags="R"),timeout=10)

print "Open"

elif (stealth_scan_resp.getlayer(TCP).flags == 0x14):

print "Closed"

elif(stealth_scan_resp.haslayer(ICMP)):

if(int(stealth_scan_resp.getlayer(ICMP).type)==3 and int(stealth_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):

print "Filtered"

TCP 圣诞树(Xmas Tree)扫描

在圣诞树扫描中,客户端会向服务器发送带有 PSH,FIN,URG 标识和端口号的数据包给服务器。如果目标端口是开放的,那么不会有任何来自服务器的回应。

如果服务器返回了一个带有 RST 标识的 TCP 数据包,那么说明端口处于关闭状态。

但如果服务器返回了一个 ICMP 数据包,其中包含 ICMP 目标不可达错误类型3以及 ICMP 状态码为1,2,3,9,10或13,则说明目标端口被过滤了无法确定是否处于开放状态。

代码:

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=80

xmas_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="FPU"),timeout=10)

if (str(type(xmas_scan_resp))=="type 'NoneType'"):

print "Open|Filtered"

elif(xmas_scan_resp.haslayer(TCP)):

if(xmas_scan_resp.getlayer(TCP).flags == 0x14):

print "Closed"

elif(xmas_scan_resp.haslayer(ICMP)):

if(int(xmas_scan_resp.getlayer(ICMP).type)==3 and int(xmas_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):

print "Filtered"

TCP FIN扫描

FIN 扫描会向服务器发送带有 FIN 标识和端口号的 TCP 数据包。如果没有服务器端回应则说明端口开放。

如果服务器返回一个 RST 数据包,则说明目标端口是关闭的。

如果服务器返回了一个 ICMP 数据包,其中包含 ICMP 目标不可达错误类型3以及 ICMP 代码为1,2,3,9,10或13,则说明目标端口被过滤了无法确定端口状态。

代码:

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=80

fin_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="F"),timeout=10)

if (str(type(fin_scan_resp))=="type 'NoneType'"):

print "Open|Filtered"

elif(fin_scan_resp.haslayer(TCP)):

if(fin_scan_resp.getlayer(TCP).flags == 0x14):

print "Closed"

elif(fin_scan_resp.haslayer(ICMP)):

if(int(fin_scan_resp.getlayer(ICMP).type)==3 and int(fin_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):

print "Filtered"

TCP 空扫描(Null)

在空扫描中,客户端发出的 TCP 数据包仅仅只会包含端口号而不会有其他任何的标识信息。如果目标端口是开放的则不会回复任何信息。

如果服务器返回了一个 RST 数据包,则说明目标端口是关闭的。

如果返回 ICMP 错误类型3且代码为1,2,3,9,10或13的数据包,则说明端口被服务器过滤了。

代码:

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=80

null_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags=""),timeout=10)

if (str(type(null_scan_resp))=="type 'NoneType'"):

print "Open|Filtered"

elif(null_scan_resp.haslayer(TCP)):

if(null_scan_resp.getlayer(TCP).flags == 0x14):

print "Closed"

elif(null_scan_resp.haslayer(ICMP)):

if(int(null_scan_resp.getlayer(ICMP).type)==3 and int(null_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):

print "Filtered"

TCP ACK扫描

ACK 扫描不是用于发现端口开启或关闭状态的,而是用于发现服务器上是否存在有状态防火墙的。它的结果只能说明端口是否被过滤。再次强调,ACK 扫描不能发现端口是否处于开启或关闭状态。

客户端会发送一个带有 ACK 标识和端口号的数据包给服务器。如果服务器返回一个带有 RST 标识的 TCP 数据包,则说明端口没有被过滤,不存在状态防火墙。

如果目标服务器没有任何回应或者返回ICMP 错误类型3且代码为1,2,3,9,10或13的数据包,则说明端口被过滤且存在状态防火墙。

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=80

ack_flag_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="A"),timeout=10)

if (str(type(ack_flag_scan_resp))=="type 'NoneType'"):

print "Stateful firewall presentn(Filtered)"

elif(ack_flag_scan_resp.haslayer(TCP)):

if(ack_flag_scan_resp.getlayer(TCP).flags == 0x4):

print "No firewalln(Unfiltered)"

elif(ack_flag_scan_resp.haslayer(ICMP)):

if(int(ack_flag_scan_resp.getlayer(ICMP).type)==3 and int(ack_flag_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]):

print "Stateful firewall presentn(Filtered)"

TCP窗口扫描

TCP 窗口扫描的流程同 ACK 扫描类似,同样是客户端向服务器发送一个带有 ACK 标识和端口号的 TCP 数据包,但是这种扫描能够用于发现目标服务器端口的状态。在 ACK 扫描中返回 RST 表明没有被过滤,但在窗口扫描中,当收到返回的 RST 数据包后,它会检查窗口大小的值。如果窗口大小的值是个非零值,则说明目标端口是开放的。

如果返回的 RST 数据包中的窗口大小为0,则说明目标端口是关闭的。

代码:

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=80

window_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="A"),timeout=10)

if (str(type(window_scan_resp))=="type 'NoneType'"):

print "No response"

elif(window_scan_resp.haslayer(TCP)):

if(window_scan_resp.getlayer(TCP).window == 0):

print "Closed"

elif(window_scan_resp.getlayer(TCP).window 0):

print "Open"

UDP扫描

TCP 是面向连接的协议,而UDP则是无连接的协议。

面向连接的协议会先在客户端和服务器之间建立通信信道,然后才会开始传输数据。如果客户端和服务器之间没有建立通信信道,则不会有任何产生任何通信数据。

无连接的协议则不会事先建立客户端和服务器之间的通信信道,只要客户端到服务器存在可用信道,就会假设目标是可达的然后向对方发送数据。

客户端会向服务器发送一个带有端口号的 UDP 数据包。如果服务器回复了 UDP 数据包,则目标端口是开放的。

如果服务器返回了一个 ICMP 目标不可达的错误和代码3,则意味着目标端口处于关闭状态。

如果服务器返回一个 ICMP 错误类型3且代码为1,2,3,9,10或13的数据包,则说明目标端口被服务器过滤了。

但如果服务器没有任何相应客户端的 UDP 请求,则可以断定目标端口可能是开放或被过滤的,无法判断端口的最终状态。

代码:

#! /usr/bin/python

import logging

logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

from scapy.all import *

dst_ip = "10.0.0.1"

src_port = RandShort()

dst_port=53

dst_timeout=10

def udp_scan(dst_ip,dst_port,dst_timeout):

udp_scan_resp = sr1(IP(dst=dst_ip)/UDP(dport=dst_port),timeout=dst_timeout)

if (str(type(udp_scan_resp))=="type 'NoneType'"):

retrans = []

for count in range(0,3):

retrans.append(sr1(IP(dst=dst_ip)/UDP(dport=dst_port),timeout=dst_timeout))

for item in retrans:

if (str(type(item))!="type 'NoneType'"):

udp_scan(dst_ip,dst_port,dst_timeout)

return "Open|Filtered"

elif (udp_scan_resp.haslayer(UDP)):

return "Open"

elif(udp_scan_resp.haslayer(ICMP)):

if(int(udp_scan_resp.getlayer(ICMP).type)==3 and int(udp_scan_resp.getlayer(ICMP).code)==3):

return "Closed"

elif(int(udp_scan_resp.getlayer(ICMP).type)==3 and int(udp_scan_resp.getlayer(ICMP).code) in [1,2,9,10,13]):

return "Filtered"

print udp_scan(dst_ip,dst_port,dst_timeout)

下面解释下上述代码中的一些函数和变量:

RandShort():产生随机数

type():获取数据类型

sport:源端口号

dport:目标端口号

timeout:等待相应的时间

haslayer():查找指定层:TCP或UDP或ICMP

getlayer():获取指定层:TCP或UDP或ICMP

以上扫描的概念可以被用于“多端口扫描”,源码可以参考这里:

Scapy 是一个非常好用的工具,使用它可以非常简单的构建自己的数据包,还可以很轻易的处理数据包的发送和相应。

(译者注:上述所有代码均在Kali 2.0下测试通过,建议读者在Linux环境下测试代码,如想在Windows上测试,请参见 Scapy官方文档 配置好scapy环境)

nmap十条自带命令的作用分别是什么啊?刚学求大神指点!

1、Intense scan nmap -T4 -A -v:作用强烈的扫描。

2、Intensescan plus UDP:强烈的扫描,加上udp协议扫描。

3、Intense scan, all TCP ports:对目标的所有端口进行强烈的扫描。

4、.Intensescan, no ping:对目标进行强烈的扫描,不进行主机发现。

5、Ping scan :在发现主机后,不进行端口扫描。

6、Quick scan:快速扫描。

7、Quick traceroute:快速扫描,不扫端口返回每一跳的主机ip。

8、Quickscan plus:更快速的扫描。

9、Slow comprehensive scan:慢速综合性扫描。

10、Regular scan:常规扫描。

参考资料来源:百度百科-nmap

0条大神的评论

发表评论