الگوریتم­های تولید دامنه(Domain generation algorithm ) ، قطعه کد­هایی هستند که امروزه باهدف تولید تعداد زیادی از دامنه ­های اینترنتی به‌صورت دوره­ای در بدافزارهای متعددی مورداستفاده قرار می­گیرند. هدف اصلی استفاده از این الگوریتم­ ها این بوده است که  بدافزارها در برابر روش‌های شناسایی لیست ایستای آدرس­های دامنه که به‌راحتی توسط مکانیزم‌های امنیتی لیست سفید و سیاه شناسایی می­شوند از درجه محافظت بالاتری برخوردار شوند. ازآنجایی‌که دامن ه­های تولیدی توسط این ­الگوریتم­های عموماً شبه تصادفی هستند و فرکانس تولید دامنه توسط این الگوریتم­ ها بسیار بالا است این الگوریتم ­ها توسط مکانیزم­های امنیتی لیست سیاه‌ وسفید کنونی به راحتی  شناسایی نمی­شوند و همین امر سبب شده است بسیاری از بدافزارها  به ویژه باجگیرافزارها و بات نت ها به طرق مختلف از این دامنه ­های استفاده نمایند. در کد ذیل نمونه‌ای از الگوریتم ­های تولید خودکار دامنه در بدافزارها آورده شده است.

کد ‏21: یک نمونه شبه کد الگوریتم DGA

suffix = ["anj", "ebf", "arm", "pra", "aym", "unj","ulj", "uag", "esp", "kot", "onv", "edc"]

 

def generate_daily_domain():

 t = GetLocalTime()

 p = 8

 return generate_domain(t, p)

def scramble_date(t, p):

 return (((t.month ^ t.day) + t.day)*p) +t.day + t.year

 

def generate_domain(t, p):

 if t.year < 2014:

 t.year = 2014

 s = scramble_date(t, p)

 c1 = (((t.year >> 2) & 0x3fc0) + s) % 25 + ’a’

 c2 = (t.month + s) % 10 + ’a’

 c3 = ((t.year & 0xff) + s) % 25 + ’a’

 if t.day*2 <0|| t.day*2 >9:

 c4 = (t.day*2) % 25 + ’a’

 else:

 c4 = t.day% 10 +1

 return c1 +’h’+c2+c3+’x’+c4+suffix[t.month - 1]

 

ازآنجایی‌که طراح یا کنترل‌کننده باجگیرافزار از الگوریتم جاسازی‌شده در باجگیرافزارها ی خود اطلاع دارد برخی از دامنه ­هایی را که به‌صورت قطعی الگوریتم تولید می­کند را به کمک روش‌های ثبت دامنه در لحظه[1] و آماده خدمات‌دهی به باجگیرافزارهای مورد هدف می­کند. ازآنجایی‌که عموماً تعداد دامنه ­های تولیدی بسیار بالا می­باشد اتخاذ تصمیمات و اعمال مکانیزم­های امنیتی و پلیسی برای شناسایی و انهدام سرور­های فرمان و کنترل کاری بسیار دشوار به‌حساب می­ آید. از این دامنه‌ها طراحان بدافزار استفاده‌های متعددی ازجمله ارسال فرمان و دریافت اطلاعات و به­روزرسانی بدافزارهای خود می‌نمایند. در بدافزارهای پیشرفته‌تر حتی شنود و رهگیری بستر ارتباطی با این دامنه ها نیز در بسیاری از موارد ناکارآمد است چراکه در این موارد بدافزارهای از مکانیزم های حفظ محرمانگی و حتی صحت داده‌ها نظیر سیستم‌های رمزنگاری کلید عمومی بهره می‌برند.

*** با عضویت در کانال تلگرام از مطالب بیشتر، فیلم ها و به روزرسانی های محتوای وب نوشت مطلع شوید.***

منبع: احمدیان، محمد مهدی، چارچوبی مبتنی بر تحلیل رفتار برنامه به‌منظور تشخیص باجگیر‌افزارها,پایان‌نامه کارشناسی ارشد دانشکده مهندسی کامپیوتر و فناوری اطلاعات، دانشگاه صنعتی امیرکبیر تهران، ایران،1394


[1] just in time registration