mir.pe (일반/어두운 화면)
최근 수정 시각 : 2024-09-12 01:58:48

ARP 스푸핑

1. 개요2. 해설
2.1. 비전공자를 위한 설명2.2. 전공자들을 위한 설명
3. 피해 증상4. 예방법5. 기타

1. 개요

ARP spoofing

굉장히 단순하면서도 치명적이고 지독한 해킹 방법으로 중간자 공격(Man In The Middle, MITM) 기법 중 하나이다. 말 그대로 두 사람 사이에 슬쩍 끼어들어가서 데이터를 몰래 훔쳐본다는 뜻.

이외에도 ARP를 이용하지만, 상대방의 인터넷을 차단시키기 위해서 게이트웨이의 MAC 주소를 존재하지 않는 MAC 주소로 변경하는 공격도 존재한다. WifiKiller랑 비슷하거나 같은 원리이다

상당히 악질적인 해킹 수단 중 하나로 꼽히며 2008년~2011년대까지 꽤 넷상에서 깽판을 쳤고 현재도 걸리는 컴퓨터가 있을 정도로 위세가 죽지 않았다. 주로 같은 네트워크상에서 1대의 PC가 감염되어도 네트워크에 퍼지며 치료를 하려면 일단 해당 감염 컴퓨터를 찾아야 한다.[1]

2. 해설

2.1. 비전공자를 위한 설명

가상의 아파트 단지가 하나 있다고 가정해 보자. 이 아파트 단지에는 "아파트로 오고 가는 모든 우편물 및 택배들은 관리사무소에 있는 우편분류실을 거쳐야 한다"라는 규정이 있다. 즉, 특정 아파트 주민이 받는 우편물들은 먼저 아파트 우편분류실로 보내지며, 여기서 재분류 작업을 거친 후 비로소 주인에게 배달된다. 아파트 주민이 우편물을 외부로 보낼 때도 마찬가지로 우편분류실에서 취합한 후 보낸다.

그런데 여기서 도둑이 등장한다. 도둑은 아파트 단지 내에 아지트를 하나 지어놓은 후 문 앞에 "우편분류실"이라고 큼지막하게 써붙여 놓았다. ARP 스푸핑이란 이처럼 "다른 사람으로 하여금 우편분류실, 즉 중앙 통제실이 다른 곳에 있다고 오인시키는 행위"를 뜻한다.

이렇게 되면 아파트 주민과 아파트를 드나드는 우체부와 택배 기사는 우편분류실의 위치가 바뀐 줄 알고 도둑의 아지트를 우편분류실처럼 이용한다. 진짜 우편분류실에 앉아 있는 직원들은 가짜 우편물을 만들어서 던져 주면 감쪽같이 속일 수 있다. 이렇게 되면 도둑은 아파트를 드나드는 모든 우편물을 뜯어볼 수 있다. 하지만 아파트 주민과 우체부, 택배 기사, 그리고 우편분류실 직원들은 이를 까맣게 모른다. 이상한 낌새를 눈치채고 발로 뛰어다니며 조사를 해 보지 않는 이상은.

말그대로 군대에서 간부들이나 지휘관에게 갈 것이라고 생각했던 소원수리 쪽지를 선임이 가로채서 뜯어보는 격인 셈이다.

2.2. 전공자들을 위한 설명

어떠한 네트워크건 인터넷으로 통하는 관문이 있는데 이것을 흔히 게이트웨이라고 부른다. 가령 공유기가 그러할 것이다. 당연히 네트워크 안의 모든 기기는 인터넷 세상과 통신을 위해서는 이 게이트웨이를 통해야 한다. ARP 스푸핑이란 공격자가 자신이 게이트웨이라고 속이는, 원리 자체는 단순한 기법이다. 그러나 이렇게 되면 당연히 피해자는 공격자에게 모든 데이터를 전송하게 된다. 공격자는 이를 원래 게이트웨이로 전송해주기만 하면 피해자는 아무런 문제점 없이 통신을 할 수 있다. 자신의 모든 정보가 노출되고 있다는 점 빼고는 말이다.

이것이 가능한 이유를 이해하려면 먼저 OSI 모형을 이해하고 IP 주소와 MAC 주소와의 관계를 이해해야 한다. IP 주소는 단순히 L3에서 단대단 연결을 위한 주소이고 실질적인 데이터 이동은 MAC 주소를 사용하는 L2단을 거쳐야 한다. 여기서 IP 주소와 MAC 주소를 이어 주는 역할을 하는 프로토콜이 바로 ARP(Address Resolution Protocol)이다. 여기서 공격자가 자신이 게이트웨이라고 허위로 적은 ARP 패킷을 뿌리면 해당 네트워크 내에 있는 다른 사용자들은 공격자를 게이트웨이로 인식하게 된다. 이리하여 모든 피해자는 공격자에게 모든 패킷을 전송하게 되며, 공격자는 이를 적절히 원래 게이트웨이로 중계해주기만 하면 OK. 당연히 이 통신이 VoIP라면 도청이 가능하고, 다운로드한 자료라면 공격자 또한 그것을 다운받을 수 있다.

3. 피해 증상

만약 아래와 같은 문제점이 있다면 ARP spoofing을 의심해보아야 한다.

