2015년 4월 10일 금요일

TCP 세션 하이재킹

ㅇ ㅂㅇ

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 접속


 * hunt 실행 후 이후 과정

< 실행 화면 >


< d 입력하여 데몬 설정과 관련된 메뉴로 들어 간다 >


< a 입력하여 arp spoof + relayer daemon을 작동시키는 메뉴로 들어 간다 >


< s 입력하여 데몬을 실행 시키고, a를 입력하여 세션 하이재킹을 할 주체를 입력한다. >

< hunt로 인해 바뀐 MAC 주소 >

< 세션 list 보기를 통해 현재 telnet으로 주고 받는 통신들에 대한 목록 확인 가능 >

 - a 를 선택하여 내가 원하는 번호의 통신을 hijack을 해보자


< 여러 설정을 한 이후 ctrl + c 버튼을 누르면 상대방이 텔넷을 통해 주고 받는 명령들을 확인 가능하다. >

< 세션을 뺏어 오기 위해 대기 >

< 세션을 뺏어와 그대로 이어서 하는 모습 >

< 세션을 뺏긴 클라이언트 >

< 맨 처음 화면에서 x를 누르면 종료 확인 메시지와 함께 확인 후 종료 >



댓글 없음:

댓글 쓰기