본문 바로가기
컴퓨터일반

그것이 알고 싶다!! ARP Spoofing의 원리와 감염확인 및 예방방법

by 잡다한 처리 2010. 9. 29.
반응형
요즘 다들 ARP Spoofing으로 난리인 듯 하다.
그래서 전에 작성해 둔 문서로 혹시나 도움이 될 까 하는 생각으로 올려 둔다.


1. 개요
최근 홈페이지 변조를 통해 온라인게임 스파이웨어 및 ARP Spoofing 공격을 발생시키는 악성코드가 전파중이다.

ARP Spoofing 공격을 통하여 2차 악성코드 삽입, 정보유출 등 다른 공격과 연결되어 더 문제가 심각해 질 수 있다. 
또한 자신의 시스템 뿐만 아니라 연결된 네트워크 내의 다른 시스템에게도 피해를 줄 수 있다.

이번 글에서는 ARP Spoofing 공격의 원리를 알아보고 탐지방법 및 예방방법에 대해 알아 보도록 한다.

2. 설명
2-1. ARP란?
- ARP(Address Resolution Protocol)는 네트워크상에서 IP주소를 물리적 네트워크 주소(MAC)로 대응시키기 위해 사용되는 
프로토콜이다.

Host A가 Host B에게 IP패킷을 전송하고자 할 때 우선 자신의 ARP Cache에 Host B의 MAC주소가 저장되어 있는지 확인한다. Host B의 MAC주소가 ARP Cache에 없을 경우, ARP 프로토콜을 사용하여 목적지 Host B IP를 포함하여 브로드캐스팅의 
MAC주인 FF:FF:FF:FF:FF:FF를 포함한 ARP 패킷을 네트워크상에 전송한다.
Host B는 자신의 IP주소가 목적지에 있는 ARP 패킷을 수신하면 자신의 MAC주소를 Host A에게 응답한다.
이와 같은 방식으로 수집된 IP주소와 이에 해당하는 물리적 네트워크 주소정보는 각 IP 호스트의 ARP Cache에 
저장된 후 다음 패킷 전송시에 다시 사용된다.

- ARP Cache
1) ARP의 효과적인 운영을 위해 호스트는 ARP Cache를 유지, 운영한다.
2) ARP Cache는 가장 최근에 Mapping된 IP와 MAC 주소를 관리한다.
3) 일정 시간(기본 900초, 15분)이 지나면 ARP Cache 내의 내용은 삭제된다.
ARP Cache에 타이밍을 지정하는 내용을 삭제하는 이유는 IP가 변경 될 수 있기 때문이다.

- ARP 패킷 형식

ARP 하드웨어 유형(2Bytes) : 네트워크의 물리계층에 사용된 하드웨어 종류(이더넷 : 1)
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 프로토콜 유형(2Bytes) : 네트워크에서 사용된 네트워크 프로토콜 주소의 종류(Ipv4 : 0x800)
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 하드웨어 길이(1Byte) : 하드웨어 주소에 사용되는 바이트 수(MAC주소의 바이트 수)
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 프로토콜 길이(1Byte) : ARP의 발신지와 목적지 두 곳의 프로토콜 주소의 길이를 표시
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 오퍼레이션(2Bytes) : ARP가 현재 하고 있는 작업표시, 01은 ARP요청(request) 02는 ARP응답(reply)를 의미
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 발신지 하드웨어 주소(6Bytes) : 자신의 Mac Address
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 발신지 프로토콜 주소(4Bytes) : 자신의 IP Address
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 목적지 하드웨어 주소(6Bytes) : 상대의 Mac Address
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41

ARP 목적지 프로토콜 주소(4Bytes) : 상대의 IP Address
0000 FF FF FF FF FF FF 00 00 - C0 93 19 00 08 06 00 01
0010 08 00 06 04 00 01 00 00 - C0 93 17 00 C0 99 B9 64
0020 FF FF FF FF FF FF C0 99 - B9 32 00 00 55 00 00 DC
0030 00 6C 00 D6 00 00 00 A3 - 00 00 00 41


2-2. ARP Spoofing 공격 흐름
위에서 ARP 프로토콜에 대해서 알아보았다. 그렇다면 ARP Spoofing은 무엇일까?

