이 도구는 Windows 환경에서 ARP(Address Resolution Protocol) 스푸핑 공격을 탐지하고 방어하기 위한 Python 스크립트입니다. ARP 테이블을 분석하여 의심스러운 활동을 감지하고, 필요시 ARP 테이블을 초기화하거나 동적 엔트리를 정적으로 변경할 수 있습니다.
- ARP 스푸핑 탐지: 동일한 MAC 주소에 여러 IP가 매핑되는 경우를 탐지
- ARP 테이블 초기화: 의심스러운 엔트리 제거
- 정적 ARP 엔트리 설정: 동적 엔트리를 정적으로 변경하여 스푸핑 방지
- 로깅 기능: 모든 활동을 로그 파일에 기록
- 스냅샷 저장: 현재 ARP 테이블 상태를 JSON 형태로 저장
- 운영체제: Windows 10/11 (한국어 환경)
- Python: 3.6 이상
- 권한: 관리자 권한 필수
- 네트워크: 활성 네트워크 연결
- Python 3.6 이상이 설치되어 있는지 확인
- 스크립트 파일을 다운로드
- 관리자 권한으로 명령 프롬프트 실행
# 관리자 권한으로 명령 프롬프트 실행 후
python arp_security_tool.py- 권한 확인: 관리자 권한으로 실행되었는지 확인
- ARP 테이블 분석: 현재 시스템의 ARP 테이블 파싱
- 네트워크 인터페이스 수집: 활성 네트워크 인터페이스 정보 수집
- 스냅샷 저장: 현재 상태를 JSON 파일로 저장
- 스푸핑 탐지: ARP 스푸핑 공격 여부 분석
- 대응 조치: 사용자 선택에 따라 적절한 조치 수행
arp_security.log: 실행 로그 및 오류 기록arp_snapshot_YYYYMMDD_HHMMSS.json: ARP 테이블 스냅샷
# 관리자 권한으로 실행
python arp_security_tool.py- 스푸핑이 감지되지 않으면 "✅ ARP 스푸핑 공격이 감지되지 않았습니다" 메시지 확인
- 정적 ARP 설정 옵션이 제공되는지 확인
주의: 이 테스트는 테스트 환경에서만 수행하세요!
- VMware 또는 VirtualBox에 Windows VM 2개 설정
- 같은 네트워크에 연결
- 한 VM에서 ARP 스푸핑 도구(예: Ettercap, Cain & Abel) 사용
- 다른 VM에서 본 도구 실행하여 탐지 확인
# 관리자 권한 명령 프롬프트에서
# 가짜 ARP 엔트리 추가 (테스트용)
arp -s 192.168.1.1 aa-bb-cc-dd-ee-ff
arp -s 192.168.1.2 aa-bb-cc-dd-ee-ff
# 도구 실행
python arp_security_tool.py
# 테스트 후 정리
arp -d 192.168.1.1
arp -d 192.168.1.2- 현재 ARP 테이블 확인:
arp -a - 도구 실행 후 초기화 선택
- 초기화 후 ARP 테이블 재확인:
arp -a
- 동적 엔트리가 있는 상태에서 도구 실행
- 정적 설정 선택
arp -a명령으로 타입이 "정적"으로 변경되었는지 확인
- 도구 실행 후
arp_security.log파일 확인 - 타임스탬프와 로그 메시지가 정상적으로 기록되는지 확인
- 도구 실행 후
arp_snapshot_*.json파일 생성 확인 - JSON 파일 열어서 ARP 테이블 정보가 정상적으로 저장되었는지 확인
- 반드시 관리자 권한으로 실행해야 함
- 네트워크 설정 변경 시 연결이 일시적으로 끊어질 수 있음
- 정적 ARP 설정은 네트워크 토폴로지 변경 시 수동으로 업데이트 필요
- 로그 파일에 민감한 네트워크 정보가 포함될 수 있으니 보안 관리 필요
- 명령 프롬프트를 관리자 권한으로 실행
- Windows 검색에서 "cmd" 검색 → 우클릭 → "관리자 권한으로 실행"
- 네트워크 연결 상태 확인
- Windows 방화벽 설정 확인
arp -a명령이 수동으로 실행되는지 확인
netsh interface show interface명령이 수동으로 실행되는지 확인- 네트워크 어댑터 드라이버 상태 확인
이 프로젝트는 MIT 라이선스를 따릅니다.
버그 리포트나 기능 개선 제안은 이슈로 등록해주세요.