Pages

Subscribe:

Wednesday, October 14, 2009

Hack ARP (Address Resolution Protocol) dan penanganannya

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 PING dan lihat ARP cache 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

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:

Media State . . . . . . . . . . . : Cable Disconnected

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:

Media State . . . . . . . . . . . : Cable Disconnected

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

PING 192.168.22.2 -t

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 00:02:b3:b0:41:d8 pub

·Jika anda seorang admin maka buat list seluruh ip dan network anda kedalam satu file dengan format :

00:01:03:40:86:c6 192.168.22.213

00:20:ed:54:f7:fc 192.168.22.202

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 00:02:b3:B0:41:D8 | awk '{print$2}' | sed 's/(//g' | sed 's/)//g'`

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 : 00:02:b3:b0:41:d8, maka script ini akan mengecek apakah ada di arp cache yang mempunyai value sama dengan variabel diatas. Jika ada maka akan dibuat arp static (arp -s) dengan value IP dan mac address penyusup. Dan untuk memberi pelajaran bagi penyusup buat rule iptables dengan :

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 "Ada yang mencoba spoof mac address suspected : IP=%IP% Komputer Name:%netbiosname% Domain:%domain%" > null

: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.

0 comments:

Post a Comment