DNS迭代穷举脚本
在普通的DNS穷举中,如果使用字典进行穷举,会发现没有哪个字典能穷举完所有的域名,国外安全研究者在常年累月的DNS记录收集中发现,很多域名有大量的短主机名,并且很易记,通常为4个字符或更少,所以有了以下脚本:
#!/usr/bin/env ruby
#
## Brute code stolen form: #
@domain = 'microsoft.com'
def result?(sub)
results = %x(dig +noall #{sub}.#{@domain} +answer)
if results != ""
puts "============================"
puts "FOUND: t#{sub}"
puts "============================"
puts "#{results}"
puts "============================"
end
1 == 2
end
def crack_yielding(chars)
crack_yield(chars){ |p|
return p if result?(p)
}
end
def crack_yield(chars)
chars.each { |c| yield c }
crack_yield(chars) { |c|
chars.each do |x|
yield c + x
end
}
end
chars = ('a'..'z').to_a(0..9).each {|x| chars << x.to_s}
crack_yielding(chars)
gist: https://gist.github.com/mubix/9107284
它能正常运行,但是速度比较慢,所以进行了改进。
#!/usr/bin/env ruby
#
## Brute code stolen form: #
def result?(sub)
puts sub
1 == 2
end
def crack_yielding(chars)
crack_yield(chars){ |p|
return p if result?(p)
}
end
def crack_yield(chars)
chars.each { |c| yield c }
crack_yield(chars) { |c|
chars.each do |x|
yield c + x
end
}
end
chars = ('a'..'z').to_a(0..9).each {|x| chars << x.to_s}
crack_yielding(chars)
开始使用
ruby brutelist.rb | parallel -j100 dig +noall {}.microsoft.com +answer
工作回显如下所示:
c.microsoft.com. 2 IN CNAME c.microsoft.akadns.net.
c.microsoft.akadns.net. 499 IN A 65.55.58.184
e.microsoft.com. 3599 IN A 191.234.1.50
g.microsoft.com. 2798 IN CNAME g.msn.com.
g.msn.com. 99 IN CNAME g.msn.com.nsatc.net.
g.msn.com.nsatc.net. 148 IN A 131.253.34.154
i.microsoft.com. 779 IN CNAME i.toggle.www.ms.akadns.net.
i.toggle.www.ms.akadns.net. 44 IN CNAME i.g.www.ms.akadns.net.
i.g.www.ms.akadns.net. 225 IN CNAME i.microsoft.com.edgesuite.net.
i.microsoft.com.edgesuite.net. 116 IN CNAME a1475.g.akamai.net.
a1475.g.akamai.net. 16 IN A 23.45.65.26
a1475.g.akamai.net. 16 IN A 23.45.65.33
m.microsoft.com. 3599 IN CNAME origin.mobile.ms.akadns.net.
origin.mobile.ms.akadns.net. 299 IN A 65.55.186.235
s.microsoft.com. 3599 IN CNAME reroute.microsoft.com.
reroute.microsoft.com. 3599 IN A 65.55.58.201
reroute.microsoft.com. 3599 IN A 64.4.11.37
cs.microsoft.com. 81 IN CNAME wedcs.trafficmanager.net.
wedcs.trafficmanager.net. 7 IN CNAME wedcseus.cloudapp.net.
wedcseus.cloudapp.net. 8 IN A 137.116.48.250
...
[via room362]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 三日php之路 -- 第一天(php语言参考)
- 三日php之路 -- 第一天(初识php)
- NoSQL数据库 -- MongoDB
- 数据抓取练习
- python基础 -- 简单实现HTTP协议
- RabbitMQ 学习
- asp连接access,增删改查
- Spring 中的如何自定义事件处理(Custom Event)
- python基础 -- 自定义排序
- nginx(安装)
- Spring 中基于 AOP 的 XML操作方式
- python基础 -- 内建函数
- virtualenv 安装及使用
- Git 分布式版本控制 -- (1、基本使用)
- python爬虫----(scrapy框架提高(1),自定义Request爬取)