* 세션
- 두 대의 컴퓨터 간의 활성화된 상태를 말한다.
* TCP 세션 하이재킹
-> 개념
- TCP가 가지는 고유한 취약점을 이용해 세션을 가로채는 공격이다.(즉, 로그인된 상태를 가로챈다.)
-> 원리
- TCP는 시퀀스 넘버가 잘못되면 이를 바로잡기 위한 작업을 하는 데, 이를 이용한다.
- 서버와 클라이언트에 각각 잘못된 시퀀스 넘버를 위조해서 연결된 세션에 혼란을 준 뒤 자신이 끼어들어가는 방식이다.
1. 공격자는 ARP Spoofing을 이용하여 서버와 클라이언트 사이에서 패킷을 스니핑하고 있다가 서버에 RST패킷을 보내 서버쪽 연결을 끊는다.
2. 그 후 공격자는 새로운 시퀀스 넘버를 생성하여 서버로 보낸다.
4. 서버는 새로운 시퀀스 넘버를 받고 다시 세션을 연다.
5. 공격자는 정상적인 연결처럼 서버와 시퀀스 넘버를 교환하고 공격자와 서버 모두 Established상태가 된다.
* ACK Storm
- 클라이언트에서 다시 TCP 세션 연결을 시도해도 이미 세션 하이재킹이 되었기 때문에 세션 연결이 이루어지지 않는다.
- 클라이언트가 계속 ACK을 보내도 서버에서 공격지에 거쳐 계속 ACK만 왕래하는 현상이다.
[실습 1]
- 실습을 진행하기 전에 아래와 같은 토폴로지를 구성한다.
-> 실습 환경 - WinXP(Victim) - BT(Attacker) - R1(Telnet Server) -> 실습 도구 - hunt |
- 먼저 스니핑하기 위해 ARP Spoofing을 진행해준다. 클라이언트에게 Attacker 자신이 Telnet Server라고 속인다.
- 포워딩 해준다.
- hunt를 실행시킨다.
- XP에서 Telnet Server에 접속한다.
- 먼저 세션이 연결된 list를 확인한다.
- reset하기위해 r을 선택한다.
- 해당 세션 번호를 선택한다.
- 둘다 할 것이기 때문에 b를 선택한다.
- XP에서 세션이 끊어진 것을 확인할 수 있다.
- 이번에는 도청을 해본다.
- w을 선택한다.
- 번호를 선택한다.
- XP에서 어떤 명령어를 실행하는지 확인이 가능하다.
- 이번에는 세션을 가로채본다,
- s를 선택하고 0번, b를 선택해주었다.
- XP에서 입력한 명령어가 그대로 Attacker에게 그대로 표시되었다.
- 원하는 시점에서 Ctrl+C키를 눌러 하이재킹을 시도한다.
- 다음과 같이 Attacker가 원하는 명령어를 실행할 수 있다.
[실습 2]
- 토폴로지는 [실습 1]과 동일하다.
-> 실습 환경 - WinXP(Victim) - BT(Attacker) - CentOS(Telnet Server) -> 실습 도구 - hunt |
- hunt를 실행시킨다.
- XP에서 Telnet Server로 접속한다.
- 스니핑하기 위해 ARP Spoofing을 진행해준다. Victim에게 공격자 자신이 Telnet Server라고 속인다.
- 포워딩 해준다.
- s를 선택한다.
- 아래와 같이 도청이 가능하다.
- 이유는 모르겠지만 Telnet Server가 CentOS에서 동작하고 있을 때는 s를 선택했을 시 도청만 가능하다.
* 대응법
1. 취약한 프로토콜인 텔넷을 이용하는 대신 SSH와 같이 세션에 대한 인증수준이 높은 프로토콜을 이용해야한다.
2. 클라이언트와 서버 사이에 MAC주소를 고정시켜 준다. (ARP Spoofing)
3. 지속적인 인증을 요구한다.