ddos – پروتکل TCP حمله انکار سرویس

چه نقصی در TCP آن را به DDOS آسیب پذیر می کند؟

TCP برای DDOS به تنهایی آسیب پذیر نیست به جز از بین رفتن منابع (و "فقدان منابع نامحدود" اجتناب ناپذیر است، بنابراین واقعا یک نقص نیست). TCP اغلب به عنوان یک روش DDOS به کار می رود، به سادگی با وارد کردن ترافیک بیشتر به سیستم از آن است که می تواند اداره کند.

اما TCP به DDOS به عنوان جاده ای برای یک سرقت بانک است – این واقعیت است که آنها در ماشین خود پرش می کنند و پس از سرقت، جاده را آسیب پذیر یا ناقص نمی کند.

مهم است که به یاد داشته باشید که کلمه عملی در DDOS "سرویس" است. تنها زمانی که یک سرویس ارائه می شود می تواند مورد استفاده قرار گیرد و سپس بیش از حد مورد استفاده قرار گیرد، به منظور Deny Service. سرویس در دسترس است، بنابراین ابزارهایی که برای ساختن آن در دسترس هستند (مثل TCP) ضروری هستند و نه نقص یا آسیب پذیری.

بنابراین "نقص" در TCP – اجازه دسترسی به سرویس. و یک DDOS تلاش بیشتری برای استفاده از سرویس نسبت به شبکه و میزبان درگیر می تواند اداره کند. یک نقص نیست، فقط بیش از حد استفاده کنید.

tcp – MQTT بدون TLS – جلوگیری از ارسال پیام ها از دستگاه های غیرقابل شناسایی

من یک مورد استفاده دارم که در آن من نمی توانم از MQTTS / TLS به دلیل محدودیت در دستگاه استفاده کنم.

برنامه ما این است که در طول MQTT CONNECT تأییدیه را منتقل کنیم، یک نشانه JWT به عنوان یک کلمه عبور. اگر به درستی درک کنم MQTT یک اتصال TCP را برای تمام پیام های بعدی باز نگه می دارد.

با توجه به یک Broker استاندارد MQTT (مانند HiveMQ، VerneMQ، …)، ممکن است یک مهاجم به PUBLISH mqtt message بدون تماس CONNECT ابتدا؟

البته آنها به طور بالقوه میتوانند نشانه JWT را تشخیص دهند و با CONNECT تماس بگیرند، اما این نشانه تنها برای مدت کوتاهی معتبر خواهد بود .. و همچنین ما می توانیم برخی از حسابرسی در CONNECT برای جلوگیری از حملات (فیلتر کردن IP، …)

قرار داد.

من شناخته شده است که در هر صورت این راه حل امن اثبات نخواهد شد، اما این تنها در یک مجموعه کوچک از دستگاهها مورد استفاده قرار می گیرد، امیدوارم مدت زمان کوتاهی باشد.

نگرانی من این است که آیا مهاجم فقط می تواند ترافیک را از طرف یک اتصال TCP دیگر ارسال کند؟ تماس انتشار بدون تماس اول CONNECT . شاید این حس نداشته باشد …

TLS – تزریق یک بسته TCP به اتصال موجود

اجازه دهید یک طرح را ببینیم:

 اینجا را وارد کنید تصویر

و من می خواهم دو مورد را در نظر داشته باشم:

همه آدرس های آی پی عمومی هستند، ابر نماد Inernet است.

