Edsger Djikstra
IPv6
Cyber Chef
Kilka lat temu kryptowaluty zrobiły sporo zamieszania. Bitcoin pojawiał się często jako temat audycji radiowych, magazynów finansowych,
nawet popularnych seriali (mam na myśli The Big Bang Theory, S11E09). Jest to bezsprzecznie najbardziej znane uzycie techonlogii blockchain, na której opierają się kryptowaluty. Mówi się, ze to jedna z przełomowych technologii i widać to na przykładzie właśnie kryptowalut.
Blockchain to rozproszony rejestr w którym zastosowano funkcje kryptograficzne mające charakter jednokierunkowy. Dotyczą zawartości pojedynczego bloku (podstawowy element blockchain) jak i powiązań między nimi, dlatego ingerencja w dokonane zapisy jast praktycznie niemożliwa.
Technologia ta ma wiele innych zastosowań niz kryptowaluty. Duże firmy z branzy IT, takie jak IBM już od wielu lat z powodzeniem rozwijają technologie oparte na blockchain, znajdując zastosowanie w przemysle spożywczym (IBM® Food Trust), ubezpieczeniach, logistyce itd. Jeśli masz ochotę przekonać się jak działają najrozmaitsze funkcje mieszające wykorzystywane min. w blockchain spróbuj bardzo rozbudowanego narzędzia (na jego temat mozna znaleźć obszerne tutoriale) znajdującego się pod tym adresem https://gchq.github.io/CyberChef/ lub prostszego, gdzie umieszczono kilka popularnych sposobów uzyskania hashcode http://blockchain-basics.com/HashFunctions.html
PASS123
hashcat -m 0 a-0 plik_z_hashami.txt słownik_haseł.txt —-show
Elektryczność
Kilka słów na z pozoru banalny temat. Elektryczność. Bez niej nie było by mowy o żadnym z typów sieci komputerowych. Przy projektowaniu sieci musimy wziąć odpowiedzialność również z prawidłowe zasilanie i ochronę urządzeń pracujących w sieci, ponieważ awarie z tym związane również się zdarzają. Urządzenia komputerowe są wrażliwe na zmiany parametrów zasilającego je prądu, co za tym idzie mogą uszkadzać urządzenia sieciowe a w rezultacie powodować przerwy w działaniu sieci. Sam doświadczyłem tego typu kłopotów w czasach, kiedy pierwszy raz stałem się użytkownikiem stałego dostępu do sieci. Każda większa burza skutkowała wymianą NIC (network interface card) co wymagało podania administratorowi adresu mac i oczekiwania na zmianę konfiguracji urządzeń. Kiedy stałem się Użytkownikiem jednej z dystrybucji linuxa sytuacja stała się prostsza Ponieważ mogłem już nowej karcie sieciowej nadać adres tej poprzedniej.
Problemy związane z elektrycznością możemy podzielić na kilka kategorii:
-elektryczność statyczna
-skoki napięcia (spiki i przepięcia) (uninterruptible power supply)
-spadek mocy lub przerwa w zasilaniu (spadek i zanik)
skutkiem nagłych skoków jest interferencja elektryczna. Jeżeli przewód sieciowy jest ułożony blisko obwodów elektrycznych na znacznej długości, możliwe jest występowanie interferencji elektromagnetycznej (EMI), prowadzącej do zniekształcenia sygnału.
Tego typu zaleność określa się terminem crosstalk. Pary skrętki UTP celowo skręcone są w odpowiedni sposób, aby redukować podatność na interferencje.
Przepięcia to krótkotrwały, zwykle dłuższy niż 1/120 s a krótszy niż 2,5 s. wzrost napięcia elektrycznego do co najmniej 110 % napięcia nominalnego.
Spik to duży skok napięcia o bardzo krótkim czasie trwania (od 10 do 100 mikrosekund) do poziomu dwukrotnie wyższego niż napięcie nominalne.
Spadki napięcia wiążą się z obniżeniem napięcia do poziomu 80 % napięcia nominalnego (poniżej 175v).
Szczególnie w centrach danych dba się o zapewnienie:
-zapotrzebowania elektrycznego,
-odpowiedniego chłodzenia,
-odpowiedniej przestrzeni
-pokrycia podłóg odpowiednim materiałem aby zapewnić minimalne gromadzenie się ładunków elektrostatycznych.
Podsumowując spadki napięcia nie powodują tak potencialnie niszczycielskiego wpływu na urządzenia, raczej mogą wiązać się z utratą danych, ale występujące często mogą powodować defekty i tu zastosowanie będą miały UPSy (uninterruptible power supply), natomiast przed spikami i przepięciami mogą chronić listwy wyposazone w warystor.
Ping
W tym wpisie chciałbym opisać krótko, kilka podstawowych poleceń terminala służących do diagnostyki sieci.
Na początek najpopularniejszy, najczęściej stosowany program do podstawowej diagnostyki sieci, czyli PING (Packet InterNet Groper).
Wykorzystuje on protokół ICMP (internet control message protocol) „podróżujący” w datagramach IP. Wysyła do odbiorcy komunikat icmp 8 (echo reply) i oczekuje odpowiedzi w postaci icmp 0 (echo request) jeśli host jest osiągalny. Natknąłem się na materiały mówiące o tym, że ping to program wykorzystujący protokół „działający w warstwie transportowej” co oczywiście można zweryfikować po przestudiowaniu dokument RFC 792 i trzeba mieć świadomość, że rezultat jego działania nie daje odpowiedzi na wiele pytań, lecz na te podstawowe dotyczące osiągalności. Jeśli nie otrzyma komunikatu icmp 0, może wysłać 2 inne: Komunikat icmp 3 (destination unreachable) co oznacza, że nie jest w stanie dotrzeć do adresata, lub icmp 11(time exceeded) świadczący o przekroczeniu czasu przeznaczonego na odpowiedź, i to jest kolejna odpowiedź, którą możemy uzyskać - czas podróży pakietu w obie strony wyrażony w milisekundach, co też może stanowić dla nas wskazówkę podczas rozwiązywania problemów z siecią. Przy okazji korzystania z ping uzyskamy też odpowiedź z serwera DNS i adres IP odbiorcy.
Wersja programu różnić się może w zależności od systemu operacyjnego, szczególnie stosowanie przełączników. W systemach unixowych ich skrócony opis uzyskamy wpisując ping —help, a pełną dokumentację po wpisaniu man ping.
Np. ping -a -c8 www.interia.pl
wysyła żądanie 8 razy (przełącznik count) z dźwiękiem przy każdorazowym żądaniu.
Trzeba wspomnieć, że administratorzy czasami wyłączają możliwość przyjmowania pingów aby zabezpieczyć się przed atakami DoS typu „ping flood”. Jeżeli mamy problem połączenia w wyższych warstwach modelu (transportu czy aplikacji) to mimo, że ping daje odpowiedź „echo reply” komunikacja może być nieskuteczna.
NSLOOKUP (name server lookup) służy do rozwiązywania problemów z działaniem DNS. Jeśli w argumencie programu wpiszemy adres ip wskaże nazwę z jakim jest powiązany i odwrotnie po wpisaniu nazwy uzyskamy adres ip. Korzysta z portu 53. jeżeli jest powiązanych więcej adresów wyświetli je.
Możemy kierować zapytania do bazy w celu uzyskania różnego rodzaju rekordów. Np.:nslookup -query=MX google.pl
(mail exchange)
pozostałe typy:
A,AAAA, CNAME, PTR, NS, SOA, SRV, TXT i więcej.
WHOIS [nazwa] uzyskujemy informacje od rejestratora domeny na temat danych kontaktowych, okresu waznosci domeny. Serwery whoid są obsługiwane przez RIR (regionalnych rejestratorów internetowych).
NETSTAT wyświetla statystyki dotyczące sieci, mozliwe jest określenie aktywnych połączeń i portów oczekujących na połączenie (nasłuchujących) wyświetlenia adresu ip, programu, który z danego portu korzysta. Jeśli wydaje się podejrzany Możemy spróbować sprawdzić
go za pomocą polecenia WHOIS lub poszukać informacji o nim w sieci.
HOST - po wpisaniu w argumencie adresu mnemonicznego (domeny) otrzymamy adres ip i odwrotnie.
DIG - domain information grouper - do odpytywania serwerów DNS o nazwy hostów, np. DIG nazwa.com wyświetli adres ip domeny i nazwę serwera DNS. Mozna również uzyskać informację na temat rekordów mx (mail exchanger) zawierającego adres serwera poczty.
TRACEROUTE (tracert w windows) poprzez wykorzystanie ciekawego mechanizmu otrzymujemy liczbę przeskoków przez węzły,
aby w rezultacie osiągnąć cel. Korzysta z komunikatów ICMP o przekroczeniu terminów. Wysyła ciąg pakietów ip, ustawia wartość TTL=1
i gdy dotrze to porzuca to porzuca odpowiadając komunikatem ICMP 11 (time exceeded) Komunikat ten zna adres routera i podaje go jako
adres pierwszego routera na trasie. Kolejny krok to ustawienie TTl=2, TTL=3, itd. powtarzając przedstawiony schemat. Program TRACEROUTE ma sens
na trasach, które zmieniają się stosunkowo rzadko (bo w trakcie działania programu sytuacja moze się zmienić i nie pokarze trasy).
IFCONFIG (windows IPCONFIG) wyświetla dane dotyczące konfiguracji sieci i wykorzystywane interfejsy sieciowe. Oba polecenia róźnią się sposobem użycia w zależności od posiadanego systemu operacyjnego i warto zapoznać się z manualem, gdyz mają wiele mozliwości. Mozna przy użyciu tego polecenia wyłączyć określony interfejs sieciowy ifconfig eth0 down
, zmienić adres ip, np: ifconfig eth0 192.168.0.14 netmask 255.255.255.0
lub uzyc notacji CIDR i zamiast netmask poprostu ifconfig eth0 192.168.0.14/24
zakładając, że nasz interfejs sieci ethernet ma nazwę eth0 (często ma). W kolejnym kroku należy podnieść interfejs eth0 ifconfig eth0 192.168.0.14 up
. Jakie interfejsy sieciowe posiadamy również wyświetlimy poleceniem ifconfig.
NMAP (network mapper) skaner aktywny sieci. Bardzo rozbudowany, krótki opis wymaga osobnego artykułu. Pozwala zebrać informacje hostach w sieci, danych na temat otwartych portów, rodzaju systemu operacyjnego.
Możemy wybrać rodzaje protokołów transportowych, w przypadku TCP decydujemy o różnych wariantach skanowania, zakres adresów i portów. Tak zwane dobrze znane porty to pierwsze 1024 (0-1023), następne zarejestrowane do 49151 i pozostałe do maximum czyli 65535.
Z pierwszej grupy porty najczęściej:
20,21 FTP , 80 HTTP, 53 DNS, 67,68 DHCP, 143 IMAP, itd.
Drugiej groupy to np. 3306 standardowy port dla MySQL, 9127 JMS (java message service), itd.
Przykład szybkiego skanowania: nmap -F 192.168.0.1 (fast)
skanowanie z określonego zakresu nmap -sT 192.168.0.2-20 Wskazuje porty wykorzystujące protokół TCP (przełącznik T, jeśli zamienimy na U dotyczyć będzie protokołu UDP).
skanowanie pod kątem portów i systemu operacyjnego na hoście nmap -O xxx.xxx.xxx.xxx
NETCAT lub NC - znakomite narzędzie mające bardzo wiele zastosowań. Tutaj już będzie niezbędny osobny tekst na temat tego narzędzia.
Netcat
Netcat jest programem posiadającym wiele zastosowań i zwykle jest preinstalowany w systemach unixowych. Może służyć jako skaner portów, prosty serwer http, serwer proxy, prosty komunikator. Może posłużyć do ataków oraz port forwardingu.
W celu przesłania komunikatu między dwoma hostami tworzymy dwie instancje netcata:
jako instancja nasłuchująca:
nc -l 6789
będzie nasłuchiwać na hoście, na którym został uruchomiony, na porcie 6789.
na innym hoście uruchamiamy drugą nc 192.168.0.20 6789
(gdzie adres pierwszego komputera to 192.168.0.20) i możemy wysyłać komunikat w formie tekstu na adres wpisany w argumencie.
.. zamykamy wciskając kombinację ctrl + c
Serwer plików nc -l -p 6789 > file.txt
gdzie file.txt to plik do udostępnienia
klient nc adres_serwera 6789 < wynik.txt
dane będą odebrane do pliku wynik.txt
netcat jako prosty skaner:
nc -zv adres_hosta 1-1023
Prosty serwer plików
cat index.html | nc -lkv 80
gdzie index.html to plik który udostępnimy na porcie 80. Po wpisaniu adresu "udostępniającego" hosta i portu określonego w tym przypadku 80 (lokalnie localhost:80) ujrzymy stronę index.html
Krzyżówka
"Krzyżówka komunikacyjna" to ciekawy sposób na sprawdzenie wiedzy dotyczącej funkcjonowania podstawowych protokołów.
Składa się z opisu pewnej sytuacji i tabelki z uzupełnionymi czterema polami.
Resztę nalezy uzupełnić kierując się analizą przbiegu komunikacji zawartej w zadaniu. Oto przykład:
Zakładamy, że:
1. ROUTER i komputery w sieci 112.168.0.0/24 mają poprawnie wypełnione swoje tablice ARP dla całego systemu.
2. ROUTER i komputery w sieci 214.118.8.0/23 nie mają żadnych wpisów w swoich tablicach ARP.
3. Serwery: dns.intranet.pl oraz dns.test.pl posiadają kompletną wiedzę o całej sieci i są rekurencyjne.
4. podajemy tylko pierwsze 3 bajty wszystkich adresów MAC, które w sposób definitywny różnicują wszystkie adresy MAC w przedstawionej sieci (adres rozgłoszeniowy MAC=FF:FF:FF).
Przedstaw przebieg komunikacji między wszystkimi urządzeniami (komputerami i ROUTEREM) w sieci, aż do momentu, w którym komputer gucio.intranet.pl otrzyma odpowiedź na ping.
komunikat/protokół
adres IP nadawcy
adres MAC nadawcy
adres IP celu
adres MAC celu
DNS requst
www.test.pl (UDP) 112.168.0.100
12:12:12
214.118.8.253
40:40:40
ARP request who is 214.118.8.253
tell 214.118.8.254 214.118.8.253
14:14:14
214.118.8.254
FF:FF:FF
ARP reply 214.118.8.253 is at 23:23:23/UDP
214.118.8.253
23:23:23
214.118.8.254
14:14:14
DNS request www.test.pl/UDP
112.118.0.100
14:14:14
214.118.8.253
23:23:23
DNS answer www.test.pl=
214.118.8.2553/UDP 214.118.8.253
23:23:23
112:168.0.100
14:14:14
DNS answer www.test.pl=
214.118.8.2553/UDP 214.118.8.253
40:40:40
112.118.0.100
12:12:12
ICMP(8) echo request /IP
112.118.0.100
12:12:12
214.118.8.252
40:40:40
ARP request who is 214.118.8.252
214.118.8.254
14:14:14
214.118.8.253
FF:FF:FF
ARP reply 214.118.8.252 is at 31:31:31/UDP
214.118.8.252
31:31:31
214.118.8.254
14:14:14
ICMP(8) echo request/IP
112.168.0.100
14:14:14
214.118.8.252
31:31:31
ICMP(0) echo reply/IP
214.118.8.252
31:31:31
112.168.0.100
14:14:14
ICMP(0) echo reply/IP
214.118.8.252
40:40:40
112.168.0.100
12:12:12
Komentarz do zadania:
Ponieważ sieć 112.168.0.0 ma wypełnione tablice ARP na wszystkich urządzeniach w niej pracujących, a ping zawierał adres mnemoniczny to pierwszy protokół z jakiego będzie potrzeba skorzystać to DNS aby 112.168.0.100 uzyskał adres w postaci ip. Wie gdzie się kierować do serwera DNS(a właściwie pośrednio do routera) i nie musi rozgłaszać zapytania po swojej sieci bo jak wspomniano informacja o tym znalazła się już w tablicach ARP.
Tak łatwo będzie do routara bo już na drugim jego interfejsie łączącym z siecią 214.118.8.0 tablice ARP nie są wypełnione więc 214.118.8.254 musi rozgłosić w sieci, który to 214.118.8.253, a właściwie jego fizyczny adres. (tu rozgłoszenia mac FF:FF:FF). Zakładamy, że przydzielanie adresów w tych sieciach odbywa się poprzez DHCP chociaż sugeruje to jedynie host pod adresem 112.168.0.2. Adresy fizyczne obowiązują tylko w obrębie tej samej sieci dlatego 112.168.0.100 nie mógł by uzyskać 23:23:23.
W czwartym wierszu tabelki 112.168.0.100 może już wysłać request do dns, bo wiadomo jak do niego dotrzeć (tablica arp 214.118.8.254 została uzupełniona o wpis 214.118.8.253=23:23:23).
W 5 i 6 tym wierszu widzimy, że odpowiedź podąza dwuetapowo. Adresy ip nadawcy i celu pozostają bez zmian, natomiast adresy mac pokazują drogę do i od interfejsów sieciowych routera.
Następnie 112.168.0.100 wie jaki adres ip to test.pl i wysyła w końcu komunikat ICMP echo request, ale w sieci 214.118.8.0 interfejsie na routerze nie wie jak do niego trafić (do 214.118.8.252) więc wysyła broadcast (ARP request: who is 214.118.8.252).
Po uzyskaniu odpowiedzi, że jest to adres mac 31:31:31 dopisuje do swojej tablicy ARP i dalsza komunikacja już jest skuteczna co widać po trzech ostatnich wierszach.
Kali linux
sudo tshark -i wlan0 > capture.cap
gdzie wlan0 to przykładowy interfejs sieci bezprzewodowej (musi mieć możliwość działania w trybie monitor!) a listę interfejsów uzyskamy wpisując tshark -D
sudo wifite --dict /path/to/dictionary.txt --kill
gdzie /path... to ściezka do słownika z hasłamicrunch 1 8 > dict.txt
utworzy plik z hasłami do 8 znaków i zapisze je w pliku o nazwie dict.txt
john hashes.txt --format=raw-MD5 --wordlist=/path/to/list.txt
airodump-ng, airmon-ng, aireplay-ng i sporo innych.
cdn...
Let's Encrypt
(screenshot ze strony phishingowej, którą otrzymałem w korespondencji)
Kilka dni temu w skrzynce email odnalazłem korespondencję od serwisu Netflix ze smutną informacją, że „chcemy z Tobą pozostać, ale niestety pojawiły się problemy z płatnościami i w celu weryfikacji zaloguj się na swoje konto i sprawdź płatności”. Do treści maila został dołączony link do podrobionej strony logowania łudząco naśladującej stronę serwisu netflix, ale po przyjrzeniu się jej i zajrzeniu do źródła strony okazało się, że nie jest ona w pełni funkcjonalna i ma za zadanie przesłanie danych użytkownika w niepowołane ręce. Zielona kłódka znajdująca się przy adresie URL ma wzbudzać zaufanie i sprawia wrażenie, że to bezpieczna witryna. Oczywiście jest to strona bezpieczna w takim znaczeniu, że zastosowano tu certyfikat, korzysta z HTTPS i dzięki TLS dane w polach email i hasło w sposób szyfrowany dotrą do serwera z którego korzystają przestępcy i nikt po drodze ich nie przejmie (np. wykorzystując atak man in the middle).
Instytucją certyfikującą w tym przypadku okazała się „Let’s Encrypt” oferująca darmowe certyfikaty DV dla własnych stron. (Zwykle jest to wydatek od kilkudziesieciu do kilkuset złotych, ale dające gwarancje finansowe oraz inne korzyści). Oczywiście tego typu certyfikaty są znakomitym pomysłem jeśli prowadzi się bloga czy forum wykorzystujące logowania i dane użytkowników mogą dzięki temu pozostać bezpieczne, również z tego powodu, że https staje się po prostu standardem i warto go wdrożyć. Projekt ten uzyskał wsparcie min. Mozilla Foundation, Cisco systems, Linux Foundation, Frontier Foundation. Nie chciałbym w żadnym wypadku krytykować wspomnianego projektu, ponieważ dzięki temu wiele osób moze uczynić swoje strony bezpieczniejszymi, ale warto pamiętać, ze zielona kłódka nie powinna już wzbudzć naszego zaufania, poza tym takie serwisy jak Netflix nie korzystają z darmowych certyfikatów. Po kliknięciu na omawianą kłódkę możemy to w prosty sposób sprawdzić i okaże się, że nie jest to "Let's Encrypt" lecz "DigiCert".