小符的CEH考证之路拾壹 - 会话劫持

911 阅读39分钟

CEH - 职业道德黑客关于 会话劫持 Session Hijacking

Spoofing和hijacking的区别在于,spoofing是黑客伪装成合法用户(通过偷取credentials)而hijacking是依赖于用户的session,从而进行监听。

本章节的学习目标包括:

  • Understanding Session Hijacking Concepts 理解会话劫持
  • Understanding Application Level Session Hijacking 应用的会话劫持
  • Understanding Network Level Session Hijacking 网络的会话劫持
  • Overview of Session Hijacking Tools 会话劫持工具
  • Understanding Different Session Hijacking Countermeasures 会话劫持的防御

Understanding Session Hijacking Concepts 理解会话劫持

会话劫持允许攻击者通过绕过身份验证bypassing the authentication过程来接管活动会话,此后,他们可以对被劫持的系统执行任何操作。attacker takes over a valid Transmission Control Protocol (TCP) communication 攻击者接管了两台计算机之间的有效传输控制协议 (TCP) 通信会话,来控制随机生成的token,生成未授权的连接。当Absence of account lockout for invalid session IDs没有针对无效会话 ID 的帐户锁定(如果网站没有实施帐户锁定,攻击者可以多次尝试连接嵌入在真实 URL 中的不同会话 ID。攻击者可以继续进行尝试,直到确定实际会话 ID。这种攻击也称为蛮力攻击。在暴力攻击期间,Web 服务器不会显示警告消息或投诉,从而允许攻击者确定有效的会话 ID。)、Weak session-ID generation algorithm or small session IDs弱会话 ID 生成算法或小会话 ID(大多数网站使用线性算法来预测生成会话 ID 的时间或 IP 地址等变量。通过研究顺序模式并生成多个请求,攻击者可以轻松缩小伪造有效会话 ID 所需的搜索空间。即使使用强会话 ID 生成算法,如果字符串很短,也可以轻松确定活动会话 ID。)、 Insecure handling of session IDs会话 ID 的不安全处理(攻击者可以通过误导用户的浏览器访问另一个站点来检索存储的会话 ID 信息。在会话到期之前,攻击者可以通过多种方式利用这些信息,例如域名系统 (DNS) 中毒、跨站点脚本攻击以及​​利用浏览器中的漏洞。)、 Indefinite session timeout无限期会话超时会,会导致session hijacking(具有无限期到期时间的会话 ID 提供了一个攻击者有无限时间猜测有效会话 ID。这方面的一个例子是许多网站中的“记住我”选项。攻击者可以在捕获用户的 cookie 文件后对用户的 Web 帐户使用静态会话 ID。攻击者还可以执行)。

会话劫持过程

攻击者以真实用户身份genuine user潜入sneak系统比直接进入系统更容易。攻击者可以通过找到已建立的会话并在用户身份验证后接管它来劫持真正用户的会话。劫持会话后,攻击者可以保持连接数小时而不会引起怀疑without arousing suspicion。在此期间,所有流向用户 IP 地址的流量都转而进入攻击者的系统,攻击者可以植入后门或获得对系统的额外访问权限。在这里,我们检查攻击者如何劫持会话。

Packet Analysis of a Local Session Hijack本地会话劫持的数据包分析

Packet Analysis of a Local Session Hijack本地会话劫持的数据包分析,会话劫持涉及高级攻击向量,它会影响许多系统。许多建立 LAN 或 Internet 连接的系统使用 TCP 传输数据。为了在两个系统之间建立连接并成功传输数据,两个系统应该执行三次握手。会话劫持涉及利用这种三向握手方法来控制会话。为了进行会话劫持攻击,攻击者执行三项活动:

  • 跟踪会话
  • 会话去同步
  • 在会话期间注入命令 通过嗅探网络流量,攻击者可以监控或跟踪会话。会话劫持的下一步是取消同步会话。如果攻击者知道客户端使用的下一个序列号(NSN),则很容易完成这种攻击。在客户端使用之前,可以通过使用该序列号来劫持会话。确定序号有两种可能:一种是嗅探流量,找到一个ACK包,然后根据ACK包确定NSN。另一种是用猜测的序列号传输数据,这不是一种可靠的方法。如果攻击者可以访问网络并嗅探 TCP 会话,他们就可以轻松确定序列号。这种类型的会话劫持称为“本地会话劫持”。

Network Level Session Hijacking 网络的会话劫持

