Revision 52471fcf

View differences:

body.tex
1 1
\section{Attacchi Al Mezzo Fisico}
2 2

  
3 3

  
4

  
5
\frame
6
{
7
\frametitle{Disclaimer}
8
\bi
9
\ii Non tutte le cose di cui vi parlo sono ancora facilmente praticabili, ma vi insegnano molto sui protocolli 
10
\ii do this at home! don't do this outside your home!
11
\ei
12
}
13

  
14

  
4 15
\frame
5 16
{
6 17
\frametitle{Attacchi al mezzo fisico}
......
56 67
\end{beamerboxesrounded}
57 68
}
58 69

  
70

  
71
\frame{
72
\center{\large ARP-Spoofing}
73
}
74

  
59 75
\frame
60 76
{
61 77
\frametitle{ARP-Spoofing}
......
117 133
    \end{minipage}
118 134
    }
119 135
    \end{center}
120
\vskip1cm
121 136
\bi 
122 137
\ii la tabella ARP viene aggiornata ad ogni pacchetto ARP ricevuto, sia di request che di reply
138
\ii gli arp gratuiti possono essere mandati per notificare un cambio di MAC address
139
\ii Si usano ad esempio nei sistemi ad alta affidabilià
123 140
\ei 
124 141
}
125 142

  
......
195 212
\bi
196 213
\ii Alla fine dell'attacco Alice e Bob possono mantenere delle connessioni funzionanti che vengono in realtà analizzate da Eve
197 214
\ii Se Eve realizza l'attacco tra tutti i nodi ed il gateway, diventa un man-in-the-middle sul traffico da qualsiasi host verso Internet.
215
\ii Presumibilmente diventerà un collo di bottiglia e renderà l'attacco visibile.
198 216
\ei
199 217
\end{frame}
200 218

  
201 219
\begin{frame}
202 220
\frametitle{ARP spoofing: Mantenimento}
203
\bi
204
\ii Che succede se per qualche motivo Alice deve mandare un pacchetto ad un quarto host?
221
\bii
222
\ii Che succede se per qualche motivo Alice deve mandare un pacchetto ad un quarto host di cui non conosce il MAC?
205 223
\ii Alice invia una nuova richiesta ARP in broadcast, e corregge la tabella ARP di Bob
206 224
\ii Perché l'attacco sia efficace, Eve deve mandare continuamente pacchetti ARP modificati per continuare a mantenere inquinate le tabelle ARP delle vittime.
225
\ii Un attacco di ARP spoofing è quindi visibile:
226
\bi 
227
\ii Molte richieste/reply ARP gratuite che girano nella rete
228
\ii Una vittima potrebbe vedere più di un IP associato allo stesso MAC, che non è per forza un male a meno che non sia massivo. Gli HIDS possono fare di questi controlli.
229
\ii Uno switch può fare detection di ARP spoofing analizzando le richieste ARP e matchandole con lo stato delle porte (https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst6500/ios/12-2SX/configuration/guide/book/dynarp.html)
230
\ei
207 231
\ei
208 232
\end{frame}
233
\begin{frame}
234
\frametitle{Un NIDS può fare cose più complicate (Bro documentation):}
235

  
236
This script leverages knowledge of DHCP transactions, a consistent state of ARP requests and replies, and other metrics in order to provide more accurate information regarding potential attacks. For an attacker to deny a victim service or to initiate a MITM attack, the attacker will need to provide a spoofed MAC address of the victim's gateway. In order to maintain a continuing attack, the attacker will send many spoofed packets, which can be counted. It is possible that these spoofed packets will change IP to MAC mappings, which can be detected as well.
237
\end{frame}
209 238

  
210 239

  
211 240
\frame
......
221 250
}
222 251

  
223 252
\subsection{Fragmentation attacks}
253

  
254

  
255
\frame{
256
\center{\large Fragmentation Attacks}
257
}
258

  
259

  
224 260
\frame
225 261
{
226 262
\frametitle{Fragmentation attacks}
......
229 265
\col[0.4]
230 266

  
231 267
\bi 
232
\ii Sappiamo che il IP permette di spezzare un pacchetto in
268
\ii Sappiamo che IP permette di spezzare un pacchetto in
233 269
più frammenti
234 270
\ii Il campo Fragment Offset esprime l'offset del pacchetto rispetto all'originale, espresso in multipli di 8 byte
235 271
\ii Total length esprime la lunghezza del pacchetto (frammento) in Byte, header incluso
......
386 422
sono rivolti verso porte alte ma che fanno parte di una connessione aperta
387 423
dall'interno della rete verso l'esterno.}
388 424
\uncover<2->{\item Per bloccare i tentativi di aprire una connessione 
389
verso l'interno filtrano i pacchetti con il flag SYN del protocollo TCP
390
settato ad 1 (pacchetti di inizio connessione).}
425
verso l'interno i firewall \emph{stateless} filtrano i pacchetti con il flag SYN del protocollo TCP
426
settato ad 1 (pacchetti di inizio connessione) rivolti ad una porta oltre la 1024.}
391 427
\end{itemize}
392 428
}
393 429

  
......
470 506
\ecols
471 507
}
472 508

  
473

  
474 509
\frame
475 510
{
476 511
\frametitle{Fragmentation attacks, segue:}
......
483 518
viene riassemblato, è diretto verso una porta > 1024 ed ha il flag SYN=1
484 519
ma ha superato il firewall
485 520
\ii Rimedio: drop di tutti i frammenti sotto una dimensione minima. 
486
\item E se un firewall filtra tutti i pacchetti verso la porta 22 ma non verso la 80?
521
\item E se un firewall non filtra i pacchetti verso porta 80?
487 522
\end{itemize}
488 523

  
489 524
}
......
508 543
  \bitbox{20}{IP}
509 544
  \bitbox{20}{TCP}
510 545
  \bitbox{260}{Payload}\\
511
  \bitbox[t]{24}{$\underbrace{\hspace{\width}}_{\text{\normalsize 24B}}$}
546
  \bitbox[t]{200}{$\underbrace{\hspace{\width}}_{\text{\normalsize 200B}}$}
512 547
  \end{bytefield}}}
