Address Resolution Protocol atau yang sering disebut mempunyai beberapa fungsi antara lain untuk memetakan network layer protocol address dengan data link layer hardware address, selain itu pada windows 2000, ARP digunakan untuk mendeteksi duplikasi IP dan aplikasi proxy ARP pada routing dan remote services. Dibalik kelebihan tersebut, informasi ARP yang berupa mac address dari NIC (Network Interface Card) dapat membahayakan disisi server.
Address Resolution Protocol
ARP adalah network protocol yang berfungsi untuk memetakan network layer protocol address dengan data link layer hardware address. Misalnya : ARP digunakan untuk mengelompokkan IP address dengan mac address yang sesuai dalam satu Local Area Network. ARP berada dalam OSI data link layer (Layer 2). Proses maping ini dibutuhkan karena ada perbedaan jumlah bit dalam IP address dengan mac address. Untuk lebih jelasnya lihat gambar dibawah ini.
·Hardware Type :
Terdiri dari 2 byte yang berisi informasi type hardware yang digunakan oleh Data Link Layer. Tabel dibawah ini adalah type hardware yang sering digunakan oleh Data Link Layer
Hardware Type Value Data Link Layer Technology
1 (1x00-01) Ethernet (10 Mbps)
6 (1x00-06) IEEE 802 Networks (Token Ring)
15 (1x00-0F) Frame Relay
1 (1x00-10) Asynchronous Transfer Mode
Untuk lebih lengkap beberap type lain anda dapat mengunjungi ke http://www.isi.edu/in-notes/iana/assignments/arp-parameters.
·Protocol Type
Terdiri dari 2 byte, menunjukkan protocol dengan ARP yang menyediakan address resolution. Untuk IP address resolution diberi nilai 0x800.
·Hardware Address Length
Terdiri dari 1 byte yang menunjukkan panjang bit hardware address baik dari sisi pengirim (Sender Hardware Address) maupun dari sisi penerima (Target Hardware Address). Untuk Ethernet dan Toke Ring, Hardware Address Length di set 6. Sedangkan untuk Frame Relay di set 2.
·Protocol Address Length
Terdiri dari 1 byte yang menunjukkan panjang bit protocol address baik dari sisi pengirim (Sender Protocol Address) maupun dari sisi penerima (Target Protocol Address). Untuk Ip protocol di set 4.
·Operation
Terdiri dari 2 byte yang menunjukkan type dari ARP frames. Tabel dibawah ini type operasi ARP yang sering digunakan
Operation Value Type of ARP Frame
1 ARP Request
2 ARP Reply
8 Inverse ARP Request
9 Inverse ARP Reply
Untuk lebih lengkapnya anda dapat mengunjungi :
http://www.isi.edu/in-notes/iana/assignments/arp-parameters
·Sender Hardware Address (SHA)
Berisi Data Link Layer address dari ARP frame pengirim. Untuk Ethernet dan Token Ring, SHA berisi Mac Address dari node pengirim.
·Sender Protocol Address (SPA)
Berisi Protocol address dari ARP frame pengirim. Untuk Internet Protocol, SPA berisi IP address dari node pengirim.
·Target Hardware Address (THA)
Berisi Data Link Layer address dari ARP frame tujuann (target). Untuk Ethernet dan Token Ring, THA diset 0x00-00-00-00-00-00 untuk ARP Request Frame serta THA diset Mac Address Requester untuk ARP ReplyFrame.
·Target Protocol Address (TPA)
Berisi Protocol address dari ARP frame tujuann (target). Untuk Internet Protocol, TPA diset IP Address untuk ARP Request Frame serta TPA diset IP Address untuk ARP ReplyFrame.
Sebagai contoh kita lihat gambar dibawah ini :
Node ! dengan IP Address 192.168.22.221 dan Mac Address 00-60-97-a1-7c-ce akan mengirim IP paket (misal : ping) ke node dengan IP address 192.168.22.2 dan mac address 00-02-b3-b0-41-d8. Node 1 mengirim ARP request ke Node 2 melalui Ethernet interface. Maka ARP Request yang dikirim dari node 1 ke Node 2 adalah :
Frame: Base frame properties
ETHERNET: ETYPE = 0x0806 : Protocol = ARP: Address Resolution Protocol
+ ETHERNET: Destination address : FFFFFFFFFFFF
+ ETHERNET: Source address : 006097a17cce
ETHERNET: Frame Length : 42 (0x002A)
ETHERNET: Ethernet Type : 0x0806 (ARP: Address Resolution Protocol)
ETHERNET: Ethernet Data: Number of data bytes remaining = 28 (0x001C)
ARP_RARP: ARP: Request, Target IP: 192.168.22.2
ARP_RARP: Hardware Type = Ethernet (10Mb)
ARP_RARP: Protocol Type = 2048 (0x800)
ARP_RARP: Hardware Address Length = 6 (0x6)
ARP_RARP: Protocol Address Length = 4 (0x4)
ARP_RARP: Opcode = Request
ARP_RARP: Sender’s Hardware Address = 006097a17cce
ARP_RARP: Sender’s Protocol Address = 192.168.22.221
ARP_RARP: Target’s Hardware Address = 000000000000
ARP_RARP: Target’s Protocol Address = 192.168.22.2
Karena ada ARP Request Frame dari Node 1 maka Node 2 mengecek SPA dari ARP cache nya sendiri jika ada SPA baru maka Node 2 akan mengupdate Mac Address dalam ARP cachenya dengan nilai SHA. Cek Arp cache pada node 2 dengan perintah arp.
C:\>arp -a
Interface: 192.168.22.2 on Interface 0x1000003
Internet Address Physical Address Type
192.168.22.221 00-60-97-a1-7c-ce dynamic
Setelah mengupdate ARP cache nya dengan nilai SPA dan SHA Node 2 mengirim ARP Reply ke Node1.
Frame: Base frame properties
ETHERNET: ETYPE = 0x0806 : Protocol = ARP: Address Resolution Protocol
+ ETHERNET: Destination address : 006097a17cce
+ ETHERNET: Source address : 0002b3b041d8
ETHERNET: Frame Length : 60 (0x003C)
ETHERNET: Ethernet Type : 0x0806 (ARP: Address Resolution Protocol)
ETHERNET: Ethernet Data: Number of data bytes remaining = 46 (0x002E)
ARP_RARP: ARP: Reply, Target IP: 192.168.22.221 Target Hdwr Addr: 006097a17cce
ARP_RARP: Hardware Type = Ethernet (10Mb)
ARP_RARP: Protocol Type = 2048 (0x800)
ARP_RARP: Hardware Address Length = 6 (0x6)
ARP_RARP: Protocol Address Length = 4 (0x4)
ARP_RARP: Opcode = Reply
ARP_RARP: Sender’s Hardware Address = 0002b3b041d8
ARP_RARP: Sender’s Protocol Address = 192.168.22.2
ARP_RARP: Target’s Hardware Address = 006097a17cce
ARP_RARP: Target’s Protocol Address = 192.168.22.221
ARP_RARP: Frame Padding
Node 1 akan mengupdate ARP cache dari ARP Reply yang dikirim node 2. Dengan SHA dan SPA dari ARP Reply frame node 2 maka tidaklah terlalu sulit bagi node 1 untuk mengupdate ARP Cache nya. Cek juga dengan perintah arp.
C:\>arp -a
Interface: 192.168.22.221 on Interface 0x1000005
Internet Address Physical Address Type
192.168.22.2 00-02-b3-b0-41-d8 dynamic
Hacking ARP (Spoofing)
Dari gambaran diatas jelas sekali dapat dilihat proses ARP terjadi. Tapi jadi satu pertanyaan besar Apa yang terjadi jika didalam satu network mempunyai Mac Address yang sama? Dalam hal ini penulis tidak mengajarkan hal buruk kepada pembaca, hanya memberi sedikit pengetahuan hal itu bisa dilakukan seorang user di jaringan anda. Bagi seorang Admin Linux trik ini sudah agak basi untuk dibahas tapi kebanyakan kita juga memakai database yang menggunakan platform Windows. Dalam kesempatan kali ini penulis akan membahas hacking ARP dari windows melalui spoofing (penggandaan Mac Address)..
Sebagai contoh kasus, kita akan spoofing mac address PC dengan ip 192.168.22.2 menggunakan Operating System windows 2000 proffesional untuk spoofing. Maka langkah-langkahnya sebagai berikut:
1.Ketahuilah Mac Address PC tujuan
Kirim paket ICMP dengan
C:\>arp -a
Interface: 192.168.22.221 on Interface 0x1000005
Internet Address Physical Address Type
192.168.22.2 00-02-b3-b0-41-d8 dynamic
2.Ketahuilah mac address anda juga
C:\>ipconfig /all
Windows 2000 IP Configuration
Host Name . . . . . . . . . . . . : aris-win
Primary DNS Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Broadcast
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter Local Area Connection 3:
Description . . . . . . . . . . . : TAP-Win32 Adapter
Physical Address. . . . . . . . . : 00-FF-9C-6F-02-4B
Ethernet adapter {F1C00EF1-1864-41DD-A56B-1D0655709039}:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : NOC Extranet Access Adapter
Physical Address. . . . . . . . . : 44-45-53-54-42-00
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 0.0.0.0
Subnet Mask . . . . . . . . . . . : 0.0.0.0
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . :
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : 3Com EtherLink XL 10/100 PCI NIC (3C
905-TX)
Physical Address. . . . . . . . . : 00-60-97-A1-7C-CE
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.22.221
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.22.10
DNS Servers . . . . . . . . . . . : 202.134.0.155
202.134.1.10
NetBIOS over Tcpip. . . . . . . . : Disabled
3.Ubah mac address anda dengan cara :
Start à Setting à Control Panel à Network and Dial-up Connections
Klik kanan Local Area Connection à Properties à Configure
Input mac address pc tujuan 0002b3b041d8 kedalam field value dari Network Address (lihat gambar diatas). Setelah Klik OK dan cek kembali Mac Address anda yang baru dengan perintah yang sama.
C:\>ipconfig /all
Windows 2000 IP Configuration
Host Name . . . . . . . . . . . . : aris-win
Primary DNS Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Broadcast
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter Local Area Connection 3:
Description . . . . . . . . . . . : TAP-Win32 Adapter
Physical Address. . . . . . . . . : 00-FF-9C-6F-02-4B
Ethernet adapter {F1C00EF1-1864-41DD-A56B-1D0655709039}:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : NOC Extranet Access Adapter
Physical Address. . . . . . . . . : 44-45-53-54-42-00
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 0.0.0.0
Subnet Mask . . . . . . . . . . . : 0.0.0.0
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . :
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : 3Com EtherLink XL 10/100 PCI NIC (3C
905-TX)
Physical Address. . . . . . . . . : 00-02-B3-B0-41-D8
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.22.221
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.22.10
DNS Servers . . . . . . . . . . . : 202.134.0.155
202.134.1.10
NetBIOS over Tcpip. . . . . . . . : Disabled
Pengisian field ini akan mengakibatkan nilai dari registry akan berubah. Coba anda cek registry anda dengan perintah
START à RUN à regedt32 àHKEY_LOCAL_MACHINE à SYSTEM à CurrentControlSet à Class à {4D36E972-E325-11CE-BFC1-08002BE10318} à 0000
Nilai registry diatas bertambah dengan Value Name : NetworkAddress, dengan Data Type : REG_SZ, dan String : 0002B3B041D8
4.Kirim paket secara continue ke PC tujuan misalkan dengan command
Pengiriman paket (ARP request) ke IP 192.168.22.2 menyebabkan nilai SHA dan TPA pada ARP Reply sama. Ini membuat ARP cache pada PC dengan IP 192.168.22.2 tidak bisa mengupdate ARP cachenya dan dia tidak bisa mengirim balik ARP Reply (Request Time Out). Coba kita lihat arp cache dari PC dengan IP 192.168.22.2
C:\>arp -a
Interface: 192.168.22.2 on Interface 0x1000003
Internet Address Physical Address Type
192.168.22.221 00-02-b3-b0-41-d8 dynamic
Ini berarti bahwa didalam arp cache computer tersebut terdapat dua mac address yang sama yaitu :
1.IP =192.168.22.2 à Mac=00-02-b3-b0-41-d8 (Ethernet local)
2.IP=192.168.22.221 à Mac=00-02-b3-b0-41-d8
Hal ini menyebabkan PC sibuk dengan mengupdate arp cache yang sama dengan Ethernet localnya sehingga tidak bisa melayani ARP request dari pc lain.
Sekarang kita lihat juga PC dengan IP 192.168.22.221
C:\>arp -a
Interface: 192.168.22.221 on Interface 0x1000005
Internet Address Physical Address Type
192.168.22.2 00-00-00-00-00-00 invalid
Dapat kita simpulkan bahwa ARP cache pada PC ini untuk IP 192.168.22.2 masih sama dengan THA (Target Hardware Address) dan belum mendapat balasan (ARP reply) dari PC target (192.168.22.2)
Anti spoofing (penanganannya)
Banyak diantara kita menanyakan “Mengapa kita memikirkan security sampai layer 2” dan “Siapakah yang memerlukan security sampai level tersebut ?”. Kita tidak bisa membayangkan mengadmin user dengan tempat terpisah pisah (baca lokasi berjauhan) dan kita tidak bisa membatasi level user terlalu ketat karena alasan geografis tersebut.
Penulis akan membahas penanganan mac address spoofing untuk server dengan platform linux dan windows.
1. Linux Server
Pertama-tama yang bisa saya katakan adalah “I LOVE DEBIAN”. System linux sangat handal dalam penanganan ARP. Langkah langkah yang harus ditempuh agar server linux kita aman dari mac-address spoofing adalah :
·Ketahuilah mac-address anda dengan perintah ifconfig –a
root@aris-knoppix:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:02:b3:b0:41:d8
inet addr:192.168.22.221 Bcast:192.168.22.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1358 errors:0 dropped:0 overruns:0 frame:0
TX packets:263 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:1519021 (1.4 MiB) TX bytes:21277 (20.7 KiB)
Interrupt:11 Base address:0xc000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:34 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3665 (3.5 KiB) TX bytes:3665 (3.5 KiB)
·Buat arp static dengan perintah :
root@aris-debian~# arp -s 192.168.22.2
·Jika anda seorang admin maka buat list seluruh ip dan network anda kedalam satu file dengan format :
dan misal simpan di direktori /etc/network/mac_list
·Load file tersebut dengan perintah
root@aris-debian~# arp -f /etc/network/mac_list
·Cara ini masih bisa tembus jika ada mac address dan IP baru yang belum di list kedalam file /etc/network/mac_address. Jika anda masih parnoid dengan cara diatas maka buatlah bash script seperti dibawah ini
#!/bin/sh
arp_do=`arp -a | grep
if [[ -n "$arp_do" ]]
then
arp -d $arp_do
ping -c 3 $arp_do > /dev/null
mac_rem=`arp -a | grep $arp_do | awk '{print$4}'`
# simpan file ketempat yang anda inginkan
echo $arp_do > /APPS/arp/host
echo $mac_rem > /APPS/arp/mac
hostinfo=(`cat /APPS/arp/host`)
macinfo=(`cat /APPS/arp/mac`)
arp -d $hostinfo
arp -s $hostinfo $macinfo
iptables -A INPUT -m mac --mac-source $macinfo -p tcp -j DROP
iptables -A INPUT -p tcp -s $arp_do/32 -j DROP
exit
else
echo ""
fi
Dengan asumsi bahwa mac address anda adalah :
iptables -A INPUT -m mac --mac-source $macinfo -p tcp -j DROP
iptables -A INPUT -p tcp -s $arp_do/32 -j DROP
·Bila perlu buat crontab untuk menjalankan script tersebut secara periodik
·Jika anda menginginkan system ini dijalankan pada saat booting maka buat bash script
#!/bin/sh
arp -f /etc/network/mac_list
arp -s 192.168.22.2 00:02:b3:b0:41:d8 pub
simpan dalam /etc/init.d/mac_address dan lakukan perintah :
root@aris-debian~# update -rc.d -f mac_address defaults
(untuk debian dan knoppix)
atau
root@aris-rh~# chkconfig –add mac_address
(untuk redhat)
2. Windows
Untuk platform ini penangannanya cukup sulit. Hal ini dikarenakan arp static yang dibuat oleh windows tidak benar benar static. Meskipun kita sudah membuat arp static tapi masih bisa ditembus dengan spoofing mac address.
C:\>arp –s 192.168.22.221 00-60-97-a1-7c-ce
C:\>arp -a
Interface: 192.168.22.221 on Interface 0x1000005
Internet Address Physical Address Type
192.168.22.2 00-02-b3-b0-41-d8 dynamic
192.168.22.213 00-50-ba-87-82-42 static
192.168.22.221 00-60-97-a1-7c-ce static
Maka dari itu jika menggunakan platform ini penulis hanya bisa memberikan script yang mengingatkan bahwa server telah dispoof oleh PC lain. Dalam hal ini script yang dibuat oleh penulis dalam bentuk batch file.
@ECHO OFF
:: Save initial environment
SETLOCAL
ECHO.
FOR /F "tokens=1 delims= " %%A IN ('ARP -a ^| FIND "00-02-b3-b0-41-d8"') DO SET IP=%%A
IF [%IP%]==[] (
GOTO:EOF
) ELSE (
GOTO:RUN
)
:RUN
FOR /F "tokens=1* delims= " %%A IN ('NBTSTAT -a %IP% ^| FIND "<20>"') DO IF NOT [%%A]==[] SET netbiosname=%%A
FOR /F "tokens=1* delims= " %%A IN ('NBTSTAT -a %IP% ^| FIND "<00> GROUP"') DO IF NOT [%%A]==[] SET domain=%%A
net send 192.168.22.213 "
:EOF
ENDLOCAL
Dengan asumsi 00-02-b3-b0-41-d8 adalah mac address server dan IP 192.168.22.213 adalah PC anda (admin) maka jika ada mac address yang sama server akan mengirim message ke PC admin. Untuk perintah nbtstat secara default sudah aktif pada server anda dan jika belum aktif maka configure server dengan mengaktifkan Enable NetBIOS over TCP/IP pada network configuration.
Setelah itu simpan script dengan nama check_mac.bat dan running program tersebut secara periodik jika perlu memakai schedule task.