'패킷'에 해당되는 글 12건

  1. [자료] 패킷 샘플
  2. [Tool] 특정 프로세스 캡쳐 (2)
  3. [자료] NTP 취약점을 이용한 NTP reflection attack
  4. [정리] Ethernet Frame의 기능과 구조
  5. [정리] UDP의 기능과 패킷 구조
  6. [정리] scapy tutorial
  7. [정리] 스캔방식에 따른 응답 차이 (2)
  8. [PACKET] SANS Network Forensic Fuzzle 4 풀이
  9. [PACKET] SANS Network Forensic Fuzzle 3 풀이
  10. [정리] ARP의 기능과 패킷 구조

[자료] 패킷 샘플

https://traffic.moe/


https://github.com/security-onion-solutions/security-onion/wiki/Pcaps


PCAP Repositories

MACCDC - Pcaps from National CyberWatch Mid-Atlantic Collegiate Cyber Defense Competition
http://www.netresec.com/?page=MACCDC

Wireshark Sample Capures
http://wiki.wireshark.org/SampleCaptures
http://wiki.wireshark.org/Development/PcapNg#Example_pcapng_Capture_File

DARPA Intrusion Detection Data Sets from 1998 and 1999
http://www.ll.mit.edu/mission/communications/cyber/CSTcorpora/ideval/data/

OpenPacket.org Capture Repository (maintained by JJ Cummings created by Richard Bejtlich)
https://www.openpacket.org/capture/list

Captures from the "2009 Inter-Service Academy Cyber Defense Competition" served by Information Technology Operations Center (ITOC), United States Military Academy
https://www.itoc.usma.edu/research/dataset/

Over 4 GB of network forensic training data from DEEP (Digital Evaluation and Exploitation Department of Computer Science, Naval Postgraduate School). Case details can be found at Jesse Kornblum's blog.
http://digitalcorpora.org/corpora/network-packet-dumps (HTTP)
http://terasaur.org/item/downloads/computer-forensics-2009-m57-scenario/187 (Torrent)

PacketLife.net Packet Captures (Jeremy Stretch)
http://packetlife.net/captures/
http://packetlife.net/captures/leech/

MOME database
http://www.ist-mome.org/database/MeasurementData/?cmd=databrowse

EvilFingers PCAPs
https://www.evilfingers.com/repository/pcaps.php

Wireshark Network Analysis Study Guide (Laura Chappell)
http://wiresharkbook.com/studyguide.html (see "Book Supplements" or use this direct link to the 1.5 TB pcap file set)

Wireshark 101 Essential Skills for Network Analysis (Laura Chappell)
http://wiresharkbook.com/wireshark101.html (see "Book Supplements" or use this direct linkt to the 330 MB zip file)

Laura's Lab Kit v.9 ISO image (old)
http://cdn.novell.com/cached/video/bs_08/LLK9.iso

Sample capture files from: "Practical Packet Analysis - Using Wireshark to Solve Real-World Network Problems" by Chris Sanders
http://www.nostarch.com/download/ppa-capture-files.zip

DEFCON Capture the Flag Contest traces (from DEF CON 8, 10 and 11)
http://cctf.shmoo.com/

DEFCON 17 Capture the Flag Contest traces
http://ddtek.biz/dc17.html
https://media.defcon.org/torrent/DEF CON 17 CTF.torrent (torrent)
https://media.defcon.org/dc-17/DEFCON 17 Hacking Conference - Capture the Flag complete packet capture.rar (direct download)

DEFCON Capture the Flag pcaps (see collections of files related to the Capture the Flag contest from DEF CON 17 to 21)
https://www.defcon.org/html/links/dc-torrent.html
https://www.defcon.org/html/torrent/DEF%20CON%2018%20CTF.torrent (DEF CON 18 torrent)
https://www.defcon.org/html/torrent/DEF%20CON%2019%20CTF.torrent (DEF CON 19 torrent)
https://www.defcon.org/html/torrent/DEF%20CON%2020%20ctf.torrent (DEF CON 20 torrent)
https://www.defcon.org/html/torrent/DEF%20CON%2021%20ctf%20friday.torrent (DEF CON 21 torrent, Friday)

