By otworzyć linię poleceń w systemie Windows, można: poszukać jej w
Akcesoriach, bądz wybrać Menu Start, Uruchom i wpisać
cmd
.
Większość poleceń należy wykonać na maszynie
info3.meil.pw.edu.pl
, lecz niektóre można wykonać w lini
poleceń Windows.
Materiały do tego laboratiorium można znaleść w katalogu
/home/zasoby/Info3/smsniff
na serwerze
info3.meil.pw.edu.pl
. Całą zawartość katalogu można
przegrać np. na pulpit za pomocą WinSCP, a na koniec zajęć skasować.
Standard TCP/IP mówi jak na na podstawowym poziomie działa Internet. W internecie są podłączone komputery i każdy z nich ma swój unikatowy numer IP. Ten numer to 4 bajty - zazwyczaj zapisuje się go w postaci 4 liczb oddzielonych kropkami (np. 127.0.0.1). Bajt to 8 bitów, wiec można w nim zapisać liczby od \(0\) do \(2^8-1 = 255\). Tak więc wszystkich numerów IP jest \(2^{32}\) więc ponad \(4\) miliardy. Jednak w internecie numery sa przydzielane grupami, wiec szybko się wyczerpały. W związku z tym wprowadzono nowy standard IPv6. Nie należy jednak sądzić że to \(6\) oznacza że teraz jest \(6\) liczb. Jest to poprostu wersja 6ta standardu - i numerów jest teraz \(2^{128}\), co daje prawie jeden septylion. Są pewne grupy numerów które są wyjątkowe.:
Standardową metodą komunikacji jest łączenie się jednego komputera z portem drugiego komputera. Każdy komputer ma wiele portów — tak by jeden komputer mógł obsługiwać wiele różnych funkcji. Komputer który łączy się nazywamy klientem, zaś komputer do którego się łączymy serwerem. Rozmawiają one przy pomocy zestawu ustalonych komend, które nazywamy protokołem. Żeby nie pomylić protokołów, przypisano im unikatowe porty. To oznacza, że dany port jest zwyczajowo używany do danego protokołu — ale fizycznie można by do tego użyć dowolnego innego.
ping google.com
localhost
i
orange.meil.pw.edu.pl
whois google.com
albo whois onet.pl
Port: 23
Jednym z bardzo użytecznych programów jest telnet
. Gdy
uruchomimy telnet google.com
program spróbuje połączyć się
z komputerem google.com, na porcie 23. Gdyby udało mu sie połączyć,
moglibyśmy z klawiatury wysyłać teksty do serwera, a na ekranie
wyswietlała by się odpowiedz. Telnet służył do obsługi konsoli — tak jak
SSH (putty) którego używasz. Jednak telnet nie był niczym zabezpieczony
(nawet hasło było widoczne), dlatego nie jest teraz nigdzie używany.
Jednak telnet
jest użyteczny ponieważ możemy mu wskazać
port na który ma się połączyć — i w ten sposób “oszukać” program i
połączyć się z innym protokołem.
W następnych ćwiczenia połączymy się na różnych portach z różnymi komputerami pisząc:
telnet info3.meil.pw.edu.pl
telnet info3.meil.pw.edu.pl 22
telnet localhost
telnet google.com
telnet google.com 80
Port:80 SSL:443
HTTP to najczęściej używany protokół w internecie. Pozwala on na pobieranie stron z serwerów. W odróżnieniu od poprzednich, nie jest to protokół typu instrukcja-odpowiedz. W tym protokole, wysyłamy zapytanie, zaś serwer wysyła nam odpowiedz i zamyka połączenie. Zapytanie wygląda następująco:
GET [ścieżka] HTTP/1.0
Host: [nazwa serwera]
[inna opcja]: [wartosc]
[pusta linia]
Po GET
naprawdę nie trzeba pisać nic — lecz jeden serwer
może obsługiwać strony gazeta.pl, tv.gazeta.pl i wiadomosci.gazeta.pl,
gdybyśmy nie podali Host:
serwer nie wiedziałby o którą
stronę chodzi. Dla przykładu jeśli chcemy sciągnać stronę
http://m.google.com/index.html
wpiszemy:
GET /index.html HTTP/1.0
Host: m.google.com
Inne opcje to :
User-Agent:
– twoja przeglądarkaAccept:
– Jakie formaty umiesz przeczytać (html, txt) -
można nadać im priorytety.Accept-Language
– Jakie języki akceptujemy – też można
nadać priorytety.Port:80 SSL:443
Do wielu usług warto łączyć się kanałem szyfrowanym. Po pierwszym
użyciu w tym celu programu telnet
, np łączac się z
telnet google.com 443
, widzimy że nie umiemy rozmawiać
zaszyfrowanymi bajtami.
Do komunikacji z serwerem po szyfrowanym połączeniu możemy użyć
program openssl
. Dla przykładu:
github.com
do
dyskusji https://github.com/ccfd/courses/issues/12
.
Użyj do tego zapytania do serwera api.github.com
(skonstruuj je uprzednio w pliku tekstowym):POST /repos/ccfd/courses/issues/12/comments HTTP/1.1
Host: api.github.com
Authorization: token [token]
User-Agent: Wget/1.9.1
Connection: close
Content-Type: application/json
Content-Length: 53
{"body":"To jest bardzo wazny komentarz\nBardzo\n"}
[token]
możesz uzyskać logując się na GitHub i dodając
token w menu “Settings”, “Personal access tokens”.
Port:25 TLS:587 SSL:465
SMTP to protokół używany do wysyłania e-maili. Polączyć się z nim można pod portem nr 25. Jego postawowe instrukcje to:
HELO something
– przywitanie się z serweremMAIL From: something
– Od kogo jest e-mailRCPT To: something
– Do kogo jest e-mailDATA
– Po tej komendzie można napisać treść e-maila.
Zakończyć trzeba [enter].[enter]QUIT
– Kończy rozmowę z serweremZ szyfrowanym protokołem SMTP (typu TLS), można się połączyć za pomocą:
Port:110 SSL:995
POP3 to protokół używany do odbierania e-maili ze skrzynki. Połączyć się z nim można pod portem nr \(110\). Jego podstawowe instrukcje to:
USER użytkownik
– ustawia użytkownika którego chcemy
zalogowaćPASS hasło
– loguje użytkownikaLIST
– Wypisuje listę e-maili w skrzynce w formacie
[numer] [rozmiar]RETR number
– pobiera e-mailDELE number
– kasuje e-mailTOP number
– pobiera pierwsze pare linii e-mailQUIT
– Kończy rozmowę z serweremDo połączenia szyfrowanego użyj analogicznego polecenia jak w sekcji o HTTPS
telnet
pobierze konkretnego e-maila. Jeśli telnet nie
reaguje na wejściowy plik, jest to spowodowane tym, ze serwer nie nadąża
z interpretowaniem komend. Napisz skrypt który co sekundę będzie
wypisywał na ekran jedną linijkę z pliku - a następnie przekieruj z
niego wyjście do telnet’u.Sniffing, czyli analiza pakietów (Packet Analysis) to najprostsza technika podsłuchu w internecie. Polega ona na przechwytywaniu pakietów na poziomie interface’u sieciowego i rozkodowywaniu ich do postaci czytelnej dla człowieka. W ten sposób możemy zobaczyć wszelkie połączenia TCP/IP (a także UDP). Analizując dane przesyłane pomiędzy klientami a serwerami, możemy nie tylko dowiedzieć się kto z kim się łączy ale:
W materiałach można znaleść program smsniff.exe
. Jest to
typowy prosty sniffer pod Windows. Sieć w laboratorium jest oparta na
dobrym switch’u, więc jedyne pakiety widoczne w sieci, to takie które
idą od lub do danego komputera (oraz broadcast). Oznacza to, że nie da
się podsłuchiwać innych studentów.
UWAGA: Większość sieci (w tym praktycznie wszystkie WiFi) nie są zabezpieczone przed Sniffingiem! Pamiętaj, że to co właśnie robisz, może zrobić każdy!
http://meil.pw.edu.pl/
https://meil.pw.edu.pl/
Ta część jest dla osób które chcą się pobawić i pogrzebać - nie ma gwarancji że cokolwiek zadziała!
Porty można przekierować. Jeśli przekierujemy port x z serwera X do portu y serwera Y, to będzie to oznaczać, że jeśli połączymy się z portem x z serwerem X, to on przekaże całą komunikację do portu y serwera Y. Innymi słowy jeśli napiszemy:
to połączymy się z portem y na Y. Jest to wyjątkowo przydatne, jeśli my nie potrafimy połączyć się z komputerem Y. Dla przykłady gdy Y jest za firewall’em, albo jest w innej podsieci.
80
był przekierowany na google.com:80
.
Następnie połącz się z maszyną info3
jak zwykle.http://localhost/
12345
był przekierowaniem typu “Dynamic”. Następnie połącz
się z maszyną info3
jak zwykle.localhost
i port 12345