Showing posts with label security. Show all posts
Showing posts with label security. Show all posts

Wednesday, November 19, 2008

Standar Identity Management (IdM) untuk NGN

Pada era NGN dimana teknologi informasi dan telekomunikasi menjadi konvergen, indentity management (IdM) menjadi sangat penting. Pengguna harus dimudahkan dalam proses authentication dan authorization pada setiap jaringan akses atau layanan operator atau layanan dari organisi mananapun yang bisa diakses dari divas yang terhubung ke jaringan operator. Oleh karena itu ITU-T mulai bekerja untuk membuat standarisasi untuk identity management yang baru untuk memenuhi kebutuhan saat ini maupun masa mendatang. Pekerjaan ini dilakukan oleh Study Group 17, yang selain bekerja untuk membuat riset untuk IdM, juga melakukan riset untuk telecommunication security serta languages and description technique.

Progress dari pekerjaan pembuatan standard ini telah menghasilkan beberapa draft yang berhubungan dengan requirement, framework, capabilities dari Identity Management pada bulan September 2008 lalu. Sayangnya dokumen-dokumen tersebut hanya bisa diakses oleh pengguna terdaftar yang hanya bisa didapat oleh orang-orang yang bekerja di organisasi atau perusahaan anggota ITU-T. :-(

Saat ini sebenarnya beberapa organisasi atau perusahaan seperti OASIS, Liberty Alliance Project, Microsoft, IBM dan lain-lain telah membuat standar untuk IdM baik pada level konsep atau framework maupun protokol. Jadi kemungkinan ITU-T akan mengadopsi standar yang sudah ada ;-)

Tuesday, May 27, 2008

DNS Spoofing

Ketika kita akan melakukan koneksi ke suatu host/server dengan memberikan nama host (hostname), misalnya anda browsing ke http://www.google.com, komputer yang kita gunakan akan melakukan perubahan (translasi) dari nama domain www.google.com ke IP address.

Sebuah jaringan TCP/IP menggunakan alamat IP sebagai pengenal suatu host, alamat IP tersebut disimpan dalam tiap paket IP yang membawa data/informasi. Dengan adanya IP maka switch/router dapat menentukan jalur kemana paket tersebut harus dikirim.

Nama domain digunakan untuk mempermudah kita dalam mengingat suatu hostname. Proses translasi dilakukan oleh Domain Name System yaitu sebuah database terditribusi yang digunakan aplikasi TCP/IP untuk memetakan antara hostname dengan IP address. Proses tersebut biasa disebut resolve dan program yang melakan resolve domain name disebut resolver.

Konsep DNS dispesifikasikan pada RFC 1034, sedangkan implementasinya dijelaskan pada RFC 1035

Sebuah hostname biasanya direpresentasikan dalam sebuah fully qualified domain name (FQDN) yang memiliki bentuk/format sbb:

<domain>.<top level domain>

Hostname seperti ejlp.blogspot.com, google.com, students.xyz.ac.id adalah contoh-contoh FQDN.

Top level domain

TOp level domain adalah domain yang paling tinggi yang berada dalam struktur pohon DNS. Ada beberapa macam top level domain, yaitu:

  • arpa merupakan domain khusus yang diperuntukan untuk mentranslasi dari IP address ke hostname
  • organizational domain misalnya com, org, net, edu, gov, mil
  • country/geographical domain misalnya id untuk indonesia, uk untuk ingris, de untuk jerman

Protokol DNS

Proses resolving suatu domain name dilakukan dengan cara melihat cache database lokal atau jika tidak ada, resolver akan menanyakan ke sebuah DNS server yang telah ditentukan.

DNS protocol digunakan untuk keperluan manajemen DNS. Sebuah DNS message memiliki header yang panjangnya tetap 12 bit kemudian diikuti oleh varibel yang panjangnya tidak tetap. Dibawah ini adalah format dari sebuah DNS message:

+----------------+
| IP (20 bytes) |
+----------------+
| UDP (8 bytes) |
+----------------+
| DNS header |
+----------------+
| question |
+----------------+
| answer |
+----------------+
| answer |
+----------------+

DNS message memiliki header yang panjangnya tetap 12 bit kemudian diikuti oleh varibel yang panjangnya tidak tetap.

Header terdiri dari

- ID atau identification yang diset oleh client dan dikembalikan dengan nilai yang sama oleh server, bagian ini dipergunakan untuk mengetahui pasangan request dan response

- flags yang terdiri dari 16 bit


