본문 바로가기

Learning/└◆Network Hacking

MAC 주소를 임시적으로 변경하는 방법



MAC 주소를 임시적으로 변경하는 방법

 

사용시스템

- linux200

- windows2008

 

선수지식

 

[참고] ARP Cache Table 관리 명령어

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

(확인) # arp -a

(삭제) # arp -d <IP>

 

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

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

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

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

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

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

 

 

[실습] MAC 주소를 변경하는 방법을 실습한다.

 

(linux200)

 

linux200 IP : 192.168.20.200

win2008 IP : 192.168.20.201

 

window2008 서버에 ping 테스트 후 arp cache table 확인

# ping -c 1 192.168.20.201

# arp -an

? (192.168.20.201) at 00:0C:29:E5:D4:AD [ether] on eth0

-> MAC 주소 복사

 

새로운 MAC 주소로 arp cache tablestatic 하게 등록(잘못된 설정)

# arp -d 192.168.20.201

# arp -s 192.168.20.201 00:0C:29:E5:D4:AA <--- 'AD -> AA' 변경

# arp -an

? (192.168.20.201) at 00:0C:29:E5:D4:AA [ether] PERM on eth0

PERM 우선순위 높음, 재부팅 되기전 까지 유지됨


통신 테스트

# ping -c 1 192.168.20.201

-> 정상적으로 통신이 되는가? 되지 않는다 !!

 

다시 정상적으로 변경

# arp -d 192.168.20.201

# arp -s 192.168.20.201 00:0C:29:E5:D4:AD

# arp -an

? (192.168.20.201) at 00:0C:29:E5:D4:AD [ether] PERM on eth0

 

통신 테스트

# ping -c 1 192.168.20.201

-> 정상적으로 통신이 되는가? 잘 된다

--- 192.168.20.201 ping statistics ---

1 packets transmitted, 0 received, 100% packet loss, time 0ms

-> 잘못된 정보를 가져다 끌어넣어서 패킷을 버리고 통신이 안된다.

 

arp cache table 내용 삭제

# arp -d 192.168.20.201

=> 다시 복원

 

 

 

(windows2008)

 

linux200 서버에 ping 테스트 후 arp cache table 확인

c:\> ping 192.168.20.200

Ping 192.168.20.200 32바이트 데이터 사용:

192.168.20.200의 응답: 바이트=32 시간=1ms TTL=64

192.168.20.200의 응답: 바이트=32 시간<1ms TTL=64

192.168.20.200의 응답: 바이트=32 시간<1ms TTL=64

192.168.20.200의 응답: 바이트=32 시간=7ms TTL=64

 

192.168.20.200에 대한 Ping 통계:

패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),

왕복 시간(밀리초):

최소 = 0ms, 최대 = 7ms, 평균 = 2ms

 

c:\> arp -a    win에서는 -an옵션이 없다. n옵션 숫자로만 표기. win은 자체 기능되어있음.

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

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

192.168.20.100 00-0c-29-f2-67-c6 동적

192.168.20.200 00-0c-29-d1-cc-21 동적

192.168.20.255 ff-ff-ff-ff-ff-ff 정적

224.0.0.22 01-00-5e-00-00-16 정적

224.0.0.252 01-00-5e-00-00-fc 정적

-> MAC 주소 복사

 

 

새로운 MAC 주소로 arp cache tablestatic 하게 등록(잘못된 설정)

c:\> arp -d 192.168.20.200

 

c:\> netsh interface show interface

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

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

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

 

c:\> netsh interface ip add neighbors "로컬 영역 연결" "192.168.20.200" "00-0c-29-d1-cc-22"

-> MAC 주소를 다른것을 설정한다.(00-0c-29-d1-cc-21 ===> 00-0c-29-d1-cc-22)

-> (예제) netsh interface ip add neighbors "로컬 영역 연결" "192.168.20.200" "00-0c-29-e0-2c-66"

 

c:\> arp -a

-> 잘못된 MAC 주소 확인

 


통신 테스트

c:\> ping 192.168.20.200

-> 테스트가 되는가? 100% 손실, 되지 않는다.

C:\>ping 192.168.20.200

 

Ping 192.168.20.200 32바이트 데이터 사용:

