본문 바로가기

Security/Network Hacking

TCP Session Hijacking

이번강의는 TCP 세션하이재킹에 관한걸 배워볼것입니다. 

 

먼저 세션에 대해 알아보자. 

세션이라 함은 사용자와 컴퓨터, 또는 두대의 컴퓨터간의 활성화된 상태이다.

그러면 세션 하이재킹 이란 무엇일까?

무선 AP와 노트북 PC간에 이루어지는 통신 정보인 세션을 가로채서, 사용자 인증 절차를 거치지 않고

해당 노트북 PC와 동일한 권한을 얻는 것을 예로 들어 설명할 수 있겠다.

서버로의 접근 권한을 얻기 위한 ID와 PASSWORD를 사용하는 인증절차를 건너뛸 수 있다는 것이 해커의 입장에서 장점(?)이다.

이런 하이재킹에 성공하면 해당 서버와 동일한 권한을 얻게 되므로

공격자는 서버와 사용자가 주고받는 모든 내용을 감시 할수 있게된다.(스니핑)

공격자의 입장에서 보면 사용자의 ID,PASSWORD를 수집하는데 악용할 수 있다.

그렇다면 세션 하이재킹이 어떻게 이루어지는 것일까??

먼저 정상적인 TCP 3-way-handshaking의 연결과정을 살펴보자.

세션 하이재킹을 공격자가 세션 연결 과정 중간에 끼어들어서 권한을 얻게 된다.

① 클라이언트는 서버와의 접속을 생성시키기 위해 SYN 패킷을 전송한다.
② 공격자는 서버에서 클라이언트로 가는 SYN/ACK 패킷을 Listen한다.
③ 패킷을 탐지했을때 공격자는 서버에 RST 패킷을 보내 클라이언트의 접속을 종료시킴
④ 공격자는 클라이언트가 보낸 패킷과 동일한 파라메터들(TCP 포트)을 가지지만 일련번호가 다른 SYN 패킷을 서버에 보낸다.

서버는 자신의 다른 일련번호(SVR_SEQ'0)를 가지고 같은 포트에 새로운 접속을 개방한다. 
⑤ 서버는 SYN/ACK 패킷을 클라이언트에 발송
⑥ 이 패킷을 탐지한 공격자는 서버에 ACK 패킷을 발송. 서버는 ESTABLISHED 상태로 전환한다.

클라이언트는 서버로 부터 최초 SYN/ACK 패킷을 수신했을 때 이미 ESTABLISHED 상태로 전환되어 있다.

그렇다면 실제 툴을 이용한 세션 하이재킹 공격을 살펴보자.

---------------------------------------------------------

<실습환경> : 텔넷서버, 클라이언트(레드햇 리눅스 9.0), 공격자서버(레드햇 리눅스 9.0)

<설치 라이브러리> : libnet, libpcap, gcc

---------------------------------------------------------

1. 먼저 hunt-1.5.tgz 다운로드하고 압축을 풀고, 컴파일 한다.

#tar xvfz hunt-1.5.tgz

#cd hunt-1.5

#make

2. hunt를 실행하자.

-> hunt 실행모드가 나타난다.

3. 텔넷 클라이언트에서 텔넷 서버로 telnet 접속을 한다.

왜냐하면 서버와 클라이언트가 세션이 연결된 상태에서 공격자가 세션을 가로채기 위함이다.

4. 옵션 'l'을 실행시켰을때의 모습이다. 두개의 서버/클라이언트가 연결되있다는 것을 확인 할 수 있다.

5. 연결확인이 되었으므로 TCP 세션 하이재킹을 위해 ACKStorm을 피하여고 a모드를 선택한다.

그리고 나서는 모두 엔터를 쳐서 다 넘어간다.

(옵션 - d : 데몬을 실행시킬 수 있는 모드

m : MAC 주소를 알아내기 위한 데몬 메뉴

s : 데몬 시작

h : 마지막으로 획득한 MAC 주소 나열)

6. 클라이언트에서 일단 아무 명령이나 입력하고 공격자의 console을 살펴보자.

서버와 클라이언트간의 통신 내용이 모두 화면에 스니핑되고 있음을 확인 할 수 있다. 화면에 두 번 출력된 것은

라이언트에서 보내는 패킷과 서버에서 클라이언트로 보내는 echo 패킷이 모두 나타나 중복되는 모습을 보이기 때문이다.

초록색으로 출력된 것은 클라이언트의 패킷, 흰색으로 출력된 것은 서버의 echo 패킷이다.

중요한 것은 공격자가 서버-클라이언트간의 패킷을 스니핑하고 있다는 점이다.

7. 그 다음에 클라이언트에서 아무 명령어가 한 글자 친 다음에 공격자 console에서 <Ctrl + C>를 눌러보자.

왜 이런 작업이 필요할까?? TCP 세션 하이재킹을 위해 이 시점에 공격자가 끼어드는 것이다.

정상적인 클라이언트가 서버와 세션을 연결하려고 명령어를 실행하기 전에 공격자가 세션 하이재킹을 시도하게 된다.

그 시점이 <Ctrl + C>를 누르는 시점이다.

클라이언트에서 명령어를 실행시키기 전에 공격자에서 세션 하이재킹을 시도해야 공격의 성공이 이루어 질 수 있다.

-> 공격자의 console을 보자. 이젠 스니핑이 아닌 완벽히 세션 하이재킹에 성공해서 서버의 권한을 그대로 훔쳐온 모습이다.

(참고로 hattush ID는 서버쪽에서의 사용자 ID이다) 

 

[출처] TCP Session Hijacking|작성자 xHosa

'Security > Network Hacking' 카테고리의 다른 글

[무선해킹] 802.11 WPA 크랙  (0) 2012.07.12
[무선해킹] wep 해킹  (0) 2012.07.12
FTP 서버 Dos 공격  (0) 2012.07.12
DNS 스푸핑(Spoofing)  (0) 2012.07.12
ARP 스푸핑 (poisoning) 두 번째.. 실습  (0) 2012.07.12