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



작성자: 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 비회원

댓글을 달아 주세요

  1. Favicon of https://boanin.tistory.com BlogIcon 보안인닷컴 2009.03.29 11:46 신고  댓글주소  수정/삭제  댓글쓰기

    수고 하셨습니다..정말 좋은 포스팅입니다..

  2. Favicon of https://whoaru.tistory.com BlogIcon 후아유! 2009.03.29 14:14 신고  댓글주소  수정/삭제  댓글쓰기

    내용이 쏙쏙 들어옵니다~~ ^^감사합니다~~

  3. Favicon of https://eva1717.tistory.com BlogIcon eva1717 2009.03.29 18:40 신고  댓글주소  수정/삭제  댓글쓰기

    ARP Spoofing에 대해서 확실하게 개념을 잡을 수 있게끔 정리를 잘해주신것 같아요..^^
    아주 오래전에 위의 툴들과 비슷한 내용으로 실습을 했던 적이 있었는데... 다시 회상을 시켜 주시는거 같고, 아주 세세한 부분까지 스크린 샷과 다양한 Color로 구분을 해주셔서..^^
    햐.. 정말 감사합니다...^^
    t5mk2t님 덕분에 다시 새롭게끔 복습의 기회가 된 것 같습니다..^^

    (사실 요즘에 복합적인 툴들이 많아서, 정확한 개념과 원리를 이해하기가 난해 하였는데...
    t5mk2t님이 포스팅을 깔끔하게 해주셔서 확실하게 기억되었습니다.. 감사드립니다^^)

    • Favicon of https://t5mk2t.tistory.com BlogIcon t5mk2t 2009.03.29 19:27 신고  댓글주소  수정/삭제

      eva1717님, 우선 도움이 되었다니 기쁘네요~!
      저 또한 포스팅하면서 다시한번 개념 정리를 하게 되었습니다 ㅎㅎㅎㅎ ^^;;
      댓글 달아주셔서 감사합니다~!

  4. Favicon of http://www.gilgil.co.kr BlogIcon 이경문 2009.03.29 22:20  댓글주소  수정/삭제  댓글쓰기

    글 잘 보았습니다.

    기술적인 용어로 봤을 때에는 "공격자/희생자/바꿀타겟" 보다가는 "공격자/송신자/수신자"로 얘기를 하는 것이 더 적합할 듯 합니다.

    이해하기 쉬운 용어 : 공격자/희생자/게이트웨이(ARP spoofing에 반드시 게이트웨이가 들어간다고 볼 수는 없지만, 일반적으로 이렇게 얘기를 하는 것이 이해가 쉽죠).

    기술적으로 설명하기 위한 용어 : 공격자/송신자/수신자(ARP spoofing 에서는 하나의 공격자가 송신자/수신자 세션을 여러개 관리할 수가 있습니다)

    영수/철수보다가는 철수/영희(저도 남자로서 탐탁치 않지만 보통 victim은 여자를, attacker는 남자로 얘기하는 것이 일반적인 관례)로 하는 게 이해 전달할 때 보다 쉽지 않을 런지... ^^

    • Favicon of https://t5mk2t.tistory.com BlogIcon t5mk2t 2009.03.29 19:25 신고  댓글주소  수정/삭제

      '길길'님 아니십니까!? ^^
      길길님 홈페이지에서 ARP Spoofing 동영상을 보며 공부했던 기억이 납니다. 직접 댓글 남겨주셔서 감사합니다!

      용어 선택이 약간 난해하더군요... 지적 감사합니다.

      저도 남자, 여자 이렇게 놓으면 더 편하지 않을까라는 생각이 포스팅하면서 들더군요. 저번 포스팅때의 이름을 그대로 가지고 가느라... ^^;;

      아무튼 길길님, 예전 PoC에서도 인상적이었습니다.
      자주 들러주세요~!!^^

    • Favicon of https://boanin.tistory.com BlogIcon 보안인닷컴 2009.03.29 20:54 신고  댓글주소  수정/삭제

      이렇게 방문하셔서 조언도 남겨 주시니 감사합니다. 늘 관심과 조언부탁드리겠습니다.

  5. Favicon of https://www.extraman.net BlogIcon ^________________^ 2009.03.30 10:52 신고  댓글주소  수정/삭제  댓글쓰기

    잘 봤씀당...감사..

  6. 박코필 2009.03.31 11:59  댓글주소  수정/삭제  댓글쓰기

    예방과 대책은 안보여서.. 조금 서운할 뻔...하다가

    맨마지막에... 적혀 있군요 ^^

    backtrack 용가리도 보이네요 ^^

    잘 봤습니다. 계속해서 관심 있게 보겠습니다. ^^