Capture the hacker 2013 competition (by Dr. David Day of Sheffield Hallam University)
http://www.snaketrap.co.uk/ contains honeypot PCAP files from three different setups:

Anonymous FTP connections to public FTP servers at the Lawrence Berkeley National Laboratory
http://www-nrg.ee.lbl.gov/anonymized-traces.html

Pcapr (Mu Dynamics) - A capture repository with pcap files of various traffic types
http://www.pcapr.net/

Network Foreniscs Puzzle Contest (by Lake Missoula Group, LLC)
http://forensicscontest.com/puzzles

CSAW CTF 2011 pcap files
http://captf.com/2011/CSAW-quals/networking/
http://repo.shell-storm.org/CTF/CSAW-2011/Networking/

Pcap files from UCSB International Capture The Flag, also known as the iCTF (by Giovanni Vigna)
https://ictf.cs.ucsb.edu/data.php

HackEire Challenge pcaps from IRISSCON (by HackEire)
https://github.com/markofu/hackeire/

Understand project Downloads - Lots of different capture file formats (pcap, pcapng/ntar, pcangpklg and more...)
http://code.google.com/p/understand/downloads/list

I Smell Packets (website)
https://docs.google.com/leaf?id=0Bw6BFSu9NExVMjBjZDRkMTgtMmMyZi00M2ZlLWI2NzgtODM5NTZkM2U4OWQ1

ISCX 2012 Dataset. Over 80 GB of pcap data available for researchers (created by Ali Shiravi, Hadi Shiravi, and Mahbod Tavallaee from University of New Brunswick)
http://iscx.ca/dataset-request-form

Research PCAP datasets from FOI's Information Warfare Lab (FOI is The Swedish Defence Research Agency)
ftp://download.iwlab.foi.se/dataset/smia2011/Network_traffic/ (SMIA 2011)
ftp://download.iwlab.foi.se/dataset/smia2012/network_traffic/pcap/ (SMIA 2012)

Contagio Malware Dump: Collection of PCAP files categorized as APT, Crime or Metasplot
http://www.mediafire.com/?a49l965nlayad (see blog post
WARNING: The password protected zip files contain real malware 
Also see Contagio's PCAP files per case:

Packet collections in PCAP-NG format by @egeektronic
http://stuff.egeektronic.com/packets

Internet Traffic Archive (Berkeley Lab) - mostly tcpdump ASCII output
http://ita.ee.lbl.gov/html/traces.html

Pcap files with attacks against Industrial Control Systems (created by US Cyber Challenge) - See Cyber Quest February 2012
http://uscc.cyberquests.org/

WITS: Waikato Internet Traffic Storage (traces in ERF format with headers plus 4 bytes of application data)
http://wand.net.nz/wits/
The FTP site uses rate limiting for IPv4 connections, but no ratelimit for IPv6 connections.

Bro IDS trace files (no application layer data)
ftp://ftp.bro-ids.org/enterprise-traces/hdr-traces05/

SimpleWeb captures (mainly packet headers)
http://www.simpleweb.org/wiki/Traces

Wireless LAN Traces from ACM SIGCOMM'01 (no application layer data)
http://sysnet.ucsd.edu/pawn/sigcomm-trace/

Wireshark Fuzzed Protocol Capures (only fuzzed packets)
ftp://wireshark.org/automated/captures/

Single PCAP files

Honeynet.org's Scan of the Month PCAPs
http://www.honeynet.org/scans/scan27/
http://www.honeynet.org/scans/scan28/

Raul Siles, “Pcap files containing a roaming VoIP session”
http://www.raulsiles.com/downloads/VoIP_roaming_session.zip

Russ McRee, W32/Sdbot infected machine
http://holisticinfosec.org/toolsmith/files/nov2k6/toolsmith.pcap

hack.lu 2009 Information Security Visualization Contest (honeypot traffic, mostly SSH and HTTP)
http://2009.hack.lu/index.php/InfoVisContest

