zoukankan      html  css  js  c++  java
  • 端口扫描

    一、常用端口

    有一些服务使用固定的端口号,比如如下的:

    21 FTP文件传输协议的命令端口
    22 SSH较安全的远程连接协议
    23 Telnet 早期的连接服务器软件
    25 SMTP邮件传输协议
    53 DNS域名解析服务器
    80 www服务器
    110 pop3邮件接受协议
    443 https有加密安全的www服务器
    3306 mysql

    二、端口扫描工具

    常见的端口扫描工具有nmap,nmap,Metasploit。nmap更慢更全面,zmap则更快更粗略,Metasploit提供多种扫描。

    为什么zmap扫描更快一些,关键性的问题出现在对回复的SYN-ACK进行seq number的校验。传统上就需要记录状态。而ZMap是将对方receiver ip地址进行hash,将其处理保存到了sender port和seq number两个字段中,当SYN-ACK回来的时候,就可以根据sender ip、receiver port、ack number这些字段进行校验。因此避免了状态存储,接近了网络带宽极限。

    nmap使用

    默认使用SYN方式扫描

    扫描单个主机或IP地址

    Screen Shot 2016-01-22 at 11.15.38

    扫描多个IP或子网

    扫描IP地址范围:

    扫描IP地址范围,使用通配符:

    扫描整个子网:

    使用-iL允许nmap从文件中读取主机/IP,在扫描很多主机时很有用。创建一个文件文件,如下:

    扫描文件中的主机:

    三、端口扫描种类

    3.1 ICMP扫描

    ICMP报文格式如下;

    ICMP报文分为两种,差错报文和询问报文。很具报文的作用不同,选项数据也不同。
    可用于ICMP扫描的有如下:
    • ICMP时间戳请求报文,可以向其他机器请求时间
    • ICMP地址掩码请求报文,用于无盘机请求掩码
    • ICMP端口不可达报文,如果收到一份UDP数据报而目的端口与正在使用的端口不符合,则UDP返回一个端口不可达报文
    • ICMP回显请求报文,ping使用的就是这个,也是最常用的
    • 异常IP包,比如伪造IP包的头部长度和IP选项,则会返回ICMP parameter problem error,不同系统和路由器的返回不同,可用于检测OS或网络
    • 超长包,但设置禁止分片,则会收到差错报文
    • 对于目标主机在防火墙内部,则可以构造可能的IP地址列表,逐个发送数据包。对不在其服务范围内的则对方路由器会返回ICMP Host Unreachable或ICMP Time Exceeded,没有收到则被认为IP地址在网络中

     3.2 TCP扫描

    TCP扫描速度慢,且容易留下审计数据,TCP扫描主要有以下几种实现,

    • 直接建立TCP连接
    • SYN扫描,如果发送SYN包的时候,返回RST包,则表示端口不开
    • ACK扫描,不管端口是否打开,都会返回RST,所以不能测试端口是否打开,但是可以用来测试防火墙的策略,时有状态还是无状态,那些端口时被过滤的
    • FIN扫描,如果端口关闭,则收到RST,如果端口打开,则无回复,如果收到ICMP差错报文,则端口状态未知
    • NULL扫描,发送没有任何位的TCP包,如果没有回复,则端口打开,如果有RST包则表示端口关闭
    • x-mas扫描发送一个URG、FIN、PUSH位全部打开的包,同样时没有意义的数据包,结果同NULL

    3.3 UDP扫描

    一般是构造空的UDP包,如果返回ICMP端口不可达,则表示端口时关闭的,如果没有反应,则表示端口可能时开放的

    3.4 空闲扫描

    在IP头中,有一个16位的标识,表示IP的ID,标识(identification)的用途是让目标主机确定一个新到达的分段是哪一个数据流的。同一个数据流所有包都是一个相同的标识。他是可以预测的,增量是固定的(是每次侦听到一个包就增加1吗?)。

    首先找一个空闲机器,不发出或接受任何流量。先和它通信,获得IP的ID增长值,然后假冒空闲机器,想目的机器发出SYN包,则有以下两种情况:

    • 端口打开,则目的机器回复SYN/ACK,然后空闲机器回复RST包
    • 端口关闭,目的主机就不回复SYN/ACK,空闲机器也不回复RST包

    最后检测空闲机器的IP的ID值,如果增长1,则表示后一种情况,增长2表示第一种情况。

    3.5 隐秘扫描

    不容易留下扫描信息,包括了FIN扫描、XMAS扫描、NULL扫描、UDP扫描等。

    四、端口扫描的实现

     原生套接字可以实现。

     
     
  • 相关阅读:
    Python抓取网页动态数据——selenium webdriver的使用
    mac上vim插件YouCompleteMe的安装
    shell命令的搜索顺序(hash -r, hash的作用)
    mac gcc framework include
    一个debug了4个多小时的bug, 操作系统真象还原: 试图运行起第6章的print相关函数却没有预期效果
    python中bytes类型与str类型的区别以及python中str类型是怎么存储的
    一行不解的awk代码
    OKR案例——不同类型的OKR实例
    PostgreSQL与MySQL优势比较
    [Win7 x64]Eclipse Indigo 3.7 中文字体偏小解决方案: Consolas 微软雅黑混合字体!
  • 原文地址:https://www.cnblogs.com/likaiming/p/10423266.html
Copyright © 2011-2022 走看看