금주에 ARP Spoofing 공격을 하는 악성파일이 이슈가 있어서 (그냥 지나치기에는 너무나 아쉬운 ^^) 공격 방법과 탐지 방법 및 대처 방법에 대해서 살펴볼까 합니다.

우선, OSI 7 Layer의 2계층에서 두 호스트 간 통신하는 방법을 살펴보겠습니다.



Host A가 자신의 로컬 도매인 내의 ARP Cache 를 검색하여 Host B의 IP와 MAC address가 맵핑이 되어 있는지
확인합니다. 만약에 확인이 되지 않으면 Host B IP의 MAC address에 대한 ARP Request를 broadcasting을 합니다. Host B는 IP와 MAC address 정보를 ARP Reply로 Host A에게 전달합니다. Host B의 IP와 MAC address를 전달받은 Host A는 자신의 ARP Cache를 업데이트 합니다.

보안적인 측면에서 바라보면, 이러한 2계층 간의 통신을 'Man In The Middle' 공격 기법으로 우회를 할 수가 있습니다.  쉽게 예를 들어보겠습니다. A라는 남자와 B라는 여자는 사랑하는 애인 관계입니다. 그런데 C라는 남자가 B라는 여자를 너무나 사랑한 나머지 A와 B의 전화를 중간에서 도청을 하며 스토킹을 하는 것과 같이, Host A와 Host B 사이에 다른 Host C가 중간에서 패킷을 sniffing하고 있는 것입니다. (Host A, B, C는 같은 도메인에 속해 있습니다.)

이제 아래 그림을 보면서 ARP Spoofing 공격에 대해 본격적으로 설명을 드리겠습니다.
그리고 앞으로 설명하면서 사용할 각 Host의 MAC address를 아래와 같이 임시로 사용하겠습니다. Host C는 ARP Spoofing 공격을 하는 공격자입니다.


ARP Spoofing 공격 전의 각 Host들의 IP와 MAC 정보
Host A : IP<172.16.1.60>, MAC<00 00 00 00 00 06>
Host B : IP<172.16.1.40>, MAC<00 00 00 00 00 04>
Host C : IP<172.16.1.20>, MAC<00 00 00 00 00 02>




ARP Spoofing 공격이 공격자 Host C에 의해서 이루어지면 Host A ARP Cache에 Host B의 IP와 맵핑된 00 00 00 00 00 04 의 MAC address가 Host C의 MAC address인 00 00 00 00 00 02 로 변경되어 ARP Cache에서 업데이트 되게 됩니다. Host B ARP Cache에 Host A의 IP와 맵핑된 00 00 00 00 00 06 의 MAC address가 Host C의 MAC address인 00 00 00 00 00 02 로 변경되어 ARP Cache에서 업데이트 되게 됩니다. 그렇게 되면 Host A가 Host B로 패킷을 보낼 때 2계층 통신이므로 Switch 장비는 MAC address 를 참조하여 전송을 하게 되는데 Host B가 아닌 Host C가 Host A의 패킷을 수신하게 됩니다. Host B에서 Host A로의 역방향도 마찬가지입니다.

윈도우 계열에서는 TTL 값이 기본으로 128 입니다. ARP Spoofing 공격을 하기 위해서는 공격자가 패킷을 수신한 후 forwarding을 시켜 주어야 합니다. 그렇게 되면 원래 패킷은 drop되게 됩니다. kernel에서 packet forwarding하는 방법을 사용하게 되면 라우터처럼 동작하게 됩니다. 따라서 ARP Spoofing 공격이 이루어진 후 TTL 값이 127이 된 것을 확인할 수 있습니다.



두 번째 글 "내 패킷을 훔치는 ARP Spoofing 공격 탐지 툴 (2)" 에서는 ARP Spoofing 공격 탐지 툴 소개와 대처 방법에 대해서 알아보겠습니다.


신고
Creative Commons License
Creative Commons License
Posted by 비회원