DFRWS 2008 Challenge
http://www.dfrws.org/2008/challenge/submission.shtml

DFRWS 2009 Challenge
http://www.dfrws.org/2009/challenge/submission.shtml

Barracuda Labs on the PHP.net Compromise [blog post]
PCAP: http://barracudalabs.com/downloads/5f810408ddbbd6d349b4be4766f41a37.pcap

Barracuda Labs on the Cracked.com Malware [blog post]
PCAP: https://copy.com/UoJTysFFh6ef

Online PCAP Services

Convert PcapNG files to PCAP format
http://pcapng.com/

CloudShark
http://www.cloudshark.org/


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

[자료] cisco ios  (0) 2014.02.19
[Tool] 50 Best Hacking Tools!  (0) 2014.02.04
[자료] 패킷 샘플  (0) 2014.01.23
[Tool] 특정 프로세스 캡쳐  (2) 2014.01.17
[자료] NTP 취약점을 이용한 NTP reflection attack  (0) 2014.01.05
[정리] Ethernet Frame의 기능과 구조  (0) 2014.01.01

[Tool] 특정 프로세스 캡쳐

snoopspy를 이용해 특정 프로세스만 캡쳐하는 동영상입니다.


tutorial : https://www.youtube.com/watch?v=RzcKk-qpCfg


snoopspy : http://www.snoopspy.com/download

[자료] NTP 취약점을 이용한 NTP reflection attack

https://isc.sans.edu/diary/NTP+reflection+attack/17300

http://www.us-cert.gov/ncas/alerts/TA14-013A


NTP 취약점을 이용한 NTP reflection attack


추후 정리..

[정리] Ethernet Frame의 기능과 구조

Data link 계층은 상위 계층의 패킷을 전달받아 프레임 형태로 변환하여 Physical 계층에 전달한다. 이때, 이더넷 헤더에는 상위 계층의 프로토콜 정보와 src, dst MAC address 정보가 담긴다. 


[그림 1] Ethernet V2 구조


위 그림은 Ethernet V2 프레임의 구조를 나타낸 것으로 IEEE802.3의 경우 'Type'이 아닌 'Length' 정보가 담겨있고 DSAP, SSAP, Control 필드가 추가적으로 구성되어 있다.


Preamble : Physical 계층에서 전송된 비트패턴으로 송신자와 수신자의 동기를 맞추는데 사용된다. 7byte크기이며 항상 10101010 으로 설정된다. 패킷 캡쳐 범위 밖이다.


SOF(Start Of Frame) : 물리계층이 끝나고 이제부터는 Ethernet 헤더라고 알려주는 신호 역할을 한다. 1byte크기이며 항상 10101011로 설정된다. 패킷 캡쳐 범위 밖이다.


Destination address : 프레임을 수신할 MAC 주소정보가 담겨있다. 6byte


Source address : 프레임을 송신한 호스트의 MCA 주소가 담겨있다. 6byte


Type : 상위계층 프로토콜 정보를 담고있다. (IP=0800, ARP=0806) 2byte


Data : 상위계층으로 부터 전달받은 데이터가 담긴다. 최소 46byte 최대 1500byte 크기를 가질 수 있다.


PAD : Data가 46byte이하 크기로 설정되면 46byte크기를 임의로 채워주는 역할을 한다.


FCS : 프레임의 오류를 확인한다. 4byte크기를 가지며 패킷 캡쳐 범위 밖이다.


[그림 2] Ethernet 프레임 캡쳐


캡쳐를 해보면 [그림 1]의 캡쳐 범위 내 필드들을 모두 확인 할 수 있다. 또한, [그림 2]에는 Ethernet 헤더의 Type 이 IP(0800) 로 표기되어 있으므로 상위 계층의 프로토콜이 IP임을 알 수 있고 실제로 하단의 IP 탭이 존재한다. IP 탭을 열면 Protocol 필드에 TCP (6) 정보가 담겨있고 아래 탭에 TCP 탭이 존재한다. 이와 같이 프레임-세그먼트-패킷의 프로토콜 조합을 그림으로 도식화 하면 아래와 같은 형식으로 구성 된다.


