معرفی حمله TCP ACK Flood

در راستای معرفی و واشکافی حملات DDoS ؛ امروز قصد داریم به بررسی حمله TCP ACK Flood بپردازیم؛ این حمله بخشی از یک اتصال TCP به حساب می آید.
معمولا در یک اتصال TCP سه مرحله داریم در معرفی حملات HTTP Flood آنها را توضیح داده ایم :

اول کلاینت یک بسته SYN به سرور می فرستد.
دوم سرور یک بسته SYN ACK به کلاینت  می فرستد.
سوم کلاینت یک بسته ACK به سرور می فرستد.

این مراحل با اصطلاح three-way handshake نیز شناخته می شود.

یک حمله ACK Flood شامل یک دسته کامل از بسته های TCP به همراه بیت ACK  فعال بر روی آن است. این نوع از حمله دارای  تفاوت هایی در مقایسه با SYN flood است.

اول به شما نشان می دهیم که لاگ یک حمله ACK Flood به چه صورت است ؛ در لاگ زیر یک حمله بر روی آی پی فرضی ۱۰٫۱۰۰٫۱۰۱٫۱۰۲  و پورت ۸۰ بر روی انجام است.

[.] در اینجا به معنی یک پکت TCP است.

۲۰:۰۲:۴۸٫۹۸۳۳۷۸ IP (tos 0x0, ttl 63, id 32488, offset 0, flags [none], proto TCP (6), length 40)
    ۲۲۲٫۸۳٫۱۴٫۱۴۴٫۱۰۴۰ > 10.100.101.102.80: Flags [.], cksum 0xb469 (correct), seq 751014783, ack 2048786021, win 512, length 0
        ۰x0000:  ۴۵۰۰ ۰۰۲۸ ۷ee8 0000 3f06 40a3 4814 160e  E..(~...?.@.H...
        ۰x0010:  ۴۸۱۴ ۱۶۰f 0410 0050 2cc3 937f 7a1d fe65  H......P,...z..e
        ۰x0020:  ۵۰۱۰ ۰۲۰۰ b469 0000 0000 0000 0000       P....i........
۲۰:۰۲:۴۹٫۹۸۳۴۳۹ IP (tos 0x0, ttl 63, id 43793, offset 0, flags [none], proto TCP (6), length 40)
    ۱۱۴٫۸۰٫۱۳۶٫۱۸۴٫۱۰۴۱ > 10.100.101.102.80: Flags [.], cksum 0x1c45 (correct), seq 135907827, ack 760402314, win 512, length 0
        ۰x0000:  ۴۵۰۰ ۰۰۲۸ ab11 0000 3f06 147a 4814 160e  E..(....?..zH...
        ۰x0010:  ۴۸۱۴ ۱۶۰f 0411 0050 0819 c9f3 2d52 d18a  H......P....-R..
        ۰x0020:  ۵۰۱۰ ۰۲۰۰ ۱c45 0000 0000 0000 0000       P....E........
۲۰:۰۲:۵۰٫۹۸۳۴۷۹ IP (tos 0x0, ttl 63, id 44213, offset 0, flags [none], proto TCP (6), length 40)
    ۲۲۳٫۴٫۳۱٫۱۶۹٫۱۰۴۲ > 10.100.101.102.80: Flags [.], cksum 0x3320 (correct), seq 227681609, ack 1655186570, win 512, length 0
        ۰x0000:  ۴۵۰۰ ۰۰۲۸ acb5 0000 3f06 12d6 4814 160e  E..(....?...H...
        ۰x0010:  ۴۸۱۴ ۱۶۰f 0412 0050 0d92 2549 62a8 248a  H......P..%Ib.$.
        ۰x0020:  ۵۰۱۰ ۰۲۰۰ ۳۳۲۰ ۰۰۰۰ ۰۰۰۰ ۰۰۰۰ ۰۰۰۰       P...3.........
۲۰:۰۲:۵۱٫۹۸۳۵۲۵ IP (tos 0x0, ttl 63, id 52759, offset 0, flags [none], proto TCP (6), length 40)
    ۲۰۲٫۱۱۶٫۱۶۰٫۱۰۴۳ > 10.100.101.102.80: Flags [.], cksum 0x5f9f (correct), seq 379954490, ack 794534482, win 512, length 0
        ۰x0000:  ۴۵۰۰ ۰۰۲۸ ce17 0000 3f06 f173 4814 160e  E..(....?..sH...
        ۰x0010:  ۴۸۱۴ ۱۶۰f 0413 0050 16a5 a53a 2f5b a252  H......P...:/[.R
        ۰x0020:  ۵۰۱۰ ۰۲۰۰ ۵f9f 0000 0000 0000 0000       P..._.........
۲۰:۰۲:۵۲٫۹۸۳۵۶۹ IP (tos 0x0, ttl 63, id 23290, offset 0, flags [none], proto TCP (6), length 40)
    ۲۰۰٫۲۷٫۱۷۵٫۷۰٫۱۰۴۴ > 10.100.101.102.80: Flags [.], cksum 0x8634 (correct), seq 242507686, ack 1779207888, win 512, length 0
        ۰x0000:  ۴۵۰۰ ۰۰۲۸ ۵afa 0000 3f06 6491 4814 160e  E..(Z...?.d.H...
        ۰x0010:  ۴۸۱۴ ۱۶۰f 0414 0050 0e74 5fa6 6a0c 8ed0  H......P.t_.j...
        ۰x0020:  ۵۰۱۰ ۰۲۰۰ ۸۶۳۴ ۰۰۰۰ ۰۰۰۰ ۰۰۰۰ ۰۰۰۰       P....4........
۲۰:۰۲:۵۳٫۹۸۳۶۰۷ IP (tos 0x0, ttl 63, id 42657, offset 0, flags [none], proto TCP (6), length 40)
    ۲۱۹٫۱۳۷٫۲۲۹٫۲۱۴٫۱۰۴۵ > 10.100.101.102.80: Flags [.], cksum 0x03ae (correct), seq 984467710, ack 563135552, win 512, length 0
        ۰x0000:  ۴۵۰۰ ۰۰۲۸ a6a1 0000 3f06 18ea 4814 160e  E..(....?...H...
        ۰x0010:  ۴۸۱۴ ۱۶۰f 0415 0050 3aad c8fe 2190 c440  H......P:...!..@
        ۰x0020:  ۵۰۱۰ ۰۲۰۰ ۰۳ae 0000 0000 0000 0000       P.............

 جریان ACK Flood

زمانی که یک سرور به یک بسته TCP برخورد می کند؛ فقط زمانی آن را قبول می کند که از قبل یک ارتباط TCP بین ارسال کننده و سرور شکل گرفته باشد.

در اینجا دو سناریوی در خصوص حملات ACK flood وجود دارد:

سناریوی کمتر شایع: مهاجم یک بسته SYN اولیه از آی پی های جعلی ارسال میکند و سرور نیز پاسخ آن را با پکت های SYN ACK ارسال می کند ولی چون آی پی ها جعلی هستند پکت ها به هیچ مقصدی نمی رسند اما مهاجم با محاسبات دقیق و رعایت ترتیب بسته های ACK را دوباره از همان آی پی های جعلی ارسال می کند و سرور فکر می کند که این پاسخ را از کلاینت دریافت کرده است و یک اتصال کاملا مشروع و قانونی با کلاینت هایی ( آی پی های جعلی) برقرار می کند که اصلا وجود خارجی ندارند؛ در این نوع حمله مهاجم با باز نگه داشتن کانکشن های TCP فشار زیادی به سرور می آورد و منابع آن را مورد مصرف قرار می دهد و کارکرد عادی سرور را با مشکل مواجه می کند.
این نوع حمله به دلیل سخت بودن شرایط اجرا آن ؛ کمتر شاهد آن هستیم و در عین حال مهار این حملات بسیار دشوار و مشکل است.

ACK Flood

ACK Flood

سناریوی بیشتر شایع: در این روش مهاجم بدون هیچ اتصال و کانکشن حتی جعلی؛ اقدام به ارسال بسته های 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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

CAPTCHA

*