作者:
心傷的胖子
·
2014/02/20 21:32
原文:http://www.room362.com/blog/2014/02/19/iterative-dns-brute-forcing/
翻譯原則:沒有原則,只是還原了文章的大概意思。
對於域名的暴力破解你肯定有一個包含多個主機名的檔案。在我之前的文章中提到過一些方法是用 XARGS 或者 PARALLEL(譯者注:需要的自己翻作者的 Blog)。但是眾所周知的是即使是字典也不太可能 “All in one”(譯者注:作者這麼說是瞧不起天朝的駭客們了麼?),但是近些年我在做 DNS 記錄收集的時候注意到一個事情,就是大多數的域名都有大量比較短的主機名,因為很容易被記住,通常是四個字元或者更少。
我肯定你已經知道我即將做什麼了,我想破解最多四個字元中所有可能的主機名(譯者注:其實有這樣的工具,比如 dnsmap、dnsenum 等)。【這段不翻譯了,沒意思,主要是作者沒有寫出想要的程式碼】。最後我偶然在 gist 上發現一個指令碼:https://gist.github.com/petehamilton/4755855 完美解決了我的需求。
為了解決我實際的需求我修改了這個指令碼(僅僅是使用了 yield 方法)並且最後也是這麼做的(記住 DNS 記錄沒有大小寫之分)。
注意:除非你按 CTRL-C,否則指令碼不會停止執行,它會查詢更長的主機名。
#!ruby
#!/usr/bin/env ruby
#
## Brute code stolen form: https://gist.github.com/petehamilton/4755855
#
@domain = 'microsoft.com'
def result?(sub)
results = %x(dig +noall [email protected]} +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)
上面的指令碼能夠工作,但是很慢,我透過下面的方法加快了執行速度。
#!ruby
#!/usr/bin/env ruby
#
## Brute code stolen form: https://gist.github.com/petehamilton/4755855
#
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)
它僅僅是列印所有的可能
a
b
c
d
e
f
...
然後透過管道輸送給 parallel 和 dig
ruby brutelist.rb | parallel -j100 dig +noall {}.microsoft.com +answer
譯者注:parallel 是 Linux 下併發執行的程式
最後得到下面的結果:
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
...
破解愉快(愉快個蛋),你可以在我的 gists 頁面找到上面的兩個指令碼:
Domain version: https://gist.github.com/mubix/9107284
Parallel version: https://gist.github.com/mubix/9107276
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!