<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mignatje</id>
	<title>ICO wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.itcollege.ee/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mignatje"/>
	<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php/Special:Contributions/Mignatje"/>
	<updated>2026-05-07T01:18:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=IT_infrastruktuuri_teenused_2013_kevad&amp;diff=62979</id>
		<title>IT infrastruktuuri teenused 2013 kevad</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=IT_infrastruktuuri_teenused_2013_kevad&amp;diff=62979"/>
		<updated>2013-05-13T12:27:11Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: /* IT infrastruktuuri teenused kirjatükid 2013 kevad päevaõpe */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:IT infrastruktuuri teenused]]&lt;br /&gt;
=IT infrastruktuuri teenused kirjatükid 2013 kevad päevaõpe=&lt;br /&gt;
&lt;br /&gt;
* Nimi, rühm - referaadi link&lt;br /&gt;
* Marju Ignatjeva, DK41 - [[HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil | HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil]]&lt;br /&gt;
*&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62870</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62870"/>
		<updated>2013-05-05T20:27:21Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: /* Teeseldud CA */ Väike sisuline parandus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud võrguliikluse heatahtlikuks uurimiseks, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward secrecy&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Wikipediast]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls Stackexchange&#039;ist].&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, termineerides kliendi päringu ja suheldes omakorda ise serveriga. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!  Lugejale jääb välja uurimiseks, mida mitmproxy peab silmas teatega &amp;quot;&amp;lt;tt&amp;gt;[decoded gzip] Couldn&#039;t parse: falling back to Raw&amp;lt;/tt&amp;gt;&amp;quot; ja kas see takistab meil vastuse muutmist avatekstina.&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot mitmproxy response.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
==Kasutatud materjalid==&lt;br /&gt;
* [http://segfault.in/2010/11/decrypt-https-traffic-using-wireshark-and-key-file/ Decrypt HTTPS Traffic Using Wireshark And Key File]&lt;br /&gt;
* [http://www.youtube.com/watch?v=kQ1-0G90lQg mitmproxy - use and abuse of a hackable SSL-capable man-in-the-middle proxy - YouTube]&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62869</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62869"/>
		<updated>2013-05-05T20:05:18Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud võrguliikluse heatahtlikuks uurimiseks, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward secrecy&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Wikipediast]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls Stackexchange&#039;ist].&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!  Lugejale jääb välja uurimiseks, mida mitmproxy peab silmas teatega &amp;quot;&amp;lt;tt&amp;gt;[decoded gzip] Couldn&#039;t parse: falling back to Raw&amp;lt;/tt&amp;gt;&amp;quot; ja kas see takistab meil vastuse muutmist avatekstina.&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot mitmproxy response.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
==Kasutatud materjalid==&lt;br /&gt;
* [http://segfault.in/2010/11/decrypt-https-traffic-using-wireshark-and-key-file/ Decrypt HTTPS Traffic Using Wireshark And Key File]&lt;br /&gt;
* [http://www.youtube.com/watch?v=kQ1-0G90lQg mitmproxy - use and abuse of a hackable SSL-capable man-in-the-middle proxy - YouTube]&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62868</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62868"/>
		<updated>2013-05-05T20:03:39Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: kasutatud materjalid&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse heatahtlikuks uurimiskes, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward secrecy&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Wikipediast]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls Stackexchange&#039;ist].&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!  Lugejale jääb välja uurimiseks, mida mitmproxy peab silmas teatega &amp;quot;&amp;lt;tt&amp;gt;[decoded gzip] Couldn&#039;t parse: falling back to Raw&amp;lt;/tt&amp;gt;&amp;quot; ja kas see takistab meil vastuse muutmist avatekstina.&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot mitmproxy response.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
==Kasutatud materjalid==&lt;br /&gt;
* [http://segfault.in/2010/11/decrypt-https-traffic-using-wireshark-and-key-file/ Decrypt HTTPS Traffic Using Wireshark And Key File]&lt;br /&gt;
* [http://www.youtube.com/watch?v=kQ1-0G90lQg mitmproxy - use and abuse of a hackable SSL-capable man-in-the-middle proxy - YouTube]&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62867</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62867"/>
		<updated>2013-05-05T19:59:10Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: /* HTTPS päringute vaheltvõtmine */ Üks nüanss lisaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse heatahtlikuks uurimiskes, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward secrecy&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Wikipediast]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls Stackexchange&#039;ist].&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!  Lugejale jääb välja uurimiseks, mida mitmproxy peab silmas teatega &amp;quot;&amp;lt;tt&amp;gt;[decoded gzip] Couldn&#039;t parse: falling back to Raw&amp;lt;/tt&amp;gt;&amp;quot; ja kas see takistab meil vastuse muutmist avatekstina.&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot mitmproxy response.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62866</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62866"/>
		<updated>2013-05-05T19:52:39Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: /* HTTPS päringute vaheltvõtmine */ mitmproxy pilt ka&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse heatahtlikuks uurimiskes, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward secrecy&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Wikipediast]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls Stackexchange&#039;ist].&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot mitmproxy response.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Marju_ignatjeva_Screenshot_mitmproxy_response.png&amp;diff=62865</id>
		<title>File:Marju ignatjeva Screenshot mitmproxy response.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Marju_ignatjeva_Screenshot_mitmproxy_response.png&amp;diff=62865"/>
		<updated>2013-05-05T19:51:36Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: IT infra wiki artikli jaoks.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IT infra wiki artikli jaoks.&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62864</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62864"/>
		<updated>2013-05-05T19:49:29Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: /* Püütud pakettide uurimine */ URL-id inimloetavamaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse heatahtlikuks uurimiskes, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward secrecy&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange Wikipediast]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls Stackexchange&#039;ist].&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
FIXME: screenshot&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62863</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62863"/>
		<updated>2013-05-05T19:48:03Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: /* Püütud pakettide uurimine */ termini parandus&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse heatahtlikuks uurimiskes, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward secrecy&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls]&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