파일:attachment/arp_spoofing.png
실제로 가상 머신 상에서 ARP Spoofing을 시도하여 성공한 모습이다. arp -a를 입력했을때 이런 식으로 MAC 주소가 중첩되어 나타난다면 100%.
파일:스크린샷 2024-05-08 20.59.20.png
마찬가지로 ARP 스푸핑 공격을 당한 macOS에서의 모습.

파일:attachment/arp_spoofing_2.png
피해자 PC에서 패킷을 잡아본다면 이런 패킷들이 보인다.

이런 문제가 발생한다면 일단은 안철수 연구소에서 ARP spoofing 관련 방어 툴을 제공하고 있으니 다운 받아보자. 하지만 이것도 근본적인 해결책은 안 된다. 인터넷에서 많이 이야기 하는 Xarp 진단 툴의 경우 진단만 되고 치료는 유료다.

명령 프롬프트를 이용한 수동적 해결법. 2 임시적 해결법으로 동적인 IP와 맥어드레스(물리적 주소)를 고정시켜버리는 방법인데, 문제는 일일이 해줘야 한다는 번거로움이 있다는 점. 이것도 따라하기가 어려워 잘 안될 수도 있다.

포맷도 방법으로 치는 사람들도 있지만 포맷을 한다고 해도 ARP 스푸핑이 잡히지 않거나 다시 공격당할 우려가 있으니 진단 툴과 병행해서 네트워크 방어를 올리는 게 최우선이라고 한다.

4. 예방법

개인 컴퓨터의 감염 예방 방법으로는 파일:attachment/arp_spoofing_3.png
이렇게 게이트웨이의 MAC 주소가 정적으로 영구적으로 등록된다. 당연히 우선순위는 정적 > 동적이기 때문에 저렇게 해 두면 아무리 ARP Spoofing 공격을 날려도 무용지물.

네트워크 관리자로서는 위에 언급한 Xarp 진단툴등을 이용하거나 arp -a 커맨드로 감염된 PC를 찾아내어 치료를 하면 되겠다. Xarp는 여기서 다운로드 받을 수 있다.

Comodo 방화벽의 경우 ARP-spoofing에 대한 보안 옵션을 제공하고 있다.

5. 기타

상기하였듯 불법 행위이므로 아파트나 학교 같은 공용 네트워크에서 이런 짓거리를 하다가 걸리면 얄짤없이 법의 철퇴를 맞는다.[5] 실습 목적으로 하고 싶다면 사설 네트워크를 구축한 후 철저하게 그 안에서만 실습하도록 하자. 싸게 하려면 위의 스크린샷 예시처럼 가상머신 여러 개를 만들어 놓으면 OK. 리얼머신을 사용해서 해보려면 자기 소유의 컴퓨터, 스마트폰, 공유기 등을 연결해서 구축하면 된다. 관련법에 대해서는 정보보호 문서 참고.

"데이터를 가로채서 훔쳐본 후 이를 받는 사람에게 그대로 다시 보내 눈치채지 못하게 한다"라는 컨셉은 더 악독하게도 활용할 수 있다. 아예 데이터를 변조해 버리는 것. 아파트 이야기로 다시 돌아가면 보내는 사람/받는 사람의 주소나 내용을 변조하는 것이다. 예를 들면 특정 집으로 배달될 공과금 고지서를 가로채서 계좌번호를 도둑의 계좌번호로 바꿔 놓으면 피해자는 공과금을 도둑의 계좌로 입금하는 상황이 벌어질 수 있다. 이런 류의 해킹 기법 중 하나로 DNS 스푸핑이 있다.

HTTPS, TLS, SSH같이 인증서를 이용해 패킷을 암호화하는 연결에서는 공격이 무의미하다. 데이터를 탈취할 수는 있으나 이를 해독할 수 없기 때문이다.

[1] 이유는 숙주 컴퓨터가 백신에 치료된다면 없어지겠지만 해당 컴퓨터가 끝끝내 치료되지 못한다면 그 컴퓨터는 계속해서 네트워크를 오염시키기 때문이다. [2] 주로 게임실행이나 본인 인증 등. [3] 여러 클리너를 돌리거나 속도 향상 조치를 취해봐도 한 번 ARP 스푸핑을 당한 후면 무용지물이다. 이때는 반드시 숙주 PC를 알아내서 어떻게든 스푸핑을 중지시키지 않으면 답이 없다. [4] 서비스팩2가 깔려있는 윈도우 비스타& 윈도우 서버 2008과 서비스팩을 설치하지 않아도 되는 윈도우 7& 윈도우 서버 2008 R2 에서 설치가 가능한 IE9는 이미 개발해오던 과정에서 해당 패치가 기본적으로 적용된 채로 출시를 하였고, 서비스팩1이 깔려있는 윈도우 7& 윈도우 서버 2008 R2에서 설치가 가능하고 윈도우 8& 윈도우 서버 2012 에는 기본으로 깔리게 되는 IE10, 윈도우 8.1 윈도우 서버 2012 R2 이후의 윈도우는 IE11이 기본으로 깔려 있기에 전혀 해당 사항이 없다. [5] 형량에 대해서는 크래킹 항목 참조.

분류