اولین بار

  1. H اتصال TCP مستقر دارد: C = (210.10.10.10،9999،98.98.98.98،9999) . این ارتباط برای برقراری ارتباط HTTP استفاده می شود – فرض کنید که برخی از HTTP فریم توسط اتصال C ارسال می شود.

  2. بنابراین، H فقط برخی از پیام های HTTP را ارسال می کند.

  3. اکنون MH میخواهد پیام HTTP را از طرف H ارسال کند. بنابراین، حدس می زنم TCP.SequenceNumber و دیگر TCP زمینه های هدر. سپس MH پیام TCP مناسب را با IP.srcAddress به پیام H` و پیام HTTP ارسال می کند: 'من یک احمق هستم' (نگاه کنید به طرح).

یک بسته به عنوان بسته بعدی در ارتباط دریافت شد C .

سوال من این است:
آیا سناریو ممکن است؟

دومین

وضعیت همان است که در بالا ذکر شد. با این حال، H و سرور با http s ارتباط برقرار می کند. MH تلاش می کند یک پیام HTTP ارسال کند، همانند قبل. این نمی تواند رمزگذاری شود زیرا MH یک کلید را نمی داند. بنابراین، نمی تواند به درستی توسط یک سرور رمزگشایی شود. سرور می تواند متوجه شود که یک بسته مخرب است زیرا محتوا برای اصلاح فرم رمزگشایی نمی شود.

آیا علامت این است که بسته های مخرب هستند؟ به نظر می رسد لغزنده است.

شبکه – حمله عجیب و غریب سرور CPU من فوق العاده بالا است

متوجه شدم که سرور سرور من فوق العاده بالا است و دلیل آن grep A است دستور

 سرور ها

پس از نگاه عمیق، آنچه در اینترنت فعال من یافتم لیست اتصالات ( netstat-tupn )

    tcp 0 138.xxx.140.xxx: 60752 198.1.158.134:80 ESTABLISHED 1583 / grep "A"

این کار را با تماس sudo kill -9 1583 انجام دادم و سپس یک آدرس IP مشابه با یک دستور مختلف ارتباط برقرار کرد

tcp 0 138.xxx.140.xxx: 32956 198.1.158.134:8000 ایجاد شده 13139 / id

با فراخوانی lsof نام فرآیند یافت شده bkhcdgfdv با این خطوط

 bkhcdgfdv 14771 14825 ریشه 5r REG 253،1 4516064 57220 /usr/sbin/php-fpm7.1
bkhcdgfdv 14771 14826 root cwd DIR 253،1 4096 2 /
bkhcdgfdv 14771 14826 root rtd DIR 253،1 4096 2 /
bkhcdgfdv 14771 14826 root txt REG 253،1 625878 2100 / usr / bin / bkhcdgfdva
bkhcdgfdv 14771 14826 root 0u CHR 1،3 0t0 6 / dev / null
bkhcdgfdv 14771 14826 root 1u CHR 1،3 0t0 6 / dev / null
bkhcdgfdv 14771 14826 root 2u CHR 1،3 0t0 6 / dev / null
bkhcdgfdv 14771 14826 root 3u IPv4 309207 0t0 TCP MY_HOSTNAME: 32982-> 198.1.158.134:8000 (ESTABLISHED)

پرسش: چه نوع حمله ای است و چگونه می توانم آن را متوقف کنم؟

ip – nmap.PortScanner (). اسکن می دهد خطای کلیدی

من اسکنر بسته را ساخته ام و اکنون می خواهم با استفاده از انگشت چاپ IP / TCP از طریق python-nmap دلخواه خود را به آن اضافه کنم. من بسته ای را با سوکت دریافت می کنم:

 HOST = gethostbyname (gethostname ())
# یک سوکت خام ایجاد کنید و آن را به رابط عمومی متصل کنید
s = سوکت (AF_INET، SOCK_RAW، IPPROTO_IP)
s.bind ((HOST، 0))
data = s.recvfrom (65565)

برای آدرس آی پی منبع من استفاده می کنم:

 unpackedData = struct.unpack ('! BBHHHBBH4s4s'، داده ها [:20])
sourceAddress = inet_ntoa (unpackedData [8])

برای شماره پورت منبع مورد استفاده من:

 unpackedtcpData = struct.unpack ('! HHLLHH'، data [offset+1:offset+17])
source_port = str (unpackedtcpData [0])

من از کد زیر برای شناسایی از راه دور از یک بسته دریافت شده استفاده می کنم:

 nm = nmap.PortScanner ()
nm.scan (sourceAddress.format ()، str (source_port))
اگر 'osclass' در nm [sourceAddress]:
    برای osclass در nm [sourceAddress]['osclass']:
        چاپ ('OsClass.type: {0}'. فرمت (osclass ['type']))
        چاپ ('OsClass.vendor: {0}'. فرمت (osclass ['vendor']))
        چاپ ('OsClass.osfamily: {0}'. فرمت (osclass ['osfamily']))
        چاپ ('OsClass.osgen: {0}'. فرمت (osclass ['osgen']))
        چاپ ('OsClass.accuracy: {0}'. فرمت (osclass ['accuracy']))
        چاپ('')

اما این به من خطایی زیر میدهد:

 KeyError: '192.168.23.

بر روی صفحه نمایش ضمیمه مشاهده کنید:
 توضیح تصویر را اینجا وارد کنید

SourceAddress یک IP کاملا معتبر و قابل دسترسی است زیرا من آن را از هدر IP بسته دریافت کردم. به طور مشابه source_port نیز یک شماره پورت واقعی است که من از هدر TCP از همان بسته استخراج کردم. من این را ذکر کردم زیرا هر جا که من برای خطا جستجو می کنم، آنها می گویند دلیل این است که میزبان غیرقابل دسترسی است و یا افزودن میزبان معتبر نیست و در حال حاضر "UP" مانند این سؤال نیست:

https://stackoverflow.com/questions / 29133574 / what-does-keyerror-insert-ip-average

با این که از آنجا که آدرس IP و شماره پورت TCP را از یک بسته دریافت شده خارج کرده ام، میزبان باید بالا و قابل دسترس باشد. پس چرا کار نمی کند؟ من همچنین سعی کردم با استفاده از آدرس IP قابل دسترسی مانند '127.0.0.1'، اما هنوز آن را به من یک خطا به همین ترتیب است. مثل اینکه فقط آدرس IP را قبول نمی کند هر گونه کمک / پیشنهادات