본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Session Hijacking
시스템에 접근할 적법한 사용자 아이디와 패스워드를 모를 경우 공격 대상이 이미 시스템에 접속되어 세션이 연결되어 있는 상태를 가로채는 공격
  • 아이디와 패스워드를 몰라도 시스템에 접근하여 자원이나 데이터를 사용 가능
  • 인증 작업이 완료된 세션을 공격하기 때문에 OTP, Challenge/Response 기법을 사용하는 사용자 인증을 무력화시킴


  • 응용프로그램은 Client-Server간 통신을 개시하기 전에 TCP 연결을 설정하고 연결을 통해 상호 메시지 교환을 개시함
  • 메시지를 교환할 때 사용자 인증을 위한 메시지도 포함될 수 있음
  • 해당 TCP 연결을 가로채는것을 TCP Connection Hijacking이라고 함

TCP 는 시퀀스 번호와 확인 응답 번호가 맞는 세그먼트만 받아들인다. 공격자는 이 번호를 맞추고, 정상 클라이언트와 서버 사이의 번호를 어긋나게(비동기화) 만들어 연결을 가로챈다.

  1. 같은 네트워크에서 통신을 스니핑하거나 ARP 스푸핑으로 트래픽을 가로채, 현재 연결의 시퀀스 번호를 알아낸다
  2. 서버에 RST 패킷을 보내 서버 쪽 연결을 끊는다. 서버는 연결을 닫고 다시 SYN 을 받을 수 있는 상태가 된다(첫 번째로 보내는 플래그가 RST 다)
  3. 공격자가 클라이언트인 것처럼 새 시퀀스 번호로 연결을 다시 맺는다. 서버와 정상 클라이언트는 서로 다른 시퀀스 번호를 기대하는 비동기화 상태가 된다
  4. 공격자는 맞는 번호로 명령을 보내고, 정상 클라이언트가 보내는 세그먼트는 번호가 맞지 않아 버려진다

비동기화 상태의 두 호스트는 번호가 맞지 않는 세그먼트를 받을 때마다 ACK 를 주고받으며 ACK 스톰을 일으킨다. 공격 탐지의 단서가 된다.

  • 텔넷·rlogin 처럼 평문으로 세션을 여는 서비스 대신 SSH 처럼 암호화된 세션을 쓴다
  • 스위치의 포트 보안, 정적 ARP 로 스니핑과 ARP 스푸핑을 막는다
  • ACK 스톰, 비정상적인 RST, 같은 세션의 갑작스런 패킷 손실을 IDS 로 탐지한다
  • 플래그 의미는 TCP 제어 플래그, 번호 체계는 TCP 시퀀스 번호

TCP 세션 하이재킹과 웹 세션 하이재킹

편집 원본 편집
구분 TCP 세션 하이재킹 웹(HTTP) 세션 하이재킹
가로채는 것 이미 맺어진 TCP 연결 로그인 뒤 발급된 세션 ID(쿠키)
핵심 수단 스니핑으로 얻은 시퀀스 번호를 맞추고 RST 로 동기화를 깨뜨린다 XSS·스니핑 등으로 훔친 세션 ID 를 자기 요청에 실어 보낸다
계층 전송 계층 응용 계층
  • TCP 세션 하이재킹은 시퀀스 번호 제어의 약점을 노려 기존 연결을 가로채는 것이다. 공격자가 클라이언트의 세션 ID 를 고쳐 새로운 세션을 만드는 공격이 아니다
  • 웹 세션의 세션 ID 와 쿠키는 세션 관리 문서에 있다