+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
| QR | opcode | AA | TC | RD | RA | zero | rcode |
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+
<----> = 1 bit



  • QR (query-response), 0 berarti query, 1 berarti response
  • opcode 4 bit 0 standar query, 1 inverse query, 2 server status request
  • AA
  • TC, bit yang menunjukan jika jika paket dipecah (truncated) karena data yang dibawa lebih dari 512 byte.
  • RD, bit yang beraarti recursion desired
  • RA bit yang beraarti recursion available
  • rcode (return code) 0 berarti no error, 3 berarti name error yang berarti hostname yang dimaksud tidak ada

DNS query dan answer biasanya menggunakan protokol UDP (RFC-768), tetapi dapat juga menggunakan protokol TCP. Protokol TCP digunakan jika resolver mendapatkan jawaban yang tidak dapat dikirim dengan sebuah paket UDP karena panjang jawaban lebih dari 512 bytes.

Proses query pertama kali dilakukan dengan menggunakan UDP. Jika paket lebih dari 512, name server akan memberikan jawaban dengan flag TC yang bernilai 1 kemudian klien akan melakukan query lagi dengan menggunakan TCP. Name server kemudian akan memberikan answer dengan paket TCP yang memiliki feature fragmentasi paket sehingga data yang lebih besar dari 512 bytes bisa dikirimkan ke resolver.

List query type dapat dilihat pada tabel berikut:


Nama Nilai numerik Query Response Deskripsi
------- ------------- ------ --------- -------------------------
A 1 Y Y IP address
NS 2 Y Y Name server
CNAME 5 Y Y Canonical name
PTR 12 Y Y Pointer record
HINFO 13 Y Y Host info
MX 15 Y Y Mail exchange record
AXFR 252 Y - request zone transfer
ANY 255 Y - request semua record
----------------------------------------------------------------


Klien melakukan koneksi ke name server atau DNS server pada port 53

Contoh query & reponse DNS yang diambil menggunakan tool wireshark (www.wireshark.com):

--- Query ----------------------------------------------------------------------
Frame 15 (82 bytes on wire, 82 bytes captured)
Ethernet II, Src: Usi_e2:a1:78 (00:16:41:e2:a1:78), Dst: Cisco_e3:e4:00 (00:16:9c:e3:e4:00)
Internet Protocol, Src: 192.1.1.1 (192.1.1.1), Dst: 192.1.1.17 (192.1.1.17)
User Datagram Protocol, Src Port: 4038 (4038), Dst Port: domain (53)
Source port: 4038 (4038)
Destination port: domain (53)
Length: 48
Checksum: 0x6cbc [correct]
Domain Name System (query)
[Response In: 18]
Transaction ID: 0x4e5c
Flags: 0x0100 (Standard query)
0... .... .... .... = Response: Message is a query
.000 0... .... .... = Opcode: Standard query (0)
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... .0.. .... = Z: reserved (0)
.... .... ...0 .... = Non-authenticated data OK: Non-authenticated data is unacceptable
Questions: 1
Answer RRs: 0
Authority RRs: 0
Additional RRs: 0
Queries
halo.halo.com: type A, class IN
Name: halo.halo.com
Type: A (Host address)
Class: IN (0x0001)
--------------------------------------------------------------------------------

--- Response -------------------------------------------------------------------
Frame 16 (132 bytes on wire, 132 bytes captured)
Ethernet II, Src: Cisco_e3:e4:00 (00:16:9c:e3:e4:00), Dst: Usi_e2:a1:78 (00:16:41:e2:a1:78)
Internet Protocol, Src: 10.4.3.7 (10.4.3.7), Dst: 10.1.1.39 (10.1.1.39)
User Datagram Protocol, Src Port: domain (53), Dst Port: 4041 (4041)
Source port: domain (53)
Destination port: 4041 (4041)
Length: 98
Checksum: 0x6677 [correct]
Domain Name System (response)
[Request In: 33]
[Time: -3.000686000 seconds]
Transaction ID: 0x4e5c
Flags: 0x8183 (Standard query response, No such name)
1... .... .... .... = Response: Message is a response
.000 0... .... .... = Opcode: Standard query (0)
.... .0.. .... .... = Authoritative: Server is not an authority for domain
.... ..0. .... .... = Truncated: Message is not truncated
.... ...1 .... .... = Recursion desired: Do query recursively
.... .... 1... .... = Recursion available: Server can do recursive queries
.... .... .0.. .... = Z: reserved (0)
.... .... ..0. .... = Answer authenticated: Answer/authority portion was not authenticated by the server
.... .... .... 0011 = Reply code: No such name (3)
Questions: 1
Answer RRs: 0
Authority RRs: 1
Additional RRs: 0
Queries
halo.halo.com: type A, class IN
Name: halo.halo.com
Type: A (Host address)
Class: IN (0x0001)
Authoritative nameservers
halo.com: type SOA, class IN, mname ns.halo.com
Name: halo.com
Type: SOA (Start of zone of authority)
Class: IN (0x0001)
Time to live: 40 minutes, 57 seconds
Data length: 38
Primary name server: ns.halo.com
Responsible authority's mailbox: hostmaster.halo.com
Serial number: 2008032501
Refresh interval: 2 hours
Retry interval: 1 hour
Expiration limit: 14 days
Minimum TTL: 1 hour
--------------------------------------------------------------------------------


