이번에는 DoS 의 한 종류인 Arp Spoofing을 이해하고자 한다. 늘 강의를 다니면서 부가 설명 하는 것은 기본을 이해하면 "응용"부터 학습하는 것보다 쉽다. 라고.. 물론 100%는 아니겠지만.. 어느정도는 맞다고 생각된다.


ARP SPOOFING

ARP Spoofing을 이해하기 위해서 우선 "ARP"와 "Spoofing"을 각각 이해해야 한다.


ARP - Address Resolution Protocol

=> ARP를 이해하기 위해서는 IP와 MAC 통신에 대해서 이해를 요구 한다. 

-> IP는 물리적 거리 무시하고 다른 브로드캐스트 도메인 영역과의 통신 시에도 사용될 수 있는 "OSI Layer 3" 주소 정도라는 것은 기억해야 하고,

-> MAC은 "OSI Layer 2"계층 주소이며, 같은 브로드캐스트 도메인 영역에서 통신하고자 할 때 사용되는 "필수"주소라는 중요한 것을 잊으시면 안된다.

-> 그리고 IP보다 MAC 이 우선 통신 주소로 이용되며, "중요"하다. IP는 달라도 MAC이 맞다면 패킷이 전달되고(핵심), IP가 맞아도 MAC이 다르다면 NIC에서부터 패킷 처리를 할 수 없으니까.

ARP는 IP를 알지만 "실질적인 패킷 전달을 하기 위해서" "MAC"주소를 필요로 하는데,(MAC주소를 모르면 패킷 전달 못하고, 통신이 안됨.) IP는 알지만 MAC을 모를 때 MAC을 알기 위한 과정이다. (라우팅에 대한 개념은 별개.)


Spoof - 사전적 의미를 보자.

ARP와 Spoof를 이해하면 기본적으로 "아 대충 뭐 그런거구나."라는 건 이해가 갈 내용이다.




자 다음은 실제 따끈따끈한 테스트 환경이다.


1. 패킷을 수집당할, 피해자, VICTIM의 PC IP이다.

IP : 1.1.1.139

MAC : 00-50-56-23-B2-C4

IP range : 24bit


2. 패킷을 수집할 Attacker, 피고인의 PC IP이다.

IP : 1.1.1.140

MAC : 00-0C-29-B6-13-D2

IP range : 24bit



3. 같은 네트워그 대역임을 확인시켜주기 위한 정보들이다. 



4. 공격 당하기 전 정상 상태의 VICTIM의 ARP정보이다.

(ARP 라는 것은 ARP 명령어를 통해 추가 정보를 확인하거나, 설정이 가능하다.)

arp -a 의 경우 현재 해당 단말의 arp 목록 정보를 확인한다. 각 시스템들마다  arp 확인이 가능한 경우 제 각각의 명령어들이 존재한다.



5. 우선 갈취하는 정보는 ftp로 테스트를 진행하였다.

(FTP : File Transfer Protocol, 파일 송수신간 사용되는 어플리케이션)

아래는 FTP 서비스를 열어둔 서버의 로그(시간이 다르지만 양해바란다. 당연히 시스템 시간 문제 없을 줄 알았다...ㅠㅠ)


6. 실제 arp spoofing에 의해 공격당해 발생된 시스템의 arp 정보 내용

arp spoofing은 수집하고자 하는 대상의 arp정보를 강제로 갱신토록 하여 수집한다.

이는 (별도의 보안 시스템이 설정된 경우를 제외.) 일반적으로 정상적인 정보 갱신을 이용하거나 할 때, 시스템의 운영체제와는 별개의 문제로

정보가 유출될 수 있다. 

arp 정보의 침해를 받아 공격자의 MAC 주소와 1.1.1.139가 바라보는 Gateway의 MAC주소가 같아졌다.
그로 인해 실제 패킷이 GW가 아닌 1.1.1.140에게 전달되는 것이다.

위의 패킷 덤프 내용을 보면 공격자 1.1.1.140(00-0C-29-B6-13-D2)가 각 두 피해자 1.1.1.2(GW), 1.1.1.140(VICTIM)에게 자신이 중간에서 가로채기 위한 ARP Reply 패킷을 발송하고 있다.

이로 인해 각 두 피해자는 ARP Reply 값에 의해 ARP 정보가 갱신되는 것이다.



7. 실제 공격을 통해 유출된 FTP 로그인 패스워드 정보(일부러 틀린 값을 입력하였고, 해당 내용이 평문 그대로 갈취 되었다.)

해당 도구는 Cain & Abel이라는 도구를 이용하였으나, arp spoofing을 이용할 수 있는 도구는 여러 종류이다.




대응방안.

간단하다.

보안 솔루션(NAC 또는 ARP+IP를 고정할 수 있는 무언가)을 사용하거나 End user, 단말 단에서는 ARP -S 등의 명령어를 통해 Static 한 값으로 등록하여 사용한다.

대부분 Static 은 Dynamic보다 우선시 된다.

하지만 "오타"를 조심하자.




+ Recent posts