본문 바로가기
보안/네트워크 보안

세션 하이재킹(Session Hijacking)

by yeni03o_o 2020. 12. 14.

세션 하이재킹(Session Hijacking)

- 세션 가로채기

- 세션: 두 호스트(컴퓨터) 간의 연결 활성화 상태

 

 

TCP 세션 하이재킹

※ Non-Blind Attack(로컬 세션 하이재킹 공격)

   - TCP 시퀀스 넘버 제어의 문제점 이용

   - 공격 대상 탐지 가능

   - 시퀀스 넘버 알아낼 수 있음

※ Blind Attack(원격 세션 하이재킹 공격)

   - 공격 대상 탐지 불가

   - 시퀀스 넘버 알아낼 수 없음

 

 

TCP 세션 하이재킹 이해

- TCP 시퀀스 넘버 교환: 정상적인 세션 연결 시 동기화 상태

  → Clienct_My_Seq(클라이언트 관리 시퀀스 넘버) = Server_Client_Seq(클라이언트가 알고 있는 서버 시퀀스 넘버)

      Server_My_Seq(서버 관리 시퀀스 넘버) = Client_Server_Seq(서버가 알고 있는 클라이언트 시퀀스 넘버)

- TCP 세션 하이재킹: 세션의 동기화 상태 파괴

 

※ 비동기화(Desynchronized) 상태 → 당연히 발생 가능

   - (데이터가 전송되기 전) 안정적인(stable) 상태

   - 데이터가 전송될 때는 저장하고, 클라이언트에 서버의 승인 번호는 전달되지 않음

   - 패킷 수신이 불가능한 상태. 데이터도 버려짐

 

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

   - 서버에서 초기 설정 단계의 접속을 끊고 다른 시퀀스 넘버로 새로운 접속 생성

   - 대량의 널(Null) 데이터 보내기

 

※ 새로운 접속 생성하기

   - 서버와 클라이언트가 각자 알고 있는 시퀀스 넘버 조작

   - 클라이언트 측

       Client_My_Seq = 공격자가 생성한 Server_Client_Seq

       Client_Server_Seq = 공격자가 생성한 Server_My_Seq

   - 서버 측

       Server_Client_Seq = 공격자가 생성한 Client_My_Seq

       Server_My_Seq = 공격자가 생성한 Clienct_Server_Seq

 

※ TCP 세션 하이재킹 공격(새로운 접속을 생성하여 비동기화하는 방법 이용) → ACK Storm 발생 가능

   ① 클라이언트는 서버와 접속되어 있는 상태(Established). 공격자는 스니핑 중(시퀀스 넘버 획득)

   ② 서버가 잠시 Closed 상태일 때, 공격자는 RST 패킷(스니핑한 시퀀스 넘버 이용)을 생성하여 서버로 전송

   ③ 공격자는 위조된 시퀀스 넘버(A_Client_My_Seq)를 생성하여 서버로 전송

   ④ 서버는 A_Client_My_Seq를 받아들이고, Server_My_Seq를 재생성하여 공격자에게 보낸 후 SYN_Received 상태

   ⑤ 공격자는 정상적인 연결처럼 서버와 시퀀스 넘버 교환 → 공격자와 서버 모두 Established 상태

       (클라이언트는 계속해서 Established 상태로 연결은 잠시 끊어졌지만, 인증 세션은 열려있음)

   ⑥ 공격자는 공격 전 클라이언트가 서버와 통신을 하던 시퀀스 넘버를 알고 있으므로(∵스니핑)

       클라이언트와 정상적으로 통신하고, 서버와는 공격자가 새로 생성한 시퀀스 넘버로 통신

        → 세션은 2개(클라이언트 & 공격자, 공격자 & 서버) 생성. 공격자가 클라이언트와 서버를 relay

TCP 세션 하이재킹 공격시 TCP 세션 변경 과정

 

ACK Storm

- 공격자가 서버와 연결을 끊고 다시 연결을 시도하는 동안 클라이언트가 정상적인 패킷을 보내면, 서버는 비정상 시퀀스 넘버로 인식하여 시퀀스 넘버를 맞추기 위해 ACK 패킷에 Server_My_Seq와 Server_Client_Seq를 담아 보냄

- 클라이언트도 다름을 확인하고, Client_My_Seq와 Client_Server_Seq가 담긴 ACK를 보냄

- 이 과정이 무한 반복

- 이를 막기 위해 ARP 스푸핑을 해두고 공격 실시

 

 

TCP 세션 하이재킹 보안대책

- 암호화된 연결(SSH) 사용

- 비동기화 상태 탐지: 서버와 시퀀스 넘버를 주기적으로 체크

- ACK Storm 탐지

- 패킷의 유실과 재전송 증가 탐지

- 예상치 못한 접속의 리셋(RST)

 

 

 

공부하면서 학습 목적으로 작성한 포스팅이므로 내용이 완전하지 않습니다ㅠ 
계속해서 학습 후 지식이 좀 더 쌓이면 수시로 수정해나갈 예정입니다! 
틀린 내용은 둥글게 댓글 달아주시면 빠른 확인 후 수정하겠습니다. :)


참고

* yjshin.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EB%B3%B4%EC%95%88-TCP-%EC%84%B8%EC%85%98-%ED%95%98%EC%9D%B4%EC%9E%AC%ED%82%B9-Session-hijacking

* m.blog.naver.com/PostView.nhn?blogId=bitnang&logNo=70180420086&proxyReferer=https:%2F%2Fwww.google.com%2F

 

'보안 > 네트워크 보안' 카테고리의 다른 글

MITM(Man In The Middle) 공격  (0) 2020.12.14
스푸핑(Spoofing)  (1) 2020.12.14
스니핑(Sniffing)  (0) 2020.12.14
스캐닝 공격 분석(Nmap, 와이어샤크 이용)  (0) 2020.12.14
사이버공격 - 정보수집(스캐닝)  (0) 2020.12.13

댓글