DNS cache poisoning

DNS memiliki sebuah mekanisme caching yaitu penyimpanan sementara mapping antara hostname dan IP address setelah sebuah name server (NS) menerima informasi mapping tersebut dari NS lain sehingga

Data yang salah dari sebuah host penyerang (attacker) yang berperan remote Name Server (NS) disimpan pada DNS cache Name Server korban. Untuk melakukan penyerangan ini diperlukan trik menebak dari beberapa field yang ada pada paket DNS yaitu:

  • Menebak destination port (65,535 kemungkinan)
  • Menebak DNS transaction ID (identification) yang ada pada header paket DNS (65,535 kemungkinan)
  • Menebak hostname/domain name yang yang di-query oleh klien

Karena implementasi yang kurang baik pada resolver, port dan transaction ID yang dibuat oleh klien dapat juga dengan mudah diprediksi oleh penyerang. Hal ini yang terjadi pada celah keamanan DNS pada Windows. Penggunaan port dan transaction ID yang tidak random membuat DNS spoofing lebih mudah dilakukan apalagi jika penyerang dapat melakukan penyadapan pada jaringan antara klien dan DNS server.

Contoh skenario penyerangan ini adalah sebagai berikut:

1. Seorang penyerang membuat halaman website tipuan yang mirip dengan website www.abc-bank.com untuk dapat memperoleh username dan password nasabah.
Website tipuan tersebut disimpan dalam server dengan IP 202.2.2.1

2. Maksud si penyerang adalah jika ada sebuah host yang menggunakan ns.target.com sebagai DNS servernya akan mengakses http://www.abc-bank.com maka host tersebut akan melakukan request ke IP 202.2.2.1 yang berisi website tipuan dari abc-bank.com. Karena penyerang memiliki akses ke network halo.com dan dapat menyadap paket yang menuju ke sebuah name server halo.com yaitu ns.halo.com maka penyerang melakukan DNS query type A yang menanyakan IP address dari xxx.halo.com ke name server yang akan diserang misalnya ns.target.com.


3. Host xxx.halo.com sebenarnya tidak ada, penyerang hanya mengharapkan ns.target.com akan menanyakan ke ns.halo.com sehingga penyerang dapat menyadap serta melihat detail dari paket DNS query. Dengan melihat detail dari paket DNS query yang disadap dari ns.target.com ke ns.halo.com maka penyerang dapat memprediksi transaction ID yang akan dikirimkan oleh ns.target.com berikutnya.

4. Kemudian penyerang mengirimkan paket DNS query type A ke ns.target.com untuk host www.abc-bank.com. Penyerang mengharapkan ns.target.com akan menanyakan ke name server dari abc-bank.com sehingga penyerang dapat mengirimkan pake DNS reply tipuan (spoofed) yang menginformasikan bahwa www.abc-bank.com memiliki IP address 202.2.2.1

5. Jika transaction ID dari DNS reply tipuan sama dengan transaction ID dari DNS query yang dikirimkan dari ns.target.com ke name server abc-bank.com benar, dan packet reply tersebut diterima ns.target.com sebelum paket jawaban sebenernya (dari name server abc-bank.com) datang maka ns.target.com akan meng-update database cache-nya sehingga www.abc-bank.com memiliki IP address 202.2.2.1

6. Sekarang, siapa saja orang yang menggunakan ns.target.com sebagai DNS servernya maka ketika akan browsing ke http://www.abc-bank.com akan diarahkan ke website tipuan yang berada di 202.2.2.1