[그림 3] 프로토콜 조합 도식화


[그림 4]는 ICMP 패킷을 캡쳐한 화면으로 Ethernet Type은 0800 Protocol은 1로 설정된 것을 확인 할 수 있다.


[그림 4] ICMP 패킷


[그림 5] ARP 패킷

[정리] UDP의 기능과 패킷 구조

UDP(User Datagram Protocol)는 transport layer에서 동작하는 비연결지향형 프로토콜이다.


연결지향형인 TCP와는 달리 단순 오류검출 기능만을 지원하기 때문에 흐름제어나 오류제어등의 기능은 어플리케이션에서 담당해야만 한다. 이러한 이유로 UDP는 best-effort protocol로도 불린다. UDP는 그 특성 때문에 다른 전송 프로토콜에 비해 오버헤드가 적다. 따라서 브로드캐스트나 멀티캐스트, 소량의 데이터 전송 시에는 UDP를 이용하는 것이 효율적이다. 


[그림 1] UDP 구조


Source Port : 해당 패킷을 만든 송신자의 어플리케이션 포트번호를 나타낸다.


Destination Port : 해당 패킷을 수신할 어플리케이션의 포트번호를 나타낸다.


Length : UDP 헤더와 데이터를 포함한 전체 길이를 byte단위로 표시한다.


Checksum : 데이터가 전송 중에 손상되지 않고 원본과 동일한지 여부를 확인하는 기능을 제공한다. 만일 checksum값이 inco-rrect일 경우 송신자에게 패킷의 재전송을 요구한다. 옵션이지만 RFC1122에서는 사용할 것을 권장하고 있으며 현재는 호스트에 의해 기본적으로 동작하게 요구되고 있다. checksum은 NAT를 수행 할 때를 제외하곤 송신지에서 계산되어 수신지에서 검사된다. 


[그림 2] DNS 패킷 내용


위의 그림은 UDP를 사용하는 대표적 서비스인 DNS 패킷의 일부이다. [그림 1]에 나와있는 구조들을 모두 확인 할 수 있다. checksum의 값이 validation disabled되어 있는데 이는 와이어샤크에서 퍼포먼스의 이유로 인해 checksum 계산을 disable 하였기 때문이다. IP 프로토콜에서는 checksum을 정상적으로 확인 할 수 있다. 


관련 내용 : 

http://packetlife.net/blog/2008/aug/23/disabling-checksum-validation-wireshark/


MTU(Maximum Transmission Unit) 크기를 초과하는 UDP 패킷은 단편화 되어 전송이 된다. TCP처럼 sequence number 헤더가 없는 UDP의 재조립은 IP 헤더의 identification 필드를 이용해 이루어진다.

[정리] scapy tutorial

scapy는 파이썬 기반의 패킷 생성, 조작 및 스니핑, 스캐닝 등 상황에 따라 유연하게 활용 할 수 있는 툴이다.


설치 링크 :

http://www.secdev.org/projects/scapy/

http://www.secdev.org/projects/scapy/doc/installation.html#platform-specific-instructions


찾아보니 좋은 문서와 자세히 정리된 글이 있어 간단하게만 정리한다.


[그림 1] scpay 시작 화면


테스트 환경은 BT5R3에서 진행하였다. scapy 명령어 입력 시 [그림 1]과 같은 프롬프트 창이 출력되고 이 상태에서 파이썬 프로그래밍을 하거나 간단한 패킷을 생성할 수 있다. scapy의 종료는 exit().


[그림 2] scapy 설정 화면


conf 명령어 입력 시 scapy의 설정을 변경 할 수 있다. conf.iface = 'eth0' 과 같은 형식으로 수정하면 된다. ls()는 사용 가능한 프로토콜의 리스트를 출력한다. lsc() 사용 가능한 옵션을 출력한다. 