FIXME: screenshot&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62862</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62862"/>
		<updated>2013-05-05T19:46:55Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: pisiparandused&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse heatahtlikuks uurimiskes, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Läbivalt on kasutusel serveri aadress 192.168.56.201.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed (failitee seadistamine jääb lugejale väljauurimiseks).&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks (erinevate krüptoprotokollide detailid on väljaspool selle artikli mahtu, kuid võtmefraasiks on siin &#039;&#039;perfect forward security&#039;&#039;).&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls]&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti ja HTTP päringut-vastust avatekstina uurida:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
FIXME: screenshot&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62861</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62861"/>
		<updated>2013-05-05T19:41:14Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: mitmproxy jutt lisaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse uurimiseks tavaolukorras, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t, HTTP kliendina ka &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed.&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks.&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls]&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
&lt;br /&gt;
===Kliendi proxy seadistamine===&lt;br /&gt;
Selleks, et &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; abil HTTPS liikluse sisu uurida, tuleb ta kõigepealt HTTP kliendis (brauseris, &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-is vms) seadistada &#039;&#039;proxy&#039;&#039;-ks.&lt;br /&gt;
Nimelt, kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; käivitada, siis vaikimisi kuulab ta aadressil 0.0.0.0 pordil 8080. Seega &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt;-ile anname need parameetrid &#039;&#039;proxy&#039;&#039; jaoks ja teeme HTTPS päringu oma serveri pihta.&lt;br /&gt;
&lt;br /&gt;
  curl -x localhost:8080 --insecure https://192.168.56.201&lt;br /&gt;
&lt;br /&gt;
See päring ja vastus kajastuvad nüüd &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; interaktiivses aknas.&lt;br /&gt;
&lt;br /&gt;
Päriselus kasutame vingemate veebirakenduste kasutamiseks siiski graafilist brauserit ja edasi läheme Chromiumi näitel, kus samuti on kõigepealt vaja seadistada &#039;&#039;proxy&#039;&#039; (ja brauser restartida). Seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===Teeseldud CA===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; on seadistatud &#039;&#039;proxy&#039;&#039;-ks, siis HTTPS päringute korral pakub ta brauserile tegeliku serveri sertifikaadi asemel omaenda n-ö &#039;&#039;dummy&#039;&#039; sertifikaati (e. mängib CA-d) ja on seetõttu võimeline ka HTTPS liiklust &amp;quot;vahelt võtma&amp;quot;, kuna HTTPS osapoolteks on klient ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;, mitte enam server. Peale esimest käivitust tekivad kasutaja kodukataloogi alamkataloogi &amp;lt;tt&amp;gt;.mitmproxy&amp;lt;/tt&amp;gt; selle dummy CA-ga seotud failid.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ls ~/.mitmproxy/&lt;br /&gt;
  mitmproxy-ca-cert.cer  mitmproxy-ca-cert.p12  mitmproxy-ca-cert.pem  mitmproxy-ca.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sellist dummy CA-d brauser vaikimisi ei usalda ja reageerib nagu tüüpiliselt ka iseallkirjastatud sertifikaatide puhul. Kui &amp;quot;harjumuspäraselt&amp;quot; vajutada &amp;quot;Proceed anyway&amp;quot;, saame vaatlusalusele saidile tehtud HTTPS päringuid ja vastuseid üsna mugavalt uurida. Muidugi on &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; CA võimalik lisada ka brauseri poolt usaldatavate CA-de hulka, aga seda siin ei kirjelda.&lt;br /&gt;
&lt;br /&gt;
===HTTPS päringute vaheltvõtmine===&lt;br /&gt;
Edasi seadistame konkreetsele aadressile tehtavate päringute vaheltvõtmise. Selleks tuleb &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; peaaknas vajutada &amp;quot;i&amp;quot; ja sisestada regulaaravaldis, mis meil on &amp;quot;192\.168\.56\.200&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Kui nüüd minna aadressile https://192.168.56.201, siis brauser jääb ootele ja &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; aknasse tekib päringukirje, ning vaheltvõetud päringu edasisaatmiseks tuleb vajutada &amp;quot;a&amp;quot;. Seda tuleb teha ka vastusega, kui me vastust muuta ei soovi, et brauser vastuse kätte saaks.&lt;br /&gt;
&lt;br /&gt;
Päringuid ja vastuseid, mis veel ei ole &amp;quot;a&amp;quot; abil &amp;quot;aktsepteeritud&amp;quot;, saame avatekstina uurida ja muuta!&lt;br /&gt;
&lt;br /&gt;
Näide vaheltvõetud vastusest:&lt;br /&gt;
FIXME: screenshot&lt;br /&gt;
&lt;br /&gt;
Põhjalikum &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; [http://mitmproxy.org/doc/index.html kasutusjuhend] kirjeldab nii päringute filtreerimist kui päringute ja vastuste redigeerimist ja palju muud.&lt;br /&gt;
&lt;br /&gt;
Head eksperimenteerimist! ;-)&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62854</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62854"/>
		<updated>2013-05-05T18:29:10Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: Disclaimer ka igaks juhuks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit. Tegu võib olla ka mõne mobiilirakendusega, mille kohta soovime teada, mis andmeid ta meie telefoni kaudu edastab ja vastu võtab.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Siin artiklis toodud juhised on mõeldud liikluse uurimiseks tavaolukorras, mitte kolmandate osapoolte andmevahetusse sissemurdmiseks!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed.&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks.&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls]&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