Tentu saja proses tersebut perlu dilakukan dengan sebuah tool sehingga proses bisa dilakukan dengan cepat dan berulang-ulang sehingga kemugkingn agar penyerangan sukses menjadi lebih besar.



DNS ID Spoofing

Dengan cara yang sama yaitu melakukan penebakan pada transaction ID, penyerangan juga dapat langsung ditargetkan ke sebuah client (bukan name server). Biasanya sebuah client (target yang akan diserang) akan melakukan DNS query ke DNS server yang diset pada level sistem operasi. Dengan membuat paket DNS reply tipuan, seorang peneyerang dapat membuat client mengarah pada alamat IP yang salah dari suatu hostname tertentu.


Contoh skenario penyerangan ini adalah sebagai berikut

1. Penyerang mengetahui bahwa temannya sebagai target biasanya melakukan akses ke www.abc-bank.com dan target menggunakan IP 207.1.1.7

2. Penyerang mengirimkan DNS query reply terus menerus dengan transaction ID tertentu yang mengarahkan www.abc-bank.com ke IP address milik penyerang yaitu 202.2.2.1

3. Pada saat target akan melaukan brwosing ke http://www.abc-bank.com browser akan memerintahkan resolver untuk melakukan query DNS, jika resolver tidak menemukan cache lokal maka ia akan mengirimkan paket DNS query type A ke DNS server.

4. Jika sebelum DNS server yang digunakan memberikan respon (yang menjawab query IP address dari www.abc-bank.com) target telah menerima paket DNS reply tipuan dari penyerang dan kebetulan transaction ID-nya match maka browser akan mengarahkan http://www.abc-bank.com ke IP yang salah yaitu 202.2.2.1

5. Penyerangan ini dapat lebih mudah dilakukan jika penyerang dan target berada dalam satu network sedemikian sehingga penyerang dapat menyadap paket yang dikirim dari host target sehingga penyerang tau transaction ID yang dikirim oleh target.






Tuesday, March 18, 2008

Memanfatkan kanal tersembunyi ICMP: backdoor

Melanjutkan posting Memanfatkan kanal tersembunyi ICMP, dibawah ini saya jelaskan secara singkat tentang penggunaan kanal tersembunyi pada ICMP untuk backdoor pada sebuah host.

ICMP backdoor

ICMP backdoor menggunakan prinsip yang sama dengan ICMP tunneling yaitu memanfaatkan covert channel dari paket Echo Request dan Echo Reply. Pada ICMP backdoor, ICMP digunakan untuk komunikasi antara client dengan server. Program server biasanya dapat berinteraksi langsung dengan command shell sehingga client dapat memberikan perintah ke server. Perintah dari client dikirimkan dengan paket ICMP Echo Request ke server untuk kemudian server mengeksekusi perintah dan mengirimkan hasilnya (output) ke client dengan ICMP Echo Reply.


___________________________
| | ______________
| +-------+ +--------+ | | Client |
| | Shell |<----| Server |<====ICMP===>| Application |
| | |---->| Daemon | | |______________|
| +-------+ +--------+ |
|___________________________|


Tools yang paling awal dibuat untuk ICMP backdoor ini adalah Loki yang idenya dipublikasikan tahun 1996 dan codenya dirilis ke publik September 1997. Tulisan J. Christian Smith tentang covert shell memberikan beberapa list yang cukup banyak tentang tool untuk backdoor jenis ini. Anda dapat mencari tools ICMP backdoor juga di website PacketStorm



Cara paling efektif untuk menghindari ICMP tunneling dan ICMP backdoor adalah memblok paket ICMP di firewall atau di host yang bersangkutan atau hanya pada saat yang diperlukan dan dibatasi pada host yang terpercaya saja.

Friday, March 14, 2008

Memanfatkan kanal tersembunyi ICMP

Kita mungkin sudah sering menggunakan ping sebagai alat untuk mengetes hidup atau tidaknya sebuah host atau untuk mengetahui berapa lama suatu paket sampai pada host tujuan. Ping sebenarnya merupakan perintah untuk mengirimkan paket ICMP. Paket ICMP echo request akan diterima oleh host tujuan untuk kemudian dibalas dengan paket ICMP lain (echo reply) ke host pengirim.

Jika kita perhatikan perintah ping di sistem operasi Windows, kita dapat menentukan besarnya buffer pengiriman yaitu dengan opsi "-l" misalnya

ping -l 20000 202.0.0.1

