모의 해킹/네트워크 해킹

[해킹 이론] TCP 세션 하이재킹

양말이집사 2022. 6. 26. 22:47

관련이론

    - 세션 하이재킹(Session HiJacking) : 사용자와 컴퓨터, 또는 두 컴퓨터간의 활성화된 상태인 세션을

      가로채어 공격자가 모든 작업을 감시하거나 제어할 수 있게 하는 공격 기법

 

    - TCP 세션 하이재킹 : 현재 활성화 되어있는 TCP 세션의 Sequence Number를 알아내 RST 신호를

      이용하여 강제로 리셋 시킨 후 공격을 시도하는 방법

 

      TCP 세션 하이재킹의 두가지 방법

           (1) Non-Blind-Attack(로컬 세션 하이재킹) : 서버와 클라이언트가 통신할 때 시퀀스 넘버를 알아낼 수

                있어 공격 대상을 탐지 할 수 있다.

           (2) Blind-Attack(원격 세션 하이재킹) : 서버와 클라이어트가 통신할 때 시퀀스 넘버를 알아낼 수 없어

                시퀀스 넘버를 추측하여야 하기 때문에 성공 확률이 낮음.

 

      ㆍ TCP 시퀀스 넘버 정의

          Client_My_Seq : 클라이언트가 관리하는 자신의 시퀀스 넘버

          ② Client_Server_Seq : 클라이언트가 알고 있는 서버의 시퀀스 넘버

          Server_My_Seq : 서버가 관리하는 자신의 시퀀스 넘버

          Server_Client_Seq : 서버가 알고있는 클라이언트의 시퀀스 넘버

          Data_Len : 데이터의 길이

 

      ㆍ 시퀀스 넘버에 따른 TCP 연결 상태

          동기화 상태 : 정상적인 접속일 경우 클라이언트와 서버가 서로의 시퀀스 넘버를 정확히 알고 서로 일치한다.

               * Client_My_Seq = Server_Client_Seq

               * Server_My_Seq = Client_Server_Seq

          비동기화 상태로 만드는 방법

               1. 서버에서 초기 설정 단계의 접속을 끊고 다른 일련번호로 새로운 접속을 생성

               2. 대량의 널(null) 데이터를 보내 비동기화시키는 것

 

      새로운 접속 생성하기

          먼저 서버와 클라이언트가 각자 아는 시퀀스 넘버를 조작해서 속인 뒤 다음과 같은 상황을 만든다.

 

          Client_My_Seq = 공격자가 생성한 Server_Client_Seq

          Client_Server_Seq = 공격자가 생성한 Server_My_Seq

          Server_My_Seq = 공격자가 생성한 Client_Server_Seq

          Server_Client_Seq = 공격자가 생성한 Client_My_Seq

- TCP 세션 하이재킹의 과정을 정리 하면

   1. 클라이언트와 서버가 서로 연결되어 있으며 공격자는 적절한 시퀀스 넘버를 획득하기 위해 스니핑을 진행 중

   2. 공격자는 연결되어 있는 세션에 완전히 끊어지지 않는 범위의 RST 패킷을 보내 서버를 Close 상태로 만든다.

       (이때, 클라이언트는 연결 상태 즉, 서버만 close 되어있는 상태)

   3. 공격자는A_Client_My_Seq를 생성하여 서버에 보냄

   4. 서버는 신규 A_Client_My_Seq를 받아들이고, Server_My_Seq를 재생성하여 공격자에게 보낸 후 Syn_Received 상태

   5. 공격자는 정상 연결처럼 서버와 시퀀스 넘버를 교환하고, 공격자와 서버 모두 Established 상태. 원래의 클라이언트는

       여전히 Established 상태고 서버의 네트워크 상태로 인한 잠시 동안의 연결 문제로 받아들임.

 

LIST