网络级劫持是在 TCP/用户数据报协议 (UDP) 会话中的客户端和服务器之间传输期间拦截数据包。成功的攻击为攻击者提供了关键信息,这些信息可进一步用于攻击应用程序级会话。攻击者最有可能执行网络级劫持,因为他们不需要在每个 Web 应用程序的基础上修改攻击per-web-application basis。这种攻击的重点是跨所有 Web 应用程序共享的协议数据流。攻击者特别关注网络级会话劫持,因为与主机级会话劫持相比,它不需要主机访问,或者与应用程序级劫持相比,需要针对每个应用程序定制攻击。网络级劫持依赖于劫持应用层中 Web 应用程序使用的传输和 Internet 协议。 通过攻击网络级会话,攻击者收集了一些用于攻击应用级会话的关键信息。

  • Blind hijacking, 在盲目劫持中,攻击者可以将恶意数据或命令注入到 TCP 会话中截获的通信中intercepted communications in a TCP session,即使受害者禁用源路由也是如此。 为此,攻击者必须正确猜测尝试建立连接的计算机的下一个 ISN。 尽管攻击者可以发送恶意数据或命令,例如设置密码以允许从网络上的另一个位置进行访问,但攻击者无法查看响应。 为了能够查看响应,MITM 攻击是一个更好的选择。
  • RST hijacking, 劫持涉及通过使用欺骗的源 IP 地址并预测确认号来注入看起来真实的重置 (RST) injecting an authentic-looking reset (RST)RST 数据包。 如果使用准确的确认号,黑客可以重置受害者的连接。 受害者认为源已经发送了重置数据包并重置了连接。 RST 劫持可以使用 Colasoft Packet Builder 等数据包制作工具和 tcpdump 等 TCP/IP 分析工具来执行。
  • UDP hijacking, 用户数据报协议 (UDP)User Datagram Protocol (UDP) 不使用数据包排序或同步packet sequencing or synchronizing。 因此,UDP 会话比 TCP 会话更容易受到攻击。 因为 UDP 是无连接的,所以很容易在受害者没有注意到的情况下修改数据。 在网络级会话劫持中,劫持者在服务器响应之前伪造服务器对客户端 UDP 请求的响应。 因此,攻击者控制了会话。 服务器和客户端之间没有数据包交换,因为服务器的序列号无法匹配客户端的确认号。如果使用嗅探,服务器的回复很容易受到限制。 UDP 劫持中的 MITM 攻击可以最大限度地减少攻击者的任务,因为它可以首先阻止服务器的回复到达客户端。
  • Man-in-the-middle: packet sniffer, MITM 攻击使用数据包嗅探器来拦截客户端和服务器之间的通信。 攻击者更改客户端机器的默认网关gateway并尝试重新路由数据包。 客户端和服务器之间的数据包使用以下两种技术通过劫持者的主机进行路由。
    • Forged Internet Control Message Protocol (ICMP),Internet 控制消息协议 (ICMP) 是用于发送错误消息的 IP 的扩展。 攻击者可以使用 ICMP 发送消息来欺骗客户端和服务器。 在这种技术中,ICMP 数据包被伪造以通过劫持者的主机重定向客户端和主机之间的流量。 黑客的数据包发送错误消息,指示通过原始连接处理数据包时出现问题。 这会欺骗服务器和客户端通过劫持者的路径进行路由。
    • Address Resolution Protocol (ARP) Spoofing,主机使用地址解析协议 (ARP) 表将本地网络层地址(IP 地址)映射到硬件地址或 MAC 地址。 该技术包括通过广播 ARP 请求来欺骗主机,并通过发送伪造的 ARP 回复来更改其 ARP 表。 攻击者发送伪造的 ARP 回复,更新广播 ARP 请求的主机的 ARP 表。 这会将流量路由到攻击者的主机,而不是合法的 IP 地址。
  • TCP/IP hijacking, 在 TCP/IP 劫持中,攻击者使用欺骗性数据包拦截两个通信方之间已建立的连接,然后假装是其中之一。 在这种方法中,攻击者使用欺骗数据包将 TCP 流量重定向到他们自己的机器。 一旦成功,受害者的连接就会挂起,攻击者可以代表受害者与主机的机器进行通信。 要发起 TCP/IP 劫持攻击,受害者和攻击者必须在同一网络上。 目标服务器和受害机器可以位于任何地方。 通过使用这种技术,攻击者可以轻松攻击使用一次性密码的系统。TCP/IP劫持涉及以下过程。
    • The hacker sniffs the communication between the victim and host to obtain the victim’s ISN.黑客通过嗅探受害者与主机之间的通信来获取受害者的 ISN。
    • By using this ISN, the attacker sends a spoofed packet from the victim’s IP address to the host system.通过使用此 ISN,攻击者将欺骗性数据包从受害者的 IP 地址发送到主机系统。
    • The host machine responds to the victim, assuming that the packet arrived from it. This increments the sequence number.主机响应受害者,假设数据包来自它。 这会增加序列号。
  • IP spoofing: source routed packets, 源路由数据包Source routed packets有助于在受信任主机的 IP 地址的帮助下获得对计算机的未经授权的访问。这种类型的劫持允许攻击者创建自己可接受的数据包以插入 TCP 会话。首先,攻击者欺骗受信任主机的 IP 地址,以便管理与主机会话的服务器接受来自攻击者的数据包。数据包是源路由的;因此,发送方指定数据包从源 IP 到目标 IP 的路径。通过使用这种源路由技术,攻击者可以欺骗服务器,使其相信它正在与用户进行通信。成功欺骗 IP 地址后,劫持者会更改序列号和确认号。一旦更改了这些数字,攻击者就会在客户端响应之前将伪造的数据包注入 TCP 会话。这会导致非同步状态,因为序列号和 ACK 号不同步。原始数据包丢失,服务器收到带有新 ISN 的数据包。这些数据包的源路由到攻击者指定的修补目标 IP 地址。

Application Level Session Hijacking 应用的会话劫持

