Network - ARP & Packet 분석

FromCloud·2023년 6월 25일
0

Network

목록 보기
5/8
post-custom-banner

ARP

OSI 7Layer 계층중에서 2계층(MAC)와 3계층(IP주소)가 각 주소를 가지고 있고 통신을 할 때 목적지를 찾아 갈수 있도록 하지만 2계층과 3계층은 아무런 관계도 없다는 사실이다

  • MAC Address: 하드웨어 생산 업체가 임의적으로 할당한 NIC에 종속된 주소
  • IP Address: 직접 할당하거나 DHCP에 의해 자동으로 할당밥ㄷ는 논리적주소

실제로 통신은 IP 주소 기반으로 일어나고 MAC 주소는 상대방의 주소를 자동을 알아내 통신을 하게 되는데 이때 상대방의 MAC 주소를 알아내기 위해서 사용되는 프로토콜이 ARP이다!

ARP 통신

데이터 통신을 위해 MAC주소와 IP주소 두개가 사용되는데 이 두개는 전혀 연관성이 없기 때문에 연계시켜주기 위한 매커니즘이 필요함

ARP 통신 순서

  1. 통신을 시도할 때 목적지의 IP주소는 미리 알고 있어야 캡슐화하는데 문제가 없지만 상대방의 MAC주소를 알 수 없어 2계층 캡슐화를 진행 할 수 없게 된다

  2. 상대방의 MAC 주소를 알아내기 위해서 ARP 브로드캐스르틀 이용 네트워크 전체에 상대방의 MAC 주소를 물어본다

  3. ARP 브로드캐스트를 받은 목적지는 ARP 프로토콜을 이용해 자신의 MAC 주소를 응답

  4. 이전 작업이 완료되면 출발지, 목적지 둘 다 상대방에 대한 MAC주소를 학습 이후 패킷이 정상적으로 인캡슐레이션이 되어 상대방에 전달

  5. 정상적인 통신이 가능해짐

ARP 작업의 특징

  • ARP 작업은 하드웨어 가속으로 처리되지 않고 CPU에서 직접수행
  • 짧은 시간에 많은 ARP 요청이 들어오면 네트워크 장비에서는 큰 부하로 작용한다
  • 이로 인해서 해커들은 네트워크 장비를 무력화 하는데 다량의 ARP를 이용하여 공격을 많이 수행해왔음
  • 공격에 대응하기 위해 ARP 테이블 저장기간을 일반 PC 보다 길게 설정하고 ARP 요청이 들어오면 필터링 및 천천히 처리하는 방식으로 네트워크를 보호

ARP Packet

서버 A -> 서버 B로 ping을 보내려 할때 서버 A에서는 IP 주소까지는 캡슐화 가능, 하지만 MAC 주소를 몰라서 정상적인 패킷을 만들 수 없다

이때 서버 B의 MAC 주소를 알아내기위해서 ARP 요청을 네트워크에 브로드캐스트함

MAC주소는 출발지를 자기 자신의 MAC에서 도착지는 브로드캐스트 (FF-FF-FF-FF-FF-FF)로 채우고 ARP 프로토콜 필드의 전송자 MAC과 IP 주소에는 자신의 주소로, 대상자 IP주소 는 1.1.1.2로 정하고 대상자 MAC주소는 00-00-00-00-00-00로 채워 네트워크에 뿌리 된다

여기서 동일 네트워크에 있는 모든 단말에 프로토콜이 보내지고 각 단말은 그 프로토콜을 확인함
여기서 먼저 목적지 IP가 자신이 맞는지 확인하고 자신과 맞지 않으면 ARP 패킷을 버리게된다
만약 자신의 IP와 맞다면 ARP 요청을 처리한 후 그에 대한 응답을 보낸다

통신이 끝난후 나중에 통신을 할때에는?

IP주소는 아는데 MAC주소를 모르기때문에 처음 ARP 통신을 할때에는 브로드캐스트 방식으로 통신을 한다고 했다 하지만, 통신이 정상적으로 끝난 이후에는 자신의 ARP 캐시테이블을 갱신하여 이제 상대방의 MAC주소를 알게되면 IP주소와 MAC주소 모든 정보를 알게된다

그렇데 된다면 이제는 브로드캐스트 방식의 통신이 아닌 유니캐스트 (1:1) 통신 방법으로 통신을 한다

WireShark를 이용한 Packet 분석

ARP 패킷을 분석하기 위해서 필터링을 하여 패킷을 분석하기 위해 따왔다
ARP 통신은 IP주소는 알지만 MAC 주소는 모를때 쓰는 통신 방법이라고 하였다

ff ff ff ff ff ff -> 목적지 MAC Address
00 0c 29 da a2 33 -> Source MAC Address (출발지의 MAC Address)
08 06 -> 상위 프토코콜 타입 (ARP를 뜻함)
00 01 -> ARP DATA (Hardware Type: ethernet)
08 00 -> IPv4
06 -> MAC Address length (Hardware size)
04 -> IP Address length (Protocol size)
00 01 -> Opcode ARP Request (Opcode: ARP의 구체적인 동작을 나타낸다)
00 0c 29 da d2 33 -> Source MAC Address
ac 10 01 0a -> Source IP Address (공학용 계산기로 계산해보면 172.16.1.10이 나온다)
00 00 00 00 00 00 -> Target MAC Address (상대방의 MAC 주소를 모르기때문에 00-으로 표기)
ac 10 01 0f -> Target IP Address (공학용 계산기: 172.16.1.15)
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -> Padding

Padding은 상위 계층으로부터 데이터를 받거나 전달한 데이터를 말하는데 최소 46Btye가 안된경우 Padding영역으로 추가하여 46Byte로 만든다 Frame Header 부분을 보면 나오는데

Data는 최소 46Byte 지만 앞에 부분을 모두 포함하여 계산한다면 최소 60 Byte가 되는 것을 볼 수 있다 즉 최소 60byte를 만들기 위해서 Padding을 이용하여 채운다는 것이다

한칸당 ->1byte
한줄에 -> 16byte
Dst Add = 6byte
Src Add = 6byte
Type = 2byte
Data = 46 ~ 1500byte
총 60byte 에서 시작해야 하기 때문에 모두 합하면 60byte 가 되는 것이다

profile
매일 발전하는 Cloud Engineer
post-custom-banner

0개의 댓글