Session Hijacking | 세션 하이재킹
Session | 세션
사용자와 컴퓨터, 또는 두 대의 컴퓨터간의 활성화된 상태
즉, 특정 두 호스트 등이 연결이 지속되고 있는 상태이다.
Session Hijacking | 세션 하이재킹
- 세션 가로채기
- ex) 누군가 작업을 하다가 잠시 자리를 비운 pc를 몰래 사용해 원하는 작업을 하는 것
- 현재 살아있는 세션을 가로채는 것이다.
- 클라이언트나 서버가 알지 못하도록 해야한다. (클라이언트가 새로운 세션을 서버에 요청하면 안됨)
[웹 개발 시 중요한 점]
로그아웃 기능을 구현 시 단순히 "현재 페이지를 닫는다" 는 것에 집중하면 안된다.
현재 연결된 세션을 끊어야한다.
즉, 서로 통신하는 두 호스트가 모두 알지 못하도록 하면서 C가 세션을 가로채야하므로 굉장히 까다롭다
Q) 공격자가 스니핑을 하다가 같은 방법으로 서버에 접속하면 안되는가?
A) 공격자가 접속 정보를 알아서 접속하는 것과, 세션 하이재킹하는 것은 차이가 존재한다
공격가 접속 정보를 알아서 시스템에 접속하는 것은 로그가 남는다.
반면, 세션 하이재킹은 활성화된 세션이 공격자에게 넘어가게 되면, 공격자가 공격을 했다는 기록이 남지 않는다.
TCP 세션 하이재킹
TCP가 연결 지향성 프로토콜이기 때문에 발생하는 취약점을 사용한다.
- 기존의 established된 TCP session을 공격자와의 연결로 가로채는 공격 기법
- TCP의 시퀀스 넘버 제어 기능을 악용
- 서버와 클라이언트에게 각각 잘못된 시퀀스 넘버를 전송하여 연결된 세션에 혼란을 준 뒤, 공격자가 세션에 끼어들어감
- 시퀀스 넘버가 동기화되지 않으면 재설정을 시도한다는 특징을 사용
공격자는 A와 B사이에서 패킷을 전부 스니핑 하고 있다가,
해당 시퀀스 넘버를 조작하여 위조하여 B에게 잘못된 시퀀스 넘버를 전송함.
TCP가 시퀀스 넘버가 맞지 않는다는 것을 인식하면 세션을 끊지 않고 시퀀스 넘버를 맞추기 위해 재조정 작업을 시행함
이 때, A와 재조정 작업을 시행하는 것이 아니라, 공격자와 재조정 작업을 할 수 있게 하면서
"현재 연결되어 있던 세션"에서 그대로 공격자와 B가 통신한다.
TCP 프로토콜
TCP 는 패킷의 연속성을 보장하기 위해 패킷의 시퀀스 넘버를 사용함
서로 보내는 패킷에 대해서 서로 빠지거나 잘못된 패킷이 없는지를 확인하기 위해 시퀀스 넘버를 보냄
- 클라이언트가 사용할 시퀀스 넘버를 생성하여 SYN 패킷으로 전송
- 서버가 사용할 시퀀스 넘버를 생성하고, 클라이언트의 응답을 잘 받았다는 의미로 클라이언트 시퀀스 넘버 + 1을 한 값을 함께 클라이언트에 전송함
- 클라이언트가 서버의 시퀀스 넘버에 +1을 한 값을 다시 보내며, 서로의 시퀀스 넘버를 확인했다는 것을 보임
서버와 클라이언트를 비동기화 상태로 유도
A와 B 사이의 모든 패킷이 공격자를 거치도록 스니핑을 하는 중이라는 가정이 있어야한다. (ARP 스푸핑을 통해)
* A와 공격자는 같은 내부 네트워크에 있으면 스니핑이 가능함
서버와 클라이언트간 초기 세션 접속을 끊고 다른 시퀀스 넘버로 새로운 접속을 생성한다. (공격자로)
공격 방법
- 클라이언트와 서버 사이의 패킷을 통제
ARP 스푸핑 등을 통해 클라이언트와 서버 사이의 통신 패킷이 모두 공격자를 지나가게 설정 - TCP를 이용한 세션은 클라이언트 IP주소/ 포트번호, 서버의 IP주소 / 포트번호로 구성
- 클라이언트와 동일한 IP주소 및 포트 번호를 사용하여 공격자가 서버에 연결 재설정 RST(Reset) 패킷 전송
- 서버는 클라이언트의 시퀀스 넘버가 재설정된 것으로 판단하고 다시 tcp 3way-handshaking 수행
- 공격자는 클라이언트 대신 연결되어 있던 TCP 연결을 그대로 물려받음
새롭게 공유한 시퀀스 넘버로 세션이 진행됨
원래 세션을 만들기 위해서는 "인증"을 받아야하는데, 공격자가 이미 인증을 받은 세션을 이용하여 연결을 재설정 하는 것이기 때문에 "인증"과정을 거치지 않아도 됨
클라이언트가 세션 하이재킹이 일어났다는 것을 알지 못해야하므로, 공격자는 클라이언트와 서버 간의 packet을 relay 해주어야한다.
이 때 진짜 클라이언트가 보내는 패킷의 시퀀스 넘버는 현재 공격자와 서버가 통신하는 시퀀스 넘버와 다르기 때문에 해당 패킷이 계속 쌓이면 TCP가 이상함을 감지하고 세션이 끊기게 된다.
그 사이를 이용하는 것이 세션 하이재킹이다.
세션 하이재킹의 특징
- 능동적 공격
- 클라이언트의 인터페이스를 그대로 사용하여 명령어 실행 가능
- 서버와 클라이언트간 정상적인 인증이 수행된 후, 세션을 가로채므로 인증을 위한 모든 검증을 우회한다.
- 로그가 남지 않아 공격자가 접속한 기록이 남지 않게 됨
보안 대책
- 스니핑을 막아야함 : 데이터 전송의 암호화
SSH와 같이 암호화된 연결을 이용해서 서버에 접속 - 클라이언트와 서버 사이에 MAC 주소 고정
'Hacking > Network' 카테고리의 다른 글
네트워크 보안 시스템 (2) | 2024.10.13 |
---|---|
무선 랜 보안 (0) | 2024.10.13 |
Spoofing | 스푸핑 (0) | 2024.10.13 |
Sniffing | 스니핑 (0) | 2024.10.12 |
DoS | 서비스 거부 공격 (3) | 2024.10.12 |