应用程序级劫持涉及通过获取会话 ID session IDs来控制超文本传输​​协议 (HTTP) 用户会话。在应用程序级别,攻击者获得了对现有会话的控制权,并可以通过使用被盗数据创建新的未经授权的会话。通常,两者同时发生,具体取决于被攻击的系统。

  • Compromising Session IDs Using Sniffing使用嗅探破坏会话 ID Web, Web 服务器通过唯一的会话 ID(也称为会话令牌)识别用户的连接。 Web 服务器在成功验证客户端登录后向客户端浏览器发送会话令牌。通常,会话令牌包含可变宽度的字符串,该字符串以各种方式有用,例如在 HTTP 申请 (cookie) 的标头中、在 URL 中或在 HTTP 申请的正文中。攻击者使用 Wireshark 和 SteelCentral Packet Analyzer 等数据包嗅探工具拦截受害者和 Web 服务器之间的 HTTP 流量。然后,攻击者分析捕获的数据包中的数据,以识别有价值的信息,例如会话 ID 和密码。一旦确定了会话 ID,攻击者就会伪装成受害者,并在受害者之前将会话 ID 发送到 Web 服务器。攻击者使用有效的令牌会话来获得对 Web 服务器的未经授权的访问。通过这种方式,攻击者可以控制现有的合法会话。

  • Compromising Session IDs by Predicting Session Token 通过预测会话令牌来破坏会话 ID, 会话 ID 被标记为在用户和 Web 服务器之间建立的经过身份验证的会话的证明。因此,如果攻击者可以猜测或预测用户的会话 ID,则可能进行欺诈活动fraudulent activity 。会话预测使攻击者Session prediction能够绕过应用程序的身份验证模式。通常,攻击者可以预测由弱算法 weak algorithms生成的会话 ID 并冒充网站用户。攻击者分析会话 ID 的可变部分以确定模式的存在。这种分析可以手动进行,也可以使用各种密码分析工具进行。攻击者收集大量同时会话 ID 以在同一时间窗口中收集样本并保持变量不变。首先,攻击者收集一些有效的会话 ID,这些 ID 有助于识别经过身份验证的用户。然后,攻击者研究会话 ID 结构、用于生成它的信息以及 Web 应用程序用来保护它的算法。根据这些发现,攻击者可以预测会话 ID。攻击者还可以通过使用蛮力技术来猜测会话 ID,在这种技术中他们生成并测试不同的会话 ID 值,直到他们成功获得对应用程序的访问权限。

    大多数 Web 服务器使用自定义算法或预定义模式生成会话 ID,这可能只是增加静态数字,而其他 Web 服务器使用更复杂的过程,例如考虑时间和其他计算机特定变量。因此,攻击者可以通过以下方式识别生成的会话 ID:

    • 嵌入 URL,当客户端单击页面中嵌入的链接时,应用程序中的 GET 请求会接收到该 URL
    • 嵌入表单作为隐藏字段,提交给 HTTP 的 POST 命令
    • 嵌入客户端本地机器上的 cookie 攻击者猜测唯一会话值或推断会话 ID 以劫持会话
  • Compromising Session IDs Using Man-in-the-Middle Attack(MITM) 使用中间人攻击破坏会话 ID, 中间人 (MITM) 攻击用于侵入系统之间的现有连接并拦截正在传输的消息。在这种攻击中,攻击者使用不同的技术并将 TCP 连接分成两部分:客户端到攻击者的连接和攻击者到服务器的连接。成功拦截 TCP 连接后,攻击者可以读取、修改和插入欺诈read, modify, and insert fraudulent data数据到拦截的通信intercepted communication中。在 HTTP 事务的情况下,客户端和服务器之间的 TCP 连接是目标。

  • Compromising Session IDs Using Man-in-the-Browser Attack 使用浏览器中的人攻击破坏会话 ID, 浏览器中的人攻击类似于 MITM 攻击。两者的区别在于浏览器中的人攻击使用木马来拦截和操纵浏览器与其安全机制或库之间的调用。攻击者将之前安装的木马放置在浏览器及其安全机制之间,木马可以修改网页和交易内容或插入额外的交易。木马的所有活动对用户和 Web 应用程序都是不可见的.这种攻击的主要目标是通过操纵使用网上银行系统进行的交易来进行金融盗窃。即使存在 SSL、公钥基础设施 (PKI) 和双因素身份验证等安全机制,浏览器中的人攻击也可能成功,因为所有预期的控制和安全机制security mechanisms似乎都可以正常运行。攻击过程:

    • The Trojan first infects the computer’s software (OS or application).木马首先感染计算机的软件(操作系统或应用程序)
    • The Trojan installs malicious code (extension files) and saves it in the browser configuration.木马安装恶意代码(扩展文件)并将其保存在浏览器配置中
    • After the user restarts the browser, the malicious code in the form of extension files is loaded.用户重启浏览器后,会加载扩展文件形式的恶意代码。
    • The extension files register a handler for every visit to a webpage. 扩展文件为每次访问网页注册一个处理程序。
    • When a page is loaded, the extension matches its URL with a list of known sites targeted for attack.加载页面时,扩展程序会将其 URL 与已知的攻击目标站点列表相匹配。
    • The user logs in securely to the website. 用户安全地登录到网站。
    • The extension registers a button event handler when a specific page load is detected with a specific pattern and compares it with its targeted list.当使用特定模式检测到特定页面加载时,扩展注册一个按钮事件处理程序,并将其与其目标列表进行比较。
    • When the user clicks on the button, the extension uses the Document Object Model (DOM) interface and extracts all the data from all form fields and modifies the values.当用户点击按钮时,扩展使用文档对象模型(DOM)接口,从所有表单字段中提取所有数据并修改值。
    • The browser sends the form and modified values to the server. 浏览器将表单和修改后的值发送到服务器。
    • The server receives the modified values but cannot distinguish between the original and modified values.服务器接收到修改后的值,但无法区分原始值和修改后的值。
    • After the server performs the transaction, a receipt is generated. 服务器执行交易后,会生成收据。
    • Now, the browser receives the receipt for the modified transaction. 现在,浏览器收到修改交易的收据。
    • The browser displays the receipt with the original details.浏览器显示带有原始详细信息的收据。
    • The user believes that the original transaction was received by the server without any interception.用户认为原始交易被服务器接收,没有任何拦截。
  • Compromising Session IDs Using Client-side Attacks 使用客户端攻击破坏会话 ID, 客户端攻击针对与恶意服务器交互或处理恶意数据的客户端应用程序中的漏洞。根据漏洞的性质,攻击者可以通过发送带有恶意链接的电子邮件或以其他方式诱使用户访问恶意网站来利用应用程序。易受攻击的客户端应用程序包括未受保护的网站、Java 运行时环境和浏览器;其中,浏览器是主要目标。当客户端与恶意服务器建立连接并处理来自它们的潜在有害数据时,就会发生客户端攻击。如果客户端和服务器之间没有发生交互,那么就没有客户端攻击的余地。一个这样的示例是运行文件传输协议 (FTP) 客户端而不建立与 FTP 服务器的连接。在即时消息传递的情况下,应用程序的配置方式是让客户端登录到远程服务器,从而使其容易受到客户端攻击。以下客户端攻击可用于破坏会话 ID。方式:

    • Cross-site scripting (XSS)跨站点脚本: XSS enables attackers to inject malicious client-side scripts into web pages viewed by other users.XSS 使攻击者能够将恶意客户端脚本注入其他用户查看的网页中。跨站点脚本攻击是一种客户端攻击,其中攻击者通过使用恶意代码或程序来破坏会话令牌。当动态网页接收到来自攻击者的恶意数据并在用户系统上执行时,就会发生这种类型的攻击。创建动态页面的网站无法控制客户端如何读取其输出。因此,攻击者可以将恶意 JavaScript、VBScript、ActiveX、超文本标记语言 (HTML) 或 Flash 小程序插入易受攻击的动态页面。然后该页面在用户机器上执行脚本并收集用户的个人信息、窃取 cookie、将用户重定向到意外网页或在用户系统上执行任何恶意代码。如下图所示,用户首先与服务器建立有效会话。攻击者使用恶意 JavaScript 向受害者发送精心设计的链接。当用户点击链接时,JavaScript 会自动运行并执行攻击者设置的指令。结果显示用户的当前会话 ID。使用相同的技术,攻击者可以创建获取用户会话 ID 的特定 JavaScript 代码:<SCRIPT>alert(document.cookie);</SCRIPT> 此后,攻击者使用窃取的会话 ID 与服务器建立有效会话。
    • Cross-site Request Forgery Attack(CSRF)跨站请求伪造,a one-click attack or session riding也称为一键式攻击或会话骑乘。其中攻击者利用受害者与受信任站点的活动会话来执行恶意活动,例如购买物品和修改或检索的帐户信息the modification or retrieval of account information.在 CSRF Web 攻击中,攻击者创建一个包含恶意信息的主机表单,并将其发送给授权用户。用户填写表单并将其发送到 Web 服务器。因为数据来自受信任的用户,所以 Web 服务器接受数据。与利用用户对特定网站的信任的 XSS 攻击不同,CSRF 利用网站对用户浏览器的信任。 CSRF 攻击涉及以下步骤。
      • 攻击者使用看似合法的表单托管网页。这个页面已经包含了攻击者的请求。The attacker hosts a web page with a form that appears legitimate. This page already contains the attacker’s request.
      • 用户认为表单是原始表单,输入登录名和密码。A user, believing the form to be the original, enters a login and password.
      • 一旦用户完成表单,该页面将被提交到真实站点。Once the user completes the form, that page is submitted to the real site.
      • 真实站点的服务器接受表单,假设它是由用户根据身份验证凭据发送的The real site’s server accepts the form, assuming that it was sent by the user based on the authentication credentials. 这样,服务器就接受了攻击者的请求。
    • Malicious JavaScript codes恶意代码: An attacker can embed in a web page a malicious script that does not generate any warning but captures session tokens in the background and sends them to the attacker.攻击者可以在网页中嵌入不生成任何警告但在后台捕获会话令牌并将其发送给攻击者的恶意脚本。
    • Trojans木马: A Trojan horse can change the proxy settings in the user’s browser to send all sessions through an attacker’s machine.木马可以更改用户浏览器中的代理设置,以通过攻击者的机器发送所有会话。
  • Compromising Session IDs Using Session Replay Attacks 使用会话重放攻击破坏会话 ID,在会话重放攻击中,攻击者通过侦听用户与服务器之间的对话来捕获用户的身份验证令牌。 一旦获取到了认证令牌,攻击者就利用获取到的认证令牌向服务器重放认证请求,以躲避服务器; 因此,他们获得对服务器的未经授权的访问。 会话重放攻击涉及以下步骤。

    • The user establishes a connection with the web server. 用户与 Web 服务器建立连接
    • The server asks the user for authentication information as identity proof. 服务器要求用户提供身份验证信息作为身份证明
    • The user sends authentication tokens to the server. In this step, an attacker captures the authentication token of the user by eavesdropping on the conversation between the user and server.用户向服务器发送身份验证令牌。 在此步骤中,攻击者通过窃听用户与服务器之间的对话来获取用户的身份验证令牌。
    • Once the authentication token is captured, the attacker replays the request to the server with the captured authentication token and gains unauthorized access to the server.一旦身份验证令牌被捕获,攻击者使用捕获的身份验证令牌向服务器重放请求,并获得对服务器的未经授权的访问。
  • Compromising Session IDs Using Session Fixation使用 固定攻击 破坏 Session ID,Web 会话安全性可防止攻击者拦截、暴力破解或预测 Web 服务器向用户浏览器发出的会话 ID,作为经过身份验证的会话的证明。但是,这种方法忽略了攻击者向用户的浏览器发出会话 ID 的可能性,迫使它使用所选的会话 ID。这种类型的攻击称为会话固定攻击,因为攻击者预先固定了用户的会话 ID,而不是在登录时随机生成。攻击者执行会话固定攻击以劫持有效的用户会话。攻击者利用 Web 应用程序会话 ID 管理的限制。 Web 应用程序允许用户使用现有的会话 ID 进行身份验证,而不是生成新的会话 ID。在这种类型的攻击中,攻击者提供一个合法的 Web 应用程序会话 ID 并引诱受害者使用它。如果受害者的浏览器使用该会话 ID,则攻击者可以劫持用户验证的会话,因为攻击者已经知道受害者使用的会话 ID。会话固定攻击是一种会话劫持。但是,会话固定攻击不会在用户登录后窃取用户与 Web 服务器之间建立的会话,而是在用户浏览器上修复已建立的会话;因此,攻击是在用户登录之前发起的。攻击者使用各种技术来执行会话固定攻击:

    • Session token in the URL argument,攻击者引诱受害者点击虚假链接,该链接看似合法,但会将用户重定向到攻击者的服务器。 然后,攻击者代表受害者将请求转发到合法服务器,并充当整个交易的代理。 作为代理,攻击者在合法服务器与用户交互过程中捕获会话信息。
    • Session token in a hidden form field
    • Session ID in a cookie, Compression Ratio Info-Leak Made Easy (CRIME) 是一种客户端攻击,它利用 SSL/传输层安全 (TLS)、SPDY 和 HTTP 安全 (HTTPS) 等协议的数据压缩功能中的漏洞。缓解 HTTPS 压缩的可能性很低,这使得该漏洞比其他压缩漏洞更加危险。当 Internet 上的两台主机使用 HTTPS 建立连接时,将建立 TLS 会话,并且数据以加密形式传输。因此,攻击者很难读取或修改两台主机之间的消息。当用户登录 Web 应用程序时,身份验证数据存储在 cookie 中。每当浏览器向 Web 应用程序发送 HTTPS 请求时,存储的 cookie 都会用于身份验证。在此攻击中,攻击者尝试访问身份验证 cookie 以劫持受害者的​​会话。在 HTTPS 中,cookie 使用无损数据压缩算法 (DEFLATE) 进行压缩,然后进行加密。因此,攻击者很难通过简单的嗅探来获取 cookie 的值。在 HTTPS 中,cookie 使用无损数据压缩算法 (DEFLATE) 进行压缩,然后进行加密。因此,攻击者很难通过简单的嗅探来获取 cookie 的值。要执行 CRIME 攻击,攻击者必须使用社会工程技术诱骗受害者点击恶意链接。当受害者点击恶意链接时,它要么将恶意代码注入受害者的系统,要么将受害者重定向到恶意网站。如果受害者已经与安全的 Web 应用程序建立了 HTTPS 连接,则攻击者会使用 ARP 欺骗等技术嗅探受害者的 HTTPS 流量。通过嗅探,攻击者从 HTTPS 消息中捕获 cookie 值,并向 Web 应用程序发送多个 HTTPS 请求,该 cookie 前面带有一些随机字符。随后,攻击者监视受害者与 Web 应用程序之间的流量,以获取 cookie 的压缩和加密值。捕获cookie后,攻击者分析cookie长度并预测认证cookie的实际值。获取身份验证 cookie 后,攻击者冒充受害者并劫持受害者与安全 Web 应用程序的会话,以窃取密码、社会保险号和信用卡号等机密信息。 攻击者使用诸如 CrimeCheck 之类的工具来检测 Web 服务器是否启用了 TLS 或 HTTP 压缩,因此容易受到 CRIME 攻击。
    • Session Hijacking Using Forbidden Attack使用禁止攻击的会话劫持,禁止攻击是一种 MITM 攻击,可以在与服务器建立 HTTPS 会话时重用加密随机数时执行。根据 TLS 规范,这些任意数据必须使用一次。此攻击利用了在 TLS 握手期间使用高级加密标准 - 伽罗瓦/计数器模式 (AES-GCM) 加密数据时 TLS 实现错误地重用相同随机数的漏洞。攻击者利用此漏洞通过生成用于身份验证的加密密钥来执行 MITM 攻击。在 TLS 握手期间重复相同的 nonce 允许攻击者监控和劫持连接。在劫持 HTTPS 会话并绕过保护后,攻击者会在传输中注入恶意代码和伪造内容,例如提示用户泄露密码、社会保险号或其他机密信息的 JavaScript 代码或 Web 字段。禁止攻击涉及以下步骤。
      • The attacker monitors the connection between the victim and web server and sniffs the nonce from the TLS handshake messages.攻击者监视受害者和 Web 服务器之间的连接,并从 TLS 握手消息中嗅探随机数。
      • The attacker generates authentication keys using the nonce and hijacks the connection.攻击者使用随机数生成身份验证密钥并劫持连接
      • All the traffic between the victim and web server flows through the attacker’s machine. 受害者和 Web 服务器之间的所有流量都流经攻击者的机器。
      • The attacker injects JavaScript code or web fields into the transmission towards the victim.攻击者将 JavaScript 代码或 Web 字段注入到向受害者的传输中。
      • The victim reveals sensitive information such as bank account numbers, passwords, and social security numbers to the attacker.受害者向攻击者透露银行账号、密码和社会保险号等敏感信息。
    • Session Hijacking Using Session Donation Attack使用会话捐赠攻击的会话劫持, 在会话捐赠攻击中,攻击者将自己的会话 ID 捐赠给目标用户。 在这种攻击中,攻击者首先通过登录服务获取有效的会话 ID,然后将相同的会话 ID 提供给目标用户。 此会话 ID 将目标用户链接到攻击者的帐户页面,而不会向受害者透露任何信息。 当目标用户单击链接并在表单中输入详细信息(用户名、密码、付款详细信息等)时,输入的详细信息将链接到攻击者的帐户。 要发起这种攻击,攻击者可以使用跨站点烹饪、MITM 攻击和会话固定等技术发送他们的会话 ID。 会话捐赠攻击涉及以下步骤。
      • First, the attacker logs into a service, establishes a legitimate connection with the target web server, and deletes the stored information.首先,攻击者登录服务,与目标Web服务器建立合法连接,并删除存储的信息。
      • The target web server (e.g., citibank.com/) issues a session ID, say 0D6441FEA4496C2, to the attacker.目标 Web 服务器(例如 citibank.com/)向攻击者发出会话 ID,例如 0D6441FEA4496C2。)
      • The attacker then donates their session ID, say citibank.com/SID=0D6441F…, to the victim and lures the victim to click on it to access the website.攻击者然后捐赠他们的会话 ID,比如说 citibank.com/?SID=0D6441… 发给受害者,诱使受害者点击访问网站
      • The victim clicks on the link, believing it to be a legitimate link sent by the bank. This opens the server’s page in the victim’s browser with SID=0D6441FEA4496C2. Finally, the victim enters their information in the page and saves it.受害者点击链接,认为是银行发送的合法链接。 这将在受害者的浏览器中打开 SID=0D6441FEA4496C2 的服务器页面。 最后,受害者在页面中输入他们的信息并保存。
      • The attacker can now login as themselves and acquire the victim’s information. 攻击者现在可以以自己的身份登录并获取受害者的信息。