513 548
\only<3>{\centering{\begin{bytefield}[bitwidth=0.1em]{230}
514 549
  \\
......
535 570
      \bitbox{32}{[...]}\\
536 571
\tiny
537 572
      \bitbox{16}{Sport} 
538
    \bitbox{16}{\alert{Dport = 80}}
573
    \bitbox{16}{\alert{Dport = 80}}\\
574
    \bitbox{32}{...}
539 575
    \end{rightwordgroup}
540 576
  \end{bytefield}
541 577
  Primo Frammento:\\
542
  offset = 0, len = 24  
578
  offset = 0, len = 200  
543 579
  }
544 580
  
545 581

  
......
553 589
     \bitbox{16}{Dest IP}\\
554 590
    \tiny
555 591
      \bitbox{16}{Sport} 
556
    \bitbox{16}{\alert{Dport = 22}}\\
592
    \bitbox{16}{\alert{Dport = X > 1024}}\\
557 593
\tiny      \bitbox{32}{Acknowledgment number} \\
558 594
 \tiny      \bitbox{4}{Offset} 
559 595
      \bitbox{4}{RES}  
......
573 609
\begin{frame}
574 610
\frametitle{Overlapping Fragments}
575 611
\bi 
576
\ii Il primo frammento ha un header IP valido ed un pezzo di header TCP con porta destinazione 80, quindi il firewall lo lascia passare
612
\ii Il primo frammento ha un header IP valido ed un header TCP con porta destinazione 80, quindi il firewall lo lascia passare
577 613
\ii Il secondo frammento riscrive parte del primo e cambia la porta, ma non contiene un pacchetto IP valido, quindi il firewall non lo può analizzare
578 614
\ii Il pacchetto viene consegnato a destinazione e riassemblato
615
\ii Rimedio: usare un firewall \emph{stateful}
579 616
\ei
580 617
\end{frame}
581 618

  
......
591 628
\end{frame}
592 629

  
593 630

  
631
\frame{
632
\center{\large SYN Flood}
633
}
634

  
635

  
594 636
\frame
595 637
{
596 638
\frametitle{Recall TCP}
......
714 756
}
715 757

  
716 758

  
759
\frame{
760
\center{\large TCP reset guess}
761
}
762

  
763

  
717 764
\frame
718 765
{
719 766
\frametitle{Attacchi a livello IV:}
......
728 775
\uncover<4->{\item Numero di sequenza corretto all'interno del flusso}
729 776
\end{itemize}
730 777
\uncover<5->{\item Un'attaccante che vuole interrompere una connessione
731
tra due macchine remote deve conosce gli IP, può indovinare le porte
732
(una è nota e l'altra predicibile), ma non può conoscere il numero di
778
tra due macchine remote deve conoscere gli IP, può indovinare le porte
779
(una è nota e l'altra forse predicibile), ma non può conoscere il numero di
733 780
sequenza corretto. Deve provare un \emph{Brute Force}.} 
734 781
\end{itemize}
735 782
\end{beamerboxesrounded}
......
760 807
{
761 808
\frametitle{TCP reset Guess: qualche conto}
762 809

  
763
Se un pacchetto TCP RST è composto da 20B di header IP + 24 di header TCP, abbiamo:
810
Se un pacchetto TCP RST è composto da 20B di header IP + 20 di header TCP, abbiamo:
764 811
\begin{scriptsize}
765 812
\begin{table}[h]
766 813
  \begin{tabular}{|c|c|c|c|}
......
780 827
\end{table}
781 828
\end{scriptsize}
782 829

  
783
Attacco realistico: fibra con 100 mbps di upload, finestra da 
784 830
}
785 831

  
786 832
\frame{
......
792 838

  
793 839

  
794 840

  
841
\frame{
842
\center\large{DNS Poisoning}
843
}
844

  
795 845
%
796
%
797
%\pgfdeclareimage[width=8cm]{rete}{images-intro/rete}
798
%\pgfdeclareimage[width=6cm]{retel}{images-intro/rete}
799
%%\pgfdeclareimage[width=8cm]{attack}{images-intro/attack}
800
%
801
%\subsection{DNS Poisoning}
802
%\frame{
803
%\frametitle{recall DNS}
804
%\bii
805
%\ii Ogni host deve poter risolvere un indirizzo di rete da una stringa
806
%alfanumerica (un dominio) ad un indirizzo IP. Questa operazione viene
807
%svolta con il protocollo DNS, Domain Name System.
808
%\ii Per ogni dominio in rete, esiste un server che può svolgere questo
809
%compito in modo \emph{autoritative}
810
%\ii L'indirizzo di un server \emph{autoritative} non è noto per ogni
811
%dominio a priori, quindi ogni host è configurato con un indirizzo di un
812
%server DNS locale
813
%\ii Il server DNS locale richiederà a dei root server l'indirizzo dei DNS
814
%validi per un certo dominio
815
%\ii Una volta realizzata la risoluzione nome/IP, il DNS locale mantiene
816
%l'associazione in una cache, per un certo periodo.
817
%\ei
818
%}
819
%
820
%\frame{
821
%\frametitle{recall DNS}
822
%\center\pgfuseimage{rete}
823
%
824
%}
825
%
826
%\frame{
827
%\frametitle{Attacchi sul DNS}
828
%\bii
829
%\ii In generale, un attacco su un DNS serve a far credere ad un certo host
830
%vittima che l'IP che corrisponde ad un nome di dominio è un IP diverso da
831
%quello originale.
832
%\ii Il protocollo DNS non utilizza forme di cifratura per proteggere i
833
%pacchetti, quindi si possono falsificare le risposte di un DNS server.
834
%\ii A cosa serve un attacco del genere?
835
%\bii
836
%\ii phishing, 
837
%\ii furto di credenziali
838
%\ii attacchi su home-banking
839
%\ii redirezione di connessioni e mitm in generale
840
%\ei
841
%\ei
842
%}
843
%
844
%\frame{
845
%\frametitle{DNS Attack}
846
%Dove può essere realizzato l'attacco?
847
%\begin{columns}
848
%\column{5cm}
849
%\bii
850
%\ii Nella rete locale
851
%\ii Nella richiesta da/verso il server DNS locale
852
%\ii Nella richiesta da/verso uno dei server authoritative
853
%\ei
854
%\column{6cm}
855
%\begin{center}
856
%\pgfuseimage{retel}
857
%\end{center}
858
%\end{columns}
859
%}
860
%
861
%\frame{
862
%\frametitle{DNS Attack - Layer II}
863
%\bii
864
%\ii Già abbiamo visto come a livello II si possono realizzare attacchi di
865
%tipo MITM su varie tecnologie:
866
%\bii
867
%\ii arp-spoofing per reti ethernet
868
%\ii attacchi sulle chiavi WEP per reti WiFi
869
%\ei
870
%Non è quindi sorprendente immaginare che lo stesso attacco possa essere
871
%utilizzato per modificare i pacchetti di:
872
%\bii
873
%\ii DHCP: assegnando ad un nodo della rete un nuovo indirizzo del server
874
%DHCP, controllato dall'attaccante
875
%\ii DNS responses: modificando i pacchetti che arrivano dal server DNS
876
%\ei
877
%\ei
878
%}
879
%\frame{
880
%\frametitle{DNS Attack - Layer III}
881
%\bii
882
%\ii Se l'attaccante è nel path tra il server DNS locale e quello remoto,
883
%l'attacco è banale
884
%\ii Altrimenti l'attaccante deve poter rispondere ad una richiesta DNS
885
%prima del server remoto pertinente.
886
%\ii Quali sono i campi interessanti di un pacchetto DNS?
887
%\bii
888
%\ii La porta UDP di origine e destinazione
889
%\ii L'IP di origine e destinazione
890
%\ii L'ID del pacchetto, ovvero un numero scelto a caso da chi invia la
891
%richesta che deve essere replicato nella risposta
892
%\ei
893
%\ei
894
%}
895
%\frame{
896
%\frametitle{DNS Attack - Layer III}
897
%\bii
898
%\ii Lo scopo dell'attaccante è quello di riuscire a inquinare la cache del
899
%server DNS locale, ovvero di rispondere al posto del server DNS remoto.
900
%\ii Per farlo, nel momento in cui il server DNS locale invia una richiesta
901
%per un dominio remoto l'attaccante deve rispondere con un pacchetto
902
%forgiato, che contenga le caratteristiche giuste:
903
%\bii
904
%\ii l'indirizzo IP sorgente $\rightarrow$ quello del server remoto
905
%(\alert{prevedibile})
906
%\ii la porta UDP sorgente $\rightarrow$ quella del server remoto
907
%(\alert{53})
908
%\ii l'indirizzo IP destinazione $\rightarrow$ quello del server locale
909
%(\alert{prevedibile})
910
%\ii la porta UDP destinazione $\rightarrow$ quella usata dal server locale
911
%per inviare la richiesta (\alert{non prevedibile?})
912
%\ii l'ID del pacchetto $\rightarrow$ quello del pacchetto di richiesta
913
%(\alert{non prevedibile!})
914
%\ei
915
%\ii Ci sono quindi due campi, entrambi di 16 bit (porta e ID) che
916
%potrebbero essere non prevedibili dall'attaccante 
917
%\ei
918
%}
919
%
920
%\frame{
921
%\frametitle{DNS Attack}
922
%\begin{center}
923
%\scaledimg[0.8]{DNS-attack}
924
%\end{center}
925
%}
926
%
927
%
928
%\frame{
929
%\frametitle{DNS Attack - due calcoli}
930
%\bii
931
%\ii 32 bit $\rightarrow$ $2^{32}$ possibilità 
932
%\ii $2^{32} \simeq$ 4 miliardi di pacchetti
933
%\ii L'attaccante, ammesso che sappia il momento in cui deve inviare la
934
%risposta fasulla, deve inviare prima del server remoto mediamente 2
935
%miliardi di pacchetti.
936
%\ii Se ogni pacchetto è lungo 80 byte, l'attaccante deve mandare 160GB di
937
%traffico prima che il server remoto possa rispondere.
938
%\ei
939
%}
940
%
941
%\frame{
942
%\frametitle{DNS Attack - restringiamo le ipotesi}
943
%\bii
944
%\ii Alcuni server DNS non utilizzano una porta casuale per inviare le
945
%richieste
946
%\bii
947
%\ii BIND sceglie una porta all'avvio e continua ad usarla
948
%\ei
949
%\ii una volta scoperta la porta rimangono $2^{16}$ bit da indovinare, che
950
%sono comunque $65000*80 \simeq 5MB$ da inviare in poche decine di
951
%millisecondi
952
%\ei
953
%}
954
%
955
%\frame{
956
%\frametitle{DNS Attack - restringiamo le ipotesi}
957
%\bii
958
%\ii Immaginiamo che l'attaccante (Eve) possa far iniziare la richiesta al server
959
%DNS (o è all'interno della rete, oppure il server DNS (Alice) accetta
960
%anche richieste dall'esterno)
961
%\ii A questo punto l'attaccante sa quando avverrà la richiesta:
962
%\bii
963
%\ii Eve invia ad Alice una richiesta per il dominio www.example.com
964
%\ii Alice reinvia la richiesta al server DNS di example.com (Bob)
965
%\ii Eve prova a rispondere prima di Bob, con un flood di n risposte fasulle
966
%\ei
967
%\ii quante probabilità ha di riuscire? $n/2^{16}$ ammesso che il server
968
%DNS riesca a elaborare tutte le risposte forgiate.
969
%\ii Ci può aiutare il paradosso del compleanno.
970
%\ei
971
%}
972
%\frame{
973
%\frametitle{DNS Attack - Bithday paradox}
974
%Una parentesi, il birthday paradox.
975
%\bii
976
%\ii Quale è la possibilità $P(n)$ che tra le persone in questa stanza ce ne siano
977
%due nate nello stessio giorno? Per calcolare questo valore si usa la
978
%probabilità inversa: 
979
%\bii
980
%\ii $\overline{P}(n)$ = \emph{probabilità che su n persone nessuna sia nata lo stesso giorno}
981
%\ii $\overline{P}(n) =
982
%\frac{364}{365}*\frac{363}{365}*\frac{362}{365}\ldots\frac{365-(n-1)}{365}$
983
%\ii Invertendo: $P(n) = 1-\overline{P}(n)$, che si può scrivere $P(n) = 1 - \prod_{i=1}^{(n-1)}\frac{365-i}{365}$.
984
%\ii Abbastanza sorprendentemente:
985
%\bii
986
%\ii per n=23 P(n) $\simeq$ 51\%, 
987
%\ii per n=30 P(n) $\simeq$ 70\%, 
988
%\ii per n=40 P(n) $\simeq$ 97\%, 
989
%\ei
990
%\ei
991
%\ei
992
%}
993
%
994
%
995
%\frame{
996
%\frametitle{DNS Attack - Bithday paradox}
997
%\bii
998
%\ii Come si applica il paradosso all'attacco di DNS poisoning?
999
%\ii Se Eve fa n richieste per l'host
1000
%www.example.com, Alice genererà un ID a caso tra 0 e $2^{16}$
1001
%per ognuna delle richieste verso Bob. Alice interromperà l'inivo delle richieste
1002
%quando riceverà almeno una risposta valida.
1003
%\ii Contemporaneamente Eve invierà un burst di risposte falsificate, con un ID scelto a caso.
1004
%\ii Se l'ID di almeno una di queste risposte false corrisponde con l'ID di
1005
%almeno una delle richieste inviate (e viene ricevuta prima di quella
1006
%di Bob) allora Alice avrà nella cache un entry
1007
%per www.example.com 
1008
%\ii Statisticamente, per il paradosso del compleanno, inviando 700
1009
%richieste/risposte si ha ua probabilità vicina al 100\% di indovinare
1010
%almeno una risposta. 
1011
%\ii In questo modo la cache rimane inquinata e tutte le richieste
1012
%successive verranno redirette verso l'host controllato da Eve.
1013
%\ei
1014
%}
1015
%
1016
%\frame{
1017
%\frametitle{DNS Attack - Conclusioni}
1018
%\bii
1019
%\ii Fare poisoning di un server DNS è in linea teorica possibile ma molto
1020
%difficile,
1021
%\ii Sotto opportune ipotesi però l'attacco è perfettamente realizzabile
1022
%con dei mezzi a disposizione di chiunque
1023
%\ii L'attacco può essere reso più facile se il server DNS originario (Bob)
1024
%è sotto un attacco di DoS, quindi non risponde prontamente
1025
%\ii Per evitare che l'attacco sia applicabile è importante scegliere bene
1026
%gli applicativi che si usano, avendo la certezza, ad esempio, che
1027
%utilizzino porte sorgenti casuali.
1028
%\ei
1029
%}
846

  
847

  
848
\subsection{DNS Poisoning}
849
\frame{
850
\frametitle{recall DNS}
851
\bii
852
\ii Ogni host deve poter risolvere un indirizzo di rete da una stringa
853
alfanumerica (un dominio) ad un indirizzo IP. Questa operazione viene
854
svolta con il protocollo DNS, Domain Name System.
855
\ii Per ogni dominio in rete, esiste un server che può svolgere questo
856
compito in modo \emph{autoritative}
857
\ii L'indirizzo di un server \emph{autoritative} non è noto per ogni
858
dominio a priori, quindi ogni host è configurato con un indirizzo di un
859
server DNS locale
860
\ii Il server DNS locale richiederà a dei root server l'indirizzo dei DNS
861
validi per un certo dominio
862
\ii Una volta realizzata la risoluzione nome/IP, il DNS locale mantiene
863
l'associazione in una cache, per un certo periodo.
864
\ei
865
}
866

  
867
\frame{
868
\frametitle{recall DNS}
869
\scaledimg[0.8]{rete}
870
}
871

  
872
\frame{
873
\frametitle{Attacchi sul DNS}
874
\bii
875
\ii In generale, un attacco su un DNS serve a far credere ad un certo host
876
vittima che l'IP che corrisponde ad un nome di dominio è un IP diverso da
877
quello originale.
878
\ii Il protocollo DNS non utilizza forme di cifratura per proteggere i
879
pacchetti, quindi si possono falsificare le risposte di un DNS server.
880
\ii A cosa serve un attacco del genere?
881
\bii
882
\ii phishing, 
883
\ii furto di credenziali
884
\ii attacchi su home-banking
885
\ii redirezione di connessioni e mitm in generale
886
\ei
887
\ei
888
}
889

  
890
\frame{
891
\frametitle{DNS Attack}
892
Dove può essere realizzato l'attacco?
893
\bcols
894
\col[0.4]
895
\bii
896
\ii Nella rete locale
897
\ii Nella richiesta da/verso il server DNS locale
898
\ii Nella richiesta da/verso uno dei server authoritative
899
\ei
900
\col[0.6]
901
\scaledimg{rete}
902
\ecols
903
}
904

  
905
\frame{
906
\frametitle{DNS Attack - Layer II}
907
\bi
908
\ii Già abbiamo visto come a livello II si possono realizzare attacchi di
909
tipo MITM su varie tecnologie:
910
\bi
911
\ii arp-spoofing per reti ethernet
912
\ei
913
Non è quindi sorprendente immaginare che lo stesso attacco possa essere
914
utilizzato per modificare i pacchetti di:
915
\bii
916
\ii DHCP: assegnando ad un nodo della rete un nuovo indirizzo del server
917
DHCP, controllato dall'attaccante
918
\ii DNS responses: modificando i pacchetti che arrivano dal server DNS
919
\ei
920
\ei
921
}
922
\frame{
923
\frametitle{DNS Attack - Layer III}
924
\bii
925
\ii Se l'attaccante è nel path tra il server DNS locale e quello remoto,
926
l'attacco è banale
927
\ii Altrimenti l'attaccante deve poter rispondere ad una richiesta DNS
928
prima del server remoto pertinente.
929
\ii Quali sono i campi interessanti di un pacchetto DNS?
930
\bii
931
\ii La porta UDP di origine e destinazione
932
\ii L'IP di origine e destinazione
933
\ii L'ID del pacchetto, ovvero un numero scelto a caso da chi invia la
934
richesta che deve essere replicato nella risposta
935
\ei
936
\ei
937
}
938
\frame{
939
\frametitle{DNS Attack - Layer III}
940
\bii
941
\ii Lo scopo dell'attaccante è quello di riuscire a inquinare la cache del
942
server DNS locale, ovvero di rispondere al posto del server DNS remoto.
943
\ii Per farlo, nel momento in cui il server DNS locale invia una richiesta
944
per un dominio remoto l'attaccante deve rispondere con un pacchetto
945
forgiato, che contenga le caratteristiche giuste:
946
\bii
947
\ii l'indirizzo IP sorgente $\rightarrow$ quello del server remoto
948
(\alert{prevedibile})
949
\ii la porta UDP sorgente $\rightarrow$ quella del server remoto
950
(\alert{53})
951
\ii l'indirizzo IP destinazione $\rightarrow$ quello del server locale
952
(\alert{prevedibile})
953
\ii la porta UDP destinazione $\rightarrow$ quella usata dal server locale
954
per inviare la richiesta (\alert{non prevedibile?})
955
\ii l'ID del pacchetto $\rightarrow$ quello del pacchetto di richiesta
956
(\alert{non prevedibile!})
957
\ei
958
\ii Ci sono quindi due campi, entrambi di 16 bit (porta e ID) che
959
potrebbero essere non prevedibili dall'attaccante 
960
\ei
961
}
962

  
963
\frame{
964
\frametitle{DNS Attack}
965
\begin{center}
966
\scaledimg[0.8]{DNS-attack}
967
\end{center}
968
}
969

  
970

  
971
\frame{
972
\frametitle{DNS Attack - due calcoli}
973
\bii
974
\ii 32 bit $\rightarrow$ $2^{32}$ possibilità 
975
\ii $2^{32} \simeq$ 4 miliardi di pacchetti
976
\ii L'attaccante, ammesso che sappia il momento in cui deve inviare la
977
risposta fasulla, deve inviare prima del server remoto mediamente 2
978
miliardi di pacchetti.
979
\ii Se ogni pacchetto è lungo 80 byte, l'attaccante deve mandare 160GB di
980
traffico prima che il server remoto possa rispondere.
981
\ei
982
}
983

  
984
\frame{
985
\frametitle{DNS Attack - restringiamo le ipotesi}
986
\bii
987
\ii Alcuni server DNS non utilizzano una porta casuale per inviare le
988
richieste
989
\bii
990
\ii BIND sceglie una porta all'avvio e continua ad usarla
991
\ei
992
\ii una volta scoperta la porta rimangono $2^{16}$ bit da indovinare, che
993
sono comunque $65000*80 \simeq 5MB$ da inviare in poche decine di
994
millisecondi
995
\ei
996
}
997

  
998
\frame{
999
\frametitle{DNS Attack - restringiamo le ipotesi}
1000
\bii
1001
\ii Immaginiamo che l'attaccante (Eve) possa far iniziare la richiesta al server
1002
DNS (o è all'interno della rete, oppure il server DNS (Alice) accetta
1003
anche richieste dall'esterno)
1004
\ii A questo punto l'attaccante sa quando avverrà la richiesta:
1005
\bii
1006
\ii Eve invia ad Alice una richiesta per il dominio www.example.com
1007
\ii Alice reinvia la richiesta al server DNS di example.com (Bob)
1008
\ii Eve prova a rispondere prima di Bob, con un flood di n risposte fasulle
1009
\ei
1010
\ii quante probabilità ha di riuscire? $n/2^{16}$ ammesso che il server
1011
DNS riesca a elaborare tutte le risposte forgiate.
1012
\ii Ci può aiutare il paradosso del compleanno.
1013
\ei
1014
}
1015
\frame{
1016
\frametitle{DNS Attack - Bithday paradox}
1017
Una parentesi, il birthday paradox.
1018
\bii
1019
\ii Quale è la possibilità $P(n)$ che tra le persone in questa stanza ce ne siano
1020
due nate nello stessio giorno? Per calcolare questo valore si usa la
1021
probabilità inversa: 
1022
\bii
1023
\ii $\overline{P}(n)$ = \emph{probabilità che su n persone nessuna sia nata lo stesso giorno}
1024
\ii $\overline{P}(n) =
1025
\frac{364}{365}*\frac{363}{365}*\frac{362}{365}\ldots\frac{365-(n-1)}{365}$
1026
\ii Invertendo: $P(n) = 1-\overline{P}(n)$, che si può scrivere $P(n) = 1 - \prod_{i=1}^{(n-1)}\frac{365-i}{365}$.
1027
\ii Abbastanza sorprendentemente:
1028
\bii
1029
\ii per n=23 P(n) $\simeq$ 51\%, 
1030
\ii per n=30 P(n) $\simeq$ 70\%, 
1031
\ii per n=40 P(n) $\simeq$ 97\%, 
1032
\ei
1033
\ei
1034
\ei
1035
}
1036

  
1037

  
1038
\frame{
1039
\frametitle{DNS Attack - Bithday paradox}
1040
\bii
1041
\ii Come si applica il paradosso all'attacco di DNS poisoning?
1042
\ii Se Eve fa n richieste per l'host
1043
www.example.com, Alice genererà un ID a caso tra 0 e $2^{16}$
1044
per ognuna delle richieste verso Bob. Alice interromperà l'inivo delle richieste
1045
quando riceverà almeno una risposta valida.
1046
\ii Contemporaneamente Eve invierà un burst di risposte falsificate, con un ID scelto a caso.
1047
\ii Se l'ID di almeno una di queste risposte false corrisponde con l'ID di
1048
almeno una delle richieste inviate (e viene ricevuta prima di quella
1049
di Bob) allora Alice avrà nella cache un entry
1050
per www.example.com 
1051
\ii Statisticamente, per il paradosso del compleanno, inviando 700
1052
richieste/risposte si ha ua probabilità vicina al 100\% di indovinare
1053
almeno una risposta. 
1054
\ii In questo modo la cache rimane inquinata e tutte le richieste
1055
successive verranno redirette verso l'host controllato da Eve.
1056
\ei
1057
}
1058

  
1059
\frame{
1060
\frametitle{DNS Attack - Conclusioni}
1061
\bii
1062
\ii Fare poisoning di un server DNS è in linea teorica possibile ma molto
1063
difficile,
1064
\ii Sotto opportune ipotesi però l'attacco è perfettamente realizzabile
1065
con dei mezzi a disposizione di chiunque
1066
\ii L'attacco può essere reso più facile se il server DNS originario (Bob)
1067
è sotto un attacco di DoS, quindi non risponde prontamente
1068
\ii Per evitare che l'attacco sia applicabile è importante scegliere bene
1069
gli applicativi che si usano, avendo la certezza, ad esempio, che
1070
utilizzino porte sorgenti casuali.
1071
\ei
1072
}
1030 1073

  
1031 1074

  
images/source/DNS-attack.svg
1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
<!-- Created with Inkscape (http://www.inkscape.org/) -->
3

  
4
<svg
5
   xmlns:dc="http://purl.org/dc/elements/1.1/"
6
   xmlns:cc="http://creativecommons.org/ns#"
7
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8
   xmlns:svg="http://www.w3.org/2000/svg"
9
   xmlns="http://www.w3.org/2000/svg"
10
   xmlns:xlink="http://www.w3.org/1999/xlink"
11
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
   version="1.0"
14
   width="395.56537"
15
   height="204.90807"
16
   id="svg2"
17
   sodipodi:version="0.32"
18
   inkscape:version="0.92.4 (unknown)"
19
   sodipodi:docname="DNS-attack.svg"
20
   inkscape:export-filename="/home/leonardo/presentazioni/presentazioni/intro/images/attack.png"
21
   inkscape:export-xdpi="90"
22
   inkscape:export-ydpi="90">
23
  <metadata
24
     id="metadata1611">
25
    <rdf:RDF>
26
      <cc:Work
27
         rdf:about="">
28
        <dc:format>image/svg+xml</dc:format>
29
        <dc:type
30
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
31
        <dc:title></dc:title>
32
      </cc:Work>
33
      <cc:Work
34
         rdf:about="">
35
        <dc:format>image/svg+xml</dc:format>
36
        <dc:type
37
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
38
      </cc:Work>
39
    </rdf:RDF>
40
  </metadata>
41
  <sodipodi:namedview
42
     inkscape:window-height="1012"
43
     inkscape:window-width="1920"
44
     inkscape:pageshadow="2"
45
     inkscape:pageopacity="0.0"
46
     guidetolerance="10.0"
47
     gridtolerance="10.0"
48
     objecttolerance="10.0"
49
     borderopacity="1.0"
50
     bordercolor="#666666"
51
     pagecolor="#ffffff"
52
     id="base"
53
     showgrid="false"
54
     inkscape:zoom="1.3509593"
55
     inkscape:cx="135.37211"
56
     inkscape:cy="155.29813"
57
     inkscape:window-x="0"
58
     inkscape:window-y="0"
59
     inkscape:current-layer="layer1"
60
     showborder="false"
61
     inkscape:window-maximized="1"
62
     fit-margin-top="0"
63
     fit-margin-left="0"
64
     fit-margin-right="0"
65
     fit-margin-bottom="0" />
66
  <defs
67
     id="defs4">
68
    <marker
69
       inkscape:stockid="Arrow2Lend"
70
       orient="auto"
71
       refY="0"
72
       refX="0"
73
       id="marker6864"
74
       style="overflow:visible">
75
      <path
76
         id="path6062"
77
         style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
78
         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
79
         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
80
         inkscape:connector-curvature="0" />
81
    </marker>
82
    <marker
83
       inkscape:stockid="Arrow1Lend"
84
       orient="auto"
85
       refY="0"
86
       refX="0"
87
       id="Arrow1Lend"
88
       style="overflow:visible">
89
      <path
90
         id="path6044"
91
         d="M 0,0 5,-5 -12.5,0 5,5 Z"
92
         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;marker-start:none"
93
         transform="matrix(-0.8,0,0,-0.8,-10,0)"
94
         inkscape:connector-curvature="0" />
95
    </marker>
96
    <inkscape:perspective
97
       sodipodi:type="inkscape:persp3d"
98
       inkscape:vp_x="0 : 526.18109 : 1"
99
       inkscape:vp_y="0 : 1000 : 0"
100
       inkscape:vp_z="744.09448 : 526.18109 : 1"
101
       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
102
       id="perspective1613" />
103
    <linearGradient
104
       x1="68.268654"
105
       y1="164.80815"
106
       x2="70.638657"
107
       y2="87.802277"
108
       id="linearGradient10150"
109
       xlink:href="#linearGradient8474"
110
       gradientUnits="userSpaceOnUse"
111
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
112
    <linearGradient
113
       x1="68.268654"
114
       y1="164.80815"
115
       x2="70.638657"
116
       y2="87.802277"
117
       id="linearGradient10148"
118
       xlink:href="#linearGradient8474"
119
       gradientUnits="userSpaceOnUse"
120
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
121
    <linearGradient
122
       x1="68.268654"
123
       y1="164.80815"
124
       x2="70.638657"
125
       y2="87.802277"
126
       id="linearGradient10146"
127
       xlink:href="#linearGradient8474"
128
       gradientUnits="userSpaceOnUse"
129
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
130
    <linearGradient
131
       x1="68.268654"
132
       y1="164.80815"
133
       x2="70.638657"
134
       y2="87.802277"
135
       id="linearGradient10144"
136
       xlink:href="#linearGradient8474"
137
       gradientUnits="userSpaceOnUse"
138
       gradientTransform="matrix(0.272455,0,0,0.204889,215.0464,89.1095)" />
139
    <linearGradient
140
       x1="68.268654"
141
       y1="164.80815"
142
       x2="70.638657"
143
       y2="87.802277"
144
       id="linearGradient10142"
145
       xlink:href="#linearGradient8474"
146
       gradientUnits="userSpaceOnUse"
147
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
148
    <linearGradient
149
       x1="68.268654"
150
       y1="164.80815"
151
       x2="70.638657"
152
       y2="87.802277"
153
       id="linearGradient10048"
154
       xlink:href="#linearGradient8474"
155
       gradientUnits="userSpaceOnUse"
156
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
157
    <linearGradient
158
       x1="68.268654"
159
       y1="164.80815"
160
       x2="70.638657"
161
       y2="87.802277"
162
       id="linearGradient10046"
163
       xlink:href="#linearGradient8474"
164
       gradientUnits="userSpaceOnUse"
165
       gradientTransform="matrix(0.272455,0,0,0.204889,215.0464,89.1095)" />
166
    <linearGradient
167
       x1="68.268654"
168
       y1="164.80815"
169
       x2="70.638657"
170
       y2="87.802277"
171
       id="linearGradient10044"
172
       xlink:href="#linearGradient8474"
173
       gradientUnits="userSpaceOnUse"
174
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
175
    <linearGradient
176
       x1="68.268654"
177
       y1="164.80815"
178
       x2="70.638657"
179
       y2="87.802277"
180
       id="linearGradient10036"
181
       xlink:href="#linearGradient8474"
182
       gradientUnits="userSpaceOnUse"
183
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
184
    <linearGradient
185
       x1="68.268654"
186
       y1="164.80815"
187
       x2="70.638657"
188
       y2="87.802277"
189
       id="linearGradient10028"
190
       xlink:href="#linearGradient8474"
191
       gradientUnits="userSpaceOnUse"
192
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
193
    <linearGradient
194
       x1="68.268654"
195
       y1="164.80815"
196
       x2="70.638657"
197
       y2="87.802277"
198
       id="linearGradient7293"
199
       xlink:href="#linearGradient8474"
200
       gradientUnits="userSpaceOnUse"
201
       gradientTransform="matrix(0.272455,0,0,0.204889,215.0464,89.1095)" />
202
    <linearGradient
203
       x1="68.268654"
204
       y1="164.80815"
205
       x2="70.638657"
206
       y2="87.802277"
207
       id="linearGradient7287"
208
       xlink:href="#linearGradient8474"
209
       gradientUnits="userSpaceOnUse"
210
       gradientTransform="matrix(0.272455,0,0,0.204889,193.0464,89.1095)" />
211
    <linearGradient
212
       x1="68.268654"
213
       y1="164.80815"
214
       x2="70.638657"
215
       y2="87.802277"
216
       id="linearGradient7281"
217
       xlink:href="#linearGradient8474"
218
       gradientUnits="userSpaceOnUse"
219
       gradientTransform="matrix(0.272455,0,0,0.204889,169.0464,89.1095)" />
220
    <linearGradient
221
       x1="68.268654"
222
       y1="164.80815"
223
       x2="70.638657"
224
       y2="87.802277"
225
       id="linearGradient7275"
226
       xlink:href="#linearGradient8474"
227
       gradientUnits="userSpaceOnUse"
228
       gradientTransform="matrix(0.272455,0,0,0.204889,143.0464,89.1095)" />
229
    <linearGradient
230
       x1="68.268654"
231
       y1="164.80815"
232
       x2="70.638657"
233
       y2="87.802277"
234
       id="linearGradient4929"
235
       xlink:href="#linearGradient8474"
236
       gradientUnits="userSpaceOnUse"
237
       gradientTransform="matrix(0.272455,0,0,0.204889,118.9307,88.9786)" />
238
    <linearGradient
239
       x1="310.44888"
240
       y1="142.43878"
241
       x2="311.96149"
242
       y2="261.76053"
243
       id="linearGradient4917"
244
       xlink:href="#linearGradient1806"
245
       gradientUnits="userSpaceOnUse"
246
       gradientTransform="matrix(1.33512,0,0,-0.596114,-231.8379,185.4951)" />
247
    <linearGradient
248
       x1="312.61249"
249
       y1="135.90253"
250
       x2="339.46603"
251
       y2="316.70621"
252
       id="linearGradient4915"
253
       xlink:href="#linearGradient8474"
254
       gradientUnits="userSpaceOnUse"
255
       gradientTransform="matrix(1.33512,0,0,-0.596114,-231.8379,185.4951)" />
256
    <linearGradient
257
       x1="282.27411"
258
       y1="419.36389"
259
       x2="282.27411"
260
       y2="211.77074"
261
       id="linearGradient4912"
262
       xlink:href="#linearGradient8468"
263
       gradientUnits="userSpaceOnUse"
264
       gradientTransform="matrix(1.423388,0,0,-0.464941,-231.8379,154.7338)" />
265
    <linearGradient
266
       x1="151.97781"
267
       y1="82.293236"
268
       x2="200.30676"
269
       y2="418.78641"
270
       id="linearGradient4909"
271
       xlink:href="#linearGradient8474"
272
       gradientUnits="userSpaceOnUse"
273
       gradientTransform="matrix(1.423388,0,0,-0.464941,-231.8379,154.7338)" />
274
    <linearGradient
275
       x1="68.268654"
276
       y1="164.80815"
277
       x2="70.638657"
278
       y2="87.802277"
279
       id="linearGradient4906"
280
       xlink:href="#linearGradient8468"
281
       gradientUnits="userSpaceOnUse"
282
       gradientTransform="matrix(4.050391,0,0,1.342646,-91.51548,-60.79889)" />
283
    <linearGradient
284
       x1="280.30069"
285
       y1="418.04541"
286
       x2="283.50528"
287
       y2="212.07808"
288
       id="linearGradient4903"
289
       xlink:href="#linearGradient8481"
290
       gradientUnits="userSpaceOnUse"
291
       gradientTransform="matrix(1.427745,0,0,-0.463522,-231.8379,154.7338)" />
292
    <radialGradient
293
       cx="-289.0914"
294
       cy="598.36652"
295
       r="125.20509"
296
       fx="-285.65439"
297
       fy="552.23834"
298
       id="radialGradient1875"
299
       xlink:href="#linearGradient1851"
300
       gradientUnits="userSpaceOnUse"
301
       gradientTransform="matrix(-1.27051,0,0,0.218761,-207.1544,0.06085)" />
302
    <linearGradient
303
       id="linearGradient1851">
304
      <stop
305
         id="stop1852"
306
         style="stop-color:#000000;stop-opacity:0.37241378"
307
         offset="0" />
308
      <stop
309
         id="stop1854"
310
         style="stop-color:#000000;stop-opacity:0.11034483"
311
         offset="0.5" />
312
      <stop
313
         id="stop1853"
314
         style="stop-color:#adadad;stop-opacity:0"
315
         offset="1" />
316
    </linearGradient>
317
    <linearGradient
318
       id="linearGradient8468">
319
      <stop
320
         id="stop8469"
321
         style="stop-color:#000000;stop-opacity:0.58620691"
322
         offset="0" />
323
      <stop
324
         id="stop8470"
325
         style="stop-color:#000000;stop-opacity:0.00689655"
326
         offset="1" />
327
    </linearGradient>
328
    <linearGradient
329
       id="linearGradient1806">
330
      <stop
331
         id="stop1807"
332
         style="stop-color:#000000;stop-opacity:0.53103447"
333
         offset="0" />
334
      <stop
335
         id="stop3276"
336
         style="stop-color:#000000;stop-opacity:0.07344633"
337
         offset="0.6477778" />
338
      <stop
339
         id="stop1808"
340
         style="stop-color:#000000;stop-opacity:0"
341
         offset="1" />
342
    </linearGradient>
343
    <linearGradient
344
       id="linearGradient8474">
345
      <stop
346
         id="stop8475"
347
         style="stop-color:#ffffff;stop-opacity:1"
348
         offset="0" />
349
      <stop
350
         id="stop8476"
351
         style="stop-color:#a2a2a2;stop-opacity:1"
352
         offset="1" />
353
    </linearGradient>
354
    <linearGradient
355
       id="linearGradient8481">
356
      <stop
357
         id="stop8482"
358
         style="stop-color:#ffffff;stop-opacity:1"
359
         offset="0" />
360
      <stop
361
         id="stop8483"
362
         style="stop-color:#ffffff;stop-opacity:0.00392157"
363
         offset="1" />
364
    </linearGradient>
365
    <linearGradient
366
       x1="-2.3960868e-17"
367
       y1="3.3012049"
368
       x2="0.92957747"
369
       y2="-0.45783132"
370
       id="linearGradient4284"
371
       xlink:href="#linearGradient893" />
372
    <linearGradient
373
       x1="-0.77314812"
374
       y1="2.0837989"
375
       x2="0.99074072"
376
       y2="-0.033519555"
377
       id="linearGradient4283"
378
       xlink:href="#linearGradient893" />
379
    <linearGradient
380
       x1="0.47041038"
381
       y1="-0.033741195"
382
       x2="0.48453596"
383
       y2="1.8771822"
384
       id="linearGradient2740"
385
       xlink:href="#linearGradient902"
386
       gradientTransform="scale(0.997153,1.002855)" />
387
    <linearGradient
388
       x1="0.4704251"
389
       y1="-0.04365262"
390
       x2="0.48481107"
391
       y2="1.9025002"
392
       id="linearGradient1506"
393
       xlink:href="#linearGradient902"
394
       gradientTransform="scale(0.995847,1.00417)" />
395
    <linearGradient
396
       x1="0.47157744"
397
       y1="-0.02485317"
398
       x2="0.48548824"
399
       y2="1.8570156"
400
       id="linearGradient1505"
401
       xlink:href="#linearGradient902"
402
       gradientTransform="scale(0.997825,1.00218)" />
403
    <linearGradient
404
       x1="88.755692"
405
       y1="169.09755"
406
       x2="88.996956"
407
       y2="182.99155"
408
       id="linearGradient1404"
409
       xlink:href="#linearGradient892"
410
       gradientUnits="userSpaceOnUse"
411
       gradientTransform="scale(1.3695887,0.7301462)" />
412
    <radialGradient
413
       cx="0.5"
414
       cy="0.50000006"
415
       r="0.34964636"
416
       fx="0.50352114"
417
       fy="0.18269235"
418
       id="radialGradient1316"
419
       xlink:href="#linearGradient1317" />
420
    <radialGradient
421
       cx="0.47887325"
422
       cy="0.53333336"
423
       r="0.41197181"
424
       fx="0.47535211"
425
       fy="0.26666668"
426
       id="radialGradient1315"
427
       xlink:href="#linearGradient1317" />
428
    <linearGradient
429
       x1="101.10657"
430
       y1="177.77768"
431
       x2="95.100159"
432
       y2="173.03152"
433
       id="linearGradient1171"
434
       xlink:href="#linearGradient902"
435
       gradientUnits="userSpaceOnUse"
436
       gradientTransform="scale(1.3601783,0.7351977)" />
437
    <linearGradient
438
       x1="0.47284532"
439
       y1="-0.016295359"
440
       x2="0.48655096"
441
       y2="1.8378206"
442
       id="linearGradient1170"
443
       xlink:href="#linearGradient902"
444
       gradientTransform="scale(0.998371,1.001632)" />
445
    <linearGradient
446
       x1="146.69923"
447
       y1="224.57898"
448
       x2="74.533691"
449
       y2="81.4776"
450
       id="linearGradient1169"
451
       xlink:href="#linearGradient893"
452
       gradientUnits="userSpaceOnUse"
453
       gradientTransform="scale(1.1870691,0.842411)" />
454
    <linearGradient
455
       x1="141.60217"
456
       y1="228.39311"
457
       x2="88.447014"
458
       y2="133.5471"
459
       id="linearGradient1167"
460
       xlink:href="#linearGradient888"
461
       gradientUnits="userSpaceOnUse"
462
       gradientTransform="scale(1.1838753,0.8446836)" />
463
    <linearGradient
464
       x1="111.49758"
465
       y1="131.25249"
466
       x2="107.04918"
467
       y2="148.78619"
468
       id="linearGradient1166"
469
       xlink:href="#linearGradient1317"
470
       gradientUnits="userSpaceOnUse"
471
       gradientTransform="scale(1.223869,0.8170809)" />
472
    <linearGradient
473
       x1="51.46093"
474
       y1="269.85831"
475
       x2="-16.224497"
476
       y2="176.28694"
477
       id="linearGradient1157"
478
       xlink:href="#linearGradient888"
479
       gradientUnits="userSpaceOnUse"
480
       gradientTransform="scale(2.4217071,0.4129318)" />
481
    <linearGradient
482
       x1="25.220816"
483
       y1="178.48862"
484
       x2="25.220816"
485
       y2="234.26866"
486
       id="linearGradient1156"
487
       xlink:href="#linearGradient888"
488
       gradientUnits="userSpaceOnUse"
489
       gradientTransform="scale(2.4217071,0.4129318)" />
490
    <linearGradient
491
       x1="35.190361"
492
       y1="76.277557"
493
       x2="8.3460579"
494
       y2="105.42543"
495
       id="linearGradient1150"
496
       xlink:href="#linearGradient892"
497
       gradientUnits="userSpaceOnUse"
498
       gradientTransform="scale(1.3283861,0.7527932)" />
499
    <linearGradient
500
       x1="39.690613"
501
       y1="49.507656"
502
       x2="70.224304"
503
       y2="20.481863"
504
       id="linearGradient1148"
505
       xlink:href="#linearGradient892"
506
       gradientUnits="userSpaceOnUse"
507
       gradientTransform="scale(1.329144,0.7523639)" />
508
    <linearGradient
509
       x1="39.810947"
510
       y1="90.197021"
511
       x2="17.87653"
512
       y2="113.71949"
513
       id="linearGradient1146"
514
       xlink:href="#linearGradient892"
515
       gradientUnits="userSpaceOnUse"
516
       gradientTransform="scale(1.3207392,0.7571517)" />
517
    <linearGradient
518
       x1="31.449743"
519
       y1="203.49899"
520
       x2="31.617281"
521
       y2="251.21892"
522
       id="linearGradient1144"
523
       xlink:href="#linearGradient892"
524
       gradientUnits="userSpaceOnUse"
525
       gradientTransform="scale(2.1051174,0.4750329)" />
526
    <linearGradient
527
       x1="0"
528
       y1="3.3012049"
529
       x2="0.92957747"
530
       y2="-0.45783132"
531
       id="linearGradient1141"
532
       xlink:href="#linearGradient888" />
533
    <linearGradient
534
       x1="45.685757"
535
       y1="110.4447"
536
       x2="41.96706"
537
       y2="232.24953"
538
       id="linearGradient1140"
539
       xlink:href="#linearGradient888"
540
       gradientUnits="userSpaceOnUse"
541
       gradientTransform="scale(1.9102155,0.5235012)" />
542
    <linearGradient
543
       x1="-249.72067"
544
       y1="375.922"
545
       x2="-268.25406"
546
       y2="75.912529"
547
       id="linearGradient1138"
548
       xlink:href="#linearGradient1806"
549
       gradientUnits="userSpaceOnUse"
550
       gradientTransform="scale(1.087146,0.9198397)" />
551
    <radialGradient
552
       cx="60.004654"
553
       cy="56.485935"
554
       r="68.589226"
555
       fx="72.10788"
556
       fy="39.288475"
557
       id="radialGradient1132"
558
       xlink:href="#linearGradient1133"
559
       gradientUnits="userSpaceOnUse"
560
       gradientTransform="scale(1.2267534,0.8151598)" />
561
    <linearGradient
562
       x1="-77.726181"
563
       y1="208.43991"
564
       x2="95.64444"
565
       y2="11.699047"
566
       id="linearGradient905"
567
       xlink:href="#linearGradient888"
568
       gradientUnits="userSpaceOnUse"
569
       gradientTransform="scale(1.0964158,0.9120627)" />
570
    <linearGradient
571
       id="linearGradient901"
572
       xlink:href="#linearGradient1806" />
573
    <linearGradient
574
       x1="92.437965"
575
       y1="-3.9104078"
576
       x2="27.674332"
577
       y2="91.076988"
578
       id="linearGradient891"
579
       xlink:href="#linearGradient888"
580
       gradientUnits="userSpaceOnUse"
581
       gradientTransform="scale(1.2267534,0.8151598)" />
582
    <linearGradient
583
       id="linearGradient888">
584
      <stop
585
         id="stop889"
586
         style="stop-color:#626262;stop-opacity:1"
587
         offset="0" />
588
      <stop
589
         id="stop890"
590
         style="stop-color:#ffffff;stop-opacity:1"
591
         offset="1" />
592
    </linearGradient>
593
    <linearGradient
594
       id="linearGradient892">
595
      <stop
596
         id="stop893"
597
         style="stop-color:#ffffff;stop-opacity:0"
598
         offset="0" />
599
      <stop
600
         id="stop894"
601
         style="stop-color:#ffffff;stop-opacity:1"
602
         offset="1" />
603
    </linearGradient>
604
    <linearGradient
605
       id="linearGradient902">
606
      <stop
607
         id="stop903"
608
         style="stop-color:#000000;stop-opacity:0"
609
         offset="0" />
610
      <stop
611
         id="stop904"
612
         style="stop-color:#000000;stop-opacity:0.22"
613
         offset="1" />
614
    </linearGradient>
615
    <linearGradient
616
       id="linearGradient1098">
617
      <stop
618
         id="stop1099"
619
         style="stop-color:#ffffff;stop-opacity:1"
620
         offset="0" />
621
      <stop
622
         id="stop1101"
623
         style="stop-color:#ffffff;stop-opacity:0.22314049"
624
         offset="0.5" />
625
      <stop
626
         id="stop1102"
627
         style="stop-color:#ffffff;stop-opacity:0"
628
         offset="0.59930235" />
629
      <stop
630
         id="stop1100"
631
         style="stop-color:#ffffff;stop-opacity:0.60330576"
632
         offset="1" />
633
    </linearGradient>
634
    <linearGradient
635
       id="linearGradient1133">
636
      <stop
637
         id="stop1134"
638
         style="stop-color:#8bb7df;stop-opacity:1"
639
         offset="0" />
640
      <stop
641
         id="stop1136"
642
         style="stop-color:#2a6092;stop-opacity:1"
643
         offset="0.76209301" />
644
      <stop
645
         id="stop1135"
646
         style="stop-color:#375e82;stop-opacity:1"
647
         offset="1" />
648
    </linearGradient>
649
    <linearGradient
650
       id="linearGradient1317">
651
      <stop
652
         id="stop1318"
653
         style="stop-color:#000000;stop-opacity:0.5289256"
654
         offset="0" />
655
      <stop
656
         id="stop1320"
657
         style="stop-color:#000000;stop-opacity:0.17355372"
658
         offset="0.5" />
659
      <stop
660
         id="stop1319"
661
         style="stop-color:#000000;stop-opacity:0"
662
         offset="1" />
663
    </linearGradient>
664
    <linearGradient
665
       id="linearGradient893">
666
      <stop
667
         id="stop895"
668
         style="stop-color:#000000;stop-opacity:1"
669
         offset="0" />
670
      <stop
671
         id="stop896"
672
         style="stop-color:#ffffff;stop-opacity:1"
673
         offset="1" />
674
    </linearGradient>
675
    <radialGradient
676
       cx="42.007256"
677
       cy="39.007645"
678
       r="11.574221"
679
       fx="42.280807"
680
       fy="39.410465"
681
       id="radialGradient1977"
682
       xlink:href="#linearGradient1806"
683
       gradientUnits="userSpaceOnUse" />
684
    <linearGradient
685
       id="linearGradient6218">
686
      <stop
687
         id="stop6220"
688
         style="stop-color:#000000;stop-opacity:0.35051546"
689
         offset="0" />
690
      <stop
691
         id="stop6222"
692
         style="stop-color:#000000;stop-opacity:0.13402061"
693
         offset="0.64999998" />
694
      <stop
695
         id="stop6224"
696
         style="stop-color:#000000;stop-opacity:0"
697
         offset="1" />
698
    </linearGradient>
699
    <linearGradient
700
       x1="-248.73039"
701
       y1="358.13522"
702
       x2="-266.11459"
703
       y2="76.728447"
704
       id="linearGradient6303"
705
       xlink:href="#linearGradient1806"
706
       gradientUnits="userSpaceOnUse"
707
       gradientTransform="scale(1.0901692,0.9172888)" />
708
    <linearGradient
709
       x1="-249.64897"
710
       y1="367.33072"
711
       x2="-267.62701"
712
       y2="76.311188"
713
       id="linearGradient6305"
714
       xlink:href="#linearGradient1806"
715
       gradientUnits="userSpaceOnUse"
716
       gradientTransform="scale(1.0880088,0.9191102)" />
717
    <linearGradient
718
       x1="-249.72067"
719
       y1="375.922"
720
       x2="-268.25406"
721
       y2="75.912529"
722
       id="linearGradient6307"
723
       xlink:href="#linearGradient1806"
724
       gradientUnits="userSpaceOnUse"
725
       gradientTransform="scale(1.087146,0.9198397)" />
726
    <linearGradient
727
       x1="1.2222271"
728
       y1="0.4609375"
729
       x2="1.1666682"
730
       y2="0.4609375"
731
       id="linearGradient654"
732
       xlink:href="#linearGradient650"
733
       gradientUnits="objectBoundingBox"
734
       spreadMethod="repeat" />
735
    <linearGradient
736
       x1="1.0000055"
737
       y1="0.53125"
738
       x2="1.166669"
739
       y2="0.5390625"
740
       id="linearGradient653"
741
       xlink:href="#linearGradient650"
742
       gradientUnits="objectBoundingBox"
743
       spreadMethod="repeat" />
744
    <linearGradient
745
       id="linearGradient650">
746
      <stop
747
         id="stop651"
748
         style="stop-color:#000000;stop-opacity:1"
749
         offset="0" />
750
      <stop
751
         id="stop652"
752
         style="stop-color:#ffffff;stop-opacity:1"
753
         offset="1" />
754
    </linearGradient>
755
    <radialGradient
756
       cx="42.007256"
757
       cy="39.007645"
758
       r="11.574221"
759
       fx="42.280807"
760
       fy="39.410465"
761
       id="radialGradient12803"
762
       xlink:href="#linearGradient1806"
763
       gradientUnits="userSpaceOnUse" />
764
    <linearGradient
765
       x1="-248.73039"
766
       y1="358.13522"
767
       x2="-266.11459"
768
       y2="76.728447"
769
       id="linearGradient12805"
770
       xlink:href="#linearGradient1806"
771
       gradientUnits="userSpaceOnUse"
772
       gradientTransform="scale(1.0901692,0.9172888)" />
773
    <linearGradient
774
       x1="-249.64897"
775
       y1="367.33072"
776
       x2="-267.62701"
777
       y2="76.311188"
778
       id="linearGradient12807"
779
       xlink:href="#linearGradient1806"
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff