세션 하이재킹 (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를 생성합니다.
  • 사용자와 웹 서버 간에 암호화된 데이터를 전달합니다.
  • 문자열이나 길이가 긴 난수를 세션 키로 사용합니다.

같이 보기