세션 하이재킹
IT위키
더 많은 작업
- Session Hijacking
- 시스템에 접근할 적법한 사용자 아이디와 패스워드를 모를 경우 공격 대상이 이미 시스템에 접속되어 세션이 연결되어 있는 상태를 가로채는 공격
- 아이디와 패스워드를 몰라도 시스템에 접근하여 자원이나 데이터를 사용 가능
- 인증 작업이 완료된 세션을 공격하기 때문에 OTP, Challenge/Response 기법을 사용하는 사용자 인증을 무력화시킴
- 응용프로그램은 Client-Server간 통신을 개시하기 전에 TCP 연결을 설정하고 연결을 통해 상호 메시지 교환을 개시함
- 메시지를 교환할 때 사용자 인증을 위한 메시지도 포함될 수 있음
- 해당 TCP 연결을 가로채는것을 TCP Connection Hijacking이라고 함
TCP 는 시퀀스 번호와 확인 응답 번호가 맞는 세그먼트만 받아들인다. 공격자는 이 번호를 맞추고, 정상 클라이언트와 서버 사이의 번호를 어긋나게(비동기화) 만들어 연결을 가로챈다.
- 같은 네트워크에서 통신을 스니핑하거나 ARP 스푸핑으로 트래픽을 가로채, 현재 연결의 시퀀스 번호를 알아낸다
- 서버에 RST 패킷을 보내 서버 쪽 연결을 끊는다. 서버는 연결을 닫고 다시 SYN 을 받을 수 있는 상태가 된다(첫 번째로 보내는 플래그가 RST 다)
- 공격자가 클라이언트인 것처럼 새 시퀀스 번호로 연결을 다시 맺는다. 서버와 정상 클라이언트는 서로 다른 시퀀스 번호를 기대하는 비동기화 상태가 된다
- 공격자는 맞는 번호로 명령을 보내고, 정상 클라이언트가 보내는 세그먼트는 번호가 맞지 않아 버려진다
비동기화 상태의 두 호스트는 번호가 맞지 않는 세그먼트를 받을 때마다 ACK 를 주고받으며 ACK 스톰을 일으킨다. 공격 탐지의 단서가 된다.
- 텔넷·rlogin 처럼 평문으로 세션을 여는 서비스 대신 SSH 처럼 암호화된 세션을 쓴다
- 스위치의 포트 보안, 정적 ARP 로 스니핑과 ARP 스푸핑을 막는다
- ACK 스톰, 비정상적인 RST, 같은 세션의 갑작스런 패킷 손실을 IDS 로 탐지한다
- 플래그 의미는 TCP 제어 플래그, 번호 체계는 TCP 시퀀스 번호
| 구분 | TCP 세션 하이재킹 | 웹(HTTP) 세션 하이재킹 |
|---|---|---|
| 가로채는 것 | 이미 맺어진 TCP 연결 | 로그인 뒤 발급된 세션 ID(쿠키) |
| 핵심 수단 | 스니핑으로 얻은 시퀀스 번호를 맞추고 RST 로 동기화를 깨뜨린다 | XSS·스니핑 등으로 훔친 세션 ID 를 자기 요청에 실어 보낸다 |
| 계층 | 전송 계층 | 응용 계층 |
- TCP 세션 하이재킹은 시퀀스 번호 제어의 약점을 노려 기존 연결을 가로채는 것이다. 공격자가 클라이언트의 세션 ID 를 고쳐 새로운 세션을 만드는 공격이 아니다
- 웹 세션의 세션 ID 와 쿠키는 세션 관리 문서에 있다