본문 바로가기

Computer Science/정보보호

세션 하이재킹 1

세션 하이재킹 - 논리적인 연결을 공격자가 중간에 가로채는 것 입니다.

 

tcp 세션을 누군가 가로체서 수정된 패킷을 전송한다던가,적극적인 공격을  할 수 있습니다.

 

 

tcp 세션 하이재킹

크게 2가지 종류로 나눠집니다.

Non-Blind Attack(로컬 세션 하이재킹 공격) TCP 세션 하이재킹

  • 서버와 클라이언트가 통신할 때 TCP의 시퀀스 넘버를 제어하는 관련 문제점을 파고든 공격
  • 공격 대상을 탐지할 수 있으며, 시퀀스 넘버를 알아낼 수 있음.

 

Blind Attack(원격 세션 하이재킹)

  •  공격 대상을 탐지할 수 없으며 시퀀스 넘버를 알아낼 수 없음.

 

앞으로 tcp 세션 하이재킹은 non - blind attack 입니다.

시퀀스 넘버의 제어를 건들여서 문제를 일으키는대 자세히 알아봅시다.

 

tcp가 세션을 만들면 정보를 주고 받습니다.

스트림 기반이기 때문에 데이터는 바이트 단위로 시퀀스 번호가 점핑이 됩니다.

양쪽에서 시퀀스 번호를 관리합니다.

 

client, server둘다 자신의 시퀀스 번호와, 상대방의 시퀀스 번호를 저장합니다.

 

어떻게 데이터를 주고받을까요

서버는 특정 포트를 listening 상태로 만듭니다.

 

client는 syn을 보내 연결요청을 보냅니다.

그 때 시퀀스 번호를 생성합니다.(기본적으로 0으로 시작합니다.)

 

server도 자신의 시퀀스 번호를 만듭니다.

server가 알고있는 client 번호를 채크 합니다.

 

syn(1)ack(서버의 시퀀스 번호, 받고 싶은 것)를 합깨 보냅니다.

 

client는 앞으로 받기 희망하는 것을 ack에 담하서 server로 보냅니다.

 

결국 메세지가 전달이 되면 

client가 알고있는 시퀀스 번호와 server의 시퀀스 번호와 같아야 합니다.

 

 

비동기화 상태로 만드는 방법 2가지

  • 서버에서 초기 설정 단계의 접속을 끊고 다른 시퀀스 넘버로 새로운 접속 생성
  • 널(Null) 데이터를 보내는 방법

대부분 서버에서 접속을 끊고 새로운 시퀀스 번호로 세션을 시작합니다.

 

 

새로운 접속

기존 접속을 끊고 공격자의 세션을 연결 시키는 것 입니다.

 

공격자가 가운대 세션을 끊어 놓고 자신이 만든 번호를 업데이트 하는 것입니다.

서버가 알고있는 클라이언트 번호

클라이언트가 알고 있는 서버의 번호

 

클라이언트 - 공격자 - 서버

처음에 싱크가 맞는 상태였습니다.

 

  1. 공격자가 서버에 리셋을 보냅니다. -> 서버는 close가 됩니다.
  2. 공격자는 자신이 만든 syn을 보냅니다.
  3. 서버는 syn/ack를 공격자에게 보냅니다.
  4. 공격자는 클라이언트 번호에 +1을 해서 서버에 보냅니다.

이러면 세션이 완성 됩니다.

 

왜 클라이언트는 가만히 있을까요?

 

서버는 원래 클라이언트가 보낸 시퀀스 번호와 이미 달라졌습니다.

이 때 서버는 ACK를 많이 보내서 시퀀스 번호를 맞춰야 합니다.

 

(서버가 알고있는 클래스번호)를 클래스에 보내 (클래스의 번호)와 다름을 확인하고

클라이언트가 서버에 (클라이언트 번호)와 (클라이언트가 알고있는 서버의 번호)를 보내는데

이 과정은 무한 반복이 됩니다.

-> 애크스톰

 

 

 

 

 

칼리에 다운 받아야 합니다.

 

에크스톰이 안나게 하기 위해서 릴레이션을 fragrouter로 설정해 둡니다.

 

클라이언트 포트 번호를 확인하고 

클라이언트, 클라이언트포트번호 서버 서버포트번호 순으로 적어야 하이재킹을 할 수 있습니다.

 

성공하면 클라이언트는 연결이 끊깁니다.

공격자만 남게되겠지요 

 

만약 클라이언트가 관리자계정이라면 서버에 치명적인 영향을 끼칠 수 있습니다.

 

 

세션이 만들어진 상태에서

공격자가 파일을 만들 수 있습니다.

 

가장 기본적인 보안 대책

  • SSH와 같이 암호화된 연결을 사용하는 것

 

비동기화 상태 탐지 - 비동기화 되면 하이재킹 가능성을 둘 수 있습니다.

  • 서버와 시퀀스 넘버를 주기적으로 체크하여 비동기화 상태에 빠지는지 탐지

 

 ACK Storm 탐지 - 서로 안맞는 시퀀스 번호 때문에 발생합니다, 평소보다 ack많이 발생하면 

  • 윈도우 크기에 맞지 않는 데이터가 전송되면 정확한 윈도우 크기에 대한 교정 패킷을 보내게 되고, 서로에 대한 교정 패킷이 정상적으로 작동하지 못하기 때문에 무한 루프에  걸리게 됨.

 

패킷의 유실과 재전송 증가 탐지

  • 공격자가 중간에 끼어서 동작을 하므로 패킷의 유실과 재전송이 발생

 

예상치 못한 접속의 리셋

  • 세션 하이재킹에 대한 최우선의 대책은 데이터 전송의 암호화
728x90

'Computer Science > 정보보호' 카테고리의 다른 글

Dos와 DDos 공격  (0) 2021.11.18
MITM(Man In The Middle) 공격  (0) 2021.11.11
터널링  (0) 2021.11.04
스푸핑2  (0) 2021.11.04
스푸핑 1  (0) 2021.11.01