본문으로 바로가기

ARP 동작 확인

category Security/Network Security 2017. 10. 17. 22:05

ARP에 대한 간단한 개념 : http://5log.tistory.com/73


- ARP 프로토콜의 동작 원리를 확인


사용 시스템

linux200    wireshark 1.0.15

win2008    wireshark 1.10.8


[참고] 

각각 wireshark의 버전이 다르다. 

-> 여러 버전을 사용하면서 각 버전별로 어떤것이 다르고 어떻게 변화했는지 파악하기 위해 여러버전을 사용한다. 


( linux )

# yum -y install wireshark wireshark-gnome

( window )

설치 파일을 받아서 설치 


선수 지식

ARP cache table 관리 명령어 ( 리눅스 기준 )

(설정) # arp -s <IP> <MAC> 

(확인) # arp -a 

(삭제) # arp -d <IP> 


( linux200 )

 # arp -an    /* 캐시 테이블 확인 */

 # arp -d <IP>    /* 캐시 테이블에 저장된게 있다면 삭제 */


 # ping -c 1 192.168.27.201    /* win2008 서버에 ping 테스트 */

 # arp -an     /* 캐시 테이블 확인 */

 

 ? (192.168.27.201) at 00:0C:29:7D:D8:1E [ether] on eth0

 


( win2008 )

 c:\> arp -a    /* 캐시 테이블 확인 */

 c:\> arp -d     /* 저장된것이 있다면 삭제 */

/* 리눅스는 전체삭제가 없지만 윈도우는 -d 옵션에 IP를 적지 않으면 캐시테이블 전체 삭제된다. */

 

 c:\> ping -n 1 192.168.27.200     /* linux200 서버에 ping 테스트 */

 c:\> arp -an

 

 인터넷 주소           물리적 주소           유형

192.168.27.200        00-0c-29-78-75-ec     동적

 


-> 서버간에 통신( ping )을 하니 ARP Cache Table에 추가가 되었다. 

( 통신할때 ARP가 사용된다. 통신할때 꼭 MAC Address 가 필요하다 )



-  ARP 패킷 캡쳐후 분석하기 


사용 시스템

linux200

win2008


( linux200 )

# arp -d 192.168.20.201     /* 앞 실습에서 저장된 캐시 테이블 삭제 */

# wireshark &

# ping -c 1 192.168.20.201

# arp -a



1. 78:75:ec    Broadcast    ARP    Who has 192.168.27.201? Tell 192.168.27.200

-> 78:75:ec (linux200) 이 브로드케스트로 192.168.27.201을 찾는다.

2. 자세히 확인해보면 Destination 이 ff:ff:ff:ff:ff:ff 이고 Source 는 linux200의 MAC Address임을 확인 할 수있다. 

-> 아래에 각 주소 6 byte type 2byte  16 btye

3. 00:00:00:00:00:00또한 MAC Address를 모른다는 의미이다 

arp request 는 Opcode 가 1이다.



1. 7d:d8:1e    78:75:ec    ARP    192.168.27.201 is at 00:0c:29:7d:d8:le

-> win2008에서 linux200으로 응답했다. 192.168.27.201의 MAC Address는 00:0c:29:7d:d8:le 이다.

2. Destination : .... :ec ( linux200) Source : ......:le ( win2008)

3. ARP reply 의 Opcode 는 2이다.



.... :le ( win2008)    Broadcast ...

>  win2008에서 브로드캐스트를 보내 linux200의 MAC Address를 찾는다 

사실 win2008은 이전에 받은 패킷에 linux200의 정보가 모두 들어있음에도 다시 확인한다. 

이유는 window는 ARP 를  받으면 한번더 확인하도록 되어있다. > 보안의 이유로


( win2008 )

# arp -d     /* 이전의 실습으로 저장된 캐시 테이블 삭제 */


wireshark를 다운받고 패킷을 확인합니다.

# ping -n 1 192.168.27.200

# arp -a

 

 인터페이스: 192.168.27.201 --- 0xb

  인터넷 주소           물리적 주소           유형

  192.168.27.200        00-0c-29-78-75-ec     동적

 



