Southern Island

[ Network ] ARP 스푸핑 실습! [해킹]

by 월루

《 유의사항! 》

해당 포스팅은 [해킹] 키워드가 적용된 포스팅입니다! 아래의 유의사항을 꼭 숙지해주세요!

1. 해당 포스팅을 통해 학습한 정보는 안전한 사회를 위한 긍정적 의도로만 사용될 수 있습니다.

2. 만약 실습을 원하실 경우 가상환경이나 허가된 범위에서만 실습을 진행해주세요.

3. 해당 포스팅을 열람하는 모든 인원은 위의 2가지 유의사항에 동의하는 것으로 간주됩니다.

 

《 ARP 스푸핑이 무엇인가? 》

L3 ARP의 ARP Reply를 추가적인 검증을 진행하지 않고 바로 ARP 캐시를 갱신하는 취약점을 토대로 공격 대상의 PC에 무차별 적으로 라우터의 IP를 빌려 공격자 PC의 MAC 주소를 담은 ARP Reply를 송신하여 마치 라우터의 MAC 주소가 공격자 PC의 MAC 주소인 듯 속여 공격 대상 PC의 모든 송신하는 패킷을 가로챌 수 있는 기술입니다. 반대로 라우터에게 공격 대상 PC IP를 빌려 공격자 PC의 MAC 주소를 담은 ARP Reply를 보내 결과적으로 라우터와 공격 대상 PC 간의 모든 패킷을 가로챌 수 있습니다. 물론 라우터뿐 아니라 PC 대 PC도 가능합니다. ARP와 스푸핑에 대한 자세한 내용은 아래의 포스팅에서 확인할 수 있습니다!

https://southern-island.tistory.com/5

 

[ Network ] 스푸핑, 스니핑, 스누핑 차이

네트워크 해킹을 공부하며 헷갈리는 용어 3가지 네트워크 해킹을 공부하며 다양한 용어들을 공부하게 된다, 그중 명칭은 비슷하지만 의미는 전혀 다른 3가지 용어에 대해서 알아보도록 하자 ! 1.

southern-island.tistory.com

https://southern-island.tistory.com/20

 

[ Network ] ARP의 개념과 동작과정

《 ARP란? 》 ARP는 Address Resolution Protocol의 약자입니다, 저희가 보통 네트워크를 통해 통신을 진행할 땐 보통 IP를 통해 한다고 생각합니다. 하지만 실제 통신을 진행할땐 MAC 주소를 통해 서로 통신

southern-island.tistory.com

 

《 ARP 스푸핑 실습! 》

처음으로 그림으로 만들어 봤습니다! 힘드네요.. 암튼 해당 사진을 바탕으로 설명드리겠습니다!

저희의 목표는 크게 2가지 입니다. 우선 공격 대상의 PC에게 라우터 IP, 공격자 MAC으로 이루어진 ARP Reply를 마구 송신할 겁니다. 그럼 공격 대상 PC는 수신받은 ARP Reply를 따로 검증하지 않고 바로 ARP 캐시 테이블에 저장하게 됩니다. 그럼 그 후 공격 대상이 외부 네트워크와 통신을 위해 라우터로 패킷을 보내면 사실 공격자 PC로 패킷이 전달되는 것이죠! 반대로 공격 대상이 수신받아야 할 패킷을 공격자가 받기 위해 라우터에게 공격 대상 PC IP, 공격자 MAC으로 이루어진 ARP Reply를 마구 송신할 겁니다. 그럼 라우터도 공격 대상에게 패킷을 전달하려 하면 공격자 PC로 패킷이 전달되겠죠! 그럼 바로 실습으로 넘어가 보겠습니다! 공격자 PC는 데비안 개열의 Kali를 이용하여 진행하겠습니다.

공겨자 PC에서 arpspoof 툴을 실행하는 모습

공격자 PC에서 arpspoof 툴을 이용하여 ARP 스푸핑을 진행하고 있습니다. 옵션에 대해 간략하게 설명드리겠습니다.

"arpspoof -i [사용할 랜 인터페이스] -t [공격대상 IP] -r [속일 IP]" 해당 명령어를 실행하게 되면 -i 옵션으로 지정했던 랜 인터페이스의 MAC 주소와 -r 옵션의 IP로 ARP Reply 패킷을 생성하여 -t 옵션의 공격 대상에게 무차별 적으로 송신하기 시작합니다. 

