TCP 세션 하이재킹
* 세션 하이재킹 (Session Hijacking)
> 사용자와 컴퓨터, 또는 두 컴퓨터 간의 활성화 상태인 세션(session) 가로채기
* TCP 세션 하이재킹
> 서버와 클라이언트 통신 시 TCP의 시퀀스 넘버를 제어하는 데 발생하는 문제 공격
> 서버와 클라이언트가 TCP를 이용해 통신하고 있을 때 RST 패킷을 보내 일시적으로 TCP 세션을 끊고 시퀀스 넘버를 생성하여 세션을 빼앗고 인증을 회피하거나 연속적인 시퀀스 번호를 이용하는 방법이 있다.
> Non-Blind Attack과 Blind Attack이 있음, Non-Blind Attack은 공격 대상을 탐지 할 수 있으며 서버와 클라이언트가 통신 할 때 시퀀스 넘버를 알아낼 수 있지만, Blind Attack은 불가능, 기본 알고리즘은 동일
> 트러스트를 이용한 세션은 물론 텔넷, FTP 등 TCP를 이용한 거의 모든 세션의 갈취 가능, 인증 문제 해결을 위한 일회용 패스워드, 토큰 기반 인증을 이용한 세션도 갈취 가능
* Blind Attack에서는 시퀀스 번호를 알 수 없음으로 RST 패킷을 이용 일단 접속을 closed 시킨 다음 재접속하는 방법을 이용한다.
* Non blind attack는 전송되는 시퀀스 번호를 이용 세션에 끼어들고 클라이언트 쪽 세션을 제어하는 방법을 사용한다.
* TCP는 FIN 패킷을 받는 경우에도 접속을 일정 시간 유지한다.
> net.ipv4.tcp_fin_timeout 커널 파라미터가 대기 시간을 결정한다. (default:60)
> 프로세서가 반응하지 않거나 로컬 프로세서가 종료된경우 커널은 접속 정보를 삭제하지만 로컬 프로세서가 대기중이라면 접속은 일정 시간 동안 유효하다.(응용에 따라 idle타임에 대한 반응은 다르다.)
* hunt 설치
> rpmforge와 fedora에서 모두 제공하므로 둘 중에 버전이 높은 것을 설치한다.
* 클라이언트에서 telnet 서버로 telnet 접속
< 실행 화면 >
< d 입력하여 데몬 설정과 관련된 메뉴로 들어 간다 >
< a 입력하여 arp spoof + relayer daemon을 작동시키는 메뉴로 들어 간다 >
< s 입력하여 데몬을 실행 시키고, a를 입력하여 세션 하이재킹을 할 주체를 입력한다. >
< hunt로 인해 바뀐 MAC 주소 >
< 세션 list 보기를 통해 현재 telnet으로 주고 받는 통신들에 대한 목록 확인 가능 >
- a 를 선택하여 내가 원하는 번호의 통신을 hijack을 해보자
< 여러 설정을 한 이후 ctrl + c 버튼을 누르면 상대방이 텔넷을 통해 주고 받는 명령들을 확인 가능하다. >
< 세션을 뺏어 오기 위해 대기 >
< 세션을 뺏어와 그대로 이어서 하는 모습 >
< 세션을 뺏긴 클라이언트 >
< 맨 처음 화면에서 x를 누르면 종료 확인 메시지와 함께 확인 후 종료 >
댓글 없음:
댓글 쓰기