FIXME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62853</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62853"/>
		<updated>2013-05-05T15:32:31Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: Esimese osa pildid ja pisiparandused&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst &amp;quot;Edit&amp;quot;-&amp;gt;&amp;quot;Preferences&amp;quot; avanevas aknas &amp;quot;Protocols&amp;quot; alt &amp;quot;SSL&amp;quot; ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark ssl keys.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed.&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks.&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls]&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti:&lt;br /&gt;
&lt;br /&gt;
[[File:Marju ignatjeva Screenshot wireshark https decrypted.png|600px]]&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
FIXME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Marju_ignatjeva_Screenshot_wireshark_https_decrypted.png&amp;diff=62852</id>
		<title>File:Marju ignatjeva Screenshot wireshark https decrypted.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Marju_ignatjeva_Screenshot_wireshark_https_decrypted.png&amp;diff=62852"/>
		<updated>2013-05-05T15:27:01Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: IT infra wiki artikli jaoks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IT infra wiki artikli jaoks&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=File:Marju_ignatjeva_Screenshot_wireshark_ssl_keys.png&amp;diff=62851</id>
		<title>File:Marju ignatjeva Screenshot wireshark ssl keys.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=File:Marju_ignatjeva_Screenshot_wireshark_ssl_keys.png&amp;diff=62851"/>
		<updated>2013-05-05T15:22:35Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: IT infra wiki artikli jaoks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;IT infra wiki artikli jaoks&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62850</id>
		<title>HTTPS liikluse uurimine tcpdump, Wireshark ja mitmproxy abil</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=HTTPS_liikluse_uurimine_tcpdump,_Wireshark_ja_mitmproxy_abil&amp;diff=62850"/>
		<updated>2013-05-05T15:21:01Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: Marju Ignatjeva artikli esimene osa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See artikkel räägib HTTPS liikluse analüüsimisest (HTTP päringute avatekstiks lahtivõtmise teel) kahes olukorras.&lt;br /&gt;
Esiteks -- kui nii klient kui server on meie hallata ja me soovime testida, kas server saab just selliseid HTTP päringuid ja saadab selliseid vastuseid, nagu me eeldame.&lt;br /&gt;
Teiseks -- kui serveriks on mõni avalik veebiteenus, millega suhtleme üle HTTPS protokolli, ja soovime teada, mida meie brauser serveriga räägib. Sisuliselt on siin tegemist olukorraga, kus me ei pruugi usaldada ei klienti (brauser jooksutab meie teadmata mingit kuritahtlikku skripti) ega ka serverit.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Autor: Marju Ignatjeva&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Töövahendid ja keskkond==&lt;br /&gt;
Kasutame töövahenditena &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i ja Wiresharki ning &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt;-t.&lt;br /&gt;
&lt;br /&gt;
Artikli lugejalt eeldan, et HTTPS üldine tööpõhimõte on selge ja et lugeja oskab Linuxi keskkonnas paigaldada tarkvara nii süsteemsest pakimajandusest kui ka Pythoni pakendussüsteemide (eeskätt &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;) vahenditega, samuti saab hakkama käsureal. Töövahendite paigaldamise juhised on siiski ka artiklis olemas.&lt;br /&gt;
&lt;br /&gt;
Artiklis toodud näited põhinevad katsetustel 64-bitise Kubuntu 12.10 operatsioonisüsteemi all.&lt;br /&gt;
&lt;br /&gt;
===Töövahendite paigaldamine===&lt;br /&gt;
Kui &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; ei ole paigaldatud, tuleb see juurkasutajana paigaldada käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install tcpdump&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wiresharki paigaldame käsuga&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install wireshark&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HTTP päringuid on käsurealt mugav teha &amp;lt;tt&amp;gt;curl&amp;lt;/tt&amp;gt; nimelise tööriistaga, paigaldame ka selle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install curl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna erinevate Linuxi distributsioonide pakimajanduses ei pruugi alati olla Pythonis kirjutatud tarkvarast väga värskeid versioone, siis &amp;lt;tt&amp;gt;mitmproxy&amp;lt;/tt&amp;gt; paigaldamiseks on mõistlik kasutada &amp;lt;tt&amp;gt;pip&amp;lt;/tt&amp;gt;-i.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  apt-get install python-pip&lt;br /&gt;
  pip install mitmproxy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==tcpdump ja Wireshark==&lt;br /&gt;