요청 시간이 만료되었습니다.

요청 시간이 만료되었습니다.

요청 시간이 만료되었습니다.

요청 시간이 만료되었습니다.

 

192.168.20.200에 대한 Ping 통계:

패킷: 보냄 = 4, 받음 = 0, 손실 = 4 (100% 손실),

 

arp cache table 내용 삭제

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

or

c:\> arp -d 192.168.20.200


netsh interface ip add neighbors "로컬 영역 연결" "192.168.20.200" "00-0c-29-13-ed-e1"

netsh interface ip del neighbors "로컬 영역 연결" "192.168.20.200" "00-0c-29-13-ed-e1"



 

통신 테스트

c:\> ping 192.168.20.200

-> 테스트가 되는가? 잘 통신이 된다.

 

C:\>ping 192.168.20.200

 

Ping 192.168.20.200 32바이트 데이터 사용:

192.168.20.200의 응답: 바이트=32 시간<1ms TTL=64

192.168.20.200의 응답: 바이트=32 시간<1ms TTL=64

192.168.20.200의 응답: 바이트=32 시간<1ms TTL=64

192.168.20.200의 응답: 바이트=32 시간<1ms TTL=64

 

192.168.20.200에 대한 Ping 통계:

패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),

왕복 시간(밀리초):

최소 = 0ms, 최대 = 0ms, 평균 = 0ms

 

(결론)

한번 통신하면 arp cache table에 저장이 된다.(IP <-> MAC)

MAC 주소가 틀리면 통신이 되지 않는다.



[실무 활용 예]

 

반드시 실습은 172.16.0.0/16 대역의 PC에서 작업한다.

 

(원본 운영체제에서 수행해 본다.)

c:\> ping 172.16.255.255 -> broadcast address  

(응답이 안되도록 되어 있으면 이 방법으로 실습한다. c:\> ping 224.0.0.1) <-- 멀티캐스트 어드레스

한번통신하면 상대방의 주소 저장

c:\> arp -a


-> (실무) 같은 네트워크 안에 alive 시스템을 확인 할 수 있다. 

-> (실무) MAC 주소가 중첩(충돌)이 발생한 서버의 MAC 주소를 확인 할 수도 있다.

가상체계에서 발생하는 오동작인데 문제의 원인을 알 수가없다. => mac 주소가 중첩난 것

 

-> (실무) SAN 스토리지/스위치(네트워크 장비) IP를 모르는 경우 IP 확인을 위해서 사용한다

관리용 포트 쪽에 상대편의 ip 알아야 접속이 가능한데 모를 경우 arp -a 사용하면 상대편의

Ip를 알 수 있다..




(추가적인 실습) 리눅스 시스템에서 쉘 스크립트를 통해 ping 통신을 하는 프로그램 제작하기

 

(linux200)

# mkdir /root/bin

# cd /root/bin

# vi ping.sh (# nmap 192.168.20.0/24)

#!/bin/bash

 

START=200

END=202

 

NET=192.168.20

 

while [ $START -le $END ]

do

ping -c 1 $NET.$START >/dev/null 2>&1

if [ $? -eq 0 ] ; then

echo "$NET.$START is alive"

else

echo "$NET.$START is die"

fi

START=`expr $START + 1`

done

200부터 202 까지 핑테스트를 하나하나 해볼 것이다.

or

#!/bin/bash

###############################

# # ping 192.168.20.200

# # ping 192.168.20.201

# # ping 192.168.20.201

###############################

 

START=200

END=202

 

NET=192.168.20

 

while [ $START -le $END ]

do

ping -c 1 $NET.$START >/dev/null 2>&1

if [ $? -eq 0 ] ; then

echo "$NET.$START is alive"

else

echo "$NET.$START is die"

fi

START=`expr $START + 1`

done

 

arp -an | grep "$NET"

 

# chmod 755 ping.sh

# ./ping.sh

# arp -an

 

[root@~/bin]# vi ping.sh

[root@~/bin]# ./ping.sh

192.168.20.200 is alive

192.168.20.201 is alive

192.168.20.202 is die

? (192.168.20.202) at <incomplete> on eth0

? (192.168.20.201) at 00:0C:29:90:F2:A4 [ether] PERM on eth0