이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:
 



작성자: t5mk2t
편집자: 엔시스(
sis@sis.pe.kr)


안녕하세요.
t5mk2t입니다.

첫번째 포스팅에서 영수와 철수라는 인물을 설정하여 로컬 네트워크상에서의 스니핑과 그 위험성, 그리고 대책에 대해 알아보았습니다. 이번 포스팅에선 도대체 영수는 어떻게 ARP Spoofing을 하였는지 알아보도록 하겠습니다. ^^
(설명 기준은 Linux이며, 보다 쉽게 이해하시려면 OSI 7 Layer중 Layer 2에 대한 이해가 도움이 되실겁니다)

자, 우선 spoofing이란 무엇일까요.
그냥 간단하게 '속임수'라고 생각하시면 될듯 합니다. 즉, ARP spoofing은 ARP를 속이는 것이고 IP spoofing은 IP를, DNS spoofing은 DNS를 속이는 것이죠. 이때 공격자(영수)가 원하는 것으로 변조된 정보로 희생자(철수)는 속게 됩니다. 물론 컴퓨터가 속는거죠. ^^

그렇다면 현재 자신의 컴퓨터에 저장되어 있는 ARP 정보들은 어떻게 볼 수 있을까요?
Windows의 커맨드 창이나 Linux의 콘솔창에서 arp -a 를 입력하시면 알 수 있습니다.


                                                     < 그림-1> 리눅스에서의 arp -n의 결과

IP는 익히 보셔서 아실테고 HWaddress라고 나와있는 부분이 각 IP를 물고 있는 랜카드들의 MAC Address입니다(그림은 실제 로컬 네트워크 환경입니다. 따라서 부분적으로 모자이크 처리 하였습니다). 저기 보이는 HWaddress의 주소를 공격자의 MAC Address로 모두 속여버리게 되면 해당 시스템은 각 어디로 패킷을 보내던지 공격자에게 보내게 됩니다.(속해있는 네트워크 Gateway의 HWaddress를 공격자의 MAC Address로 속여버린다면...? ^^;)

< 그림-2>  ARP Spoofing 성공시 패킷 흐름

자 그렇다면 ARP Spoofing을 하기 위해선 어떠한 것들이 필요 할까요?
라이브러리들로는 Libnet, Libpcap, Berkeley DB, Libary, Libnids, OpenSSL 등이 필요합니다.
그리고 스푸핑 도구(단순 스푸핑 목적)로는 fake와 패킷 Relay를 위한 fragrouter, 패킷 확인을 위한  wireshark를 사용합니다. (여기서 패킷 Relay란 공격자가 패킷을 중간에 확인하고 정상적인 목적지로 향하도록 다시 돌려보내어 희생자 측 연결이 끊어지지 않고 유지되도록 하게 해주는 기술을 말합니다. 만약 패킷 Relay를 해주지 않는다면 희생자는 더이상 인터넷, 즉 다른 시스템들과의 통신을 할수 없게 되겠지요.)
물론, 지금은 더욱더 간편하고 강력한 도구들이 많이 있습니다만, 이번 포스팅에선 ARP Spoofing의 원리와 개념을 이해하는데에 초점을 두기 위해 저 세개를 가지고 알아보도록 하겠습니다 ^^
- 관련 도구에 대해 궁금하신 점은 따로 질문해주시기 바랍니다 -

이제 본격적으로 스푸핑을 시작해보도록 하겠습니다.
먼저 fragrouter로 공격자의 랜카드로 들어오는 무수한 패킷들을 토스해 주기위한 패킷 Relay 설정을 해줍니다.
                                           < 그림-3>  IP forwarding을 시작한 fragrouter


** 영수가 ARP Spoofing을 시도하기 위해 알아낸 정보들 **
 1. 공격자 ┬ IP : xxx.xxx.254.101
               └ MAC : xx:xx:xx:36:40:2c
 2. 희생자 ┬ IP : xxx.xxx.254.109
               └ MAC : xx:xx:xx:ca:fc:7f
 3. 바꿀타겟 ┬ IP : xxx.xxx.254.97 (포스팅의 재미를 더하기 위해 게이트 웨이로 정했습니다 ^^)
                  └ MAC : xx:xx:xx:95:1a:52

