본문 바로가기

카테고리 없음

세션 하이재킹

Session Hijacking 은 Cookie를 가로채어 강제로 세션을 맺는 기법입니다.

여기서도 눈치 채실듯 합니다만, Cookie는 예상외로 해킹에 매우 많이 사용되는 중요한 역할을 담당합니다.


해킹기법해킹방법 - HTTP 세션 하이재킹

※ 해킹기법은 크게 서버/네트워크/웹 해킹으로 분류됩니다.

그 중 네트워크 해킹기법의 하나인 세션 하이재킹(Session hijacking)에 대해서 나열하겠습니다

▶ HTTP 세션 하이재킹(Session Hijacking)이란?

HTTP Session Hijacking(또는 Session ID Hijacking) 공격기법은 웹 브라우징시

세션관리를 위해 사용되는 세션 ID를 스니핑이나 무작위 추측 공격(brute-force guessing)

을 통해서도 도용하는 기법입니다.



▶ HTTP 프로토콜의 특성

HTTP는 기본적으로 비연결유지(stateless) 프로토콜입니다.

반면, telnet과 ftp와 같은 프로토콜은 클라이언트와 서버 사이에 하나의 연결이

성립되어 통신하는 프로토콜입니다. 따라서, 우리가 보통 웹 브라우저를 열어

URL를 입력하고 해당 홈페이지에 들어간다는 것은 해당 홈페이지에 포함되어 있는

페이지(html), 그림(jpg, gif등), 자바스크립트(js)등을 다운받기 위해 개별적인

여러개의 80요청(request)를 발송한 후 서버로부터 각각의 응답(reply)을 받는것을 의미합니다.

이러한 일련의 요청과 응답이 이루어진 후 해당 서버와의 통신은 다시 종료됩니다.



▶ Session ID란 무엇인가?

웹 서버는 다수의 웹 페이지 요청자를 구별하기 위하여 각각의 사용자의 세션에 대해서

임의의 긴 문자열 값인 Session ID를 부여한다. 사용자가 홈페이지 방문시 혹은

인증 로그인시에 생성됩니다.

이러한 세션 ID는 사용자의 계정, 암호, 그 밖의 IP 주소, timestamp등의 여러 피라미터들을

조합하여 생성할 수 있습니다.



세션 ID는 사용자와 일련의 웹 서핑 동작을 연결시켜줌으로써 웹 사이트 로그인 후

다른 페이지 방문시마다 매번 로그인을 하지 않아도 되는 편리함을 제공해줍니다.

▶ 세션 ID는 어디에 존재하는가?

세션 ID는 우리가 흔히 든는 쿠키(cookie)라는 곳에 저장되는 것이 일반적이다.

그러나 가끔은 웹 브라우저 주소창 URL이나 HTML 페이지 폼 소스상의 hidden 필드에

포함되어 드러나기도 합니다.

1) 쿠키





2) 웹 브라우저 주소창의 URL



3) 웹 페이지 폼 소스상의 hidden field



▶ 세션 ID의 취약성

- 부실한 알고리즘

세션 ID 스트링 값을 생성함에 있어서 공격자가 리버스엔지니어링이 가능한 쉬운

알고리즘으로 생성될 경우 크래킹이나 무작위 추측 공격의 위험이 있습니다.

- 길이가 짧은 세션 ID

로그인 패스워드의 특정 회수 실패에 대해서는 보통 계정잠금 기능이나 해당 IP 차단

기능을 구현하고 있습니다. 그러나 보통 세션 ID에 대한 무결성 침해나 특성 회수 실패에

대해서는 이러한 잠금 기능 구현이 미비합니다.

따라서 무작위 추측공격의 위험이 있습니다.

- 무한 만료의 세션 ID

사용자의 로그 아웃 이후에도 서버측에서 해당 세션 ID값을 폐기하지 않고 무한정

유효 인전한다면 cookie sniffing이나 프락시 서버의 로그 취득을 통하여

세션 ID 공격이 가능합다.

- 평문으로 전달되는 세션 ID

서버에서 클라이언트로의 세션 ID 쿠키 전달 방식이 비암호화 방식일 경우에는

스니핑을 통하여 해당 값이 노출되어 공격 받을 수 있습니다.

특히 세션 ID 값 자체가 사용자명이나 암호 등의 평문으로 구성되어 있는

경우에는 직접적인 공격이 가능합니다.




▶ 세션 ID 공격유형

- 직접적인 쿠키 스니핑을 통한 세션 ID 도용

- 간접 우회 공격을 통한 세션 ID 도용

- 무작위 추측공격을 통한 세션 ID 도용