일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- k-shield주니어
- 정처기
- 케쉴주
- ARP리다이렉트
- SQL개발자
- caesar's cipher
- 3-way handshake
- 4-way handshake
- tcp세션하이재킹
- 스위치재밍
- 네트워크해킹과보안
- OSI7
- 암호학
- IP스푸핑
- ICMP리다이렉트
- 정보보호개론
- 보안
- 복호화
- 합격후기
- 단순치환암호
- 목록화
- 보안부트캠프
- 컴퓨터공학
- 암호문
- 케이쉴드주니어
- 네트워크
- 네트워크보안
- 네트워크해킹
- 세션하이재킹
- 자격증
- Today
- Total
나도 공대생
[개념] 세션 하이재킹 (Session Hijacking) 본문
세션 하이재킹 공격은 말 그래도 세션을 가로챈다는 말이다.
세션(session)은 사용자와 컴퓨터, 두 컴퓨터 간의 활성화된 상태를 말하며 세션이 연결된 동안 사용자의 활동과 관련된 정보를 임시적으로 저장한다.
TCP 세션 하이재킹
서버와 클라이언트가 통신할 때, TCP 시퀀스 넘버 제어의 문제점을 파고든 공격으로 IP 스푸핑이라고도 한다.
클라이언트와 서버 간의 통신을 관찰할 수 있을 뿐만 아니라 트러스트를 이용한 세션, TCP를 이용한 거의 모든 세션을 갈취하는 것이 가능하며 일회용 패스워드나 토큰 기반 인증을 이용한 세션 갈취도 가능하다고 한다.
TCP 세션 하이재킹에는 Non-Blind Attack(로컬 세션 하이재킹)과 Blind Attack(원격 세션 하이재킹)이 존재한다
- Non-Blind Attack : 공격 대상을 탐지할 수 있으며 시퀀스 넘버를 알아낼 수 있음
- Blind Attack : 공격 대상을 탐지할 수 없고, 시퀀스 넘버 역시 알아낼 수 없음
TCP 시퀀스 넘버 교환
시퀀스 넘버의 정의는 다음과 같다.
명칭 | 설명 |
Client_My_Seq | 클라이언트가 관리하는 자신의 시퀀스 넘버 |
Client_Server_Seq | 클라이언트가 알고 있는 서버의 시퀀스 넘버 |
Server_My_Seq | 서버가 관리하는 자신의 시퀀스 넘버 |
Server_Client_Seq | 서버가 알고 있는 클라이언트의 시퀀스 넘버 |
Data_Len | 데이터의 길이 |
시퀀스 넘버에 따른 TCP 연결 상태는 동기화와 비동기화가 있다.
정상적인 TCP 세션이 성립하게 될 경우 시퀀스 넘버는 동기화 상태가 되는데
이때, 클라이언트가 가진 시퀀스 넘버를 서버가, 서버가 가진 시퀀스 넘버를 클라이언트가 정확히 알고 일어야 한다.
TCP 세션 하이재킹은 동기화 상태를 무너뜨리는 것에서 시작하는데 즉, 비동기화 상태로 만들어야 하는 것을 의미한다.
비동기화 상태는 3가지로 나뉜다.
1. 데이터가 전송되기 전까지 안정적인 상태
2. 데이터가 전송될 때는 데이터가 차후 사용을 위해 저장되지만 서버의 승인 번호는 클라이언트에 전달되지 않음
3. 패킷 수신이 불가능한 상태로 데이터도 버려짐
이때 비동기화 상태로 만드는 방법은 2가지가 있다.
1. 서버에서 초기 설정 단계의 접속을 끊고 다른 시퀀스 넘버로 새로운 접속을 생성하는 방법
2. 대량의 Null 데이터를 보내는 방법
Ack Storm
연결이 끊겼을 때 클라이언트가 정상적인 패킷을 보내면 서버는 정상적이지 않는 시퀀스 넘버로 인식하게 된다. 이때 시퀀스 넘버를 맞추기 위해 ACK 패킷에 Server_My_Seq와 Server_Client_Seq를 담아 보내게 된다
클라이언트는 서버가 보내온 Server_My_Seq가 자신의 Client_My_Seq와 다름을 확인하고 서버에 Client_My_Seq와 Client_Serve_Seq가 담긴 ACK를 보낸다.
이러한 과정이 무한히 반복되는 경우를 Ack Storm이라고 한다.
TCP 세션 하이재킹의 보안 대책
TCP 세션 하이재킹은 기본적으로 SSH와 같은 암호화된 연결을 사용하여 대응할 수 있다. 공격의 특성 상 몇 가지 특이점이 존재하는 것을 확인할 수는데 이러한 공격을 탐지하여 대응이 가능하다.
특정 상태의 탐지 종류는 다음과 같다.
1. 비동기화 상태 탐지
서버와 시퀀스 넘버를 주기적으로 체크하여 비동기화 상태에 빠지는 것을 탐지한다.
2. ACK Storm 탐지
공격이 실행되면 클라이언트와 서버는 데이터를 전송할 때 서로의 윈도우 크기에 대한 정확한 정보 수신이 어렵다. 윈도우 크기에 맞지 않는 데이터가 전송되면 정확한 윈도우 크기에 대한 교정 패킷이 전송되고, 서로에 대한 교정 패킷이 정상적으로 작동하지 못해 무한루프에 빠지게 된다. 이때, 보통 ACK 패킷의 비율이 45%지만 ACK 비율이 급격하게 늘어나는 것을 확인할 수 있다.
2. 패킷의 유실과 재전송 증가 탐지
공격자가 중간에 끼어들어 동작을 하므로 패킷의 유실과 재전송이 발생하며 서버와의 응답 시간이 길어진다.
3. 예상치 못한 접속의 리셋
접속 초기 예상치 못한 세션의 리셋이 발생한다. 세션을 뺴앗기거나 빼앗기지 않더라도 공격이 실패할 경우, 세션이 멈추거나 리셋되므로 접속의 리셋으로 클라이언트가 공격 당하고 있음을 알 수 있다.
TCP의 취약성을 이용한 공격은 장거리, 낮은 대역폭, 네트워크 지연이 큰 상태에서 실시하면 매우 효과적이다. 그래서 일회용 패스워드나 커버로스를 사용하는 것만으로 보안을 이뤄내지 못한다.
세션 성립은 인증 성립을 의미하고, 해커의 인증은 성립된 후에 세션 하이재킹을 하므로 인증을 위한 모든 검증을 우회할 수 있다.
그러므로 세션 하이재킹에 대한 최우선의 대책은 데이터 전송 암호화이다.
MITM 공격
MITM(Man In The Middle) 공격은 누군가의 사이에 끼어드는 것이다.
클라이언트와 서버의 통신에 암호화된 채널을 이용하게 되면서 ARP 리다이렉트와 ICMP 리다이렉트, ARP 스푸핑 등이 무용지물이 되지 이를 극복하기 위해 탄생했다.
앞서 말한 3가지의 공격과 MITM의 차이점은 패킷 변조 여부이다. MITM은 주소를 바꾸는 것이 아닌 패킷의 내용 변조를 시도한다.
SSH MITM
텔넷은 서버와 클라이언트가 주고받는 내용을 일반 텍스트 형태로 전송하는데 이런 전송 방식은 정보가 노출되는 보안 문제가 있다.
SSH은 이런 보안 문제를 해결하기 위해 암호화 통신을 제공한다.
1단계 : 최초 클라이언트가 SSH를 통해 SSH 서버에 접근하면 클라이언트는 서버의 공개키를 얻음
2단계 : 클라이언트는 자신의 개인키로 데이터를 암호화하고, 다시 서버의 공개키로 암호화하여 서버로 전송함
3단계 : 서버는 클라이언트로부터 전송받은 암호화된 데이터를 자신의 개인키로 먼저 복호화한 후, 다시 클라이언트의 공개키로 복호화하여 데이터를 읽음
SSH 암호화 통신에 대한 MITM 공격은 클라이언트가 서버에 최초 접속할 때 중간에 끼어들어 클라이언트에는 SSH 서버처럼, SSH 서버에는 SSH 클라이언트처럼 행세하는 것이다.
SSL MITM
SSL은 40비트와 128비트 암호화 통신을 위해 개발되었으며 서버/클라이언트 인증, 암호화 세션 기능을 제공한다. SSL 세션이 생성되는 과정은 다음과 같다.
SSL MITM은 SSL 스니핑과 SSL 스트립 공격으로 나눌 수 있다.
SSL 스니핑
공격자는 임의의 인증서를 생성한 뒤 클라이언트에 보내 별도의 SSL 세션을 생성하고, 이를 중간에 스니함
SSL 스트립
공격자는 임의의 인증서를 만들지 않고 약간 변조된 URL로 클라이언트와 암호화되지 않은, 일반 HTTP 연결을 생성한다.
MITM 공격의 보안 대책
MITM 공격은 우선 ARP 스푸핑과 DNS 스푸핑이 이루어져야 하므로 보안 대책이 기본적으로 ARP, DNS 스푸핑의 보안 대책과 같다.
SSH MITM의 경우, SSL 2.0을 사용하면 공격을 막을 수 있다. 안전하지 않은 인증서에 대한 확인을 해야한다면 확실한 경우 외에는 접속을 하지 말아야 한다.
SSL MITM의 경우, HTTP 주소를 입력하더라도 HTTPS를 사용하는 페이지로 자동 연결되도록 한다(HTST 사용). 또한, 보인이 접속한 사이트가 SSL로 정상 접속되고 있는지 확인해야 한다.
본 내용은 위의 교재를 바탕으로 작성되었습니다.
포스트 이미지는 Unsplash의 무료 이미지를 사용하였습니다.
공부한 내용을 복습할 겸 블로그에 개념을 정리하게 되었는데
내용 상 문제가 되는 부분이 있을 시 알려주시면 수정 또는 비공개로 돌리겠습니다.
'공부 > 네트워크 보안' 카테고리의 다른 글
[개념] 터널링 (Tunneling) (1) | 2024.03.17 |
---|---|
[개념] 스푸핑 (Spoofing) (3) | 2024.03.17 |
[개념] 스니핑 (Sniffing) (1) | 2024.03.16 |
[개념] 목록화 (2) (0) | 2024.03.14 |
[개념] 목록화 (1) (0) | 2024.03.14 |