http://wiki.lordwektabyte.cat/index.php?title=ASIX/M17/UF2/PT2/31&feed=atom&action=historyASIX/M17/UF2/PT2/31 - Historial de revisió2024-03-29T02:33:43ZHistorial de revisió per a aquesta pàgina del wikiMediaWiki 1.34.0http://wiki.lordwektabyte.cat/index.php?title=ASIX/M17/UF2/PT2/31&diff=5202&oldid=prevGuillem: Guillem ha mogut M17/UF2/PT2/31 a ASIX/M17/UF2/PT2/31 sense deixar una redirecció: Crear subnivell ASIX2020-04-15T11:34:42Z<p>Guillem ha mogut <a href="/index.php?title=M17/UF2/PT2/31&action=edit&redlink=1" class="new" title="M17/UF2/PT2/31 (encara no existeix)">M17/UF2/PT2/31</a> a <a href="/wiki/ASIX/M17/UF2/PT2/31" title="ASIX/M17/UF2/PT2/31">ASIX/M17/UF2/PT2/31</a> sense deixar una redirecció: Crear subnivell ASIX</p>
<table class="diff diff-contentalign-left" data-mw="interface">
<tr class="diff-title" lang="ca">
<td colspan="1" style="background-color: #fff; color: #222; text-align: center;">← Versió més antiga</td>
<td colspan="1" style="background-color: #fff; color: #222; text-align: center;">Revisió del 11:34, 15 abr 2020</td>
</tr><tr><td colspan="2" class="diff-notice" lang="ca"><div class="mw-diff-empty">(Cap diferència)</div>
</td></tr></table>Guillemhttp://wiki.lordwektabyte.cat/index.php?title=ASIX/M17/UF2/PT2/31&diff=3957&oldid=prevGuillem: Es crea la pàgina amb «==Teoria== Un atac de DNS amplification consta en atacar una víctima amb paquets de resposta DNS que no ha demanat; de manera que saturem la targeta de xarxa de la m...».2019-03-22T21:32:24Z<p>Es crea la pàgina amb «==Teoria== Un atac de DNS amplification consta en atacar una víctima amb paquets de resposta DNS que no ha demanat; de manera que saturem la targeta de xarxa de la m...».</p>
<p><b>Pàgina nova</b></p><div>==Teoria==<br />
Un atac de DNS amplification consta en atacar una víctima amb paquets de resposta DNS que no ha demanat; de manera que saturem la targeta de xarxa de la màquina víctima. A més a més, si aquestes respostes DNS estan "sobrecarregades" amb més dades com per exemple una consulta tipus ''all'', o una petició de transferència de zona DNS, tindrem paquets més grans que arribaran a la víctima i que aquesta no podrà gestionar i podria arribar a quedar congelada o desconnectada de la xarxa.<br />
<br />
Aquest atac pot fer-se de la mà d'un ''IP spoofing'' ja que des de la màquina atacant enviem peticions DNS a un servidor però posant l'adreça IP origen=adreça IP de la víctima. D'aquesta manera, el servidor enviarà la resposta a la que serà la vćitima. Si això ho combinem amb un sistema distribuït que faci vàries peticions des de diferents atacants cap a la mateixa víctima, podria utilitzar-se com a atac DDOS (''Distributed Denial-Of-Service'') fent que, tal com he dit abans, la víctima es saturi i pugui perdre la connectivitat de xarxa.<br />
<br />
==Mitigació==<br />
Una opció per a mitigar aquests atacs seria, '''en el cas de posseir un servidor DNS públic a Internet'''<br />
*Limitar l'ample de banda dedicat al servidor: de manera que no sigui "atractiu" pels atacants per a ser usat com a ''relay'' d'un atac destinat a una víctima. Les consultes i respostes DNS són paquets petits que no requereixen gaire ''bandwidth'', pel que es pot definir en un marge raonable perquè el DNS no respongui ràpid en cas d'atac destinat a una altra màquina.<br />
**A part de l'ample de banda, també podem mitigar o fer menys atractiu el nostre servidor si li configurem ''rate limits'' de peticions com per exemple, en el cas de BIND: <source> rate-limit {responses-per-second 3; window 15; };</source><br />
:Amb aquests paràmetres farem que el servidor respongui, com a màxim, 3 peticions DNS per segon; de manera que ningú el pugui veure atractiu per a llançar un atac d'aquest tipus.<br />
:El <code>responses-per-second</code> és el màxim de consultes idèntiques que pot fer un client un segon. Els atacs de ''DNS amplification'' es basen en enviar respostes a consultes iguals per simplicitat i rapidesa; pel que aquest paràmetre pot ser interessant per evitar ser usats com a "base".<br />
:La finestra <code>window</code> especifica el temps en segons que un client DNS pot fer peticions DNS dins del límit definit pel ''responses-per-second''. En l'exemple de sobre, doncs, un client podria fer un màxim de 3 peticions per segon cada 15 segons.<br />
:Aquests valors van lligats entre ells i han de ser coherents; ja que no tindria sentit permetre moltes connexions per segon en una finestra molt curta (''burst'') o bé posar una finestra molt gran perquè llavors un atacant que pogués deduir el rate màxim podria ajustar-se bastant per a usar-nos de base sense sortir de les normes.<br />
<br />
*No oferir recursivitat a adreces IP que no correponguin a la xarxa local: de manera que no faci consultes a altres servidors DNS si li arriba una petició d'un ''hostname'' que no està a la seva zona. Mentre que la xarxa local podrà fer-ho perquè és necessari.<br />
<br />
En el cas de voler-nos protegir '''com a víctimes''':<br />
*Podem utilitzar Firewalls d'alt nivell per a filtrar el trànsit DNS que no hagi estat demanat (ja que arriben respostes DNS a ''queries'' que no hem fet nosaltres).<br />
<br />
==Cas pràctic==<br />
Necessitarem tenir instal·lat un servidor DNS. Optarem per instal·lar BIND en una màquina virtual CentOS 7 amb un adaptador de xarxa virtual en mode Xarxa NAT compartit amb el Kali Linux i un altre CentOS 7 amb un servidor web instal·lat que serà la victima.<br />
Primer de tot, definirem un nom de host identificatiu pel servidor DNS:<br />
<source><br />
hostnamectl set-hostname dns.guillem.test<br />
</source><br />
<br />
Editarem l'arxiu <code>/etc/hosts</code> per tal de fer-hi constar el nom de host del propi servidor<br />
<source><br />
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 dns.guillem.test<br />
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 dns-guillem.test<br />
</source><br />
<br />
Deshabilitarem el SELinux temporalment amb la comanda<br />
<source><br />
setenforce 0<br />
</source><br />
:'''Nota:''' si ho volem fer permanent haurem de posar <code>disabled</code> a l'arxiu <code>/etc/selinux/config</code>.<br />
<br />
Fet això podem començar amb la instal·lació del programari necessari per a posar en marxa el servei DNS pròpiament:<br />
<source><br />
yum install bind bind-utils -y<br />
</source><br />
<br />
Configurarem el Firewall del sistema per a permetre les connexions a través del port 53 tcp/udp, corresponent a l'estàndard pel servei de noms de domini<br />
<source><br />
[root@dns ~]# firewall-cmd --add-port={53/tcp,54/udp} --permanent<br />
success<br />
[root@dns ~]# firewall-cmd --reload<br />
success<br />
[root@dns ~]# firewall-cmd --list-all<br />
public (active)<br />
target: default<br />
icmp-block-inversion: no<br />
interfaces: enp0s3<br />
sources: <br />
services: ssh dhcpv6-client<br />
ports: 53/tcp 54/udp<br />
protocols: <br />
masquerade: no<br />
forward-ports: <br />
source-ports: <br />
icmp-blocks: <br />
rich rules: <br />
</source><br />
<br />
L'arxiu de configuració principal és el <code>/etc/named.conf</code> que haurem d'editar per a poder permetre, entre altres coses, que el servidor respongui a ''queries'' DNS de les màquines de la xarxa:<br />
*'''Línia 13:''' afegirem l'adreça IP de la interfície virtual Xarxa NAT perquè la resta de VMs d'aquella xarxa puguin veure el servidor allà <source>listen-on port 53 { 127.0.0.1; 10.17.3.7; };</source><br />
<br />
*'''Línia 21: ''' canviarem ''localhost'' per ''any'' de manera que qualsevol màquina pugui fer consultes DNS al servidor <source>allow-query { any; };</source><br />
<br />
Llavors haurem de declarar la zona DNS. Farem servir arxius separats per a la zona directa i la zona inversa. Afegirem el següent contingut al final de l'arxiu <code>/etc/named.conf</code><br />
<source><br />
zone "guillem.test" IN {<br />
type master;<br />
file "directa-guillem.test";<br />
allow-update { none; };<br />
};<br />
<br />
zone "3.17.10.in-addr.arpa" IN {<br />
type master;<br />
file "inversa-guillem.test";<br />
allow-update { none; };<br />
};<br />
</source><br />
<br />
Ara omplirem els arxius de la zona directa i inversa per tal que el DNS tingui registres. Al tractar-se de rutes relatives, es basa en el directori <code>/var/named</code>; pel que els dos arxius seran <code>/var/named/directa-guillem.test</code> i <code>/var/named/inversa-guillem.test</code> per a la zona directa i inversa, respectivament.<br />
<br />
<source><br />
/var/named/directa-guillem.test<br />
===============================<br />
<br />
$TTL 86400<br />
@ IN SOA dns.guillem.test. root.guillem.test. (<br />
<br />
2011071001 ;Serial<br />
3600 ;Refresh<br />
1800 ;Retry<br />
604800 ;Expire<br />
86400 ;Minimum TTL<br />
)<br />
<br />
@ IN NS dns.guillem.test.<br />
@ IN A 10.17.3.7 <br />
@ IN A 10.17.3.8 <br />
@ IN A 10.17.3.9 <br />
<br />
dns IN A 10.17.3.7 <br />
victim IN A 10.17.3.8 <br />
kali IN A 10.17.3.9<br />
</source><br />
<br />
<source><br />
/var/named/inversa-guillem.test<br />
===============================<br />
$TTL 86400<br />
@ IN SOA dns.guillem.test. root.guillem.test. (<br />
<br />
2011071001 ;Serial<br />
3600 ;Refresh<br />
1800 ;Retry<br />
604800 ;Expire<br />
86400 ;Minimum TTL<br />
)<br />
<br />
@ IN NS dns.guillem.test.<br />
@ IN PTR guillem.test.<br />
<br />
7 IN PTR dns.guillem.test. <br />
8 IN PTR victim.guillem.test.<br />
9 IN PTR kali.guillem.test.<br />
</source><br />
<br />
Finalment, amb la comanda <code>/usr/sbin/named-checkconf -z /etc/named.conf<br />
</code> podem verificar els arxius de configuració del BIND cercant possibles errors de sintaxi o similars. Si tot és correcte, ens donarà un ''output'' corresponent a les zones carregades:<br />
<source><br />
[root@dns ~]# /usr/sbin/named-checkconf -z /etc/named.conf<br />
zone localhost.localdomain/IN: loaded serial 0<br />
zone localhost/IN: loaded serial 0<br />
zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0<br />
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0<br />
zone 0.in-addr.arpa/IN: loaded serial 0<br />
zone guillem.test/IN: loaded serial 2011071001<br />
zone 3.17.10.in-addr.arpa/IN: loaded serial 2011071001<br />
</source><br />
<br />
Ara ja podem arrencar i habilitar el servei DNS<br />
<source><br />
systemctl enable named<br />
systemctl start named<br />
</source><br />
<br />
Podem fer consultes amb l'ordre <code>nslookup</code> per a comprovar-ne el funcionament<br />
<source><br />
[root@dns ~]# nslookup dns.guillem.test<br />
Server: 127.0.0.1<br />
Address: 127.0.0.1#53<br />
<br />
Name: dns.guillem.test<br />
Address: 10.17.3.7<br />
<br />
[root@dns ~]# nslookup victim.guillem.test<br />
Server: 127.0.0.1<br />
Address: 127.0.0.1#53<br />
<br />
Name: victim.guillem.test<br />
Address: 10.17.3.8<br />
<br />
[root@dns ~]# nslookup kali.guillem.test<br />
Server: 127.0.0.1<br />
Address: 127.0.0.1#53<br />
<br />
Name: kali.guillem.test<br />
Address: 10.17.3.9<br />
</source><br />
<br />
===Atac===<br />
Per a fer l'atac, instal·larem apache en un servidor CentOS i l'arrencarem. Per defecte hi haurà la pàgina per defecte d'Apache per a aquesta distribució de Linux.<br />
<source><br />
yum install httpd -y<br />
systemctl enable httpd<br />
systemctl start http<br />
</source><br />
<br />
Configurarem la targeta de xarxa per tal que tingui l'adreça <code>10.17.3.8/24</code> i utilitzi <code>10.17.3.7</code> com a DNS. Aleshores des del Kali (també configurada la NIC amb els paràmetres corresponents: IP <code>10.17.3.9 i DNS 10.17.3.7</code>), podem obrir el navegador web i accedir-hi normalment http://victim.guillem.test<br />
{{imatge|M17UF2PT2-1.png}}<br />
<br />
Llavors farem servir ''Saddam'' des del Kali per a llançar l'atac DNS amplification a la màquina víctima:<br />
<br />
===Solució===</div>Guillem