나의 기록, 현진록

Session hijacking 세션 하이재킹 본문

-Computer Theory/Network

Session hijacking 세션 하이재킹

guswlsdk 2018. 11. 7. 10:34
반응형

"세션을 가로채다."


세션은 송수신 네트워킹을 위해 상호 인증에 필요한 정보 교환 후 두 컴퓨터 간의 연결된 활성화 상태를 말한다.


세션 하이재킹은 기본적으로 접속하고자 하는 시스템의 접속하기 위한 인가된 아이디와 패스워드가 없을 경우 현재 접속된 시스템들의 세션 정보를 가로채는 공격 기법이다. 결국 공격자는 세션 하이재킹으로 접속하고자 하는 시스템에 인증 하여야만 하는 아이디와 패스워드 없이, 다른 시스템의 세션 정보를 가로챈 후 시스템과 접속할 수 있다. 


시퀀스 넘버를 알아낼 수 있는 상태에서 공격하는 것이 로컬 세션 하이재킹이고,

시퀀스 넘버를 알아낼 수 없는 상태에서 공격하느 것이 원격 세션 하이재킹이다.


공격자는 정상적인 네트워킹 과정인 TCP 3Way HandShake 과정상의 취약점을 악용하여 세션을 가로채는 공격을 시도하게 된다. 서버/클라이언트 간 세션 연결 과정에서 생성되는 시퀀스 번호를 알아내 위조하여 공격자가 정상적인 클라이언트로 위장하는 것이 주된 목표라고 할 수 있다. 


정상적인 접속이 유지되기 위해서는 서버와 클라언트가 서로의 시퀀스 번호를 올바르게 알고 있어야 하는데, 이러한 상태를 동기화라고 한다.


다음은 TCP 3Way HandShake 정상적인 과정이다. 이 과정을 통해 상호 간의 동기화된 시퀀스 번호를 가지게 된다.

1. 클라이언트는 32비트 임의의 숫자로 Client_My_Seq 생성 후 서버에게 전송한다.

2. 서버는 수신된 Client_My_Seq를 Server_Client_Seq 값으로 저장한다.

3. 서버는 Server_My_Seq를 생성하고, Server_Client_Seq + Packet Length와 같이 클라이언트에게 전송한다.

4. 클라이언트는 수신된 Server_Client_Seq + Packet Length를 받아 자신의 Client_My_Seq와 비교하여 일치하면 Server_My_Seq을 Client_Server_Seq 값으로 저장한다.

5. 클라이언트는 Client_Server_Seq + Packet Length를 서버에게 보내고 Established 상태가 되며, 서버는 수신된 Client_Server_Seq + Packet Length를 자신의 Server_My_Seq과 비교하여 일치하면 Established 상태가 된다.


여기까지가 정상적인 과정의 동기화 상태이다.


동기화 상태를 요약하면 다음과 같다.


Client_My_Seq=Server_Client_Seq

Server_My_Seq-Client_Server_Seq


TCP 3Way HandShake은 서버/클라이언트의 상호 세션 연결 과정에서 발생하는 시퀀스 넘버를 가로채 이를 이용해 공격자가 정상적인 클라이언트라고 위장한 후 연결을 시도하는 것이다.



세션 하이재킹을 위해서는 동기화된 상태를 비동기화 상태로 만드는 것부터 시작한다.


서버와 클라이언트 사이에서 공격자가 스니핑 중일 때, 공격자는 서버의 패킷과 클라이언트의 패킷을 확인할 수 있다.



1. 공격자는 클라이언트인 척하여 서버에 RST 패킷을 보낸다.

2. 서버가 잠시 Closed 상태일 때 공격자는 A_Client_My_Seq를 생성하여 보낸다.

3. 서버는 A_Client_My_Seq를 수신하여, Server_My_Seqf를 재생성하여 공격자에게 보낸다.

4. 공격자는 정상적인 연결처럼 서버와 시퀀스 번호를 교환하고(공격자는 스푸핑으로 인해 시퀀스 번호를 모두 알고 있다,) 공격자와 서버의 동기화가 이루어진다.


공격자가 서버와 동기화를 이룰 때 상태는 다음과 같다.


클라이언트 측

Client_My_Seq=공격자가 생성한 Server_Client_Seq

Client_Server_Seq=공격자가 생성한 Server_My_Seq


서버측

Server_Client_Seq=공격자가 생성한 Client_My_Seq

Server_My_Seq=공격자가 생성한 Client_Server_Seq



Ack Storm


공격자와 서버가 동기화를 이룰 때, 클라이언트는 계속 정상적인 패킷을 보내게 된다. 서버는 이미 동기화가 이루어진 상태이기 때문에 정상적이지 않은 시퀀스 번호라고 인식하여 시퀀스 번호를 맞추기 위해, Server_My_Seq와 Server_Client_Seq를 담아 보낸다. 


클라이언트는 서버로부터 수신된 Server_Client_Seq가 자신의 Client_My_Seq와 다름을 확인하여, 서버에 Client_My_Seq와 Client_Server_Seq가 담긴 ACK를 보내는데, 이러한 과정이 반복되는 경우를 Ack Storm이라고 한다.


잘못된 패킷이 전달되지 않도록 ARP 스푸핑을 사전에 해야하는 이유이다.



IP Spoofing과 차이점


세션 하이재킹 공격은 공격 과정에서 정상적인 사용자로 위장 한 후 시스템을 공격하는 행태가 IP 스푸핑과 유사하다고 할 수 있다. 그러나 IP 스푸핑은 송수신자 상호 트러스트 정보를 이용하여 공격을 시도하는 것이고, TCP 기반의 세션 하이재킹은 활성화 되어 있는 세션을 RST 신호를 이용하여 강제로 리셋 시킨 후 이를 악용하여 공격을 시도하는 부분에서 차이가 있다.



보안대책


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

Ack Storm 탐지 - 급격한 Ack 비율 증가시 탐지

패킷의 유실과 재전송 증가 탐지 - 공격자가 중간에 끼어서 작동하므로 패킷의 유실과 서버와의 응답시간이 길어진다.

예상치 못한 접속의 리셋 탐지 - 세션에 대한 공격 시도 시 세션이 멈추거나 리셋되는데 이를 탐지한다.








참고
1. 최재영, 암호화 기반의 스니핑 및 세션하이재킹 공격 대응 모델 = The Responding Model for Sniffing and Session Hijacking Attacks Using Encryption,경상대학교 대학원 : 컴퓨터과학과 컴퓨터시스템, 2017.8 박사학위논문

2. http://securitynewsteam.tistory.com/entry/%EC%84%B8%EC%85%98%ED%95%98%EC%9D%B4%EC%9E%AC%ED%82%B9

3. http://darksoulstory.tistory.com/420

반응형

'-Computer Theory > Network' 카테고리의 다른 글

터널링과 VPN  (0) 2018.12.11
Ping of Death  (0) 2018.11.24
ARP redirect  (0) 2018.10.06
배너 그래빙(Banner Grabbing)  (0) 2018.10.03
nmap  (0) 2018.10.01