Session Hijacking Tools 工具

  • Burp Suite,Source: portswigger.net Burp Suite 是一个用于 Web 应用程序安全测试的集成平台。 它允许攻击者检查和修改浏览器和目标应用程序之间的流量。 key components:
    • An intercepting proxy, which allows the user to inspect and modify traffic between their browser and the target application。一个拦截代理,允许用户检查和修改他们的浏览器和目标应用程序之间的流量
    • An application-aware spider that crawls content and functionality 。一个可抓取内容和功能的应用程序感知spider
    • An advanced web application scanner that automates the detection of numerous types of vulnerability先进的 Web 应用程序扫描程序,可自动检测多种类型的漏洞
    • An intruder tool for performing powerful customized attacks to find and exploit unusual vulnerabilities一种入侵者工具,用于执行强大的定制攻击以发现和利用异常漏洞
    • A repeater tool for manipulating and resending individual requests 用于操作和重新发送单个请求的中继器工具
    • A sequencer tool for testing the randomness of session tokens用于测试会话令牌随机性的排序器工具
    • The CSRF PoC Generator function, which generates proof-of-concept cross-site request forgery (CSRF) attacks for a given request。CSRF PoC Generator 功能,可为给定请求生成概念验证跨站请求伪造 (CSRF) 攻击
  • OWASP ZAP (www.owasp.org)
  • bettercap (www.bettercap.org)
  • netool toolkit (sourceforge.net)
  • WebSploit Framework (sourceforge.net)
  • sslstrip (pypi.python.org) 手机端:
  • DroidSheep, Source: droidsheep.info , DroidSheep 工具用于在连接到公共无线网络的 Android 设备上进行会话劫持。 它获取Wi-Fi网络上活跃用户的会话ID,并使用它作为授权用户访问网站。 DroidSheep 用户可以轻松观察授权用户在网站上的活动。 它还可以通过获取会话 ID 来劫持社交帐户。
  • DroidSniff, Source: github.com, DroidSniff 是一款用于无线网络安全分析的 Android 应用程序,可以捕获 Facebook、Twitter、LinkedIn 和其他帐户。 此工具用于测试用户帐户的安全性。 它可以识别没有加密的网络连接的安全性差。
  • FaceNiff,Source: faceniff.ponury.net ,FaceNiff 是一款 Android 应用程序,允许用户通过用户移动设备连接的 WiFi 网络嗅探和拦截 Web 会话配置文件。 尽管 FaceNiff 只能在 WiFi 网络不使用可扩展身份验证协议 (EAP) 时劫持会话,但它适用于任何私有网络,包括开放、有线等效保密 (WEP)、Wi-Fi 保护访问预共享密钥 (WPA) -PSK) 和 WPA2-PSK 网络。

