使用机器学习做DGA域名识别
DGA域名
域名生成算法(Domain Generation Algorithm, DGA) 是一项古老但一直活跃的技术, 是中心结构僵尸网络赖以生存的关键武器, 该技术给打击和关闭该类型僵尸网络造成了不小的麻烦。 研究人员需要快速掌握域名生成算法和输入, 以便对生成的域名及时进行处置。
DGA依赖时间、 字典和硬编码的常量动态生成域名。典型的DGA算法实现如下:
def rand(r, seed):
return (seed - 1043968403*r) & 0x7FFFFFFF
def dga(date, seed):
charset = string.ascii_lowercase + string.digits
tlds = [".net", ".org", ".top"]
unix = int(time.mktime(date.timetuple()))
b = 7*24*3600
c = 4*24*3600
r = ((unix//b)*b + c)
for i in range(200):
domain = ""
for _ in range(12):
r = rand(r, seed)
domain += charset[r % len(charset)]
r = rand(r, seed)
tld = tlds[r % 3]domain += tld