Session Hijacking
What is session?
사용자와 컴퓨터 또는 두 컴퓨터 간의 활성화 상태
TCP Session Hijacking
IP 스푸핑이라고도 함
+) 로컷 세션 하이재킹 공격과 원격 세션 하이재킹 공격이 있지만 로컬 세션 하이재킹에 대해 공부할 예정
TCP Session Hijacking?
서버와 클라이언트가 통신할 때 TCP의 시퀀스 넘버를 제어하는데 문제점이 있음을 알고 파고드는 공격
TCP 시퀀스 넘버 교환
3-way handshaking을 통해 establish
동기화 상태
비동기화 상태
TCP 세션 하이재킹은 동기화 상태를 무너뜨리는 것에서 시작
- 데이터가 전송되기 전까지는 안정적인 상태
- (클라이언트가 관리하는 자신의 시퀀스 넘버) != (서버가 알고 있는 클라이언트의 시퀀스 넘버)
- (서버가 관리하는 자신의 시퀀스 넘버) != (클라이언트가 알고 있는 서버의 시퀀스 넘버)
- 데이터가 전송될 떄는 다음과 같은 상태의 데이터가 차후 사용을 위해 저장되지만 클라이언트에 서버의 승인 번호는 전달되지 않음
- (서버가 알고 있는 클라이언트의 시퀀스 넘버) < (클라이언트가 관리하는 자신의 시퀀스 넘버)
- (클라이언트가 관리하는 자신의 시퀀스 넘버) < (서버가 알고 있는 클라이언트의 시퀀스 넘버) + (데이터의 길이)
- 패킷 수신이 불가능한 상태, 데이터도 버려짐
- (서버가 알고 있는 클라이언트의 시퀀스 넘버) + (데이터의 길이) < (클라이언트가 관리하는 자신의 시퀀스 넘버)
- (클라이언트가 관리하는 자신의 시퀀스 넘버) < (서버가 알고 있는 클라이언트의 시퀀스 넘버)
서버에서 초기 설정 단계의 접속을 끊고 다른 시퀀스 넘버로 새로운 접속을 생성
대량의 Null 데이터를 보내는 방법
새로운 접속 생성
클라이언트 측
- (클라이언트가 관리하는 자신의 시퀀스 넘버) = 공격자가 생성한 (서버가 알고 있는 클라이언트의 시퀀스 넘버)
- (클라이언트가 알고 있는 서버의 시퀀스 넘버) = 공격자가 생성한 (서버가 관리하는 자신의 시퀀스 넘버)
서버 측
- (서버가 알고 있는 클라이언트의 시퀀스 넘버) = 공격자가 생성한 (클라이언트가 관리하는 자신의 시퀀스 넘버)
- (서버가 관리하는 자신의 시퀀스 넘버) = 공격자가 생성한 (클라이언트가 알고 있는 서버의 시퀀스 넘버)
LAB (arp spoofing)
작성자는 칼리 리눅스와 우분투 22.04를 기준으로 실습 진행
- 칼리를 Primiscuous로 설정

ifconfig eth0 promisc
ifconfig
윗문장으로 설정하고
아래 문장으로 설정이 되었는지 확인하시면 됩니다
- 우분투에서 ip주소 & arp 테이블 확인

hostname -I
입력하면 우분투 내의 ip 주소 얻을 수 있음

arp -a
- 칼리에서 arp spoofing

arpspoof -t (우분투 IP주소) (우분투 게이트웨이)
근데 왜 또 오류가 뜰까..
원래 이렇게 진행하면 우분투와 게이트사이에서 움직이던 패킷들이 칼리를 거쳐서 지나가게 설정이 변경됨
만약 성공한다면 우분투에서
arp -a
입력해서 물리적 주소 변경된 걸 확인할 수 있습니다