image


  Wiele lat temu, jeszcze w czasach popularności języka basic, od którego zaczynałem przygodę z programowaniem, gdzieś przeczytałem (zapewne w magazynie Bajtek lub 64plus4) o tym jak nieporządanym komunikatem jest GOTO. Podobno ktoś napisał o tym w jakimś magazynie i wywołało to burzę w uwczesnym środowisku programistów basica.
Były to czasy późnej podstawówki i dostęp do informacji nie był taki jaki jest obecnie. GOTO było komunikatem, którego trudno było w basicu nie stosować. Autorem tej krytyki był holenderski naukowiec Edsger Djikstra, będący pionierem informatyki, a dotyczyło to jego wypowiedzi z marca 1968r. (Goto Statement Considered Harmful, Communications of the ACM. 11 (3): 147–148). Krytyka dotyczyła jak to wyraził autor katastrofalnych skutków naduzywania komunikatu goto, który jest zbyt prymitywny i stosując go prosimy się o namieszanie w naszym programie. Temat ten wrócił za sprawą Franka Rubina, który opublikował krytykę listu Dijkstry w CACM z marcu 1987 roku. Ostatecznie spostrzezenia Dijkstry były krokiem na przód, początkiem strukturalnego paradygmatu programowania, w powstawaniu którego miał swój udział i zaowocowało powstawaniem takich języków jak Pascal. Jego działalność naukowa z zakresu matematycznych podstaw informatyki, prac nad kompilatorami (język Algol60) została doceniona przyznaniem nagrody Turinga w roku 1972. Jaki wpływ na powstawanie internetu miał Dijkstra? Kazdy w trakcie nauki o sieciach zetknął się z jego algorytmem opartym na analizie stanu łącza w systemach autonomicznych takim jak OSPF (protokół trasowania). OSPF czyli Open Shortest Path First, czyli "najkrótsza ściezka ma pierszenstwo". Jeśli kojarzy Ci się to z nawigacją w samochodzie to słusznie. Tu równiez wykorzystuje się algorytm Dijkstry. Dzięki niemu routery w ramach AS (systemach autonomicznych) wymieniają się informacjami o topologii i stanie łączy, dzięki czemu z wykorzystaniem algorytmu Dijkstry są wstanie określać najkrótszą ściezkę pomiędzy węzłami, i wyznaczyć najbardziej korzystną trasę. E. Dijkstra miał równiez znaczący wkład w rozwój współbiezności, szczególnie w systemach rozporszonych.


grafika źródło: pjatk.edu.pl


