neděle 24. září 2017

Cisco IOS: vypnutí slabých šifer u SSH

Cisco IOS umožňuje od verze 15.2 nastavit konkrétní šifrovací a hašovací algoritmy u vestavěného SSH serveru který se používá k managementu zařízení. Následující postup byl ověřen na modelu WS-C2960X-48TD-L s verzí IOS 15.2(5)E2. Verze 15.0 a 12.X toto nastavení neumožňují.

Například OpenVAS reportuje následující algoritmy jako zastaralé a slabé:
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc.
Necháme si vypsat nabízené algoritmy ve výchozí konfiguraci:
Switch#show ip ssh | inc Encryption|MAC

A dostaneme:
Encryption Algorithms:aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
MAC Algorithms:hmac-sha1,hmac-sha1-96


Z nabízených šifer je nejsilnější šifra AES256 v módu CRT. Povolíme tedy jen tuto jedinou:
Switch(config)#ip ssh server algorithm encryption aes256-ctr

Nejvyšší hašovací algoritmus je HMAC-SHA1. Opět, povolíme jen tento:
Switch(config)#ip ssh server algorithm mac hmac-sha1

Pro kontrolu znovu vypíšeme nabízené algoritmy:
Switch#show ip ssh | inc Encryption|MAC

A výstup pro kontrolu by měl ukazovat toto:
Encryption Algorithms:aes256-ctr
MAC Algorithms:hmac-sha1


Po připojení skrz SSH je možné vidět aktuální sezení a použité šifry:
Switch#show ssh

Connection Version Mode Encryption  Hmac         State                 Username
0          2.0     IN   aes256-ctr  hmac-sha1    Session started       user
0          2.0     OUT  aes256-ctr  hmac-sha1    Session started       user



Zdroje:

neděle 6. srpna 2017

BetterCAP: útok MITM

BetterCAP je moderní framework pro útoky na síť technikou Man in the middle (MITM). Standardně je obsažen třeba v Kali Linuxu a jeho použití je velmi jednoduché.

Příkazem
bettercap
se spustí základní režim bettercap který pomocí ARP dotazů oskenuje síť a nabídne seznam IP adres možných obětí.

Méně agresivní je pasivní odposlech, kdy jen "visíme" na lokálním subnetu:
bettercap -X --no-spoofing

Samozřejmě, daleko účinější je aktivní sniffing. Útok na oběť 192.168.X.Y se spustí příkazem
bettercap -T 192.168.X.Y --proxy -P POST
kdy vytvoříme falešnou výchozí bránu a tu pomocí nevyžádané ARP zprávy pošleme naší oběti (tzv. ARP spoofing). Oběť si ničeho nemusí všimnout, protože IP adresa výchozí brány (kterou pravděpodobně dostala z DHCP serveru) se nemění, mění se jen MAC adresa z té legitimní na naši falešnou.

Ukázka ARP tabulky na straně oběti 192.168.88.254:
První výpis arp -a ukazuje tabulku před útokem. IP adresa 192.168.88.1 má přiřazenou legitimní MAC adresu výchozí brány. Druhý výpis arp -a ukazuje situaci po spuštění útoku, kdy útočník se zařízením 192.168.88.252 zároveň vystupuje jako výchozí brána. Došlo tedy k modifikaci záznamu ARP tabulky na straně oběti.

Veškerý provoz oběti nyní prochází přes naši falešnou proxy dále do internetu. Vše je relativně nenápadné, protože oběť má "fungující internet" a nemá sebemenší podezření o našem konání. Nic už nebrání odchytávat nezabezpečené přenosy typu FTP, HTTP, POP3,...ale i HTTPS.

Následuje ukázka útoku s pomocí SSLSTIPPu, kdy donutíme uživatele k přechodu ze zabezpečeného HTTPS na nezabezpečený HTTP protokol s cílem odposlechnout jeho přihlašovací údaje.

Standardní otevření www.idnes.cz v prohlížeči:

iDNES.cz nemá automatické přesměrování na HTTPS na úvodní stránce. To se děje, až když klikneme na Přihlásit vpravo nahoře. To by byl standardní průběh. Ale, díky tomu, že vystupujeme jako falešná transparentní proxy, BetterCAP použije funkci SSLSTRIPP a místo HTTPS vrátí oběti nezabezpečenou stránku. To je v Chromu indikováno vlevo nahoře v adresním řádku všeříkajícím "Nezabezpečeno". (Kdo z běžných uživatelů si toho ale všimne?)

