세션 하이재킹 (Session Hijacking)

세션 하이재킹 (Session Hijacking) 은 공격자가 두 컴퓨터 간의 유효한 세션을 장악할 때 발생합니다. 공격자는 시스템에 침입하여 데이터를 스누핑하기 위해 유효한 세션 ID를 훔칩니다.

대부분의 인증은 TCP 세션이 시작될 때만 발생합니다. TCP 세션 하이재킹에서는, 공격자가 세션 중간에 두 시스템 간의 TCP 세션을 장악하여 접근 권한을 획득합니다.

공격자는 웹 서버와 상호 작용하는 사용자로부터 합법적인 세션 ID를 스니핑하고 접근한 다음, 해당 세션 식별자를 사용하여 일반 사용자와 서버 간의 세션을 스푸핑하여, 사용자의 세션을 익스플로잇(취약점 공격)을 실행하고 서버에 직접 접근합니다

세션 하이재킹이 발생하는 이유는 아래와 같습니다

  • 유효하지 않은 세션 ID에 대한 계정 잠금이 없습니다.
  • 취약한 세션 ID 생성 알고리즘
  • 안전하지 않은 취급
  • 무기한 세션 만료 시간
  • 짦은 세션 ID
  • 일반 텍스트로 전송

세션 하이재킹 과정

  1. 스니프(Sniff): 중간자(man-in-the-middle, MITM) 공격을 수행합니다. 공격받는 컴퓨터와 서버 사이의 자기 자신을 위치시킵니다.
  2. 모니터링(Monitor): 서버와 사용자 사이에 흐르는 패킷을 관찰합니다.
  3. 차단(Break): 공격받는 컴퓨터의 연결을 종료시킵니다.
  4. 제어(Take control): 세션을 제어합니다.
  5. 주입(Inject): 공격받는 컴퓨터의 세션 ID를 사용하여 서버에 새로운 패킷을 주입합니다.

세션 하이재킹으로부터의 보호

  • 보안 쉘(SSH)을 사용하여 보안 통신 채널을 생성합니다.
  • HTTPS 연결을 통해 인증 쿠키를 전달합니다.
  • 사용자가 세션을 종료할 수 있도록 로그아웃 기능을 구현합니다.
  • 로그인 성공 후 세션 ID를 생성합니다.
  • 사용자와 웹 서버 간에 암호화된 데이터를 전달합니다.
  • 문자열이나 길이가 긴 난수를 세션 키로 사용합니다.

같이 보기