ARP Spoofing
ARP란 무엇인가?
- IP 주소를 물리적인 MAC 주소로 연결(bind)해주는 필수 프로토콜
- 1982년 신뢰를 기반으로 설계됨
- 당시엔 신뢰기반 특징의 별도의 인증절차가 존재 하지 않음
- 각 주소를 ARP 캐시라 불리는 메모리에 테이블 형태로 저장하고 패킷 전송 시 사용한다.
ARP Spoofing 동작 원리
- 중간자 공격(MITM) 기법을 활용한 패킷 탈취 방식이다
- 네트워크 계층 모델 중 2계층(Data Link Layer)의 취약점을 이용한 공격
- 요청하지 않은 질문에 답장해 ARP Cache 조작 한다.
- 공격자가 희생자에게는 내가 게이트웨이야 라고 속이고, 게이트웨이에는 내가 희생자 서버야 라고 속여서 중간에서 모든 패킷을 가로채는 것
- 패킷이 암호화 되어 있지 않다면 공격자가 패킷 내용을 다 읽어보고 다시 전달하기 때문에 희생자는 자신의 정보의 유출을 알기 어려움

https://www.crowdstrike.com/en-us/cybersecurity-101/social-engineering/arp-spoofing/
ARP Spoofing 모의해킹 시나리오
- 공격자가 리눅스 서버에 대한 루트 권한을 관리하는 가상의 관리자를 대상으로 ARP Spoofing을 진행
- ARP Spoofing을 통해 획득한 네트워크 데이터 중 Root 권한의 인증정보를 스니핑
- 공격자가 해당 Root 권한의 ID /Pw 탈취 후 해당 서버에 접속
[구동 환경]
| 분류 | OS | IP | 비고 |
| 공격자 | Kali-Linux 컨테이너 | 172.18.0.2 | 피해자 PC를 대상으로 공격하는ARP Spoofing 공격자 |
| 희생자 | Ubuntu-Linux 컨테이너 | 172.18.0.3 | 서버에 관리자 정보를 전송하는 사용자 역할 |
| 게이트 웨이 (lab-net) | Gateway 가상 서버 | 172.18.0.1 | ARP 패킷이 오가는 가상의 이더넷 환경 |
[공격 시작]
- 관리자 권한을 얻기 위해 게이트웨이(172.18.0.1)에 위치한 서버로 루트 비밀번호를 전송하는 상황이다
- 공격자는 이 사이에서 패킷을 훔쳐보는 MITM 공격을 진행한다.

공격자 컨테이너 내부에서 cat /proc/sys/net/ipv4/ip_forward 결과가 1임을 확인, 패킷을 탈취할 준비를 마침


희생자(172.18.0.3)에게는 공격자가 게이트웨이인 것처럼, 게이트웨이(172.18.0.1)에는 공격자가 희생자인 것처럼 속이는 양방향 ARP Spoofing을 실행

희생자 서버에서 ARP 테이블을 조회
게이트웨이(172.18.0.1)와 공격자(172.18.0.2)의 MAC 주소가 d2:48:9a:53:e3:5b로 동일하게 변조된 것을 확인할 수 있다
공격 성공
희생자가 외부로 보내는 모든 데이터는 공격자의 네트워크 인터페이스를 거치게 된다

이제 희생자 서버의 주요 정보를 털어 올 것이다.
희생자 서버로 부터 발생한 POST 요청을 포착하고 유인된 트래픽으로 부터 패킷을 낚아챘다.
암호화되지 않은 관리자 계정 정보를 탈취에 성공 모의해킹에 성공했다.
ARP Spoofing을 통해 탈취 가능한 정보
- 계정의 ID/PW
- HTTP, FTP, Telnet 등 평문 프로토콜을 사용하는 서비스의 ID/PW 탈취 가능
- 세션의 쿠기 값
- 웹사이트 로그인 후 생성되는 세션 정보를 탈취하여, 비밀번호 없이도 사용자의 계정에 접속(세션 하이재킹) 가능
- 개인정보 및 데이터
- 암호화되지 않은 이메일 내용, 메신저 대화, 서버 간 주고받는 DB 쿼리문 등 탈취 가능
- 네트워크의 메타 데이터
- 희생자가 어떤 사이트에 접속하는지, 어떤 서비스를 이용하는지 등의 활동 패턴의 탈취 가능
ARP Spoofing 공격의 제한 사항
- HTTPS/TLS 암호화
- 패킷을 가로채더라도 내용이 암호화되어 있어 실제 데이터를 읽기 어려움
- L2계층 이외의 계층 사용
- WireGuard나 VPN 같은 L3 기반의 터널링 환경에서는 MAC 주소를 기반으로 한 ARP 공격이 통하지 않음
- 네트워크 격리
- VLAN 등을 통해 물리적으로 네트워크가 분리되어 있다면 다른 구역의 사용자를 공격할 수 없음
ARP Spoofing 대응방안
- ARP 테이블의 유형을 동적이 아닌 정적으로 설정
- MAC 주소를 수동으로 고정하여 위조된 ARP Reply를 무시함
- HTTPS(TLS)
- 스니핑을 통한 데이터 열람을 막기 위해 데이터 내용을 암호화 하여 사용한다
- VPN 사용(WireGuard)
- ARP Spoofing 계열의 공격으로부터 서버를 완전히 격리 시킬 수 있음
- ARP Spoofing은 L2계열의 공격이다 =>L3 계층에 암호화 터널을 만들면 접근 불가
- WireGuard는 L3계층에 암호화 터널을 생성하기에 내용을 보거나 가로채기가 불가능
- CryptoRouting
- key 값을 가진 장치만 통신하는 암호화 기반 라우팅을 사용함
- ARP Spoofing이 성공해도 key 값이 없기에 패킷의 복호화 및 재가공이 불가능