세션 하이재킹
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
세션 하이재킹은 공격자가 다른 사용자의 유효한 세션 ID를 가로채어 권한을 획득하는 보안 공격 기법이다. 초기 HTTP 프로토콜의 취약점과 슈퍼쿠키와 같은 기능의 도입으로 인해 지속적인 보안 문제로 이어져 왔다. 주요 공격 방법으로는 세션 고정, 세션 사이드 재킹, XSS, 악성 소프트웨어 등이 있으며, TCP 시퀀스 번호 예측 공격도 세션 하이재킹에 활용될 수 있다. HTTP 세션 관리의 부적절한 구현은 세션 하이재킹의 위험을 높이며, 세션 ID 추측, 탈취, 세션 고정 공격 등의 형태로 나타난다. 안전한 세션 관리를 위해 쿠키 또는 폼 데이터의 hidden 필드를 사용하고, SSL/TLS를 통한 통신 데이터 암호화, 강력한 세션 키 사용, 로그인 후 세션 ID 재생성 등의 보안 대책이 필요하다.
더 읽어볼만한 페이지
- 웹 취약점 공격 - 보안 취약점
보안 취약점은 시스템의 설계, 구현, 운영, 관리상 결함이나 약점으로, 위협에 의해 악용되어 시스템 보안 정책을 위반할 수 있는 요소이며, ISO 27005, IETF RFC 4949, NIST SP 800-30, ENISA 등 다양한 기관에서 정의하고 있다. - 웹 취약점 공격 - 인터넷 보안
인터넷 보안은 사이버 위협, 악성 소프트웨어, 서비스 거부 공격 등으로부터 정보와 시스템을 보호하기 위해 네트워크 계층 보안, 다단계 인증, 방화벽 등 다양한 기술과 방법을 포괄한다. - 취약점 공격 - 보안 취약점
보안 취약점은 시스템의 설계, 구현, 운영, 관리상 결함이나 약점으로, 위협에 의해 악용되어 시스템 보안 정책을 위반할 수 있는 요소이며, ISO 27005, IETF RFC 4949, NIST SP 800-30, ENISA 등 다양한 기관에서 정의하고 있다. - 취약점 공격 - 인터넷 보안
인터넷 보안은 사이버 위협, 악성 소프트웨어, 서비스 거부 공격 등으로부터 정보와 시스템을 보호하기 위해 네트워크 계층 보안, 다단계 인증, 방화벽 등 다양한 기술과 방법을 포괄한다. - 네트워크 보안 - 스파이웨어
스파이웨어는 사용자의 동의 없이 설치되어 개인 정보를 수집하거나 시스템을 감시하며, 다양한 형태로 존재하여 광고 표시, 정보 탈취, 시스템 성능 저하 등의 피해를 유발하는 악성 프로그램이다. - 네트워크 보안 - 가상 사설 서버
가상 사설 서버(VPS)는 공유 웹 호스팅과 전용 호스팅의 중간 단계 서비스로, 가상화 기술을 기반으로 슈퍼유저 수준의 접근 권한, 높은 운용 자유도와 향상된 보안성을 제공하지만, 환경 유지 관리 필요성, 상대적으로 높은 비용, 회선 공유 문제 등의 단점도 가진다.
세션 하이재킹 | |
---|---|
공격 개요 | |
공격 유형 | 세션 관리 공격 |
공격 목표 | 사용자 세션 탈취 인증 우회 |
공격 방법 | 세션 ID 예측 또는 획득 쿠키 가로채기 악성코드 감염 크로스 사이트 스크립팅 (XSS) |
기술적 상세 | |
공격 대상 | 웹 애플리케이션, 웹 서버 |
취약점 | 취약한 세션 ID 생성 알고리즘 세션 ID 암호화 미흡 XSS 공격에 취약한 웹 페이지 |
공격 단계 | |
공격 종류 | |
세션 고정 (Session fixation) | 공격자가 피해자에게 특정 세션 ID를 사용하도록 강제 |
세션 가로채기 (Session stealing) | 공격자가 네트워크 트래픽을 감시하여 세션 ID를 획득 |
크로스 사이트 스크립팅 (XSS) | XSS 취약점을 이용하여 세션 쿠키를 탈취 |
악성코드 | 악성코드를 통해 세션 정보를 탈취 |
예방 대책 | |
세션 ID 보호 | 강력한 세션 ID 생성 알고리즘 사용 세션 ID 암호화 HTTPS 사용 세션 ID 주기적 갱신 |
XSS 방지 | 입력 값 검증 및 이스케이프 처리 |
쿠키 보안 | HttpOnly 속성 설정 Secure 속성 설정 |
사용자 교육 | 의심스러운 링크 클릭 금지 |
관련 용어 | |
세션 관리 | 웹 애플리케이션에서 사용자 상태를 유지하는 메커니즘 |
세션 ID | 각 사용자 세션을 식별하는 고유한 값 |
쿠키 | 웹 서버가 사용자 브라우저에 저장하는 작은 텍스트 파일 |
크로스 사이트 스크립팅 (XSS) | 웹 애플리케이션의 보안 취약점 |
2. 역사
HTTP 프로토콜 초기 버전(0.8 및 0.9)에는 세션 하이재킹에 필요한 쿠키 등의 기능이 없었다. 1994년 10월 13일에 출시된 Mosaic Netscape의 버전 0.9beta에서 쿠키가 지원되면서 세션 하이재킹의 가능성이 열렸다.[2]
HTTP 1.0의 초기 버전은 세션 하이재킹과 관련된 몇 가지 보안 취약점을 가지고 있었지만, 초기 HTTP 1.0 서버와 브라우저의 불안정성으로 인해 악용하기 어려웠다. 2000년대 초반부터 HTTP 1.0이 HTTP 1.1의 대체 방식으로 지정되면서 세션 하이재킹 문제는 영구적인 보안 위협으로 진화하였다.[2] HTTP 1.1에서 슈퍼쿠키 및 기타 기능 도입은 하이재킹 문제를 지속적인 보안 문제로 만들었다. 웹 서버 및 브라우저 상태 머신 표준화 역시 이러한 문제에 기여했다.
TCP에서 세션 ID에 해당하는 관리 항목은 IP 주소와 시퀀스 번호이다. 송신 IP 주소 위조와 TCP 시퀀스 번호 예측 공격을 조합하여, 확립된 TCP 세션에 부정 데이터를 삽입하거나 세션을 강제로 끊을 수 있으며, 세션 하이재킹이 가능하다.
TCP 시퀀스 번호 예측 공격과 관련해서는 다음과 같은 사건들이 있었다.
연도 | 사건 내용 |
---|---|
1985년 | 밥 모리스(Bob Morris)가 TCP 시퀀스 번호 예측 공격을 통한 세션 하이재킹 수법을 보고함. |
1995년 | TCP 시퀀스 번호 예측 공격 취약점을 이용한 광범위한 공격 발생 (CA-1995-01). |
2001년 | TCP 구현 문제로 인한 취약점이 지적됨 (CA-2001-09). |
세션 하이재킹은 주로 웹 애플리케이션에서 사용자의 세션 ID를 탈취하여 이루어진다. 세션 ID는 사용자를 식별하고 인증 상태를 유지하는 데 사용되는 정보이다. 세션 하이재킹은 통신의 당사자가 아닌 제3자(공격자)가 세션 ID를 획득하여 세션을 가로채는 공격 수법이다. 웹 애플리케이션에서는 사용자가 처음에 로그인할 때 비밀번호를 요구하지만, 로그인 성공 후에는 세션 ID만으로 사용자를 식별하는 경우가 많다. 따라서 공격자가 세션 ID를 탈취하면 사용자의 비밀번호를 몰라도 세션을 가로챌 수 있다.
2008년 현재는 이러한 문제에 대한 대책이 이루어져 잠잠해진 상태이다.
3. 세션 하이재킹의 방법
웹 애플리케이션에 대한 세션 하이재킹은 크게 세 가지 유형으로 분류할 수 있다.유형 설명 세션 ID 추측 세션 ID를 연번, 시간, 사용자 ID, 이메일 주소 등 추측하기 쉬운 방법으로 할당하는 경우에 가능한 공격이다. 세션 ID 탈취 크로스 사이트 스크립팅, HTTP 헤더 주입, 미들웨어 취약점 등 웹 애플리케이션의 취약점을 이용하여 브라우저에 보관된 세션 ID를 훔치는 방법이다. 세션 ID 고정 공격 (세션 픽세이션 공격) 공격자가 피해자의 브라우저에 자신이 준비한 ID를 삽입하여 세션을 하이재킹하는 방법이다.
HTTP는 원래 세션 관리 메커니즘을 갖추고 있지 않기 때문에, 웹 애플리케이션 측에서 세션 관리 메커니즘을 준비하고 브라우저에 세션 ID를 부여해야 한다. 그러나 이 세션 관리 메커니즘이 부적절하면 세션 하이재킹의 위험이 있다.
3. 1. 세션 ID 획득 방법
3. 2. TCP 세션 하이재킹
TCP은 IP 통신에 대해 연결 기능을 제공하며, 최소한의 세션 기능을 갖춘 것이라고 할 수 있다.
TCP에서 세션 ID에 해당하는 관리 항목은 IP 주소와 시퀀스 번호이다. 송신 IP 주소 위조와 TCP 시퀀스 번호 예측 공격을 조합하여, 확립된 TCP 세션에 부정 데이터를 삽입하거나 세션을 강제로 끊을 수 있으며, 세션 하이재킹이 가능하다.
TCP 시퀀스 번호 예측 공격은 1985년에 밥 모리스(Bob Morris)가 공격 수법을 보고하였고, 1995년에 이 취약점을 이용한 광범위한 공격(CA-1995-01)이 발생하였으며, 2001년에는 불충분한 구현에 따른 문제(CA-2001-09)가 지적되는 등 과거부터 여러 번 문제가 되었지만, 대책이 이루어지고 있는 2008년 현재는 잠잠해졌다.
4. HTTP 세션 관리 및 대응
HTTP는 원래 브라우저의 요청에 대해 웹 페이지를 반환하는 일방향 통신을 상정하고 있으며, HTTP 자체에는 세션 관리 메커니즘이 없다. 따라서 웹 애플리케이션 측에서 세션 관리 메커니즘을 구현하고 브라우저에 세션 ID를 부여해야 한다. 하지만 이 세션 관리 메커니즘이 부적절하면 세션 하이재킹 위험이 있다.[2]
웹 애플리케이션의 세션 하이재킹은 다음 세 가지 유형으로 분류할 수 있다.
- '''세션 ID 추측:''' 세션 ID를 연번, 시각[24], 사용자 ID[24], 이메일 주소[24] 등 추측하기 쉬운 방식으로 할당하면 공격자가 세션 ID를 추측할 수 있다.
- '''세션 ID 탈취:''' 크로스 사이트 스크립팅[24], HTTP 헤더 주입[24], 미들웨어 취약점[24] 등 웹 애플리케이션의 취약점을 이용하여 브라우저에 보관된 세션 ID를 훔친다. 리퍼러를 악용하여 세션 ID를 탈취할 수도 있다.[24]
- '''세션 고정 공격:''' 공격자가 피해자의 브라우저에 자신이 준비한 세션 ID를 삽입하는 공격이다.
4. 1. 세션 ID 송수신 방법
웹 애플리케이션과 브라우저가 세션 ID를 주고받는 방법은 다음 세 가지가 있다.[5]방법 | 설명 | 보안 취약점 |
---|---|---|
쿠키 (Cookie) | 가장 일반적인 방법이다. 웹 서버가 `Set-Cookie` 응답 헤더를 사용하여 세션 ID를 브라우저에 저장하고, 브라우저는 이후 요청에 쿠키를 포함하여 서버로 전송한다. (`RFC 6265` 규정) | 비교적 안전 |
폼(Form) 데이터의 `hidden` 필드 | 세션 ID를 HTML 폼의 `hidden` 필드에 넣어 전송한다. 페이지 전환 시 폼 데이터 전송을 사용해야 한다. | 비교적 안전 |
URL | URL에 세션 ID를 포함하는 방법. | 세션 하이재킹 위험에 노출되므로, 특별한 이유가 없는 한 사용해서는 안 된다.[5] |
보안을 고려하면 쿠키나 폼 데이터의 `hidden` 필드를 이용하여 세션 관리를 해야 한다. 폼 데이터의 `hidden` 필드를 이용하는 방식이 쿠키를 이용하는 방식보다 세션 ID가 공격자에게 덜 노출되지만,[5] 구현이 복잡해지는 단점이 있다.[5]
4. 2. 보안 대책
- SSL/TLS를 사용하여 데이터 통신을 암호화하여 세션 키를 보호한다. 특히 로그인 및 금융 거래와 같이 민감한 정보를 다루는 페이지에서는 필수적이다.[21]
- 길고 예측 불가능한 임의의 숫자나 문자열을 세션 키로 사용하여 공격자가 추측하기 어렵게 만든다.
- 로그인 성공 후에는 반드시 세션 ID를 재생성하여 세션 고정 공격을 방지한다.
- 사용자의 IP 주소를 확인하는 등의 추가적인 인증 절차를 통해 공격을 방어할 수 있다. 그러나 동일한 IP 주소를 사용하는 사용자의 공격은 막을 수 없다.
- 모든 요청에 대해 쿠키 값을 변경하여 공격 시간을 단축하고 공격을 식별한다.
- 사용자는 웹사이트 사용을 마칠 때마다 로그아웃하여 세션을 종료하는 것이 좋다.[23][24]
- 웹 애플리케이션 개발 도구(웹 애플리케이션 프레임워크)에서 제공하는 세션 관리 기능을 활용하는 것이 좋다. 세션 관리 기능을 직접 구현하는 것은 피해야 한다.[24]
5. 취약점 및 공격 도구
파이어쉽은 2010년 10월에 소개된 파이어폭스 확장 기능으로, 보안되지 않은 네트워크에서 세션 하이재킹 취약점을 시연했다. 이 확장 기능은 인기 웹사이트에서 암호화되지 않은 쿠키를 캡처하여, 동일 네트워크상의 다른 사용자의 활성 세션을 탈취할 수 있게 했다. 이 도구는 사이드바에 잠재적 대상자를 표시하여 비밀번호 도용 없이 세션에 접근할 수 있도록 했다. 지원되는 웹사이트로는 페이스북, 트위터, 플리커, 아마존, 윈도우 라이브, 구글 등이 있으며, 스크립트를 사용하여 다른 웹사이트를 추가할 수도 있었다.[6] 불과 몇 달 후, 페이스북과 트위터는 HTTP 전체 적용을 제안하고 (이후에는 필수화) 대응했다.[7][8]
DroidSheep은 웹 세션 하이재킹(sidejacking)을 위한 간단한 안드로이드 도구이다. 무선(802.11) 네트워크 연결을 통해 전송된 HTTP 패킷을 수신하고 이러한 패킷에서 세션 ID를 추출하여 재사용한다. DroidSheep은 libpcap 라이브러리를 사용하여 세션을 캡처할 수 있으며, 개방형(암호화되지 않은) 네트워크, WEP 암호화 네트워크, WPA/WPA2 암호화 네트워크(PSK만 해당)를 지원한다. 이 소프트웨어는 libpcap 및 arpspoof를 사용한다.[9][10] 구글 플레이에서 제공되었지만 구글에 의해 삭제되었다.
CookieCadger는 암호화되지 않은 GET 요청을 사용하는 애플리케이션에서 정보 유출을 식별하는 데 도움이 되도록 HTTP 요청의 사이드재킹 및 재실행을 자동화하는 그래픽 자바 애플리케이션이다. 이는 유선 이더넷, 보안되지 않은 와이파이를 모니터링하거나 오프라인 분석을 위해 패킷 캡처 파일을 로드할 수 있는 와이어샤크 제품군을 기반으로 하는 크로스 플랫폼 오픈 소스 유틸리티이다. Cookie Cadger는 Shutterfly (AYSO 축구 리그에서 사용) 및 TeamSnap과 같은 청소년 팀 공유 사이트의 취약점을 강조하는 데 사용되었다.[11]
쿠키 몬스터(CookieMonster)는 "암호화된 세션만" 속성이 제대로 설정되지 않은 경우 제3자가 HTTPS 쿠키 데이터를 획득할 수 있는 중간자 공격의 일종이다. 이는 민감한 개인 정보나 금융 정보가 포함된 사이트에 대한 접근을 허용할 수 있다. 2008년에는 Gmail, 구글 문서, 이베이, 넷플릭스, 캐피탈원, 익스피디아를 포함한 주요 웹사이트에 영향을 미칠 수 있었다.[12] 이것은 보안 연구원 마이크 페리(Mike Perry)가 개발한 파이썬 기반 도구이다. 페리는 2007년 BugTraq에서 쿠키 몬스터가 악용한 취약점을 처음 발표했다. 1년 후, 그는 데프콘 16(Defcon 16)에서 쿠키 몬스터를 개념 증명 도구로 시연했다.[13][14][15][16][17][18][19][20]
참조
[1]
간행물
CookiExt: Patching the browser against session hijacking attacks
2015-09-16
[2]
웹사이트
Session Hijacking & HTTP Communication
https://cwatch.comod[...]
2020-10-19
[3]
웹사이트
Warning of webmail wi-fi hijack
http://news.bbc.co.u[...]
BBC News
2007-08-03
[4]
웹사이트
Malware use Browser Hijacking to steal cookie
https://blog.malware[...]
2020-10-19
[5]
서적
Engineering Secure Software and Systems
Springer
2011
[6]
뉴스
Firefox extension steals Facebook, Twitter, etc. sessions
http://www.h-online.[...]
2010-10-25
[7]
뉴스
Facebook now SSL-encrypted throughout
http://www.h-online.[...]
2011-01-27
[8]
뉴스
Twitter adds 'Always use HTTPS' option
http://www.h-online.[...]
2011-03-16
[9]
웹사이트
DroidSheep
https://code.google.[...]
[10]
웹사이트
DroidSheep Blog
http://droidsheep.de[...]
2012-08-07
[11]
웹사이트
How Shutterfly and Other Social Sites Leave Your Kids Vulnerable to Hackers
https://www.motherjo[...]
2013-05-03
[12]
웹사이트
CookieMonster nabs user creds from secure sites • The Register
https://www.theregis[...]
www.theregister.co.uk
2009-02-18
[13]
웹사이트
CookieMonster: Cookie Hijacking {{!}} fscked.org
https://fscked.org/p[...]
2018-12-18
[14]
웹사이트
CookieMonster Can Steal HTTPS Cookies -- Security -- InformationWeek
http://www.informati[...]
2008-09-11
[15]
웹사이트
CookieMonster nabs user creds from secure sites
https://www.theregis[...]
2018-12-18
[16]
웹사이트
Incomplete List of Alleged Vulnerable Sites {{!}} fscked.org
https://fscked.org/b[...]
2018-12-18
[17]
웹사이트
HTTPS Cookie-Hijacking Tool CookieMonster Gobbles Personal Data
https://www.eweek.co[...]
Ziff-Davis
2008-09-12
[18]
웹사이트
Perry's Defcon Presentation (YouTube)
https://www.youtube.[...]
[19]
웹사이트
Defcon Presentation slides
https://fscked.org/p[...]
[20]
웹사이트
CookieMonster Core Logic, Configuration, and READMEs
http://fscked.org/bl[...]
[21]
웹사이트
Schneier on Security: Firesheep
http://www.schneier.[...]
2011-05-29
[22]
서적
Secure IT Systems
[23]
웹사이트
NetBadge: How To Log Out
http://itc.virginia.[...]
[24]
웹사이트
Be Card Smart Online - Always log out
http://www.becardsma[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com