패킷의 생성은 크게 두가지 방법으로 가능하다. 한가지는 패킷을 레이어링 한 후 변수에 저장하는 것이고 다른 하나는 send나 sr등의 옵션 시 간단히 생성하는 방법이 있다. 


[그림 3] 변수 생성


[그림 3]은 IP패킷과 TCP 패킷을 레이어링 하여 test 변수에 저장한 것이다. scapy의 가장 큰 장점은 이렇듯 2~3계층의 프로토콜을 자유로이 레이어링이 가능하다는 것이다. test 변수를 출력하면 아래 그림과 같다.


[그림 4] test 변수 출력


[name].display() 형식으로 변수 출력이 가능하다. 변수 이름만 입력하면 간단하게 내용이 출력된다. [그림 4]는 test 변수를 출력한 결과이다. 현재는 기본으로 설정된 값이 저장되있다. 


변수에 저장된 패킷을 설정하기 위해선 [name].[variable] = "value" 형식으로 값을 지정하면 된다. 


[그림 5] test  패킷 설정 변경


위의 그림의 명령어를 사용하여 source, destination IP를 변경하였다. 이외에도 IP의 flag, identification, ttl, checksum 그리고 TCP의 flag, window size, sequence number, port 등 해당 프로토콜의 모든 값에 대해 조작이 가능하다. 또, 자동으로 IP주소로 변환되기 때문에 destination을 도메인 명으로 입력 가능하다.


[그림 6] 패킷 전송


send()함수를 이용하여 변수에 저장된 값의 패킷을 전송 할 수 있다.


[그림 7] 수신 패킷 내용


[그림 7]은 1.1.1.3에서 수신한 패킷의 내용으로 scapy를 이용해 전송한 패킷의 내용과 동일 함을 알 수 있다.


send()함수 외에 sr(), srp()함수를 이용하여 패킷을 전송 할 수 있다. 다만 sr() 함수는 전송한 패킷의 응답 까지 받으며 sr1() 함수는 단 하나의 응답만을 받는다. srp()함수는 2계층의 패킷을 전송하고 응답을 받으며 srp1() 또한 단 하나의 응답만을 받는다.


[그림 8] RandIP(), fuzz()


src, dst IP 그리고 MAC 주소와 더불어 패킷의 내용까지 랜덤한 값으로 설정이 가능하다. [그림 8]에서는 RandIP()함수를 이용하여 src IP를 랜덤으로 지정하였고 fuzz()함수를 통해 TCP패킷의 값을 임의로 설정하였다. 마지막 loop=1로 설정함으로써 지속적인 패킷 전송을 유도하였다. count=10의 형태의 지정도 가능하다. 아래의 그림에서 모두 다른 source IP와 TCP 패킷 값을 확인 할 수 있다.


[그림 9] RandIP(), fuzz() 결과


추가적으로 scapy 에선 스니핑과 포트스캔이 가능하고 수집한 패킷을 정렬하여 볼 수 있다. 그렇지만 아직 별 필요성을 못 느껴서, 따로 정리는 하지 않았다. 부가적인 내용이 궁금하다면 아래의 링크와 문서를 참고하기 바란다. 


나중에 필요하면 더 공부하고 정리해서 업데이트 하겠다. 


관련 글 :

http://www.packetinside.com/search/label/scapy


관련 문서 :

scapy tutorial.zip

[정리] 스캔방식에 따른 응답 차이

때때로 자격증 시험과 같은 곳에서 스캔 방식에 따른 응답 차이를 물어볼 때가 있는데, 혼동이 되어 정리해본다. 


스캔하는 호스트를 공격자(A)라 칭하고 스캔 당하는 호스트는 피해자(B)라 칭한다.


1. TCP connect scan

스캔 시 공격자가 피해자와 완전한 3 Way-Handshacking 과정을 통해 세션을 성립하여 열린 포트를 확인하는 스캔. 결과에 대한 신뢰성은 높지만 속도가 느리고 피해자의 로그에 남는다.


[그림 1] TCP connect scan (open)

[그림 2] TCP connect scan (close)


2. Half-open scan

