DoS (inglizcha: denial-of-service) – hujum qilinayotgan server (nishon) ni faoliyatini vaqtinchalik toʻxtatib qoʻyish. Bunda hujum qiluvchi nishondagi (target) mavjud xatoliklardan foydalanib unga maxsus notoʻgri soʻrovlar orqali murojat qilib buffer toʻlishini (buffer overflow) ni yuzaga keltiradi. Yana bir usuli nishonga toʻxtovsiz juda koʻp soʻrovlar joʻnatish (flood – soʻrovlar bilan bombardimon qilish) orqali ham amalga oshirilishi mumkin. 1-usulda serverdagi script xatosidan foydalanib, unga qingʻir soʻrov joʻnatib sistemada kritik xatolik (ruhsat etilmagan xotira adresiga murojaat kabilar) yuzaga keltiriladi, server ishdan toʻxtaydi. Ushbu usulda serverdagi xatolikni topish talab qilinadi. Misol uchun, serverda foydalanuvchini FIO sini soʻrovchi va kiritilgan FIO asosida biror bir amal bajaruvchi dastur (script) ishlayapti deylik. Agar soʻralgan FIO ni oʻrniga 100000 belgidan iborat belgilar ketma-ketligi joʻnatilsa va dasturda uni uzunligi nazorati koʻzda tutilmagan boʻlsa xatolik yuzaga kelishi mumkin. Bu haqida toʻliqroq tushunchaga ega boʻlish Buffer Overflow haqidagi maqolalarni oʻqish tavsiya qilinadi. 2-usulda serverning biror ochiq portiga toʻxtovsiz soʻrovlar joʻnatganda server ularni qayta ishlashga ulgurmaydi, yaʼni bir soʻrovni qayta ishlayotgan paytda orqasidan yangi soʻrov kelsa, yangi soʻrov vaqtincha bufferga yozib turiladi. Soʻrovlar juda koʻp boʻlganda server boshqa klientlardan kelayotgan soʻrovlarga javob qaytarolmay qoladi. Soʻrovlar qancha koʻp boʻlgani sari buffer ham kengayib xotirada katta resursni yeya boshlaydi, natijada serverning ishlashi juda sekinlashadi yoki umaman toʻxtab qoladi. Agar serverni quvvati kichik boʻlsa unga kichik vaqt oraligʻida juda koʻp klientlar murojaat qilganda ham DoS yuzaga kelishi mumkin. Odatda hujum qiluvchi hujumni toʻxtatishi bilan server yana oʻz ishini davom ettirishi mumkin. Har ikkala holatda ham serverni oʻchirib yoqishga (perezagruzka) ham toʻgʻri kelishi mumkin. Server (nishon)dan kelayotgan javobni qabul qilish jarayonida hujum qiluvchining oʻzi „qotib“ qolmasligi uchun hujum qiluvchi IP spoofingdan foydalanadi. Yaʼni joʻnatayotgan soʻrovlarini boshqa mavjud boʻlmagan IP adres nomidan joʻnatishi mumkin (paketning IP zagolovkasidagi maʼlumotlarni oʻzgartirish, raw socketlar bilan ishlash va IP, ARP spoofinglar haqida keyingi maqolalarda yozishga harakat qilaman).

TCP Protocol orqali DoS

tahrir

Maʼlumki TCP protokolda 1-host 2-host bilan bogʻlanayotganda avvalo SYN – soʻrovini joʻnatadi, 2-host bu soʻrovga SYN/ACK paketini javob sifatida qaytaradi. 1-host bogʻlanishni tasdiqlash uchun ACK-soʻrovini joʻnatishi kerak. Agar 1-host tasdiqlash soʻrovini joʻnatmasa, 2-host chala bogʻlanish haqidagi maʼlumotlarni bufferga yozib, timeout vaqti boʻyicha kutadi va shu vaqt ichida ACK javobini olmasa bogʻlanishni bekor qiladi (bufferdan oʻchiradi). SYN soʻrov yordamida DoS hujum uyushtirish shundan iboratki, bunda hujum qiluvchi server(nishon)ga bogʻlanish haqidagi SYN soʻrovini joʻnatadi va serverdan kelgan javobni tasdiqlamasdan (ACK javob joʻnatmaydi) yana boshqa SYN soʻrovlarini toʻxtovsiz joʻnatishda davom etadi. Agar serverning bogʻlanish uchun timeout qiymati kattaroq boʻlsa, tasdiqlanmagan bogʻlanishlar haqidagi maʼlumotlar server buferini toʻldirib tashlaydi.

ICMP Protocol orqali DoS

tahrir

Yuqoridagi SYN soʻrov kabi ICMP protokoldan foydalanib ham DoS uyushtirish mumkin. Bunda katta hajmdagi, koʻp fragmentli paketlar yordamida serverga ping beriladi. Server bir soʻrovga javob berguncha orqasidan boshqa paket keladi va yuqoridagi singari buffer toʻladi, server boshqalarga javob berolmay faqat hujumchidan kelgan (kelayotgan) soʻrovlarga javob qaytarish bilan band boʻladi, natijada server yoki toʻxtaydi yoki juda sekinlashib qoladi. Yuqoridagi usullardan tashqari DoS hujumni ICQ protokolida, SQL Injection yordamida (benchmark) yoki yana koʻpgina usullar yordamida ham amalga oshirish mumkin.