경고
이 글의 내용은 오직 교육, 학습 목적으로 사용될 수 있습니다.
어떠한 방법이던 악의적인 공격은 관련 법률에 의해 처벌받을 수 있습니다.
ARP 스푸핑 공격
ARP 스푸핑 공격은 ARP 시스템을 속여서 이루어지는 중간자 공격(Man-in-the-middle)이다.
이 공격의 결과로 공격자는 희생 컴퓨터가 공유기끼리 공유하는 정보를 엿볼 수 있다. 그 결과, 희생 컴퓨터에서 외부로 보내는 패킷을 모두 볼 수 있게 된다.
워낙 오래된 공격이지만 여전히 먹히는 곳이 있다.
ARP 시스템은 OSI 7계층에서 MAC 주소를 사용하는 L2와 IP주소를 사용하는 L3를 이어주는 역할을 한다.
IP주소는 단순히 목적지만 알려주고, 실제 전송은 MAC 주소로 이루어지기 때문에 이 둘을 매칭 시켜준다.
Windows에서 cmd를 켜고 'arp -a'라고 쳐보자. 그럼 아래와 같은 게 쭉 뜬다.
Interface: 172.30.1.3 --- 0x11
Internet Address Physical Address Type
172.30.1.254 1e-14-36-2a-f4-da dynamic
172.30.1.255 ff-ff-ff-ff-ff-ff static
255.255.255.255 ff-ff-ff-ff-ff-ff static
이것이 ARP 테이블이다. 사용자가 IP주소 "172.30.1.254"에 패킷을 보내려고 하면 컴퓨터가 ARP 테이블을 보고 "1E:14:36:2A:F4:DA"로 보내는 것이다.
IP주소와 MAC 주소의 매칭은 ARP 프로토콜에 의해 수행된다.
ARP 프로토콜은 모르는 IP주소와 MAC 주소의 매칭을 같은 네트워크 안의 공유기에 물어본다.
하지만 여기에는 함정이 있다. 컴퓨터가 공유기의 MAC 주소를 모를 수 있다는 것이다.
컴퓨터를 새로 사서 네트워크에 접속할 때 새 컴퓨터는 다른 컴퓨터들과 통신은 물론 중앙에서 통신을 관리하는 공유기와도 통신이 불가하다. 즉, 아무에게도 모르는 IP주소와 MAC 주소의 매칭을 물어볼 수 없다.
따라서 처음 ARP 요청은 브로드캐스트, 즉 같은 네트워크 안에 있는 모든 컴퓨터에게 보내게 되고, 그 IP 주소를 가진 컴퓨터가 대답해줄 것을 부탁한다.
다음은 ARP 테이블을 초기화한 직후 발생된 공유기의 MAC 주소를 묻는 ARP 요청이다.
보낸 사람의 MAC 주소와 IP주소는 잘 적혀있는데 목적지의 MAC 주소가 브로드캐스트를 뜻하는 FF:FF:FF:FF:FF:FF로 되어있다. 즉, 이 요청은 모든 컴퓨터로 전송된다. 위 요청은 다음 상황으로 요약된다.
"Who has 172.30.1.254? Tell 172.30.1.52"
ARP 요청을 받은 컴퓨터는 본인이 대답해야 하는 요청인지 판단하고, 만일 본인이 대답해야 한다면 다음과 같이 생긴 대답을 보낸다.
위 상황은 다음으로 요약할 수 있다.
"172.30.1.254 is at [공유기 MAC 주소]"
이 과정을 통해 컴퓨터는 네트워크 안에 있는 기기끼리 MAC 주소를 공유한다. 이 과정은 여러분이 친구 집에서 Wi-Fi에 연결할 때도, 공공 Wi-Fi에 연결할 때도 어김없이 이루어져 MAC 주소를 공유한다.
그런데 이 ARP 시스템은 큰 취약점이 있다.
바로 응답을 100% 신뢰하는 것이다. 이 말인 즉 누군가가 악의적으로 ARP 응답을 조작해서 보내도 희생자는 그 조작을 믿는다.
ARP 조작을 통해 희생자가 IP주소와 MAC 주소를 잘못 매칭 하면 잘못된 컴퓨터에 패킷을 보내고, 그러면 희생자의 패킷을 도청할 수 있다.
실생활에 비유해서 이해해보자.
예지가 회사에 중요한 문서를 보내야 한다. 그런데 지혜가 중간에 이 문서를 가로채고자 한다. 그러기 위해 지혜는 예지를 속인다.
우선 지혜는 예지 집 앞에 건물을 하나 빌려서 우체국처럼 꾸미고, 큼지막하게 "우체국"이라고 간판을 써붙인다.
그럼 예지는 지혜가 만든 "가짜"우체국이 진짜 우체국인 줄 알고 지혜에게 순순히 문서를 넘긴다. 예지는 자기가 회사에 문서를 보냈다고 생각하겠지만 중간에 지혜가 꼈다.
이제 지혜는 문서의 사본을 만들고, 예지가 보낸 문서를 회사에 보내기만 하면 회사와 예지는 중간에 지혜가 개입해서 문서를 훔쳐봤는지 알 수 없다. 하지만 지혜는 문서를 훔쳐보는 데 성공했다.
ARP 스푸핑도 같은 방식으로 진행된다.
공격자는 희생자 PC에게 다음 내용을 가진 ARP 응답을 대량으로 보낸다.
"[공유기 IP주소] is at [공격자 MAC 주소]"
그리고 공유기에는 다음 내용을 가진 ARP 응답을 대량으로 보낸다.
"[희생자 IP 주소] is at [공격자 MAC 주소]"
그러면 희생자가 외부 서버로 보내기 위해 공유기로 보내는 패킷은 사실 공유기가 아니라 공격자에게 보내지고
외부 서버에서 희생자에게 보내기 위해 공유기로 들어온 패킷은 희생자가 아니라 공격자에게 보내진다.
이제 공격자가 희생자에게 온 패킷을 그대로 공유기로 보내고, 공유기에서 온 패킷을 그대로 희생자에게 보내주면 희생자는 인터넷이 제대로 되기 때문에 자신의 패킷이 도청 중이라는 사실을 알 수 없다.
ARP 스푸핑 감염 증상
ARP 스푸핑에 감염돼도 인터넷을 제대로 되기 때문에 좀 둔한 희생자는 뭔가 문제가 생긴 줄도 모를 수 있다. 특히 공용 Wi-Fi는 원래 속도 자체가 느린지라 그러려니 하고 넘어갈 수 있다. 하지만 ARP 스푸핑도 공격받는 중에는 분명한 증상이 나타난다.
1. 인터넷이 (엄청나게) 느려진다
ARP 스푸핑 공격을 받으면 원래 공유기와 직접 대화하던걸 공격자를 거쳐서 대화해야 하니 인터넷이 느려진다.
2. 갑자기 엄청난 양의 ARP 응답이 날아온다
APR 공격의 특성상 엄청난 양의 ARP 응답을 보내야 하기 때문에 WireShark 등으로 네트워크 상황을 보면 엄청난 ARP 응답이 나한테 오는 게 보인다
3. ARP 테이블에 분명 다른 IP주소인데 같은 MAC 주소를 가진다
다른 IP주소면 반드시 다른 MAC 주소를 가져야 한다. ARP 테이블의 MAC 주소를 봤을 때 중복되는 게 있으면 공격을 받는 중이다. WireShark에서 ARP 응답을 보면 "(duplicated use of [IP 주소] detected!)"라고 경고를 띄워준다.
ARP 스푸핑 방어 및 예방
물론 ARP 스푸핑도 방어 방법이 있다.
Windows의 cmd에서 'arp -s [공유기 IP 주소] [공유기 MAC 주소]'를 명령하면 공유기의 MAC 주소가 고정된다.
ARP 응답이 들어와도 지금 저장되어 있는 공유기의 MAC 주소를 바꾸지 말라고 지시하는 거다.
이러면 공격자가 악의적인 ARP 응답을 보내도 속지 않을 수 있다.
또 예방도 가능하다.
가장 중요한 것이 공용 Wi-Fi의 사용을 자제하고, 공용 Wi-Fi에서는 암호화된 정보만을 주고받는 것이다.
이러면 공용 Wi-Fi에서 ARP 스푸핑 공격에 당해서 인터넷으로 주고받는 인터넷으로 전송되는 비밀번호 등이 도청되는 일을 막고, 도청되더라도 공격자가 해독할 수 없다.
'컴퓨터' 카테고리의 다른 글
FTP 서버 구축 (0) | 2021.12.12 |
---|---|
RSA 암호화 - 개념편 (0) | 2021.07.22 |
해시(Hash) (0) | 2021.07.22 |
데이터베이스 Pt. 1 (0) | 2021.07.19 |