Half-open scan 또는 SYN 스캔이라고 부르는 방식으로 TCP connect scan과 같이 완전한 세션을 성립하지 않고 SYN 패킷 만을 이용해 열린 포트를 확인하는 스캔 방식이다. 


[그림 3] Half-open scan (open)

[그림 4] Half-open scan (close)


3. TCP ACK scan

ACK 패킷만을 보내 포트의 열림을 확인하는 스캔으로 방화벽이나 IPS와 같은 보안장비가 이미 연결된 세션은 허용한다는 점을 이용한 스캔 방식이다. 따라서 보안장비의 우회가 가능해 내부 네트워크의 스캔이 가능하다.


[그림 5] TCP ACK scan (open)

[그림 6] TCP ACK scan (close)


4. Stealth scan

FIN, XMAS, NULL scan을 Stealth scan 이라 칭한다. FIN scan은 FIN 플래그만 설정해 스캔하는 방식이다. XMAS scan은 모든 플래그를 설정하고 반대로 NULL scan 은 모든 플래그를 비활성화 하여 스캔하는 방식이다. XMAS, NULL scan은 유닉스 시스템을 대상으로만 가능하다. Stealth scan은 열린 포트에 대해서는 응답이 없다.


[그림 7] Stealth scan (open)

[그림 8]  Stealth scan (close)


5. UDP scan

UDP 패킷을 전송해 포트의 열림을 확인한다. UDP를 사용하기 때문에 스캔 결과의 신뢰도가 낮다.


[그림 9] UDP scan (open)

[그림 10] UDP scan (close)




[PACKET] SANS Network Forensic Fuzzle 4 풀이

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.

[PACKET] SANS Network Forensic Fuzzle 3 풀이

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력하세요.

[정리] ARP의 기능과 패킷 구조

데이터의 송수신 시 호스트의 IP 주소를 아는것만으로는 MAC 주소를 이용해 통신하는 네트워크 계층에서 프레임을 전달하는 것은 불가능하다. 


때문에 TCP/IP 통신에서 하드웨어 주소 즉, MAC 주소를 알기위해 ARP(Address Resolution Protocol)를 사용해 IP와 MAC 주소간의 동적 매핑을 제공한다. 동적 매핑이라 표현한 이유는 매핑이 자동으로 이뤄지며 변경이 발생하여도 시스템 관리자에 의해 재구성을 요하지 않은 채 변경이 적용되기 때문이다. ARP와 반대로 MAC 주소와 IP 주소간의 매핑을 제공하는 RARP (Rev-

erse Address Resolution Protocol)는 흔히 사용되지 않는다.


ARP는 IPv4에서만 사용되며 IPv6의 경우 ICMPv6에 포함되있는 NDP(Neighbor Discovery Protocol)를 사용한다. (이는 추후 포스팅 예정) 또한 ARP는 동일 브로드캐스트 도메인 내에서 브로드캐스트를 이용해 ARP Request을 송신한다


IANA에서 관리하고 할당하는 IP 주소와는 달리 MAC 주소는 NIC 제조업체에서 정해진 규칙에 의해 임의로 만들어진 주소를 장치 내부의 영구메모리에 저장된다. 48bit로 구성된 MAC주소 중 앞의 24bit는 제조업체의 식별 정보이며 나머지 24bit는 NIC의 시리얼 넘버이다. 

[그림 1] MAC 주소