Nyní uživatel zadá svoje přihlašovací údaje a v domnění, že je posílá na server iDNESu je nezabezpečeně odešle:

V konzoli BetterCAPu se následně objeví odchycené údaje z těla HTTP požadavku:

Podobně funguje útok například na Google Images. Standardní výsledek vyhledávání s HTTPS:

Stejný výsledek hledání, ale se zapnutou MITM proxy:
A na straně útočníka lze pomocí příkazu
driftnet -i eth0 
rovnou vidět i odchycené obrázky:


Další pokusy na webech Seznam.cz a Facebook.com byly neúspěšné. U Seznamu se BetterCAP nedokázal vypořádat se zpětným přesměrováním při přihlašování. U Facebooku se nedařilo docílit přesměrování na HTTP i přes zjevně aktivní SSLSTRIPPing. Podvrhnout přihlášení do Google účtu se také nepodařilo, protože Google využívá HTTP Strict Transport Security (HSTS), kdy prohlížeč od serveru přijme informaci, že vzájemná komunikace bude využívat HTTPS a nic jiného.

Obranou proti MITM na lokální síti je například ARP inspekce na síťových přepínačích. Cisco tomu říká Dynamic ARP Inspection. Ve zkratce řečeno, switch si udržuje vazbu port-MAC adresa-IP adresa a tím zamezí situaci, kdy port na kterém není legitimní MAC adresa brány přijde podvržená ARP odpověď s MAC adresou falešné brány.

sobota 7. ledna 2017

Teploměr Papouch TM - RS232 v Linuxu a server tmep.cz

Úvod

Cílem tohoto návodu je zprovoznit teploměr Papouch TM - RS232 v Linuxu, vyčítat z něj hodnoty teploty a ty následně zasílat na server tmep.cz který nám bude hostovat data z čidla, kreslit z nich grafy a uchovávat historii. Ukázka webového GUI například na roudnice.eu.

Implementace

Připojíme čidlo přes sériový port k počítači s Linuxem. Pokud nemáme přímo port na desce, použijeme převodník.

Příkazem dmesg | grep tty zjistíme název sériové linky v systému. Pokud máme USB převodník, hledejte označení ttyUSB0. Port na desce je většinou označen jako ttyS0.

Vyzkoušíme komunikaci s čidlem pomocí příkazu cat /dev/ttyUSB0. Pokud vše funguje jak má, tak teploměr vrátí následující řádek:
+022.7C 

Na test to stačí, ale problémem je, že program cat neustále čeká na vstup, takže se aktuální teplota po čase přepíše další, to není použitelné pro další zpracování. Proto použijeme jiný způsob.

Vytvoříme skript (např logovani.sh). První je příkaz:
read teplota < /dev/ttyUSB0 && echo -n $teplota | tr -d "\r"
který otevře sériovou linku, načte teplotu (pořád jako kompletní textový řetězec) a uloží do stejnojmenné proměněné . Text je poslán na vstup programu tr který odstraní "neviditelný" ASCII znak na konci řádku.

Následně pomocí curl pošleme na server tmep.cz. Před odesláním je ale ještě potřeba uříznout písmeno C a tím dostaneme pouze kladné nebo záporné číslo s jednou desetinou hodnotou:
curl http://subdomena.tmep.cz/?nazevteplomeru=${teplota::-1} 

subdomena a nazevteplomeru jsou proměnné, které si nastavíme sami po registraci na tmep.cz

Skript je ke stáhnutí zde: http://pastebin.com/en2gtwzd
 
Měřit teplotu chceme pravidelně, takže do Crontabu uložíme (příkaz crontab -e) řádek
*/5 * * * * bash /home/uzivatel/teplomer/logovani.sh &>/dev/null 

Skript se bude pouštět každých 5 minut (měřit častěji mi přijde zbytečné, ale samozřejmě každý podle svého gusta). Server tmep.cz má přehledné a logické nastavení, popř. doporučuji jejich wiki.

P.S.: Pokud nejsme root, je nutné příkazy spouštět se sudo na začátku.

Zdroje