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

    • TCP SYN扫描

    它执行得很快,在一个没有入侵防火墙的快速网络上,每秒钟可以扫描数千个端口。SYN扫描相对来说不张扬,不易被注意到,因为它从来不完成TCP连接。

    它可以应对任何兼容的 TCP协议栈。它还可以明确可靠地区分open(开放的), closed(关闭的),和filtered(被过滤的) 状态。

    它常常被称为半开放扫描, 因为它不打开一个完全的TCP连接。它发送一个SYN报文, 就像您真的要打开一个连接,然后等待响应。

    如果远程主机正在监听(开放)且端口是打开的,远程主机用SYN-ACK应答;如果远程主机没有监听者或者端口是关闭的,它的应答将是RST(复位)。

    如果数次重发后仍没响应, 该端口就被标记为被过滤。如果收到ICMP不可到达错误 (类型3,代码1,2,3,9,10,或者13),该端口也被标记为被过滤。

    它与TCP connect()扫描的不同之处在于,TCP SYN扫描,第二次发送的是复位(RST)标记,而不是结束ACK标记:

    TCP:    恶意客户端发送(SYN),服务器响应(SYN-ACK/RST),恶意客户端发送(ACK)
    TCP SYN:恶意客户端发送(SYN),服务器响应(SYN-ACK/RST),恶意客户端发送(RST)

    SYN扫描比TCP(完全连接)扫描更具侵入性,但是如果网络负载较大,它们可能会导致健壮性较低的防火墙出现问题,并且还会在远程目标上留下未关闭的连接。

    在Nessus中的使用场景:
    SYN扫描是一种策略,恶意黑客(或破解者)可以使用它来确定通信端口的状态而无需建立完整的连接。这种方法是最古老的一种,有时被用来执行拒绝服务(DoS)攻击。 SYN扫描也称为半开扫描。 在SYN扫描中,恶意客户端尝试在每个可能的端口上与服务器建立TCP
    /IP连接。这是通过向服务器上的每个端口发送SYN(同步)数据包来完成的,就像启动了三向握手一样。
    如果服务器使用来自特定端口的SYN/ACK(同步确认)包进行响应,则表示该端口已打开。然后,恶意客户端发送RST(重置)数据包。结果,服务器假定存在通信错误,并且客户端已决定不建立连接。
    但是,开放的端口仍然开放,容易受到剥削。如果服务器以来自特定端口的RST(重置)数据包作为响应,则表明该端口已关闭并且无法被利用。 通过向服务器连续发送大量SYN数据包,破解者可以消耗服务器的资源。由于服务器上充斥着来自恶意客户端的请求,因此合法客户端的通信很少或没有。
    • TCP connect()扫描

    当SYN扫描不能用时,CP Connect()扫描就是默认的TCP扫描。 当用户没有权限发送原始报文或者扫描IPv6网络时,就是这种情况。

    Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。 这是和Web浏览器,P2P客户端以及大多数其它网络应用程序用以建立连接一样的高层系统调用。

    它是叫做Berkeley Sockets API编程接口的一部分。Nmap用 该API获得每个连接尝试的状态信息,而不是读取响应的原始报文。

    当SYN扫描可用时,它通常是更好的选择。因为Nmap对高层的 connect()调用比对原始报文控制更少, 所以前者效率较低。 该系统调用完全连接到开放的目标端口而不是像SYN扫描进行半开放的复位。

    这不仅花更长时间,需要更多报文得到同样信息,目标机也更可能记录下连接。IDS(入侵检测系统)可以捕获两者,但大部分机器没有这样的警报系统。

    当Nmap连接,然后不发送数据又关闭连接, 许多普通UNIX系统上的服务会在syslog留下记录,有时候是一条加密的错误消息。

    此时,有些真正可怜的服务会崩溃,虽然这不常发生。如果管理员在日志里看到来自同一系统的一堆连接尝试,她应该知道她的系统被扫描了。

    • UDP扫描

    虽然互联网上很多流行的服务运行在TCP 协议上,UDP服务也不少。 DNS,SNMP,和DHCP (注册的端口是53,161/162,和67/68)是最常见的三个。

    因为UDP扫描一般较慢,比TCP更困难,一些安全审核人员忽略这些端口。 这是一个错误,因为可探测的UDP服务相当普遍,攻击者当然不会忽略整个协议。 所幸,Nmap可以帮助记录并报告UDP端口。

    UDP扫描用-sU选项激活。它可以和TCP扫描如 SYN扫描 (-sS)结合使用来同时检查两种协议。

    UDP扫描发送空的(没有数据)UDP报头到每个目标端口。 如果返回ICMP端口不可到达错误(类型3,代码3), 该端口是closed(关闭的)。

    其它ICMP不可到达错误(类型3, 代码1,2,9,10,或者13)表明该端口是filtered(被过滤的)。 偶尔地,某服务会响应一个UDP报文,证明该端口是open(开放的)。

    如果几次重试后还没有响应,该端口就被认为是 open|filtered(开放|被过滤的)。 这意味着该端口可能是开放的,也可能包过滤器正在封锁通信。 可以用版本扫描(-sV)帮助区分真正的开放端口和被过滤的端口。

    • Ping扫描

    Ping扫描通过发送ICMP (Internet Control Message Protocol Internet控制消息协议)回应请求数据包和TCP应答(Acknowledge,简写ACK)数据包,确定主机的状态,

    非常适合于检测指定网段内正在运行的主机数量。

    引用:

  • 相关阅读:
    npm常用命令
    关于事件委托和时间冒泡(以及apply和call的事项)
    js 杂记
    angular中关于ng-repeat的性能问题
    关于日期的一些东西
    杂记
    angular中关于自定义指令——repeat渲染完成后执行动作
    angular中事件戳转日期的格式
    ES6-promise
    angular中ng-class的一些用法
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/14331575.html
Copyright © 2011-2022 走看看