IPv6


  Po sukcesie protokołu IP w wersji v4, który mimo róźnic sprzętowych, technologii sieciowych i skalowalności okazał się niewiarygodnie skuteczny co stało się wynikiem wykładniczego rozwoju sieci powodując coraz szybsze wyczerpywanie się puli aresów IP (32 bitowy adres zapewniał 4,294967296 adresów do dyspozycji. Obecnie cztery z pięciu organizacji które zajmują się dystrybucją adresów (Regional Internet Registries) zgłosiły juz wyczerpanie puli (APNIC, LACNIC,RIPENCC, ARIN pozostał jeszcze AfriNIC). Polityka cenowa spowodowała, ze część publicznych adresów udaje się odzyskać. Odpowiedzią na problem stała się nowa wersja protokołu w wersji 6tej, którego wdrazanie rozpoczęto w roku 2012. zapewniająca pulę adresową wynoszącą 2^128 czyli 340 undecylionów adresów. Liczbę ziarenek piasku na ziemii szacuje się na około 5 tryliardów (5 000 000 000 000 000 000 000). Jeśli chcielibyśmy przydzielić im adresy ip, to spokojnie powinno wystarczyć
Co więcej każdy atom na naszej planecie mógłby mieć przydzielony adres ip w wersji 6tej. W wersji IPv6 liczba możliwych adresów wynosi 340 282 366 920 938 463 463 374 607 431 768 211 456. (trzysta czterdzieści undecylionów, dwieście osiemdziesiąt dwa decylionów, trzysta sześćdziesiąt sześć nonylionów, dziewięćset dwadzieścia oktylionów, dziewięćset trzydzieści osiem septylionów itd..)






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



  Kilka miesięcy temu otrzymałem email od "samego siebie" z własnego adresu email, w ten sposób nadawca miał mnie przekonać, że jest to dowód umiejętności hakerskich, ma pełen dostęp do mojego komputera, jest w posiadaniu kompromitujących mnie treści i zarządał okupu w kryptowalucie wzamian za zaniechanie publikacji ich wśród osób z mojej listy kontaktów. Skłoniło mnie to do napisania kilku słów na temat mechanizmu tego ataku i bezpiecznego stosowania haseł. Jaki jest sposób działania cyberprzestępców w tym przypadku? Wysłanie zespoofanego (spoofing = podszywanie się) emaila nie jest czynnością technicznie skomplikowaną, a autentyczność korespondencji zweryfikujemy otwierając nagłówek wiadomości. (pola zaczynające się od received from wskazują serwer poczty nadawcy co moze dać jakąś wskazówkę dotyczącą pochodzenia korespondencji). Pole FROM może być dowolne i takie się wyświetli jako nadawcy w pocztowym programie klienckim. W takim razie skąd oszust znał moje hasło (ujawnił je w treści jako dowód), które faktycznie kiedyś posiadałem? Są pozyskiwane nielegalnie z wycieków wykradzionych baz danych (zawierających min. hashe haseł) rozmaitych serwisów, sklepów internetowych, forów itd. O tego typu naruszeniach danych raz na jakiś czas możemy usłyszeć i mogą dotyczyć ogromnej ilości użytkowników, ale być może wydaje się, że nas to zupełnie nie dotyczy. Oczywiście jest metoda sprawdzenia, czy nasze dane są rozpowszechniane w sieci za pośrednictwem darknetu. ( Sprawdź na stronie https://haveibeenpwned.com , jeśli wyciekło, radzę zmienić hasło w tych serwisach, które się wyświetlą).
Jeśli posiadasz jedno hasło do wielu kont to jest szansa, że przestępca, który pozyskał Twoje hasło do jakiegoś serwisu jednocześnie zdobędzie też do poczty elektronicznej. Moje hasła w tym przypadku zostały wykradzione z serwisów Daily Mail i Myspace. Oczywiście takie hasła nie występują wprost zwykłym tekstem (plain text), lecz jako wynik funkcji mieszającej (hash), o której była mowa w poprzednich tekstach. np słowo "password" to 5F4DCC3B5AA765D61D8327DEB882CF99 (algorytm MD5) i jak wiadomo z hashcode nie uzyskamy zwykłego tekstu, czyli hasła o jakie nas poprosi strona podczas logowania, no chyba, że jest ono proste i z pomocą odpowiedniego programu uda nam się je "złamać". (prosty cracker, który napisałem znajduje się na podstronie projekty). Niestety wśród polskich użytkowników internetu najczęściej występujące kombinacje to: 123456, polska, matrix, qwerty, zaq12wsx, monika, 12345, marcin itd. (te dane o hasłach też pochodzą z wycieków). Uzyskanie hasła z hashcode uzyskać można wykorzystując oprogramowanie służąceg do tego celu np. hashcat, john the ripper, itp. (będące częścią dystrybucji kali linux dedykowanego dla pentesterów). Pozyskanie łatwego hasła w tej sytuacji sprowadza się do wpisania jednej linijki w terminalu:
hashcat -m 0 a-0 plik_z_hashami.txt słownik_haseł.txt —-show
rezultat:

E10ADC3949BA59ABBE56E057F20F883E:123456
1DC5AB404FA22F451D5D28E83B063A8D:polska
5F4DCC3B5AA765D61D8327DEB882CF99:password

Z jednego popularnego słownika (rockyou.txt w katalogu /usr/share/wordlists/) nie mieliśmy problemu z uzyskaniem tych haseł. Dlatego hasła powinny zawierać kombinacje róznych przypadkowych znaków, cyfr oraz symboli, dzięki temu jego złamanie będzie możliwe z wykorzystaniem technik siłowych ("brute force"), polegającą na generowaniu wszystkich możliwych kombinacji znaków co wymaga dużego nakładu obliczeń, szczególnie na zwykłym komputerze i przy tym jest czasochłonne. Na dedykowanych maszynach czas obliczeń jest znacznie krótszy, również w chmurze obliczeniowej, gdzie mozemy dysponować wieloprocesorowymi maszynami i rozliczamy się za czas uzytkowania. Dla kombinacji składającej się z 8 znaków (dużych i małych liter, cyfr, kilku innych symboli) liczba możliwych haseł wyniesie ogromną ilość kombinacji dlatego czas potrzebny do "złamania" hasła moze być naprawdę długi, zwłaszcza w przypadku dodania tzw. soli (salted hash) czyli losowej wartości dodawanej do hasła przed wyliczeniam jego wartości hash. Dla zwykłego komputera potrzeba będzie 18 godzin, superkomputer przeliczy je w 1,12 minuty. Przykładem dobrego hasła może być P0btDk@34hgL.;;;; (dodanie np. kilku średników na końcu hasła, tzw. haystacks znacznie wysłuża jego łamanie). Pokazany sposób służy wyłącznie celom edukacyjnym i powinien stanowić przestrogę przed stosowaniem jednego, prostego hasła dla większej ilości kont.





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:



Użytkownik pracujący na komputerze gucio.intranet.pl wykonuje polecenie ping www.test.pl
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





  Tematyka cyberbezpieczeństwa staje się w ostatnich latach coraz głośniejsza, niestety za sprawą coraz częstszych i bardziej pomysłowych ataków, których wielu użytkowników już miało okazję doświadczyć na własnej skórze. chociaż zagadnienia z tym związane są wieloaspektowe i dotyczą stosowania socjotechnik, to w dużej części jest to temat obejmujący sieci komputerowe. W tekscie o stosowaniu haseł wspomniałem o dystrybucji sysemu Linux o nazwie kali linux, będącej rozwinięciem Debiana zawierającej preinstalowany zestaw narzędzi dla użytkowników zajmujących się zagadnieniami bezpieczeństwa (a przy złych intencjach przez cyberprzestępców). Lista narzędzi jest naprawdę obszerna i obejmuje wiele kategorii. Od narzędzi do wyszukiwania informacji, inzynierii wstecznej to roznego typu crackerów plików zabezpieczonych hasłem, analizy aplikacji webowych, snifferów, skanerów sieci i crackerów sieci wifi. Zawiera metasploit framework, zawiera bazę exploitów dla róznych systemów i zastosowań i narzędzia do przygotowania payloadu. Postanowiłem niewielką część wymienić i krótko opisać.

  • WPScan - wynajduje podatności i luki w zabezpieczeniach, informuje o zainstalowanych wtyczkach i wersji w popularnego frameworka WordPress
  • JoomScan - pozwala odkrywać luki i podatności witryn opartych na Joomla.
  • Burp w wersji community. Jego zadaniem jest testowanie aplikacji internetowych, zawiera bogaty zestaw narzędzi.
  • ZAP Zed Attack Proxy - zawiera serwer proxy do przechwytywania rządań i identyfikacji katalogów i plików na serwerze.
  • ProxyStrike - aktywny skaner proxy, przechwytuje rządania i odpowiedzi, wyszukuje podatności
  • DIRB odszukuje ukryte pliki na serwerach http
  • Legion - zestaw narzędzi do rekonesansu, odkryania urządzeń w sieci i wykrywania podatności. Mozna te czynności automatyzować. Wykorzystuje sporą ilość modułów i skryptów.
  • Nikto - skaner podatności i luk popularnych serwerów www.
  • W3AF - skaner podatności i luk w zabezpieczeniach aplikacji sieciowych
  • Skipfish - snaker podatności i luk. Pozwala w sposób rekurencyjny, przy użyciu słownika stworzyć mapę struktury katalogów i plików na serwerze.
  • nmap - opisany wcześniej skaner sieci
  • wireshark - sniffer ruchu w sieci, przechwytuje pakiety z mozliwoscią (właściwie jest to konieczność przy tak duzej liczbie pakietów) filtrowania przechwyconych danych.
  • tshark - sniffer działający w trybie CLI. Najprostsze zastosowanie to: 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
  • fern wifi cracker - napisany w pythonie i posiadający interfejs graficzny program do audytu i atakowania sieci bezprzewodowych
  • wifite - działający z poziomu CLI program do atakowania szyfrowanych sieci WEP, WPA i WPS. W przypadku prostego zastosowania wystarczy podać mu kilka argumentów, np: sudo wifite --dict /path/to/dictionary.txt --kill gdzie /path... to ściezka do słownika z hasłami
  • crunch - program do tworzenia słowników haseł. Uzycie zawiera się w jednej linijce i mozna przekazać wynik do pliku wykorzystując potok , np. crunch 1 8 > dict.txt utworzy plik z hasłami do 8 znaków i zapisze je w pliku o nazwie dict.txt
  • johntheripper - łamacz haseł, dość rozbudowany i warto sięgnąć do dokumentacji. Przykład stosowania wygląda następująco:
    john hashes.txt --format=raw-MD5 --wordlist=/path/to/list.txt
  • hashcat - kolejny cracker haseł działający z poziomu cli. Przykład zastosowania opisałem w tekście na temat haseł.
  • aircrack-ng pakiet do analizy sieci, przechwytywania pakietów i łamania zabezpieczeń sieci wifi. Zestaw obejmuje wiele programów:
    airodump-ng, airmon-ng, aireplay-ng i sporo innych.
  • hydra - narzędzie do dokonywania ataków słownikowych na adresy stron logowania. Trzeba wcześniej zdobyć dokładną wiedzę o formie wysyłanego rządania i na tej podstawie przygotować polecenie, również dodać listę urzytkowników i słownik przykładowych haseł.
  • kismet - program rozpoznaje szczegółowo otaczające nas sieci. Wykorzystuje pracę karty sieciowej w trybie monitor.
  • hciutil - pakiet do zarządzania urządzeniami Bluetooth. W przypadku, gdy chcemy wykryć urządzenia znajdujące się w poblizu: hcitool scan
  • redfang - wykrywanie urządzeń bluetooth metodą brute force. fang -r xxxxxxxxxxxx-xxxxxxxxxxxx -s (przeszukiwanie zakresu adresów)
  • bluelog - równiez scanner bluetooth
  • theHarvester - wyszukuje informacje w róznych źródłach (np. theHarvester -d gmail.com - l 100 -b linkedin przeszukuje adresy z domeny gmail na stronach linkedin z ograniczeniem do 100 wyników).

  • 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".