Session Hijacking Countermeasures 会话劫持的防御

  • Session Hijacking Detection Methods 探测方法

    • Manual Method手动方法--Packet Sniffing Software包嗅探软件
    • Automatic Method自动化方法
      • Intrusion Detection System(IDS)
      • Intrusion Prevention System(IPS)
  • Protecting against Session Hijacking 保护方法

    • Use the Secure Shell (SSH) to create a secure communication channel. 使用安全外壳 (SSH) 创建安全通信通道
    • Pass authentication cookies over HTTPS connections. 通过 HTTPS 连接传递身份验证 cookie
    • Implement the log-out functionality for the user to end the session. 为用户实现注销功能以结束会话
    • Generate a session ID after a successful login and accept session IDs generated by the server only.成功登录后生成会话 ID,并仅接受服务器生成的会话 ID。
    • Ensure that data in transit are encrypted and implement the defense-in-depth mechanism.确保传输中的数据加密并实施纵深防御机制
    • Use strings or long random numbers as session keys. 使用字符串或长随机数作为会话密钥。
    • Use different usernames and passwords for different accounts. 为不同的帐户使用不同的用户名和密码。
    • Educate employees and minimize remote access. 教育员工并尽量减少远程访问
    • Implement timeout() to destroy sessions when expired. 实现 timeout() 以在过期时销毁会话。
    • Avoid including the session ID in the URL or query string. 避免在 URL 或查询字符串中包含会话 ID。
    • Use switches rather than hubs and limit incoming connections. 使用交换机而不是集线器并限制传入连接。
    • Ensure client-side and server-side protection software are in the active state and up to date.确保客户端和服务器端保护软件处于活动状态并且是最新的。
    • Use strong authentication (such as Kerberos) or peer-to-peer virtual private networks (VPNs).使用强身份验证(例如 Kerberos)或点对点虚拟专用网络 (VPN)。
    • Configure appropriate internal and external spoof rules on gateways在网关上配置适当的内部和外部欺骗规则
    • Use IDS products or ARPwatch for monitoring ARP cache poisoning. 使用 IDS 产品或 ARPwatch 监控 ARP 缓存中毒
    • Use encrypted protocols available in the OpenSSH suite. 使用 OpenSSH 套件中可用的加密协议
    • Use firewalls and browser settings to confine cookies. 使用防火墙和浏览器设置来限制 cookie
    • Protect authentication cookies with SSL. 使用 SSL 保护身份验证 cookie。
    • Regularly update platform patches to fix TCP/IP vulnerabilities (e.g., predictable packet sequences).定期更新平台补丁以修复 TCP/IP 漏洞(例如,可预测的数据包序列)。
    • Use IPsec to encrypt session information. 使用 IPsec 加密会话信息。
    • Use HTTP Public Key Pinning (HPKP) to allow users to authenticate web servers. 使用 HTTP 公钥固定 (HPKP) 允许用户对 Web 服务器进行身份验证。
    • Enable browsers to verify website authenticity using network notary servers. 使浏览器能够使用网络公证服务器验证网站的真实性。
    • Implement DNS-based authentication of named entities. 对命名实体实施基于 DNS 的身份验证。
    • Disable compression mechanisms of HTTP requests. 禁用 HTTP 请求的压缩机制。
    • Use cipher-chaining block (CBC) ciphers incorporating random padding up to 255 bytes, thereby making the extraction of confidential information difficult for an attacker.使用包含最多 255 个字节的随机填充的密码链接块 (CBC) 密码,从而使攻击者难以提取机密信息。
    • Restrict the cross-site scripts known as cross-site request forgery (CSRF) from the client side.从客户端限制称为跨站点请求伪造 (CSRF) 的跨站点脚本。
    • Upgrade web browsers to the latest versions. 将网络浏览器升级到最新版本
    • Use vulnerability scanners such as masscan to detect any insecure configuration of HTTPS session settings on sites.使用漏洞扫描程序(例如 masscan)来检测站点上 HTTPS 会话设置的任何不安全配置。
  • Web Development Guidelines to Prevent Session Hijacking 网页开发注意事项, 攻击者通常通过利用会话建立机制中的漏洞来劫持会话。 Web 开发人员经常忽略安全性。 在开发过程中,Web 开发人员应考虑以下准则以最小化/消除会话劫持的风险。

    • Create session keys with lengthy strings or random numbers so that it is difficult for an attacker to guess a valid session key.使用冗长的字符串或随机数创建会话密钥,以便攻击者难以猜测有效的会话密钥。
    • Regenerate the session ID after a successful login to prevent session fixation attacks. 成功登录后重新生成会话 ID 以防止会话固定攻击。
    • Encrypt the data and session key transferred between the user and web servers. 加密在用户和 Web 服务器之间传输的数据和会话密钥。
    • Implement the Secure Sockets Layer (SSL) to encrypt all the information in transit via the network.实施安全套接层 (SSL) 以加密通过网络传输的所有信息。
    • Make the session expire as soon as the user logs out. 使会话在用户注销后立即过期。
    • Prevent eavesdropping within the network. 防止网络内的窃听。
    • Reduce the life span of a session or cookie. 缩短会话或 cookie 的生命周期。
    • Use restrictive cache directives for all the web traffic through HTTP and HTTPS, such as the “Cache-Control: no-cache, no-store” and “Pragma: no-cache” HTTP headers and/or equivalent META tags on all or (at least) sensitive web pages.对通过 HTTP 和 HTTPS 的所有 Web 流量使用限制性缓存指令,例如所有或(至少)敏感网页。比如“Cache-Control: no-cache, no-store” and “Pragma: no-cache” HTTP headers的设置。
    • Do not create sessions for unauthenticated users unless necessary.除非必要,否则不要为未经身份验证的用户创建会话。
    • Ensure HTTPOnly while using cookies for session IDs. 在为会话 ID 使用 cookie 时确保 HTTPOnly。
    • Use a secure flag to send cookies in HTTPS requests and encrypt them before sending across the network.使用安全标志在 HTTPS 请求中发送 cookie,并在通过网络发送之前对其进行加密。
    • Check whether all the requests received for the current session originate from the same IP address and user agent.检查当前会话收到的所有请求是否来自相同的 IP 地址和用户代理
    • Implement continuous device verification to identify whether the user who established the session is still in control.实施持续的设备验证,以确定建立会话的用户是否仍在控制之中。
    • Implement risk-based authentication at different levels before granting access to sensitive information.在授予对敏感信息的访问权限之前,在不同级别实施基于风险的身份验证
    • Perform authentication and integrity verification between VPN endpoints. 在 VPN 端点之间执行身份验证和完整性验证。
  • Web User Guidelines to Prevent Session Hijacking 使用者如何阻止session绑架

    • Do not click on links received through emails or instant messages (IMs). - Use firewalls to prevent malicious content from entering the network. 不要点击通过电子邮件或即时消息 (IM) 收到的链接。 - 使用防火墙防止恶意内容进入网络。
    • Use firewalls and browser settings to restrict cookies. 使用防火墙和浏览器设置来限制 cookie。
    • Ensure that the website is certified by appropriate certifying authorities. 确保网站已通过适当的认证机构的认证。
    • Ensure that the history, offline content, and cookies are cleared from the browser after every confidential and sensitive transaction.确保在每次机密和敏感交易后从浏览器中清除历史记录、离线内容和 cookie。
    • Give preference to HTTPS, a secure transmission protocol, over HTTP when transmitting sensitive and confidential data.在传输敏感和机密数据时,优先使用 HTTPS(一种安全传输协议)而不是 HTTP。
    • Logout from the browser by clicking on the logout button instead of closing the browser.通过单击注销按钮而不是关闭浏览器从浏览器中注销。
    • Verify and disable add-ons from untrusted sites. Enable add-ons only if necessary. 验证并禁用来自不受信任站点的附加组件。 仅在必要时启用附加组件。
    • Practice using a one-time password for critical data transactions (e.g., credit card transactions).练习使用一次性密码进行关键数据交易(例如信用卡交易)。
    • Frequently update anti-virus signatures to prevent the automatic installation of malware that attempts to steal cookies.经常更新防病毒签名,以防止自动安装试图窃取 cookie 的恶意软件。
  • 防御软件 Session Hijacking Detection Tools, 会话劫持攻击难以检测,并且在大多数情况下,攻击会被忽视,导致机密数据严重泄露。 数据包嗅探器、IDS 以及安全信息和事件管理 (SIEM) 等工具可用于检测会话劫持攻击。packet sniffers, IDSs, and security information and event management (SIEM)。

    • AlientVault USM,Source: www.alienvault.com ,AlienVault 统一安全管理 Unified Security Management(USM) 跨云、本地和混合环境提供强大的威胁检测、事件响应和合规性管理。 安全专业人员可以使用此工具检测会话劫持尝试并执行资产发现、入侵检测、安全自动化、SIEM 和日志管理、端点检测和响应、威胁检测、威胁情报和漏洞评估。
    • Wireshark,Source: www.wireshark.org , Wireshark 允许用户捕获和交互式浏览网络上的流量。 此工具使用 Winpcap 捕获数据包。 因此,它只能在 Winpcap 支持的网络上捕获数据包。 它捕获来自以太网、IEEE 802.11、点对点协议/高级数据链路控制Point-to-Point Protocol/High-level Data Link Control (PPP/HDLC)、异步传输模式 Asynchronous Transfer Mod (ATM)、蓝牙、通用串行总线 (USB)、令牌环Token Ring、帧中继Frame Relay和光纤分布式数据接口Fiber Distributed Data Interface (FDDI) 网络。 安全专家使用 Wireshark 来监控和检测会话劫持尝试。
    • Check Point IPS Software Blade (www.checkpoint.com)
    • LogRhythm (logrhythm.com)
    • SolarWinds Log & Event Manager (www.solarwinds.com
    • IBM Security Network Intrusion Prevention System (www.ibm.com
  • Approaches Causing Vulnerability to Session Hijacking and their Preventative Solutions导致会话劫持漏洞的方法及其预防解决方案,实施加密和签名协议可防止攻击者劫持会话。 下表列出了各种问题及其各自的解决方案,这些问题在实施时会阻止或阻止对有效 sessio 的劫持。 | Issue | Solution | Notes | | --- | --- | --- | | Telnet, rlogin | Secure Shell (SSH) or OpenSSH | 它发送加密数据,如果会话被劫持,攻击者很难发送正确加密的数据。 | | FTP | SSH FTP (SFTP), Applicability Statement 2 (AS2), managed file transfer (MFT), FTP Secure (FTPS) |实施这些协议通过使用加密和数字证书发送数据来减少成功劫持的机会。| | HTTP | Secure Sockets Layer (SSL) or Transport Layer Security (TLS)| 它减少了成功劫持的机会。HTTP Strict Transport Security (HSTS) 是保护 HTTPS 网站免受 MITM 攻击的 Web 安全策略。 HSTS 策略帮助 Web 服务器强制 Web 浏览器使用 HTTPS 与其交互。 使用 HSTS 策略,所有不安全的 HTTP 连接都会自动转换为 HTTPS 连接。 此策略确保 Web 服务器和 Web 浏览器之间的所有通信都经过加密,并且所有传递和接收的响应都来自经过身份验证的服务器。另一种是Token Binding 当用户登录 Web 应用程序时,会生成一个带有会话 ID(称为令牌)的 cookie。 用户利用这个随机令牌向服务器发送请求并访问资源。 攻击者可以冒充用户并通过捕获和重用有效的会话 ID 来劫持连接。 令牌绑定保护客户端-服务器通信免受会话劫持攻击。 客户端为与远程服务器的每个连接创建一个公钥-私钥对。 当客户端连接到服务器时,它使用私钥生成签名,并将该签名连同其公钥一起发送到服务器。 服务器使用客户端的公钥验证签名| | IP | IPsec | 它通过保护 IP 通信来防止劫持。 | | Any Remote Connection | Virtual private network (VPN) | 为远程连接实施加密的 VPN,例如 PPTP、第 2 层协议隧道Layer 2 Protocol Tunneling (L2PT) 和 IPsec,可防止会话劫持。 | | Server Message Block (SMB) | SMB signing | 它提高了 SMB 协议的安全性并减少了会话劫持的机会。。 | | Hub Network | Switch network | 它降低了 ARP 欺骗和其他会话劫持攻击的风险 |