송신자 A 10.0.0.1 수신자 B 10.0.0.2를 예로 들어 ARP 진행 과정을 설명하겠다. (http://www.example.com 으로 요청 시 실제 통신은 DNS 질의를 통해 알게된 10.0.0.1과 같은 32bit형식의 주소를 이용하여 진행하게 된다. 세부사항은 후에 포스팅 하겠다.) 


1. 송신자 A는 B의 MAC 주소를 알기 위해 ARP Request 패킷을 브로드캐스팅 한다. 이 요청은 동일 브로드캐스트 도메인 내에 존재하는 모든 호스트가 수신한다. (IPv4 또는 IPv6 프로토콜을 아예 운영하지 않는 시스템들도 포함하지만 VLAN이 지원되는 상황에서 다른 VLAN상의 시스템들은 포함하지 않는다.)


2. ARP Request 안에 지정된 IP주소를 가진 호스트 B만이 자신의 MAC 주소를 입력한 ARP Reply 패킷을 송신자 A에게 유니캐스트로 응답한다. 이때, 수신자 B는 송신자 A의 IP와 MAC주소를 알게되며 나중에 사용하기 위해 ARP 테이블에 기록한다. 이는 송신자가 곧 패킷을 전송할 것이며, 그 패킷을 수신한 수신자 B의 시스템또한 A에게 응답을 전송할 것이라는 가정하에 기초한 것이다. 수신자 B 이외에 다른 호스트는 ARP Request 패킷을 무시한다. 


3. ARP Reply를 수신한 A는 B에게 데이터그램을 전송 할 수 있다.


이렇게 IP에 대응되는 MAC 주소를 알게되면 곧바로 ARP 테이블에 저장하여 추후 통신에 이용하게 된다. ARP 테이블의 타임아웃 시간은 RFC1122에선 20분으로 규정되어 있지만 실제로는 해당 테이블이 참조될 때마다 타임아웃이 갱신되는 형식으로 구성되어 있다. ARP 패킷의 구조와 역할은 아래와 같다.


[그림 2] ARP 구조


Hardware Type : 하드웨어 주소의(MAC) 유형을 나타내며 이더넷 통신 시 값은 항상 1로 설정된다. 


Protocol Type : 매핑대상인 프로토콜 주소의 유형을 나타내며 IPv4의 경우 0x0800으로 설정된다.


Hardware Address Length : 하드웨어 주소의(MAC) 길이를 byte로 나타낸다. 이더넷 상에서 6으로 설정된다.


Protocol Address Length : 프로토콜 주소의 길이를 byte로 나타낸다. IPv4의 경우 4로 설정된다.


Operation Code : ARP의 구체적인 동작을 나타낸다. 


[표 1] Operation Code 값

동작

1

ARP Request

2

ARP Reply

3

RARP Request

4

RARP Reply


Source Hardware Address : 송신자의 MAC 주소


Source Protocol Address : 송신자의 IP 주소


Destination Hardware Address : 수신자의 MAC 주소, ARP Request 동작 시 0으로 설정된다. (이더넷 헤더의 Dst 주소가 ff:ff:ff:ff:ff:ff로 설정되어 브로드 캐스팅된다.) 


Destination Protocol Address : 수신자의 IP 주소


[그림 3] ARP 패킷 캡쳐 내용


[그림 3]은 ARP Request 패킷을 캡쳐한 내용으로 [그림 2]의 ARP 구조에 나온 항목들이 모두 표기되어 있음을 볼 수 있다. 패킷의 내용을 해석하면 프로토콜이 IP(0x0800)이고 이더넷상에서(1) 통신중인 송신자가 Operation code를 1로 설정함으로써 ARP Request 패킷을 송신하는 것을 알 수 있다.


[그림 4] Gratuitous ARP


패킷 캡처를 진행하다 보면 ARP 패킷 중 위와 같이 Gratuitous ARP 라는 패킷을 볼 수 있는데 해당 패킷의 내용을 확인해보면 [그림 5]처럼 송수신지의 IP 주소가 동일한 것을 볼 수 있다. 


[그림 5] Gratuitous ARP 값


Gratuitous ARP는 보통 PC의 부팅시에 NIC가 켜지면서 일어난다. Gratuitous ARP 송신 호스트는 응답을 받을것을 기대하지 않지만 응답을 수신한 경우 동일 브로드캐스트 도메인 안의 시스템이 잘못 구성되었음을 의미한다. 또한, MAC 주소가 변경된 호스트가 Gratuitous ARP 패킷을 송신함으로써 이를 수신한 호스트들의(ARP Request는 브로드캐스팅 된다는 점을 기억하자) ARP 테이블에 기록되 있던 송신자의 예전 MAC주소를 새로 갱신시키는 역할도 한다.