실제 ARP 스푸핑 공격중인 모습

그럼 공격대상 PC에서 ARP 캐시 테이블을 한번 확인해볼까요?

arp -a 명령어를 통해 ARP 캐시 테이블을 확인할 수 있습니다

공격자 PC(100.128)의 MAC 주소와 gateway(공유기)의 MAC 주소가 동일한 것을 볼 수 있습니다. MAC 주소의 실제 주인은 공격자 PC입니다. 따라서 공격 대상 PC에서 외부와의 통신을 위해 라우터(공유기)로 패킷을 전송하면 사실은 공격자 PC로 전달되게 되는 거죠, 한번 확인해볼까요? 

구글 DNS(8.8.8.8)에 ICMP 패킷을 날려도 응답이 오지 않는다.

음.. 공격대상의 PC에서 인터넷이 정상적으로 동작하지 않네요. 이는 당연한 결과입니다. 이유는 공격 대상 PC는 이미 공격자 PC에 의해 라우터의 MAC 주소가 공격자로 설정되어 있습니다. 이때 ping 패킷(ICMP 패킷)을 공격자 PC로 보내게 됩니다. 하지만 공격자 PC 패킷을 뺏기만 했을 뿐 다시 돌려주거나 라우터로 보내주지 않았습니다. 그래서 공격 대상 PC는 정상적인 인터넷 통신이 불가능 해진 것이죠. 이는 공격 대상자가 자신이 공격당하고 있다는 걸 알 수 있는 큰 힌트가 됩니다. 따라서 공격자 PC에선 가로챈 패킷을 다시 원래 도착 주소로 돌려줘야 하는 것이죠. 그걸 포워드이라고 합니다. 패킷을 포워드 하는 방식에는 크게 두가지가 있습니다. 데비안 기준 "/proc/sys/net/ipv4/ip_forward" 파일의 값을 1로 변경하여 들어오는 패킷을 포워드 해주는 방식과 "fragrouter"라는 툴을 이용하여 포워드 하는 방식이 존재합니다. 전 전자의 방식이 더 편한것 같아서 공격자 PC에서 파일을 수정해주도록 하겠습니다.

vi 같은 파일수정 프로그램으로 수정하셔도 됩니다!
공격자 PC에서 포워드를 하자 공격대상 PC 인터넷이 정상적으로 동작함

이제 공격대상공격 대상 PC에서 인터넷이 정상적으로 동작합니다! 지금 상황에선 공격자 PC는 공격 대상 PC의 송신 패킷만 가로챌 수 있습니다. 수신 패킷을 가로채기 위해선 같은 과정으로 라우터에게 ARP 스푸핑 공격을 진행하면 됩니다.

해당 포스팅에선 송신 패킷만 필요함으로 위 과정은 생략하겠습니다. 이제 공격대상 PC에서 인터넷을 이용하여 특정 사이트에 로그인을 시도해보겠습니다. 

공격대상 PC에서 로그인을 진행

공격 대상의 PC에서 ID:test1234, PW:password1234로 로그인을 시도해봤습니다.

공격자 PC의 와이어샤크 로그

공격자 PC에서 와이어샤크를 이용하여 패킷을 기록하고 있었습니다. 공격 대상에서 로그인을 시도하자 위의 패킷을 확인할 수 있었고, ID와 PW가 그대로 노출되었습니다. 이렇게 ARP 스푸핑 공격은 성공입니다!

 

[TMI] 위의 사이트는 로그인 페이지에 SSL(HTTPS)가 적용되어 있지 않았기 때문에 http 패킷을 분석할 수 있었습니다. 만약 SSL이 적용된 사이트라면 http 패킷이 암호화 되어있어 원하는 정보를 볼 수 없습니다. 따라서 중요한 정보가 오가는 페이지는 SSL 적용을 통해 ARP 스푸핑을 예방할 수 있습니다!

 

《 마치며... 》

제가 글을 쓰는 가장 큰 이유는 배운 내용을 정리하고 나중에 다시 공부하기 위해서입니다, 따라서 잘못된 정보가 포함되어 있거나 중요한 내용이 빠져 있을 수 있습니다, 잘못된 내용이나 빠진 내용이 있는 경우 댓글로 말씀해주시면 정말 감사드리겠습니다!

 

블로그의 정보

남쪽의 외딴섬

월루

활동하기