ARP Spoofing은 로컬 네트워크에서 사용하는 ARP 프로토콜의 특징(ARP Cache Save)을 이용하여 자신의 MAC 주소를 다른 컴퓨터의 MAC주소로 변조시키는 공격이며, ARP Cache 정보를 임의로 바꾼다고 하여 “ARP Cache Poisoning” 공격이라고도 한다.

위의 말은 ARP Spoofing의 정석설명이고, 악성코드에 접목된 내용으로 설명한다면, 
ARP Spoofing 공격을 시도하는 공격PC는 자신이 속해있는 네트워크에 연결 된 대상 PC들의 ARP Cache에 저장 된 GateWay의 MAC주소를 감염PC의 MAC주소로 변경하는 공격기법이다. 
여기에 덧붙여서 GateWay의 MAC주소가 변경 된 PC들이 TCP 80port를 사용할 시 감염PC에 의해 스크립트가 삽입되게 된다.

그림으로 간략히 알아보자.

1) 192.168.1.1이 누구냐? – ARP Request (Broadcast)
2) 192.168.1.1은 나다. – ARP reply (MAC 변조) : (이것이 흔히 말하는 숙주PC)
3) Host A는 변조된 Mac를 보고 Host B를 Gateway로 인지하고 데이터 전송
4) Host B는 데이터 확인 후 Host A의 데이터 전송(이 단계에서 80포트 사용 시 스크립트 삽입)

2-3. ARP Spoofing 감염 확인
1) arp –a 명령
“Arp –a” 명령어를 이용하여 ARP Table을 확인 할 수 있다.
그림처럼 정상적인 GateWay의 MAC주소값이 변경되었다면, ARP Spoofing을 의심해야 한다.

(참고) MAC주소 00-0c-29-b0-6a-25는 실제 GateWay의 MAC주소가 아니며, 악성코드가 실행 된 숙주PC의 MAC주소이다.
그림에서 알 수 있듯이 192.168.182.129의 MAC주소이다. 게이트웨이의 아이피는 192.168.182.2 이다.
 

2) Xarp.exe 프로그램
Xarp 프로그램은 ARP Spoofing을 감지할 수 있는 유용한 프로그램이다.
다운로드 사이트 : http://www.chrismc.de/development/xarp/index.html

위 그림과 같이 감염이 의심되는 PC에서 실행 시 “ARP attacks Detected!”라고 사용자에게 알려주며,
우측 하단에 트레이아이콘 부근에 팝업창도 올라오기 때문에 쉽게 알 수 있다.


2-4. ARP Spoofing 예방 방법
1) Static ARP Table으로 설정
ARP Table은 자동(Dynamic)과 수동(Static)으로 설정이 가능하다.
수동으로 설정 할 경우 ARP Cache 테이블의 정보를 변조하지 못한다. 다만 이중 게이트웨이가 네트워크에 존재할 시에는 사용 할 수 없다. 또한 네트워크 변경 시 수동으로 바꾸어야 하는 불편함이 있다(자동설정은 자동으로 Gateway의 Mac주소가 설정된다)

설정방법은 “Arp –s GateWayIP GateWayMAC”로 바꿀 수 있다.

2) 네트워크 장비에서 방어
Cisco장비의 Port Security 기능을 사용하여 각각의 포트에 물리적인 MAC 주소를 정적(static)으로 설정한다.
port security는 대부분의 스위치에서 제공하는 기능으로, 스위치의 각 포트별로 MAC 주소를 static하게 설정하여, 설정된 MAC 주소만 해당 포트를 통해 통신을 허용되도록 할 수 있다.

이 기능을 이용할 경우 스위치 환경에서 arp를 위조하여 스니핑하거나 네트워크를 다운시키는 서비스 거부(DoS)와 같은 형태의 공격을 차단하는 데 효과적이다. port security를 이용하면 다음과 같은 기능을 구현할 수 있다.

a. 스위치의 각 포트별로 허용된 MAC 주소를 지정할 수 있다. 
b. 특정한 MAC 주소를 가진 트래픽을 스위치에서 차단할 수 있다. 
c. 각 포트별로 허용 가능한 MAC 수를 지정하여 이 수치를 초과할 경우 초과된 MAC 주소는 더 이상 통신이 되지 않도록 차단 설정하거나 해당 포트를 아예 일정 시간 동안 또는 영원히 shutdown하도록 설정할 수 있다.

우린 네트워크 관리자가 아니기 때문에 자세히 알 필요는 없다. 

- 참조자료

댓글