관련이론
- 세션 하이재킹(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 상태고 서버의 네트워크 상태로 인한 잠시 동안의 연결 문제로 받아들임.
'모의 해킹 > 네트워크 해킹' 카테고리의 다른 글
[해킹 실습] Hunt 툴을 이용한 TCP 세션 하이재킹 및 보안 조치 방법 (0) | 2022.06.26 |
---|---|
[해킹 실습] ARP 스푸핑 보안조치 실습 (0) | 2018.12.08 |
[해킹 실습] ARP 스푸핑 실습 (2) (0) | 2018.12.07 |
[해킹 실습] ARP 스푸핑 실습 (1) (0) | 2018.12.06 |
[해킹 이론] ARP 스푸핑 이론 (0) | 2018.12.06 |