(이해를 돕기 위해 색깔별로 공격자와 희생자, 타겟을 정했습니다.)
그럼 먼저 희생자 MAC Table을 볼까요?



                                <그림-4>   희생자(Windows)의 공격당하기 전 MAC Table


음... 바꿀 대상인 97번의 MAC이 제대로 박혀 있네요... 이제 97번의 MAC을 공격자의 MAC으로 바꿔봅시다.
(물론 실제 공격에서 해당 시스템에 접근하지 않을경우 상대방의 MAC Table을 알기는 어렵습니다. 이것은 어디까지나 보여드리기 위한 것임을 생각해 주시면서 봐주세요 ^^)

그럼 이제 본격적으로 send_arp를 이용하여 거짓 ARP 패킷을 보내 희생자의 MAC 테이블을 수정해보겠습니다.


                                   <그림-5>  send_arp를 이용하여 변조 ARP 패킷을 보냄

자, 그럼 제대로 변조 패킷이 적용되었는지 희생자의 MAC Table을 다시한번 확인해 보겠습니다.


                  <그림-6>  97번의 MAC주소가 ARP가 공격자의 MAC으로 변조되었습니다.

자 그럼 실제로 희생자가 97번(게이트웨이)로 보내는 패킷들을 볼 수 있는지 확인해 볼까요?
(이때, 주기적으로 게이트웨이에서 ARP를 보내기 때문에 희생자의 MAC Table은 계속해서 정상적인 MAC으로 복구됩니다. 따라서 전 while을 이용, 쉘 스크립트를 만들어 지속적으로 변조된 ARP 패킷을 보내는 방법을 사용하였습니다.)

일단 공격자가 실행해놓은 fragrouter를 먼저 확인해서 패킷 Relay가 잘 되고 있는지 확인해 보도록 하죠.


         < 그림-7>  공격자가 실행해 놓은 fragrouter가 패킷을 포워딩 하고 있는 모습


즉, 희생자 -> 공격자 -> Gatewau(바꿀타겟)

음 신통하게 잘 동작하고 있네요 ^^

그럼 wireshark를 이용하여 패킷들이 잘 잡히는지 확인해 보도록하겠습니다.




                              <그림-8>  wireshark를 통한 패킷 캡쳐


Source와 Destination을 보니 109번이 보이네요.

자 이제까지 ARP Spoofing을 통해 Sniffing하는 과정을 살펴보았습니다.

희생자는 자신의 Gateway의 MAC Address를 공격자의 MAC Address로 착각하고 있기 때문에 Gateway를 통해 나가게 되는 모든 외부패킷들은 전부 공격자에게 주게 됩니다. 따라서 자신의 암호화 되지 않은 평문 패킷의 경우 공격자가 그대로 볼 수 있기 때문에 엄청난 위험에 노출되게 됩니다.

실제로 위의 노가다를 하지 않고도 강력한 기능을 제공하는 툴들이 많이 존재하므로 위험은 더더욱 커지리라 생각됩니다.

비록 누군가가 자신의 알몸을 훔쳐 보는것은 아니지만, 많은 것들을 인터넷으로 처리하는 현재의 생활 환경에선 자신의 알몸만 빼고 모든것을 공격자에게 보여주는 상황까지 치닿을 수 있는 문제라 생각됩니다.

참 골치아픈 문제입니다.............

훔쳐보고 싶은것은 모든 인간의 본능이니까요 ^^;;;;

다음 포스팅엔 어떻게 하면 응큼한 영수가 철수를 훔쳐보지 못하게 할지 알아보도록 하겠습니다.
(영수는 왜 같은 남자인 철수를 계속 훔쳐보는 걸까요;;)

감사합니다 ^^

- t5mk2t -

tomket@boanin.com






****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 알 수 없는 사용자
,