Paket ICMP yang dikirim dari perintah tersebut akan membawa data tidak penting, biasanya hanya berupa karakter "abcdefgh..." yang berulang-ulang. Data yang sama tersebut kan dikirim kembali dari host tujuan dalam paket jawaban (reply). Pengiriman dan pegembalian data dalam paket ICMP inilah yang biasa digunakan oleh orang untuk transaksi data tersembunyi. Transaksi paket data ini bisa digunakan jika ICMP tidak diblok oleh firewall, dan biasanya memang tidak. Transaksi bisa digunakan untuk melakukan tunneling dari paket ICMP ke paket TCP untuk mendapatkan akses internet jika paket TCP tertentu diblok sedangkan ICMP tidak. Selain itu, cara ini bisa juga untuk mengakses backdoor pada suatu host. Kedua cara tersebut akan dibahasa di artikel ini.

Format paket/message dari ICMP dibahas pada RFC 792 Internet Control Message Protocol. ICMP memiliki beberapa macam message format, yaitu

- Destination Unreachable Message
- Time Exceeded Message
- Parameter Problem Message
- Source Quench Message
- Redirect Message
- Echo or Echo Reply Message
- Timestamp or Timestamp Reply Message
- Information Request or Information Reply Message


Saya akan bahas mengenai message Echo atau Echo Reply yang memiliki bagian data yang bisa diisi oleh data apapun. Field data tersebut sebenarnya digunakan untuk test, saat kita ingin melakukan test pengiriman packet dengan besar packet yang kita tentukan. Field inilah yang tersebut yang dapat digunakan untuk mengirimkan informasi (real data) sehingga sering disebut sebagai kanal tersembunyi (covert channel).

Fungsi dari message Echo atau Echo Reply telah dijelaskan di paragraf awal, sekarang kita lihat bagaimana aliran dari message ini.

host A Gateway/router host X
| | |
|---Echo request-->| |
| |---Echo request-->|
| |<--Echo reply-----|
|<--Echo reply-----| |
| | |


Beberapa flow ICMP dapat dilihat di sini.

Format message dari Echo atau Echo Reply berikut adalah sebagai berikut:

+---------------------------------------------------------------+
| IP header (160 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Code | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-

Type, code dan checksum adalah field yang umum (selalu ada) dalam semua jenis ICMP message.

Type menunjukan jenis tipe message, misalnya type=8 berarti Echo request dan type=0 bearti Echo reply. Dibawah ini adalah tabel dari nilai field type

0 | Echo Reply
3 | Destination Unreachable
4 | Source Quench
5 | Redirect
8 | Echo
11 | Time Exceeded
12 | Parameter Problem
13 | Timestamp
14 | Timestamp Reply
15 | Information Request
16 | Information Reply

Code menunjukan informasi tambahan yang berhubungan dengan type, misalnya untuk type = 3, dibawah ini adalah nilai-nilai untuk code dan penjelasannya

0 | Destination network unreachable
1 | Destination host unreachable
2 | Destination protocol unreachable
3 | Destination port unreachable
4 | Fragmentation required, and DF set
5 | Source route failed
6 | Destination network unknown
7 | Destination host unknown
8 | Source host isolated
9 | Network administratively prohibited
10 | Host administratively prohibited
11 | Network unreachable for TOS
12 | Host unreachable for TOS
13 | Communication administratively prohibited


Checksumberisi nilai untuk keperluan error checking. Nilai ini didapat dari penjumlahan antara ICMP header dan data.
Identifier berisi nilai sequence untuk menunjukan hubungan antara satu transaksi Echo Request-Echo Reply. Nilai identifier dari echo reply harus sama dengan nilai identifier pada echo request.

Sequence Number berisi nilai yang berfungsi sama dengan Identifier.

Data berisi data apa saja yang harus dikembalikan dengan sama oleh Echo Reply. Jika data terlalu besar maka IP layer akan melakukan fragmentasi paket pada data ini.

Dibawah ini contoh sebuah hex dump data dari paket ICMP Echo request dan Echo Reply

Echo Request:

08 00 d6 4e 04 00 73 0d 61 62 63 64 65 66 67 68 ...N..s.abcdefgh
69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 ijklmnopqrstuvwa
62 63 64 65 66 67 68 69 bcdefghi

Echo Reply:

00 00 de 4e 04 00 73 0d 61 62 63 64 65 66 67 68 ...N..s.abcdefgh
69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 61 ijklmnopqrstuvwa
62 63 64 65 66 67 68 69 bcdefghi


Fungsi dasar ICMP dapat dibaca di RFC 1122 Requirements for Internet Hosts – Communication Layers, namum beberapa RFC mjuga membahas mengenai penggunaan ICMP seperti

- RFC 896 Source Quench.
- RFC 950 Address Mask Extensions.
- RFC 1191 Path MTU Discovery.
- RFC 1256 Router Discovery.
- RFC 1349 Type of Service in the Internet Protocol Suite.

ICMP tunneling.

Dengan memanfaatkan data yang dibawa Echo Request & Echo Response, sebuah program tunneling bisa dibuat untuk menkonversi data dari pake ICMP ke paket TCP. Cara ini sering disebut ICMP tunneling atau ICMP proxy. Tunneling ini berguna untuk mendapatkan akses internet jika paket TCP diblok sedangkan paket ICMP tidak. Arsitektur dari ICMP tunneling digambarkan seperti ini


.................
/ INTERNET /
+---------+ / / +---------+
| host A |<-----ICMP----/----, ,-------/------TCP--->| host B |
+---------+ / | | / +---------+
/ | | /
........|..|.....
| |
v v
+---------+
| host X |
+---------+

Diatas meruapakan sebuah contoh arsitektur dimana host A menginginkan data dari host B, misalnya host A adalah tempat anda berada dan ingin melakukan browsing (koneksi HTTP) ke sebuah website (host B).

Kita memerlukan sebuah host X yang melakukan tunneling yang berfungsi sebagai proxy. Host X lah yang memiliki program ICMP tunneling yang akan menerima request dari client yaitu host A untuk kemudian dikirimkan ke host tujuan, misalnya host B. Data reply dari host B kemudian akan dikonversi ke ICMP Echo reply oleh host X dan dikembalikan ke host A.

Cara seperti ini dapat dilakukan dengan menjalankan program proxy di host X dan program client di host A. Salah satu aplikasi (tool) yang bisa digunakan untuk ICMP tunneling ini adalah PingTunnel yang bisa didownload secara gratis.

Sekian dulu tulisan ini, pembahasan berikutnya yaitu ICMP backdoor yang juga menggunakan konsep yang sama yaitu ICMP covert channel akan dibahas pada posting lain.

Tuesday, February 26, 2008

Serangan TCP SYN flood

Proses sebuah koneksi TCP client-server dapat digambarkan sbb:

A Target
| |
|-------SYN------>|
| |
|<----SYN-ACK-----|
| |
|-------ACK------>|
| |

Proses ini adalah proses standar untuk koneksi ke sebuah service yang berada di server oleh sebuah client dan biasa disebut 3-way handshake.

SYN flood attack adalah serangan dengan cara mengirimkan paket SYN sebanyak mungkin ke target tanpa mengirimkan paket ACK,sehingga target tidak dapat lagi memberikan layanan atau menerima request dari client lain. Serangan seperti ini biasanya dilakukan pada layanan-layanan terbuka seperti layanan web/HTTP, FTP.

Proses serangan ini dapat digambarkan sbb:

A Target B
| | |
|-------SYN------>| |
| |----SYN-ACK----->|
| | |
|-------SYN------>| |
| |----SYN-ACK----->|
| | |



Host A membuat packet TCP SYN dengan source address yang telah dimanipulasi yaitu bukan alamat IP host A tetapi alamat IP lain, misalnya host B. Pembuatan paket palsu dengan menubah alamat pengirim disebut address spoofing atau IP spoofing.

Target menerima paket SYN dan kemudian mengirimkan paket SYN-ACK ke host yang tertera pada pake SYN yang diterima, yaitu ke host B. Sementara itu target akan menyimpan request dari A dalam buffer (queue) untuk kemudian diproses jika target menerima ACK dari host A.

Karena target tidak menerimana ACK yang disebabkan SYN-ACK tidak dikirim ke host yang mengirimkannya, maka target akan menunggu hingga time out untuk melepas buffer yang digunakan untuk menyimpan request service dari host A.


Dengan mengulangi proses diatas berkali-kali secara cepat, target akan mengalami kondisi dimana buffer penuh (full) sehingga untuk request service berikutnya, target tidak akan mengirimkan SYN-ACK yang berarti layanan mati itu lah sebabnya serangan seperti ini disebut Denial of Service attack.

Ide serangan ini sangat sederhana dan membuat code untuk serangan seperti ini juga sangat mudah, dengan program C menggunakan library standar kita bisa membuat program syn flood tidak lebih dari 200 baris.

Followers