HTTPS liikluse püüdmiseks kasutame käsureavahendit &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt; seetõttu, et servereid hallates ei ole meil tihtipeale ligipääsu graafilisele keskkonnale. Samas on Wireshark mugav ja kasutajasõbralik võrguliikluse uurimise töövahend ja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i abil salvestatud liiklust saab Wiresharki abil hiljem suvalises teises masinas analüüsida.&lt;br /&gt;
&lt;br /&gt;
Kuna veebiserver on meie hallata, siis on meil olemas tema privaatvõti. See on ainus vajalik sisend Wiresharkile, et ta oskaks kinnipüütud pakette lahti krüpteerida.&lt;br /&gt;
&lt;br /&gt;
===Pakettide püüdmine===&lt;br /&gt;
Kõigepealt paneme &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i kuulama liiklust liidesel &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt; (antud juhul on see Virtualboxi &#039;&#039;host-only&#039;&#039; võrguliides), aadressil 192.168.56.201, pordil 443 (meil on sinna konfitud üks HTTPS toega &#039;&#039;virtualhost&#039;&#039;). Seda tuleb teha juurkasutaja õigustes, et meile antaks ligipääs võrguliidesele.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  tcpdump -w https_dump.pcap -i eth1 host 192.168.56.201 and port 443&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Teeme klientmasinast päringu (öeldes, et usaldame serveri enda poolt allkirjastatud sertifikaati):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  curl --insecure https://192.168.56.201&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nüüd lõpetame Ctrl+C abil serveris &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;i töö -- too ütleb lõpetades käsureale midagi sellist:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  15 packets captured&lt;br /&gt;
  15 packets received by filter&lt;br /&gt;
  0 packets dropped by kernel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Püütud pakettide uurimine===&lt;br /&gt;
Järgmiseks on vaja &amp;lt;tt&amp;gt;tcpdump&amp;lt;/tt&amp;gt;-i väljundfail saada masinasse, kus meil on võimalik kasutada Wiresharki (kusjuures salvestatud faili uurimiseks ei ole juurkasutaja õiguseid vaja).&lt;br /&gt;
Käivitame Wiresharki ja avame oma .pcap faili. Esialgu näitab Wireshark küll HTTPS-iga seotud andmevahetust, kuid HTTP päringuid avatekstina pole võimalik näha.&lt;br /&gt;
Wireshark võimaldab seda krüpteeritud sisuga andmevoogu ka eraldi aknas uurida (&amp;quot;Follow TCP Stream&amp;quot; suvalise paketi kontekstimenüüst).&lt;br /&gt;
&lt;br /&gt;
Järgmiseks hangime serverist tema privaatvõtme (NB! Erinevate &#039;&#039;virtualhost&#039;&#039;ide olemasolul pead hankima just antud päringus kasutatud IP-le vastava võtme!)&lt;br /&gt;
&lt;br /&gt;
Wiresharkis võtame menüüst Edit-&amp;gt;Preferences avanevas aknas Protocols alt SSL ja lisame serveri võtme:&lt;br /&gt;
&lt;br /&gt;
FIXME: siia tuleb screenshot&lt;br /&gt;
&lt;br /&gt;
Kasulik on seadistada ka SSL &#039;&#039;debuglog&#039;&#039;i failitee, et probleemide korral saaks vigu otsida. Näiteks võib juhtuda, et brauseri või serveri krüpto vaikeseadistused on sellised, et Wireshark ei saa pakettide sisu lahti krüpteerida, kuigi serveri privaatvõti ja muud parameetrid on korrektsed.&lt;br /&gt;
&lt;br /&gt;
Nimelt võib juhtuda, et peale võtmefaili määramist ja HTTPS suhtlusega seotud paketi kontekstimenüüs &amp;quot;Follow SSL Stream&amp;quot; valimist näidatakse tühjust.&lt;br /&gt;
&lt;br /&gt;
Sellisel juhul võiks debuglogist otsida sääraseid ridu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  ssl_decrypt_pre_master_secret session uses DH (17) key exchange, which is impossible to decrypt&lt;br /&gt;
  dissect_ssl3_handshake can&#039;t decrypt pre master secret&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nimelt Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; vaikimisi konfis on lubatud Diffie-Hellman võtmevahetuse protokolli kasutamine, mis aga muudab HTTPS liikluse Wireshark-i jaoks lahtivõetamatuks.&lt;br /&gt;
Lähemalt loe näiteks: &lt;br /&gt;
[http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange]&lt;br /&gt;
ja &lt;br /&gt;
[http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls http://security.stackexchange.com/questions/8343/what-key-exchange-mechanism-should-be-used-in-tls]&lt;br /&gt;
&lt;br /&gt;
Üks võimalikke lahendusi on Apache2 &amp;lt;tt&amp;gt;mod_ssl&amp;lt;/tt&amp;gt; konfis (&amp;lt;tt&amp;gt;/etc/apache2/mods-available/ssl.conf&amp;lt;/tt&amp;gt;) keelata Diffie-Hellman võtmevahetuse tugi, näiteks võtmesõna DH abil:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  SSLCipherSuite ALL:!EXP:!NULL:!DH:!LOW&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vt. lähemalt: [http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslciphersuite]&lt;br /&gt;
&lt;br /&gt;
Peale veebiserveri restarti tuleb teha uus paketipüüdmine. Kui kõik muu on korrektselt tehtud, võib Wiresharkis uue .pcap faili avamisel näha umbes sellist pilti:&lt;br /&gt;
&lt;br /&gt;
FIXME: siia tuleb screenshot&lt;br /&gt;
&lt;br /&gt;
==mitmproxy==&lt;br /&gt;
FIXME&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:IT infrastruktuuri teenused]]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
	<entry>
		<id>https://wiki.itcollege.ee/index.php?title=Category:I375/I803/I853_IT_Infrastructure_services&amp;diff=61429</id>
		<title>Category:I375/I803/I853 IT Infrastructure services</title>
		<link rel="alternate" type="text/html" href="https://wiki.itcollege.ee/index.php?title=Category:I375/I803/I853_IT_Infrastructure_services&amp;diff=61429"/>
		<updated>2013-03-13T13:51:18Z</updated>

		<summary type="html">&lt;p&gt;Mignatje: /* Praktiline töö 1 NTP/DNS/DHCP (9p/15%) */ NTP labori kaitsmise lisa: iburst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Uudised=&lt;br /&gt;
&lt;br /&gt;
Tulemas on http://www.itcollege.ee/en/co-operation/dits2013/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Üldinfo=&lt;br /&gt;
Aine info: [https://itcollege.ois.ee/study-material/round?round_id=2230 IT infrastruktuuri teenused ÕIS leht]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/ Aine õppematerjalid]&lt;br /&gt;
&lt;br /&gt;
ECTS: 5&lt;br /&gt;
&lt;br /&gt;
Hindamisviis: Arvestus&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Rangelt soovituslik aine:&#039;&#039;&#039; Operatsioonisüsteemide administreerimine ja sidumine (I233)&lt;br /&gt;
&lt;br /&gt;
==Õppejõud==&lt;br /&gt;
Margus Ernits  &amp;gt;&amp;gt;  margus (.) ernits (ät) itcollege (.) ee&lt;br /&gt;
&lt;br /&gt;
Katrin Loodus  &amp;gt;&amp;gt;  katrin (.) loodus (ät) itcollege (.) ee&lt;br /&gt;
&lt;br /&gt;
=Eesmärk ja sisu=&lt;br /&gt;
Tutvustada IT infrastruktuuri teenuste põhimõisteid. Anda oskused põhiliste teenuste paigaldamiseks ja turvamiseks. Anda oskused IT infrastruktuuri teenuste dokumenteerimiseks.&lt;br /&gt;
Eesmärgi saavutamiseks toimuvad laboratoorsed tööd, mille käigus installeeritakse ja konfigureeritakse teenuseid pöörates rõhku teenuse turvalisusele, millele eelnevad loengud alus- ja põhimõistete tutvustamiseks.&lt;br /&gt;
&lt;br /&gt;
=Ainekaart=&lt;br /&gt;
Ainekaardi viimase, kuid mitte lõpliku versiooni leiab [https://wiki.itcollege.ee/images/6/67/I385_IT_infrastruktuuri_teenused_aineprogramm_2013.odt siit]&lt;br /&gt;
&lt;br /&gt;
=Eelmiste aastate tagasiside=&lt;br /&gt;
[https://wiki.itcollege.ee/images/4/4d/It-infra-tagasiside-2012-1.pdf 2012 kaugõppe tagasiside]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.itcollege.ee/images/2/28/It-infra-tagasiside-2012-2.pdf 2012 päevaõppe tagasiside]&lt;br /&gt;
&lt;br /&gt;
=Loengud=&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/loeng00%20-%20Sissejuhatav%20loeng.odp Sissejuhatav loeng] - &amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;NB siin on kirjas hindamiskriteeriumid ja tähtajad.&amp;lt;/span&amp;gt; Lisaks on kirjas kontrolltööde ajad ja muu aine läbimiseks oluline info. (Päevaõppes toimus 04.02.2013)&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/skriptimine/bash/src/juurteenused-ntp.html NTP teenus] (Päevaõppes toimus 04.02.2013)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red;&amp;quot;&amp;gt;Kodutöö nr 1. Tähtaeg 11.02.2013. DNS loenguks lugeda läbi DNS põhimõisted.&amp;lt;/span&amp;gt; Sobiva info leiate kuutõrvajas http://kuutorvaja.eenet.ee/wiki/DNS Soovi korral võite allkirjeldatud mõistete kohta infot lugeda ka mujalt.&lt;br /&gt;
&lt;br /&gt;
=Mõisted kontrolltööks ja arvestuseks=&lt;br /&gt;
&lt;br /&gt;
*DNS mõistete kohta leiab infot: http://kuutorvaja.eenet.ee/wiki/DNS&lt;br /&gt;
*hostinimi (mis märgid on hostinimes lubatud ja kus?)&lt;br /&gt;
*host täisnimi&lt;br /&gt;
*domeeni täisnimi&lt;br /&gt;
*DNS&lt;br /&gt;
*A-kirje&lt;br /&gt;
*alias ehk CNAME&lt;br /&gt;
*puhverdamine&lt;br /&gt;
*dig ja selle kasutamine&lt;br /&gt;
*DNS spoofing&lt;br /&gt;
*domeen ja domeeninimi&lt;br /&gt;
*Authoritative ehk pädev server&lt;br /&gt;
*Forwarding ehk edastamine&lt;br /&gt;
*FQDN&lt;br /&gt;
*Host&lt;br /&gt;
*PTR-kirje&lt;br /&gt;
*rekursiivne lahendus&lt;br /&gt;
*primaarne server&lt;br /&gt;
*sekundaarne server&lt;br /&gt;
*open resolver&lt;br /&gt;
*kuidas nimelahendus töötab, kirjelda näiteks &amp;quot;kui veebisirvijas avatakse leht, siis mis võiks toimuda?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Vanad loengumaterjalid=&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng00%20-%20Sissejuhatav%20loeng.odp Loeng 00 - Sissejuhatav loeng - NB Tähtajad ja nõuded]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng01%20-%20E-post.odp Loeng 01 E-post]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng03%20-%20Failiserver.odp Loeng 03 Failiserver]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng04%20-%20Veebiserver.odp Loeng 04 Veebiserver]&lt;br /&gt;
&lt;br /&gt;
[http://goo.gl/6XQ0U WordPress seadistamine]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng05%20-%20Dokumentatsioon.odp Loeng 05 Dokumentatsioon]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng06%20-%20VPN.odp Loeng 06 VPN]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng07%20-%20iptables.odp Loeng 07 Tulemüürid]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng08%20-%20SAN%20-%20NAS%20-%20CAS.odp Loeng 08 SAN NAS CAS]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng09%20-%20Virtualiseerimine.odp Loeng 09 Virtualiseerimine]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng10%20-%20DHCP.odp Loeng 10 DHCP]&lt;br /&gt;
&lt;br /&gt;
Abimaterjal:&lt;br /&gt;
* [http://tools.ietf.org/html/rfc2131 RFC2131] &lt;br /&gt;
* [http://kuutorvaja.eenet.ee/wiki/Isc-dhcpd_server Kuutõrvaja DHCP materjal] &lt;br /&gt;
&lt;br /&gt;
Abimaterjal laboriks: &lt;br /&gt;
* Maskeraad [[Ufw]]&lt;br /&gt;
* DHCP serveri seadistamine [[DHCP]]&lt;br /&gt;
* [http://www.debian-administration.org/article/343/Configuring_Dynamic_DNS__DHCP_on_Debian_Stable Dünaamiline DNS kirjete uuendamine DHCP poolt]&lt;br /&gt;
* [http://debianclusters.org/index.php/Troubleshooting_DHCP DHCP probleemide lahendamine]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng11%20-%20Monitooring.odp Loeng 11 Monitooring]&lt;br /&gt;
&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/infrastruktuur/arhiiv/loeng12%20-%20LDAP.odp Loeng 12 LDAP]&lt;br /&gt;
&lt;br /&gt;
=Praktilised tööd=&lt;br /&gt;
&lt;br /&gt;
==Sissejuhatav praktikum==&lt;br /&gt;
&lt;br /&gt;
Paigaldage Ubuntu Linux Server süsteem VirtualBox abil &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NB! Pange kasutajanimeks mõlema süsteemi puhul student ja parool ka student&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* RAM 512MB&lt;br /&gt;
* HDD dynamicly allocated 8GB&lt;br /&gt;
* 2 Võrgukaarti NIC1 - NAT (eth0 - Ubuntus) ja NIC2 - HostOnly (eth1 - Ubuntus)&lt;br /&gt;
Logige serverisse sisse ja seadistage võrk failis /etc/network/interfaces (liidese eth1 ip aadress 192.168.56.200).&lt;br /&gt;
Abiinfo Ubuntu server võrgu seadistamine ja VirtualBoxi võrgud&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.56.200&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Paigaldage openssh server, kui te seda installi käigus ei teinud (apt-get update &amp;amp;&amp;amp; apt-get install ssh) &lt;br /&gt;
ISO: Ubuntu Server 12.04.1 LTS ISO (64bit) http://elab.itcollege.ee:8000/ubuntu-12.04.1-server-amd64.iso&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lisaks paigaldage ka Ubuntu Linux Desktop süsteem VirtualBox abil&lt;br /&gt;
&lt;br /&gt;
ISO: Ubuntu Desktop 12.04.1 LTS ISO (64bit) http://elab.itcollege.ee:8000/ubuntu-12.04.1-desktop-amd64.iso&lt;br /&gt;
&lt;br /&gt;
Pärast installi lõppu pange peale ka kõik vajalik uuendused ning paigaldage VirtualBox-i enda additionid, mis on leitavad VirtualBox-i üldiste seadete alt&lt;br /&gt;
&lt;br /&gt;
Seadistage ka võtmetepõhine autentimine [[OpenSSH: võtmetega autentimine]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eelnevalt seadistatud [http://elab.itcollege.ee:8000/infra_server.ova server] ja  [http://elab.itcollege.ee:8000/infra_klient.ova klient]. User student parool on sama ja seadistatud on ka ssh key autentimine. Võtme parool on samuti student.&lt;br /&gt;
&lt;br /&gt;
==Praktiline töö 1 NTP/DNS/DHCP (9p/15%)==&lt;br /&gt;
Esimese praktilise töö eesmärgiks on omandada oskused ja algteadmised levinumate infrastruktuuri teenuste seadistamiseks.&lt;br /&gt;
&lt;br /&gt;
Selleks on tarvis teostada kolm laborit teemadel:&lt;br /&gt;
&lt;br /&gt;
* NTP paigaldamine ja seadistamine (3p)&lt;br /&gt;
&lt;br /&gt;
Konfigureerige NTP teenus serveris ja seadistage kliendiarvuti seda teenust kasutama.&lt;br /&gt;
&lt;br /&gt;
Uurige mida teevad järgnevad korraldused juurkasutajana.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
date&lt;br /&gt;
hwclock -r&lt;br /&gt;
TZ=UTC date&lt;br /&gt;
date&lt;br /&gt;
echo $TZ&lt;br /&gt;
hwclock --set --date=&amp;quot;9/22/99 12:00:00&amp;quot;&lt;br /&gt;
hwclock --systohc&lt;br /&gt;
hwclock --hctosys&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kuna VirtualBox sünkroniseerib &amp;quot;pisikese&amp;quot; aja tagant oma kella sinu operatsioonisüsteemi vastu, siis järgmisteks testideks on see soovituslik ära keelata.&lt;br /&gt;
&lt;br /&gt;
Järgneb õpetus: &#039;&#039;&#039;Kuidas keelata VirtualBoxi&#039;l guest OS kellaaja sünkroniseerimine host OS vastu.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selleks on vaja avada&lt;br /&gt;
&lt;br /&gt;
Windowsi operatsioonisüsteemis administraatoriõigustes Command Prompt&lt;br /&gt;
&lt;br /&gt;
Mac OS X operatsioonisüsteemis Terminal&lt;br /&gt;
&lt;br /&gt;
Linuxi mõnes distributsioonis Terminal&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) Navigeeri ennast VirtualBox installeerimiskohvrisse&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
 cd C:\Program Files(x86)\Oracle\VirtualBox\&lt;br /&gt;
&lt;br /&gt;
Linux: Linuxis on see tee juba PATH muutujas olemas, seega - võid käsud käivitada ükskõik kus olles. :)&lt;br /&gt;
&lt;br /&gt;
Mac OS X: Mac OS X all on see tee juba samuti PATH muutujas olemas.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Sisesta käsk&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
 VBoxManage.exe setextradata &amp;quot;Soovitud Masina Nimi&amp;quot; &amp;quot;VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
Linux:&lt;br /&gt;
 VBoxManage setextradata &amp;quot;Soovitud Masina Nimi&amp;quot; &amp;quot;VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
Mac OS X:&lt;br /&gt;
 VBoxManage setextradata &amp;quot;Soovitud Masina Nimi&amp;quot; &amp;quot;VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled&amp;quot; &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Kui soovid ühel hetkel, et siiski sünkroniseeriks, siis toimi samamoodi, aga käsk, mida sisestama pead on&#039;&#039;&#039;&lt;br /&gt;
Windows:&lt;br /&gt;
 VBoxManage.exe setextradata &amp;quot;Soovitud Masina Nimi&amp;quot; &amp;quot;VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
Linux:&lt;br /&gt;
 VBoxManage setextradata &amp;quot;Soovitud Masina Nimi&amp;quot; &amp;quot;VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
Mac OS X:&lt;br /&gt;
 VBoxManage setextradata &amp;quot;Soovitud Masina Nimi&amp;quot; &amp;quot;VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ajage kliendiarvuti kell väga valeks ja mõelge, kuidas seda õigeks saada.&lt;br /&gt;
&lt;br /&gt;
Muutke kleindiarvuti kell 30 sekundit valeks ja uurige, kas aeg läheb täpsemaks.&lt;br /&gt;
&lt;br /&gt;
Millal saab NTP abil aega seada?&lt;br /&gt;
&lt;br /&gt;
Mida teevad korraldused&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
ntpdate&lt;br /&gt;
ntptrace -n      &lt;br /&gt;
ntpsweep --host localhost&lt;br /&gt;
ntpq -pn&lt;br /&gt;
service ntp stop&lt;br /&gt;
ntpdate ntp.ubuntu.com&lt;br /&gt;
service ntp start&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Leia meie võrgule sobivam(ad) ntp serverid, mille abil oma võrgu ntp serveri kella sünkroniseerida.&lt;br /&gt;
&lt;br /&gt;
Kuidas toimib NTP turvamudel?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Küsimused, mida õppejõud võib küsida NTP kaitsmisel:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Miks on ntp konfis vaja sellist ip-d nagu 127.0.0.1 seoses ntp ja Internetiga?&lt;br /&gt;
*Mida näitab fudge ja stratum 10?&lt;br /&gt;
*Mida kirjeldavad ntp.conf failis restrict read?&lt;br /&gt;
*Mida tähendavad tärn, pluss ja miinus remote serverite ees?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soovitused:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Kindlasti osata seletada ntpq -p käsu parameetrite tähendusi (refid, st, jitter jne).&lt;br /&gt;
*Suur osa küsitavast infost on olemas ntp esitluses ning ülejäänud asjad tuleb leida Google&#039;i abiga.&lt;br /&gt;
&lt;br /&gt;
====NTP sünkroniseerimise kiirendamine====&lt;br /&gt;
Kui NTP server käima tõmmata, võib minna tüütult palju aega, et meie server sünkroniseeriks end mõne konfis oleva referents-serveri vastu.&lt;br /&gt;
&lt;br /&gt;
NTP deemoni konfifail &amp;lt;tt&amp;gt;/etc/ntp.conf&amp;lt;/tt&amp;gt; toetab võtmesõna &amp;lt;tt&amp;gt;iburst&amp;lt;/tt&amp;gt;, mis lisatakse vajadusel &amp;lt;tt&amp;gt;server&amp;lt;/tt&amp;gt; ridade lõppu, näiteks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Võtmesõna &amp;lt;tt&amp;gt;iburst&amp;lt;/tt&amp;gt; ütleb, et kui antud server on kättesaamatu, siis saadetakse välja 8 paketist koosnev pakettide &amp;quot;purse&amp;quot;, vaikimisi 2-sekundiliste vahedega. Mõte selles, et näiteks ebastabiilse võrgu korral, kui esimesele paketile vastust ei saada, üritataks väikese vahega uuesti, mitte ei oodataks, kuni pollimise intervall täis tiksub. Vaikimisi minimaalne pollimise intervall nimelt on 64 sekundit.&lt;br /&gt;
&lt;br /&gt;
Kui kombineerida võtmesõnu &amp;lt;tt&amp;gt;burst&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;iburst&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;minpoll&amp;lt;/tt&amp;gt; ja &amp;lt;tt&amp;gt;maxpoll&amp;lt;/tt&amp;gt;, saab sünkroniseerimise sagedust märkimisväärselt tõsta, kuid neid võtmesõnu tuleb eriti avalike serverite vastu sünkroniseerides kasutada ettevaatlikult, sest need tekitavad tavapärasest palju tihedamat NTP liiklust. Samas &amp;lt;tt&amp;gt;iburst&amp;lt;/tt&amp;gt; üksinda peaks mõjuma ainult siis, kui võrk parasjagu kättesaamatu on.&lt;br /&gt;
&lt;br /&gt;
Loe lisa:&lt;br /&gt;
* [http://doc.ntp.org/4.1.2/confopt.htm NTP konfiparameetrid]&lt;br /&gt;
* [http://voltdb.com/docs/PerfGuide/ntpSvcIntro.php Veel üks juhend kellade sünkimisega seotud probleemide teemal]&lt;br /&gt;
&lt;br /&gt;
===DNS paigaldamine ja seadistamine (3p)===&lt;br /&gt;
&lt;br /&gt;
*Mõtle välja endale domeeninimi&lt;br /&gt;
*Loo domeeninimele tsoonifail ja seadiste nimeserver&lt;br /&gt;
*Luba rekursiivne lahendus oma sisevõrgust&lt;br /&gt;
*Loo reevers tsoon&lt;br /&gt;
*Loo A kirjed e-posti, nimeserveri jaoks&lt;br /&gt;
*Loo CNAME kirjed www, samba ja oma severi jaoks&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
http://enos.itcollege.ee/~mernits/infrastruktuur/dns/DNS_BIND.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Näitelahendus [[Nimeserveri labor V.2]]&lt;br /&gt;
&lt;br /&gt;
Kaitsmisel pead oskama luua uut tsooni, lisama kirjeid, oskama kasutada rndc, dig, nslookup vahendeid.&lt;br /&gt;
&lt;br /&gt;
* DHCP paigaldamine ja seadistamine (3p)&lt;br /&gt;
&lt;br /&gt;
==Praktiline töö 2==&lt;br /&gt;
&lt;br /&gt;
Teise praktilise töö eesmärgiks on omandada oskused ja algteadmised levinumate juurteenuste seadistamiseks.&lt;br /&gt;
&lt;br /&gt;
Selleks on tarvis teostada kolm laborit teemadel:&lt;br /&gt;
&lt;br /&gt;
* Apache2 paigaldamine ja virtualhostide seadistamine [[Virtualhost apache2 näitel]]&lt;br /&gt;
* Wordpress paigaldamine ja jõudluse testimine (varnish)&lt;br /&gt;
[[WordPress turvamine]]&lt;br /&gt;
&lt;br /&gt;
[[Varnish]] - vaata &lt;br /&gt;
http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian&lt;br /&gt;
* DVWA paigaldamine ja OWASP testimine&lt;br /&gt;
&lt;br /&gt;
==Praktiline töö 3==&lt;br /&gt;
&lt;br /&gt;
Kolmanda praktilise töö eesmärgiks on omandada teadmised varasemates praktilistes töödes katmata jäänud oluliste infrastruktuuri teenuste kohta. &lt;br /&gt;
&lt;br /&gt;
Selleks on tarvis paigaldada samba failiserver Zentyal keskkonnas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Questid, millede eest saab punkte==&lt;br /&gt;
&lt;br /&gt;
Quest 1  - https://docs.google.com/document/d/1oRt9JLF6lcf_Z-ReHCfbZXnSoc-EOBzGprxvIyhq4qk/edit?usp=sharing&lt;br /&gt;
&lt;br /&gt;
=Kaugõppele=&lt;br /&gt;
&lt;br /&gt;
Info lisandub...&lt;br /&gt;
&lt;br /&gt;
=Arvestus ja hindamine=&lt;br /&gt;
&lt;br /&gt;
Aine on jagatud praktilisteks ja teoreetilisteks töödeks. Seitsmeks (7) laboriks ning kaheks (2) teoreetiliseks kontrolltööks. &lt;br /&gt;
&lt;br /&gt;
Lisaks on tarvis teha eraldi dokumentatsiooni ehk ühe kaitstud labori kohta &#039;&#039;&#039;viki artikkel&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Praktiliste tööde&#039;&#039;&#039; hulka kuuluvad erinevate teenuste paigaldamine ning seadistamine. Ühe labori eest on võimalik saada maksimaalselt 3 punkti. &lt;br /&gt;
&lt;br /&gt;
* 1 punkt on võimalik saada teenuse seadistamise, paigaldamise ning suulise kaitsmise eest. (Õppejõud võib seadistust muuta ning paluda paranduste kohta selgitust)&lt;br /&gt;
* 2 punkti on võimalik saada, kui kaitsta oskuslikult konkreetse labori kohta käivad teoreetilised teadmised suuliselt õppejõule. (Küsimused esitab õppejõud)&lt;br /&gt;
* 3 punkti on võimalik saada, kui parandada konkreetse teema kohta käivat juhendit ning esitada tulemuse õppejõule. (Mõeldud ambitsioonikamatele tudengitele)&lt;br /&gt;
&lt;br /&gt;
Lävendiks on 1 punkt, mis tähendab praktilise osa teostust. Kui iga labori eest on ainult 1 punkt, tuleb teoreetilised teadmised kaitsta kontrolltöö käigus, aga kui iga labori eest on vähemalt 2 punkti, ei ole kontrolltööd tarvis teha. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lõpparvestus&#039;&#039;&#039;, neile, kes ei saa tähtajaks laboreid, kontrolltöid ja dokumentatsiooni kaitstud, toimub samuti kahes osas ning annab kokku 20% kogu hindest. Arvestusel peab koguma vähemalt pooled punktid läbi saamiseks (Tasub semestri jooksul pingutada!)&lt;br /&gt;
Arvestusel tuleb 10% ulatuses parandada õppejõu poolt &amp;quot;katki tehtud&amp;quot; teenust ja 10% ulatuses vastata 5-10-le teoreetilisele küsimusele. &lt;br /&gt;
&lt;br /&gt;
==Tähtajad==&lt;br /&gt;
&lt;br /&gt;
===Päevaõppele===&lt;br /&gt;
&lt;br /&gt;
Praktilise töö laborite kaitsmised (laborid 1-3): 18. märts&lt;br /&gt;
&lt;br /&gt;
Praktilise töö laborite kaitsmised (Laborid 4-6): 13. mai&lt;br /&gt;
&lt;br /&gt;
Praktilise töö labori kaitsmised (Labor 7): ~21. mai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dokumentatsioon (viki artikkel): 13. mai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kontrolltöö 1: 25. märts&lt;br /&gt;
&lt;br /&gt;
Kontrolltöö 2: 13. mai&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Arvestus: Arvestuse päeval mai lõpus. ~27. mail&lt;br /&gt;
&lt;br /&gt;
=Juurteenuste kursus=&lt;br /&gt;
[http://enos.itcollege.ee/~mernits/skriptimine/bash/src/juurteenused.html Interneti juurteenused]&lt;/div&gt;</summary>
		<author><name>Mignatje</name></author>
	</entry>
</feed>