ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•
๋„คํŠธ์›Œํฌ์˜ ๊ณ„์ธต์—์„œ 2 ๊ณ„์ธต์€ MAC ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , 3 ๊ณ„์ธต์€ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ ๊ณ„์ธต์—์„œ๋Š” ์‚ฌ์ „์— ์ •์˜๋œ ๊ทœ๊ฒฉ (MAC, IP)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋งŒ์•ฝ, 2-3 ๊ณ„์ธต์œผ๋กœ ํ†ต์‹ ์ด ํ•„์š”๋‹ค๋ฉด ARP, RARP๋ฅผ ํ†ตํ•ด ๊ฐ ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ์ด์— ARP์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์‹ค์ œ ์ฃผ๊ณ ๋ฐ›๋Š” ํŒจํ‚ท์„ ๋ถ„์„ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

 

ARP?

ARP๋Š” `Address Resolution Protocol`์˜ ์•ฝ์ž๋กœ, ๋ง ๊ทธ๋Œ€๋กœ ์ฃผ์†Œ ๊ฒฐ์ • ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ARP๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 4๊ฐ€์ง€์˜ ์šฉ์–ด(Term)์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๋ฉด ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Cache
    • ARP๋ฅผ ํ†ตํ•ด MAC ์ฃผ์†Œ๋ฅผ ํ™•์ธ ํ›„, ARP Table์— ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ
  • Cache Timeout
    • ARP Table์— Cache ์œ ์ง€ ์‹œ๊ฐ„์„ ์˜๋ฏธํ•จ
  • Request
    • Broadcast๋ฅผ ํ†ตํ•ด, Target์˜ MAC ์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•จ
  • Reply
    • Broadcast๋ฅผ ๋ฐ›์€ ํ˜ธ์ŠคํŠธ ์ค‘, Target์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ Reply๋ฅผ ๋ณด๋ƒ„
    • ๋‚˜๋จธ์ง€ ํ˜ธ์ŠคํŠธ๋“ค์€ ๋ฌด์‹œํ•จ

 

How ARP works?

 ์ฒซ ๋ฒˆ์งธ๋Š” ์•ž์„œ `์šฉ์–ด`์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ, `Request`, `Reply`๋ฅผ ํ†ตํ•ด MAC ์ฃผ์†Œ๋ฅผ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” `Table lookup`์œผ๋กœ ํ…Œ์ด๋ธ”์˜ ์บ์‹œ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

Type of ARP

  • Proxy ARP
    • ํ˜ธ์ŠคํŠธ๊ฐ€ ARP Request๋ฅผ ๋ณด๋‚ด๋ฉด, ๋ผ์šฐํ„ฐ์˜ MAC ์ฃผ์†Œ๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
    • ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ํ†ตํ•ด, ๋™์ผํ•œ ๋„คํŠธ์›Œํฌ๋ผ๋ฉด ๋ผ์šฐํŒ… ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š” ์—†๋‹ค.
    • ARP ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€์™€ Host์˜ IP-to-MAC ์ฃผ์†Œ๋ฅผ ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ ์ปค์ง„๋‹ค.
  • Inverse ARP
    • Frame Relay์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
      • Frame Relay๋Š” ํ•˜๋‚˜์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋‹ค์ˆ˜์˜ ์žฅ๋น„๊ฐ€ ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.
      • ์˜ˆ๋ฅผ ๋“ค๋ฉด ISP(์ธํ„ฐ๋„ท ์„œ๋น„์Šค ๊ณต๊ธ‰์ž)์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.
    • IP์ฃผ์†Œ๋ฅผ ํ†ตํ•ด MAC์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ DLCI(Data Link Connection Identifier)๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  • Gratuitous ARP
    • ์ด๋ฆ„๊ณผ ๊ฐ™์ด, ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ž์‹ ์˜ IP๋ฅผ Target์œผ๋กœ ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ž์‹ ์˜ IP๋ฅผ Target์œผ๋กœ ํ•˜๋Š” ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ  ๋•Œ๋ฌธ์ด๋‹ค.
      • IP ์ฃผ์†Œ ์ถฉ๋Œ ๊ฐ์ง€
      • ARP Table Refresh

 

ARP Packet Analysis

arp table refresh test

 ๋ถ„์„ ๋ฐฉ๋ฒ•์€ `Ubuntu 16.04 - desktop (Virtual box)`์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰ํ•˜์˜€๋‹ค.

  • apr -d <host name>์„ ํ†ตํ•ด ARP Table cache ์‚ญ์ œ
  • arp -a๋ฅผ ํ†ตํ•ด ARP Table ํ™•์ธ
  • ์ดˆ๊ธฐํ™”๋œ ์ƒํƒœ์—์„œ, wireshark๋ฅผ ํ†ตํ•ด packet ์บก์ฒ˜

 

Set ENV

$ sudo apt install wireshark
$ sudo usermode -a -G wireshark <USER_NAME>

 

Yes๋ฅผ ์„ ํƒํ•˜์—ฌ์•ผ, packet ์บก์ณ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

Capture packet

 `arp -d <HOST NAME>`์„ ํ†ตํ•ด, ARP Table์„ ์ดˆ๊ธฐํ™”ํ•œ ์ƒํƒœ์—์„œ ping์„ ๋ณด๋‚ด๊ฒŒ ๋˜๋ฉด, wireshark์— ARP Packet์ด ์บก์ณ๋œ๋‹ค. ์บก์ณ๋œ ํŒจํ‚ท์„ ์ง์ ‘ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์นœ์ ˆํ•œ wireshark๋Š” ์–ด๋–ค ๊ฐ’์„ ์ฃผ๊ณ  ๋ฐ›์•˜๋Š”์ง€ ์นœ์ ˆํžˆ ์•Œ๋ ค์ค€๋‹ค.

 

ARP Request

 ์ฒซ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ ๋นจ๊ฐ„ ๋„ค๋ชจ ๋ฐ•์Šค์˜ ๋ฉ”์‹œ์ง€ ๊ฐ’์„ ๋ถ„์„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • `08 06` : 0x0806๋Š” ARP ํ”„๋กœํ† ์ฝœ์„ ์˜๋ฏธํ•œ๋‹ค.
  • `00 01` : Hardware type์„ ์˜๋ฏธํ•˜๋ฉฐ, 00 01์€ Ethernet์„ ์˜๋ฏธํ•œ๋‹ค.
  • `06` : Hardware size
  • `04` : Protocol size
  • `00 01` : Opcode์ด๋‹ค. 0x01์€ Request, 0x02๋Š” Reply๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 0x03, 0x04๋Š” RARP์˜ Request, Reply๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
  • `08 00 27 d0 d7 8b` : Sender์˜ MAC ์ฃผ์†Œ์ด๋‹ค.
  • `c0 a8 00 0c` : Sender์˜ IP ์ฃผ์†Œ์ด๋‹ค.
  • `00 00 00 00 00 00` : Target์˜ MAC ์ฃผ์†Œ์ด๋‹ค. ์•„์ง ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋นˆ ๊ฐ’์ด๋‹ค.
  • `c0 a8 00 01` : Target์˜ IP ์ฃผ์†Œ์ด๋‹ค.

wireshark์˜ ํ™”๋ฉด ์ผ๋ถ€

 wireshark๋Š” ์ด๋Ÿฌํ•œ ํŒจํ‚ท์˜ ๋‚ด์šฉ์„ ์œ„์™€ ๊ฐ™์ด ์•Œ๊ธฐ ์‰ฝ๋„๋ก ํ‘œ๊ธฐํ•ด์ค€๋‹ค. ์œ„์˜ Request ํŒจํ‚ท ๋ฉ”์‹œ์ง€๋ฅผ ๋ถ„์„ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€