-> ARP를 통해 linux200의 MAC 주소를 알아낸후 ping을 수행합니다. 

-> 패킷의 정보는 linux로 확인 했던 것과 비슷하게 나왔다.

-> linux는 ARP를 다시 Broadcast 신호로 확인하는 작업을 하지 않는다. 



- MAC 주소를 임시적으로 변경하기


사용 시스템

linux200

win2008


[참고] 물리적인 주소(MAC 주소)에 대해서(EX: Network Adapter, 1 port)

* 공장에서 생산할 때 할당되는 번호(port 구분 번호)

* 일반적인 체계에서는 MAC 중첩이 나지 않는다.

* 운영체제가 기동이 될때 NIC의 MAC 주소를 불러서 설정한다.

* 운영체제에서 임시적으로 NIC의 MAC 주소를 변경해도 재부팅이 되면 다시 복원된다.

* 가상 운영체제 환경(EX: VMware)인 경우에는 약간 다르다. 


( linux200 )

# ping -c 1 192.168.27.201    /* win2008에 ping */

# arp -an

 

 ? (192.168.27.201) at 00:0C:29:7D:D8:1E [ether] on eth0

 

 -> MAC 주소복사 00:0C:29:7D:D8:1E

# arp -d 192.168.27.201

# arp -s 192.168.27.201 00:0C:29:7D:D8:1A

 -> 붙여넣기하고 끝에 한글자만 바꿔준다.


# arp -an

 

 ? (192.168.27.201) at 00:0C:29:7D:D8:1A [ether] PERM on eth0

 

-> PERM : 직접설정 했다는 의미이다. ( Static 설정 )

arp cache table은 시간이 지나면 지워지지만 Static으로 설정된 것은 재부팅하기 전까지 지워지지 않음


# ping 192.168.27.201

> 정상적으로 실행되지 않는다. 


# arp -d 192.168.27.201

# arp -s 192.168.27.201 00:0C:29:7D:D8:1E    /* 정상 MAC Address */


# ping -c 1 192.168.27.201 

> 정상적으로 실행된다. 


( win2008 )

c:\> ping 192.168.20.200     /* window 에서는 기본 -n 4 */

c:\> arp -a

 

 인터페이스: 192.168.27.201 --- 0xb

 인터넷 주소           물리적 주소           유형

 192.168.27.100        00-0c-29-7c-d6-f0     동적

 192.168.27.200        00-0c-29-78-75-ec     동적

 192.168.27.255        ff-ff-ff-ff-ff-ff     정적

 

-> MAC Address 복사 00-0c-29-78-75-ec


c:\> arp -d 192.168.20.200
c:\> netsh interface show interface

 

 관리 상태      상태           종류             인터페이스 이름

---------------------------------------------------------------------

사용             연결됨            전용               로컬 영역 연결

 


c:\> netsh interface ip add neighbors "로컬 영역 연결" "192.168.27.200" "00-0c-29-78-75-ea"

-> 잘못된 MAC Address 설정


c:\> arp -a

 

 인터페이스: 192.168.27.201 --- 0xb

 인터넷 주소           물리적 주소           유형

 192.168.27.100        00-0c-29-7c-d6-f0     동적

 192.168.27.200        00-0c-29-78-75-ea     정적

 192.168.27.255        ff-ff-ff-ff-ff-ff     정적

 


c:\> ping 192.168.27.200

>정상적으로 실행되지 않는다. 


c:\> netsh interface ip delete neighbors "로컬 영역 연결" "192.168.27.200"

[참고] arp -d 192.168.27.200

arp -d는 메모리 상에 있는것만 지운다. 

netsh interface ip add 명령어로 설정했다면 다시 이 정보다 올라올 수 있다. > 오류

완전히 지우기 위해서는 netsh interface ip delete로 지워야한다. 


c:\> ping 192.168.27.200

> 정상적으로 실행된다.


'Security > Network Security' 카테고리의 다른 글

ICMP 패킷 분석  (0) 2017.10.18
ARP Spoofing 방어 방법  (0) 2017.10.18
ARP Spoofing  (0) 2017.10.18
이더넷 프레임 구조확인  (0) 2017.10.17
보안 기초 용어  (0) 2017.10.16