در راستای معرفی و واشکافی حملات DDoS ؛ امروز قصد داریم به بررسی حمله TCP ACK Flood بپردازیم؛ این حمله بخشی از یک اتصال TCP به حساب می آید.
معمولا در یک اتصال TCP سه مرحله داریم در معرفی حملات HTTP Flood آنها را توضیح داده ایم :
اول کلاینت یک بسته SYN به سرور می فرستد.
دوم سرور یک بسته SYN ACK به کلاینت می فرستد.
سوم کلاینت یک بسته ACK به سرور می فرستد.
این مراحل با اصطلاح three-way handshake نیز شناخته می شود.
یک حمله ACK Flood شامل یک دسته کامل از بسته های TCP به همراه بیت ACK فعال بر روی آن است. این نوع از حمله دارای تفاوت هایی در مقایسه با SYN flood است.
اول به شما نشان می دهیم که لاگ یک حمله ACK Flood به چه صورت است ؛ در لاگ زیر یک حمله بر روی آی پی فرضی 10.100.101.102 و پورت 80 بر روی انجام است.
[.] در اینجا به معنی یک پکت TCP است.
20:02:48.983378 IP (tos 0x0, ttl 63, id 32488, offset 0, flags [none], proto TCP (6), length 40) 222.83.14.144.1040 > 10.100.101.102.80: Flags [.], cksum 0xb469 (correct), seq 751014783, ack 2048786021, win 512, length 0 0x0000: 4500 0028 7ee8 0000 3f06 40a3 4814 160e E..(~...?.@.H... 0x0010: 4814 160f 0410 0050 2cc3 937f 7a1d fe65 H......P,...z..e 0x0020: 5010 0200 b469 0000 0000 0000 0000 P....i........ 20:02:49.983439 IP (tos 0x0, ttl 63, id 43793, offset 0, flags [none], proto TCP (6), length 40) 114.80.136.184.1041 > 10.100.101.102.80: Flags [.], cksum 0x1c45 (correct), seq 135907827, ack 760402314, win 512, length 0 0x0000: 4500 0028 ab11 0000 3f06 147a 4814 160e E..(....?..zH... 0x0010: 4814 160f 0411 0050 0819 c9f3 2d52 d18a H......P....-R.. 0x0020: 5010 0200 1c45 0000 0000 0000 0000 P....E........ 20:02:50.983479 IP (tos 0x0, ttl 63, id 44213, offset 0, flags [none], proto TCP (6), length 40) 223.4.31.169.1042 > 10.100.101.102.80: Flags [.], cksum 0x3320 (correct), seq 227681609, ack 1655186570, win 512, length 0 0x0000: 4500 0028 acb5 0000 3f06 12d6 4814 160e E..(....?...H... 0x0010: 4814 160f 0412 0050 0d92 2549 62a8 248a H......P..%Ib.$. 0x0020: 5010 0200 3320 0000 0000 0000 0000 P...3......... 20:02:51.983525 IP (tos 0x0, ttl 63, id 52759, offset 0, flags [none], proto TCP (6), length 40) 202.116.160.1043 > 10.100.101.102.80: Flags [.], cksum 0x5f9f (correct), seq 379954490, ack 794534482, win 512, length 0 0x0000: 4500 0028 ce17 0000 3f06 f173 4814 160e E..(....?..sH... 0x0010: 4814 160f 0413 0050 16a5 a53a 2f5b a252 H......P...:/[.R 0x0020: 5010 0200 5f9f 0000 0000 0000 0000 P..._......... 20:02:52.983569 IP (tos 0x0, ttl 63, id 23290, offset 0, flags [none], proto TCP (6), length 40) 200.27.175.70.1044 > 10.100.101.102.80: Flags [.], cksum 0x8634 (correct), seq 242507686, ack 1779207888, win 512, length 0 0x0000: 4500 0028 5afa 0000 3f06 6491 4814 160e E..(Z...?.d.H... 0x0010: 4814 160f 0414 0050 0e74 5fa6 6a0c 8ed0 H......P.t_.j... 0x0020: 5010 0200 8634 0000 0000 0000 0000 P....4........ 20:02:53.983607 IP (tos 0x0, ttl 63, id 42657, offset 0, flags [none], proto TCP (6), length 40) 219.137.229.214.1045 > 10.100.101.102.80: Flags [.], cksum 0x03ae (correct), seq 984467710, ack 563135552, win 512, length 0 0x0000: 4500 0028 a6a1 0000 3f06 18ea 4814 160e E..(....?...H... 0x0010: 4814 160f 0415 0050 3aad c8fe 2190 c440 H......P:...!..@ 0x0020: 5010 0200 03ae 0000 0000 0000 0000 P.............
جریان ACK Flood
زمانی که یک سرور به یک بسته TCP برخورد می کند؛ فقط زمانی آن را قبول می کند که از قبل یک ارتباط TCP بین ارسال کننده و سرور شکل گرفته باشد.
در اینجا دو سناریوی در خصوص حملات ACK flood وجود دارد:
سناریوی کمتر شایع: مهاجم یک بسته SYN اولیه از آی پی های جعلی ارسال میکند و سرور نیز پاسخ آن را با پکت های SYN ACK ارسال می کند ولی چون آی پی ها جعلی هستند پکت ها به هیچ مقصدی نمی رسند اما مهاجم با محاسبات دقیق و رعایت ترتیب بسته های ACK را دوباره از همان آی پی های جعلی ارسال می کند و سرور فکر می کند که این پاسخ را از کلاینت دریافت کرده است و یک اتصال کاملا مشروع و قانونی با کلاینت هایی ( آی پی های جعلی) برقرار می کند که اصلا وجود خارجی ندارند؛ در این نوع حمله مهاجم با باز نگه داشتن کانکشن های TCP فشار زیادی به سرور می آورد و منابع آن را مورد مصرف قرار می دهد و کارکرد عادی سرور را با مشکل مواجه می کند.
این نوع حمله به دلیل سخت بودن شرایط اجرا آن ؛ کمتر شاهد آن هستیم و در عین حال مهار این حملات بسیار دشوار و مشکل است.
سناریوی بیشتر شایع: در این روش مهاجم بدون هیچ اتصال و کانکشن حتی جعلی؛ اقدام به ارسال بسته های TCP با بیت های ACK فعال می کند.این حمله به دلیل اجرا آسان آن بیشتر شایع بوده و مورد استفاده قرار میگیرد.
برتری سناریوی اول در مقایسه با SYN flood این است که یک اتصال باز می شود و این اتصال به صورت نامحدود می تواند باز بماند که فشار زیادی به سرور وارد می کند اما در SYN flood فقط پکت ها برای شروع یک ارتباط ارسال می شوند و به SYN ACK سرور هیج پاسخی داده نمی شود و یک حالت در انتظار اتصال باقی می ماند که شناسایی آن بسیار آسان تر است و فایروال ها به راحتی می توانند آنها را تشخیص بدهند.
در سناریو دوم سرور تمامی بسته های دریافتی از آی پی های جعلی را رها (Drop)می کند ؛ چرا که هیچ ارتباط TCP بین مبدا و سرور ایجاد نشده است و نخواهد شد ولی سیل انبوهی از این پکت ها منابع سرور را درگیر Drop کردن پکت ها می کند که سرور را از کارکرد عادی خود خارج می کند و ممکن است تا پایان حمله قادر به سرویس دهی به کاربران نباشد.
یکی از قدرت های مخرب ACK Flood در مقایسه با SYN Flood این است که اکثر فایروال ها و سرویس های DDoS Protection در خصوص SYN Flood قدرت تشخیص و مانور بیشتری دارند اما در خصوص ACK نیاز به تشخیص ایجاد یا عدم ایجاد کانکشن می باشد که تا زمان رسیدن پکت ها به سرور اصلی قابل تشخیص نیست؛ در حقیقت ACK یک روش هوشمندانه برای عبور از فایروال ها می باشد که خوشبختانه در خصوص سرویس های ما کلیه حملات ACK و مشابه آن شناسایی و مسدود می شود و هیچ گونه مشکل برای کاربران به وجود نخواهد آورد.
2 نظر برای “معرفی حمله TCP ACK Flood”