세션 하이재킹 (Session Hijacking)
세션 하이재킹 (Session Hijacking) 은 공격자가 두 컴퓨터 간의 유효한 세션을 장악할 때 발생합니다. 공격자는 시스템에 침입하여 데이터를 스누핑하기 위해 유효한 세션 ID를 훔칩니다.
대부분의 인증은 TCP 세션이 시작될 때만 발생합니다. TCP 세션 하이재킹에서는, 공격자가 세션 중간에 두 시스템 간의 TCP 세션을 장악하여 접근 권한을 획득합니다.
세션 하이재킹이 발생하는 이유는 아래와 같습니다
- 유효하지 않은 세션 ID에 대한 계정 잠금이 없습니다.
- 취약한 세션 ID 생성 알고리즘
- 안전하지 않은 취급
- 무기한 세션 만료 시간
- 짦은 세션 ID
- 일반 텍스트로 전송
세션 하이재킹 과정
- 스니프(Sniff): 중간자(man-in-the-middle, MITM) 공격을 수행합니다. 공격받는 컴퓨터와 서버 사이의 자기 자신을 위치시킵니다.
- 모니터링(Monitor): 서버와 사용자 사이에 흐르는 패킷을 관찰합니다.
- 차단(Break): 공격받는 컴퓨터의 연결을 종료시킵니다.
- 제어(Take control): 세션을 제어합니다.
- 주입(Inject): 공격받는 컴퓨터의 세션 ID를 사용하여 서버에 새로운 패킷을 주입합니다.
세션 하이재킹으로부터의 보호
- 보안 쉘(SSH)을 사용하여 보안 통신 채널을 생성합니다.
- HTTPS 연결을 통해 인증 쿠키를 전달합니다.
- 사용자가 세션을 종료할 수 있도록 로그아웃 기능을 구현합니다.
- 로그인 성공 후 세션 ID를 생성합니다.
- 사용자와 웹 서버 간에 암호화된 데이터를 전달합니다.
- 문자열이나 길이가 긴 난수를 세션 키로 사용합니다.
같이 보기
- 위키백과의 세션 하이재킹