01c (2)


Rekomendowane przez nas zmiany powinny obejmować tematy wymienione niżej.

  1. Uzyskanie od dostawcy nazwiska osoby kontaktowej.

  2. Uzyskanie od dostawcy adresu kontaktowego lub użycie skrzynki pocztowej.

  3. Uzyskanie kontaktowego numeru telefonicznego: użyj bezpośredniej skrzynki głosowej poza wewnętrzną centralą telefoniczną firmy, innego systemu telefonicznego lub numeru pagera.

  4. Uzyskanie od dostawcy kontaktowego adresu e-mail lub użycie innego konta, na przykład @Yahoo.com, @Hotmail.com albo @wp.pl.

  5. Uzyskanie od dostawców serwerów nazw domen.

Na stronie NASK-u (www.dns.pl) znajdują się odpowiednie formularze do modyfikacji nazwy rejestracyjnej domeny, danych osoby kontaktowej, danych konta kontaktowego i zmiany danych o hoście lub serwerze nazw (patrz rysunki 1.41 i 1.42).

Rysunek 1.42.

Formularz modyfikacji danych osoby kontaktowej

0x01 graphic

Projekt witryny internetowej

Wiele witryn internetowych ujawnia krytyczne informacje na swoich stronach. W Internecie często publikowane są dane, takie jak nazwiska osób kontaktowych, adresy poczty elektronicznej, telefony wewnętrzne, schematy infrastruktury sieci, zakresy adresów sieciowych IP, a nawet nazwy społeczności. Dla przykładu jakaś z firm opublikowała nazwy społeczności SNMP, a jeden z routerów w oddziale umożliwiał zapis i odczyt.

Jak wyjaśniono w pierwszym tomie tej książki, informacje te mogą spowodować, że ataki hakerów, polegające na uzyskaniu kontaktów z pracownikami, wysyłaniu wiadomości elektronicznych i próbach uzyskania zdalnej kontroli, będą przeprowadzane z powodzeniem. Jako praktyczny przykład możesz obejrzeć firmowe strony informacyjne, które zawierają informacje o pracownikach, mogące posłużyć do zdobycia kolejnych informacji (zobacz rysunek 1.43).

Rysunek 1.43.

Ujawnienie zbyt dużej liczby informacji może doprowadzić do ataku hakera

0x01 graphic

Biorąc to pod uwagę, należy przyjąć ogólną zasadę niepublikowania na stronach internetowych nazwisk pracowników i ich adresów e-mail. Zastąpić je możesz formularzami na stronie WWW lub adresami nieujawniającymi szczegółowych informacji na temat odbiorcy poczty. Aby to zademonstrować, zmodyfikujemy stronę pokazaną na rysunku 1.43 w celu ukrycia krytycznych informacji (zobacz rysunek 1.44). Jak można zobaczyć, te zmiany mogą odwieść hakera od przeprowadzenia bezpośredniego ataku. Jednakże w tym przypadku firma jest ciągle wrażliwa na inne rodzaje ataków, na przykład bombardowanie skrzynek pocztowych. Aby tego uniknąć, jeszcze raz zmodyfikujemy stronę z kontaktami w celu eliminacji możliwości bezpośredniej wymiany informacji przez dołączenie formularza (zobacz rysunek 1.45).

Tak naprawdę najlepszym sposobem postępowania podczas tworzenia bezpiecznej witryny internetowej jest dokładne zbadanie każdej strony w poszukiwaniu zawartości, która może ułatwić atak hakera. Jeśli na witrynie umieszczasz schematy wewnętrznej sieci, strukturę IP oraz nazwy społeczności, oznacza to wysłanie zaproszenia dla hakerów.

Rysunek 1.44.

Umieszczanie na stronach internetowych bardziej ogólnych informacji kontaktowych jest znacznie bezpieczniejsze

0x01 graphic

Rysunek 1.45.

Eliminacja bezpośredniej wymiany danych może być najskuteczniejsza

0x01 graphic

Nawet jeśli nie musisz obawiać się ujawniania takich informacji, zawsze dobrym pomysłem jest implementacja prostej zapory wejściowej. Wiadomo, iż umieszczenie na stronie kodu, takiego jak skrypt logowania, skrypty ASP i VB czy plików wykonywalnych CGI, często odstrasza nocnych napastników. Poniżej przedstawiono przykład adaptacji prostego i łatwego do implementacji skryptu logowania, utworzonego w Javie przez znanego programistę Johna Fentona:

<HTML>

<HEAD>

<H1><CENTER>Wprowadź hasło</H1></CENTER>
<!--Jeśli chcesz, możesz zmienić lub usunąć ten nagłówek -->

<SCRIPT LANGUAGE=JAVASCRIPT>

function verify(){

var password ="12345"; // Tutaj podaj hasło

// Podaj stronę, do której należy przejść, jeśli hasło jest poprawne

var protected_page ="mypage.html";

var pd=document.password.pin.value

// Możesz zmienić 'pin', jeśli poniżej zmienisz nazwę okna hasła

if(pd!=password) // sprawdza hasło

{

alert("Niewłaściwe hasło");

}

else

{

alert("Hasło poprawne");

window.location.href=protected_page; // Przenosi do podanej powyżej zabezpieczonej strony

}}

</SCRIPT>

<TITLE>

<!-- Zmień to -->

</TITLE>

</HEAD>

<BODY bgcolor=black text=red> <!--Jeśli chcesz, możesz zmienić zestaw kolorów -->

<BR>

<BR>

<CENTER>

<FORM name=password> <!--Możesz zmienić nazwę formularza, ale musisz tego dokonać również powyżej -->

<INPUT type=password name=pin> <!--Możesz zmienić 'pin', ale musisz tego dokonać również powyżej -->

<BR>

<BR>

<INPUT type=button value=Submit OnClick="verify()"> <!--Możesz zmienić nazwę funkcji, ale musisz tego dokonać również powyżej-->

</CENTER>

</BODY>

</HTML>

Kolejnym przykładem jest TigerPass, który może być użyty jako wewnętrzna bramka logowania i może zostać w prosty sposób przekształcony do frontonu CGI. Przedstawiony na rysunku 1.46 oraz w postaci następującego kodu program został opracowany przez programistę Visual Basica — Philipa Beama; narzędzie to automatycznie zapytuje małą bazę danych o nazwie login.mdb w celu uzyskania rozliczeń dostępu i odnośników krzyżowych.

Rysunek 1.46.

Plik wykonywalny logowania TigerPass może być wykorzystany jako moduł sprawdzający hasło wejściowe

0x01 graphic

TigerPass

Private Sub Command1_Click()

Login.Data1.Recordset.FindFirst "memID = '" & Login.Text1.Text & "'"

If Login.Pass.Caption = Login.Text2.Text Then

MsgBox "Login succesful!"

Login.MemID.Caption = ""

Login.Pass.Caption = ""

Login.Text1.Text = ""

Login.Text2.Text = ""

Exit Sub

End If

MsgBox " Login unsuccesful!"

Login.Text1.Text = ""

Login.Text2.Text = ""

End Sub

Private Sub Command2_Click()

Login.Data1.Recordset.AddNew

Login.Data1.Recordset.Fields("memID") = "" & Login.Text1.Text & ""

Login.Data1.Recordset.Fields("pass") = "" & Login.Text2.Text & ""

Login.Data1.Recordset.Update

Login.MemID.Caption = ""

Login.Pass.Caption = ""

Login.Text1.Text = ""

Login.Text2.Text = ""

End Sub

Private Sub Command4_Click()

Login.Command5.Visible = True

Login.Command4.Visible = False

Login.Width = 3465

End Sub

Private Sub Command5_Click()

Login.Command4.Visible = True

Login.Command5.Visible = False

Login.Width = 5985

End Sub

Wypróbuj również TigerPass ASP, który może być wykorzystywany jako bramka do zewnętrznego logowania. Przedstawiony na rysunku 1.47 oraz w postaci następującego kodu program został opracowany przez programistę Microsoftu — J.L. du Preeza. Ta wersja udostępnia witrynie możliwość logowania oraz zapewnia zabezpieczenia haseł, a także pozwala użytkownikom na zmianę swoich haseł. Aby program zadziałał, musisz po prostu zainstalować wszystkie pliki w katalogu na serwerze, a następnie umieścić plik password.mdb w katalogu /db, umieszczonym w głównym katalogu.

Rysunek 1.47.

Interfejs frontowy ASP TigerPass

0x01 graphic

TigerPass ASP: Login.asp

<html>

<head>

<title>Proszę zalogować się</title>

<STYLE>

<!--

body {background: #000000; font-size: 20pt; color: #FEFCE0; font-family:
verdana, arial}

td {font-size: 9pt; color: #FEFCE0; font-family: verdana, arial}

A:link {text-decoration: none; color: #FFFFFF;}

A:visited {text-decoration: none; color: #FEFCE0;}

A:active {text-decoration: none; color: #FFFFFF;}

A:hover {text-decoration: none; color:#CCFFFF;}

-->

</STYLE>

<body>

<BR>

<center><h1> Aby kontynuować, musisz zalogować się:</h1></center>

<BR>

<FORM ACTION="login1.asp" METHOD="post">

<P>&nbsp;</P>

<center> <TABLE BORDER=0>

<TR>

<TD ALIGN="right">Nazwa:</TD>

<TD><INPUT size="10" NAME="login"

></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Hasło:</TD>

<TD><INPUT TYPE="password" size="10"

NAME="password"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right"></TD>

<TD><INPUT TYPE="submit"

VALUE="Zaloguj"></INPUT>

<INPUT TYPE="reset"

VALUE="Wyczyść"></INPUT>

</TD>

</TR>

</TABLE></center>

</FORM>

</body></html>

Login1.asp

<%Dim Apples

Set Apples = Server.CreateObject("ADODB.Connection")

ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; "

ConnStr = ConnStr & "DBQ=" & Server.MapPath("db\password.mdb")

Apples.Open(ConnStr)

SQLtemp = "SELECT * FROM password WHERE user = '" & Request.form("login") & "' "

Set rs = Apples.Execute(SQLtemp)

while not rs.eof

dim username

username = rs("user")

dim friendlyname

friendlyname = rs("name")

response.cookies("passes") = username

response.cookies("passes2") = friendlyname

If Request.Form("login") = rs("user") AND Request.Form("password") = rs("pass") Then

Response.redirect("protected.asp")

Else

Response.redirect("login2.asp")

End If

rs.MoveNext

Wend

OnError response.Redirect ("login2.asp")

rs.Close

Apples.Close

set Apples = Nothing

Login2.asp

<html>

<head>

<title>Proszę zalogować się</title>

<STYLE>

<!--

body {background: #000000; font-size: 20pt; color: #FEFCE0; font-family:

verdana, arial}

td {font-size: 9pt; color: #FEFCE0; font-family: verdana, arial}

A:link {text-decoration: none; color: #FFFFFF;}

A:visited {text-decoration: none; color: #FEFCE0;}

A:active {text-decoration: none; color: #FFFFFF;}

A:hover {text-decoration: none; color:#CCFFFF;}

-->

</STYLE>

<body>

<BR>

<center><h1>Niestety, logowanie nie powiodło się</h1></center>

<center><h1>Proszę spróbować ponownie</h1></center>

<BR>

<FORM ACTION="login1.asp" METHOD="post">

<center> <TABLE BORDER=0>

<TR>

<TD ALIGN="right">Nazwa:</TD>

<TD><INPUT TYPE="text" size="10"
* NAME="login"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Hasło:</TD>

<TD><INPUT TYPE="password" size="10"
* NAME="password"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right"></TD>

<TD><INPUT TYPE="submit" VALUE="Zaloguj"></INPUT>

<INPUT TYPE="reset" VALUE="Oczyść"></INPUT>

</TD>

</TR>

</TABLE></center>

</FORM>

</body></html>

Passchange.asp

<%username = request.cookies("passes")%>

<html>

<head>

<title>Zmień hasło</title>

<STYLE>

<!--

body {background: #000000; font-size: 20pt; color: #FEFCE0; font-family:

verdana, arial}

td {font-size: 9pt; color: #FEFCE0; font-family: verdana, arial}

A:link {text-decoration: none; color: #FFFFFF;}

A:visited {text-decoration: none; color: #FEFCE0;}

A:active {text-decoration: none; color: #FFFFFF;}

A:hover {text-decoration: none; color:#CCFFFF;}

-->

</STYLE>

<body>

<BR>

<center><h1>Proszę zmienić swoje hasło</h1></center>

<BR>

<FORM ACTION="passchange1.asp" METHOD="post">

<center> <TABLE BORDER=0>

<TR>

<TD ALIGN="right">Nazwa:</TD>

<TD><INPUT TYPE="text" Value=<%=username%>

size="10" NAME="login"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Stare hasło:</TD>

<TD><INPUT TYPE="password" size="10"

NAME="oldpassword"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Nowe hasło:</TD>

<TD><INPUT TYPE="password" size="10"

NAME="newpassword1"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Potwierdzenie nowego

hasła:</TD>

<TD><INPUT TYPE="password" size="10"

NAME="newpassword2"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right"></TD>

<TD><INPUT TYPE="submit"

VALUE="Zmień"></INPUT>

<INPUT TYPE="reset"

VALUE="Wyczyść"></INPUT>

</TD>

</TR>

</TABLE></center>

</FORM>

</body></html>

Passchange1.asp

<%Dim Apples

Set Apples = Server.CreateObject("ADODB.Connection")

ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; "

ConnStr = ConnStr & "DBQ=" & Server.MapPath("db\password.mdb")

Apples.Open(ConnStr)

SQLtemp = "SELECT * FROM password WHERE user = '" & Request.form("login") & "' "

Set rs = Apples.Execute(SQLtemp)

If Request.Form("login") = rs("user") AND Request.Form("oldpassword") = rs("pass")

AND Request.Form("newpassword1") = Request.Form("newpassword2") then

SQL = "UPDATE password SET pass = '" & Request.Form("newpassword2") & "' WHERE user

= '" & Request.Form("login") & "'"

Apples.Execute(sql)

Response.redirect ("updated.asp")

Else

Response.redirect ("passchange2.asp")

End If

set ConnStr = Nothing

rs.Close

Apples.Close

set ConnStr = Nothing

%>

Passchange2.asp

<%username = request.cookies("passes")%>

<html>

<head>

<title>Zmień hasło</title>

<STYLE>

<!--

body {background: #000000; font-size: 20pt; color: #FEFCE0; font-family:

verdana, arial}

td {font-size: 9pt; color: #FEFCE0; font-family: verdana, arial}

A:link {text-decoration: none; color: #FFFFFF;}

A:visited {text-decoration: none; color: #FEFCE0;}

A:active {text-decoration: none; color: #FFFFFF;}

A:hover {text-decoration: none; color:#CCFFFF;}

-->

</STYLE>

<body>

<BR>

<center><h1>Niestety, niektóre podane dane były niepoprawne.</h1></center>

<BR>

<FORM ACTION="passchange1.asp" METHOD="post">

<center> <TABLE BORDER=0>

<TR>

<TD ALIGN="right">Nazwa:</TD>

<TD><INPUT TYPE="text" Value=<%=username%>

size="10" NAME="login"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Stare hasło:</TD>

<TD><INPUT TYPE="password" size="10"

NAME="oldpassword"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Nowe hasło:</TD>

<TD><INPUT TYPE="password" size="10"

NAME="newpassword1"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right">Potwierdzenie hasła:</TD>

<TD><INPUT TYPE="password" size="10"

NAME="newpassword2"></INPUT></TD>

</TR>

<TR>

<TD ALIGN="right"></TD>

<TD><INPUT TYPE="submit"

VALUE="Zaloguj"></INPUT>

<INPUT TYPE="reset"

VALUE="Wyczyść"></INPUT>

</TD>

</TR>

</TABLE></center>

</FORM>

</body></html>

Protected.asp

<%username = request.cookies("passes")%>

<%friendlyname = request.cookies("passes2")%>

<%If request.cookies("passes") = "" then response.redirect ("login.asp")%>

<html><head><title>Proszę wybrać miejsce docelowe</title>

<STYLE>

<!--

H1 {font-size: 20pt; color: #FEFCE0; font-family: verdana, arial}

body {background: #000000; font-size: 15pt; color: #FEFCE0; font-family:

verdana, arial}

td {font-size: 9pt; color: #FEFCE0; font-family: verdana, arial}

A:link {text-decoration: none; color: #FFFFFF;}

A:visited {text-decoration: none; color: #FEFCE0;}

A:active {text-decoration: none; color: #FFFFFF;}

A:hover {text-decoration: none; color:#CCFFFF;}

-->

</STYLE>

</head>

<body>

<BR>

<h1><center>Witam <%=friendlyname%>. Tu możesz znaleźć pliki

źródłowe</center></h1>

<BR><BR><BR>

<center><a href="pass.zip">Plik źródłowy tych stron</a></center>

<BR>

<center><a href="passchange.asp">Zmień swoje hasło</a></center>

<BR>

<center><a href="login.asp">Wyloguj i zaloguj się ponownie</a></center>

</body>

</html>

Updated.asp

<%username = request.cookies("passes")%>

<%friendlyname = request.cookies("passes2")%>

<html><head><title>Wybierz miejsce docelowe</title>

<STYLE>

<!--

H1 {font-size: 20pt; color: #FEFCE0; font-family: verdana, arial}

body {background: #000000; font-size: 15pt; color: #FEFCE0; font-family:

verdana, arial}

td {font-size: 9pt; color: #FEFCE0; font-family: verdana, arial}

A:link {text-decoration: none; color: #FFFFFF;}

A:visited {text-decoration: none; color: #FEFCE0;}

A:active {text-decoration: none; color: #FFFFFF;}

A:hover {text-decoration: none; color:#CCFFFF;}

-->

</STYLE>

</head>

<body>

<BR>

<h1><center>Dziękuję, <%=friendlyname%>. Hasło zostało zmienione</center></h1>

<BR><BR><BR>

<center><a href="pass.zip">Plik źródłowy tych stron</a></center>

<BR>

<center><a href="passchange.asp">Zmień swoje hasło</a></center>

<BR>

<center><a href="login.asp">Wyloguj i zaloguj się ponownie</a></center>

</body>

</html>

0x01 graphic

Te programy są dostępne na dołączonym do książki CD-ROM-ie.

Anonimowość użytkownika

Prywatni i korporacyjni użytkownicy chcą mieć pewność, że mogą anonimowo surfować po Internecie i łączyć się z sieciami rozległymi. Niestety, pod względem technicznym jest to trudne do osiągnięcia i ta kwestia staje się kolejną furtką, przez którą jest przeprowadzane zdalne zbieranie informacji. Hakerzy mogą przyciągnąć użytkowników do konkretnej witryny internetowej, używając takich zachęt, jak dowcipy, darmowe lub pirackie oprogramowanie, aukcje z najlepszymi cenami, czy najświeższe informacje. Wystarczy jedna krótka wizyta na takiej stronie, aby napastnik przechwycił pożądane informacje.

Informacje przeglądane lub pobierane przez przeglądarkę są przechwytywane przez cookies, słynne — i niesławne — niewidoczne komunikaty, przesyłane do przeglądarki przez serwer internetowy. Przeglądarka przechowuje zwykle te komunikaty w pliku cookie.txt. Cookies są stale przesyłane w trakcie procesu komunikacji HTTP. Przeglądarka zwykle przechowuje cookies aż do następnego odwiedzenia danej strony.

Nie wszystkie cookies są szkodliwe, ale część z nich tak. Początkowo cookies miały być przydatne dla internautów; utworzono je w celu identyfikacji preferencji użytkownika przed wygenerowaniem dynamicznej strony internetowej dla tej osoby. Często napotykamy witryny wyglądające tak, jakby „oczekiwały” na nas (zobacz rysunek 1.48). Jest to możliwe właśnie dzięki cookies. Wadą tego procesu (wykorzystaną przez hakerów) jest fakt, iż niektóre sieci i intranety zostały zaprojektowane tak, aby odróżniać adresy IP i nazwy hostów. Co więcej, czas życia cookies różni się, a niektóre z nich o nazwie „nieśmiertelnych cookies” istnieją na dysku przez długi czas, będąc dostępnymi dla hakerów.

Rysunek 1.48.

Dynamiczne witryny internetowe „pamiętają” swoich użytkowników dzięki cookies

0x01 graphic

Java i JavaScript działają podobnie jak cookies pod względem technik gromadzenia informacji. Jak na pewno wiesz, przeglądarka jest po prostu kompilatorem kodu programów, który odczytuje strony internetowe, zaprojektowane w takich językach, jak ASP, HTTP, VBScript, Java i innych. Przeglądarka kompiluje następnie kod w celu utworzenia informacji widocznej w oknie programu. Można więc powiedzieć, iż podobnie jak cookies, kod Java w Internecie może być użyty przeciwko Tobie.

Przy użyciu cookies i Javy zdalni napastnicy mogą potencjalnie uzyskać następujące dane:

Możesz w to wierzyć albo nie, ale to wystarczająco dużo informacji, aby rozpocząć wiele rodzajów ataków na Twój system. Oto prosty przykład.

  1. Projektuję stronę internetową z dowcipami, znajdującą się na wielu darmowych serwerach, dostępnych w sieci.

  1. Reklamuję tę stronę przy użyciu popularnych wyszukiwarek, serwerów list i tablic ogłoszeń.

  2. Użytkownik szuka dobrego dowcipu, który mógłby przesłać do swoich znajomych i rodziny, przez co trafia na moją stronę. W tym momencie odkrywam część przedstawionych powyżej informacji, na przykład dane o zainstalowanych wtyczkach.

  3. Użytkownik otrzymuje przyjazną wiadomość e-mailową, informującą go o pojawieniu się ważnych aktualizacji wtyczek Shockwave Flash lub Real Player. W wiadomości znajduje się odnośnik do strony, z której można za darmo pobrać aktualizację.

  4. Użytkownik pobiera plik zawierający nowszą wersję wtyczki. Nie wie jednak w tym momencie, że znajduje się tam również koń trojański Homer, który umożliwia przejęcie kontroli nad jego komputerem.

Wynik? Zobacz rysunek 1.49.

Rysunek 1.49.

Wpadłeś!

0x01 graphic

Ten typ próby ataku zdarza się co chwila, a użytkownicy często obciążają pomyłkowo prawidłową konfigurację oprogramowania za występujące problemy systemowe, podczas gdy ich systemy zostały zainfekowane przez destrukcyjne demony.

0x01 graphic

Aby sprawdzić, co „oni” już wiedzą o Tobie, zaloguj się na stronie
www.­anonymizer­.com.

Do przeciwdziałania takiemu zagrożeniu anonimowości użytkownika można wykorzystać mechanizmy zabezpieczeń sieci i komputerów osobistych. Większość przeglądarek umożliwia również ustawienie standardowych środków zabezpieczających. Funkcje Microsoft Internet Explorera mogą być zmodyfikowane przez rozwijalne menu Opcje internetowe (zobacz rysunek 1.50).

Rysunek 1.50.

Ustawianie poziomu zabezpieczeń w Internet Explorerze

0x01 graphic

Kolejną prostą metodą zabezpieczania jest aktualizacja przeglądarki internetowej do najnowszej wersji, niezależnie od producenta, gdyż zwykle zawiera ona ulepszone środki bezpieczeństwa przeciwko typowym sposobom włamania. Wszyscy domowi i korporacyjni użytkownicy Internetu powinni zmodyfikować poziom bezpieczeństwa zgodnie z osobistymi lub firmowymi potrzebami. Jak pokazano na rysunku 1.51, wiele przeglądarek pozwala na dopasowanie własnych opcji zabezpieczeń. Dla przykładu, aby w MS Internet Explorerze ustawić poziom zabezpieczeń, z menu Narzędzia wybierz Opcje internetowe, a następnie kliknij zakładkę Zabezpieczenia. Teraz kliknij strefę, w której chcesz zmodyfikować poziom zabezpieczeń. Przesuń suwak w górę, aby ustawić wyższy standard zabezpieczeń, lub w dół, aby uzyskać niższy standard. Aby własnoręcznie ustawić ustawienia zabezpieczeń dla danej strefy, kliknij przycisk Poziom niestandardowy (Twoja przeglądarka może również pozwalać na konfigurację „zaufanych” i „niezaufanych” witryn, dzięki czemu uzyskuje się większą kontrolę nad przeglądanymi stronami).

Żal mi to mówić, ale cookies najbezpieczniej wyłączyć w ogóle; podobne środki bezpieczeństwa należy zastosować w stosunku do kodu Java, spotykanego na stronach WWW. „Porządne” witryny zwykle zawierają odnośnik pozwalający na ręczne zalogowanie się w przypadku przeglądarek nieobsługujących cookies (czyli tych, które „nie biorą cukierków od obcych”). Również konfiguracja restrykcyjnych ograniczeń Javy w czasie sesji może zmusić witryny korzystające z niej do wyświetlenia prośby o zgodę na użycie tego języka. Zajmie to zwykle kilka sekund i nie wymaga restartu komputera.

Rysunek 1.51.

Dopasowanie funkcji zabezpieczeń w MS Internet Explorerze

0x01 graphic

0x01 graphic

W celu uzyskania dodatkowych zabezpieczeń sprawdź wcześniej wymieniony program TigerSurf, omówiony w załączniku A i dołączony do tej książki na CD-ROM-ie.

Skanowanie zakresu adresów IP

Jeśli przeczytałeś pierwszy tom tej książki, już wiesz, iż skanowanie zakresu adresów IP jest jednym z pierwszych kroków wykonywanych w czasie zdalnego badania celu. Działanie skanerów IP polega na przeczesywaniu całego zakresu adresów IP i zgłaszaniu węzłów, które są aktywne lub odpowiadają na żądania echa PING lub ICMP. Takie aktywne, zalogowane i opisane węzły stają się częścią składową schematów sieci docelowej. Kolejnym krokiem jest wtedy wykorzystanie technik badania niezabezpieczonych portów.

Blokując lub filtrując skanowanie zakresu adresów IP, zniechęcamy wielu agresorów do wykorzystania bardziej zaawansowanych technik badań potencjalnie zagrożonych systemów. Wprowadzenie tych technik zabezpieczeń musi być jednak wykonane ostrożnie, ponieważ niektóre systemy mogą wymagać użycia usługi „ping” ze względu na wykorzystanie programów do lokalnego zarządzania i monitorowania, które aktywnie wysyłają żądania. W takiej sytuacji alternatywą może być pozwolenie na wysyłanie odpowiedzi do autoryzowanych adresów przy całkowitym zablokowaniu usługi dla pozostałych hostów.

Najbardziej efektywną ochronę przed skanowaniem zakresu adresów IP można uzyskać przy użyciu frontowych bramek zabezpieczeń, takich jak routery, firewalle i zaawansowane proxy. W trakcie podejmowania decyzji powinieneś zajrzeć do podręcznika obsługi i opisu poleceń bramki, a także skonsultować rozwiązania ze swoim dostawcą usług internetowych.

Pozostała część tego rozdziału jest poświęcona opisowi typowych przykładów ogólnego filtrowania przy użyciu konkretnych bramek.

Router 3Com

Aby skonfigurować filtry dla routera IP, wykonaj poniższe czynności.

  1. Ustaw zasady filtrowania przy użyciu:

ADD -IP FilterAddrs <adres1> [<katalog>] <adres2> [<działanie>
* [<protokół> [<ID_filtra>]]]<działanie> = {PROTocolRsrv=<znacznik>}|

Discard | DODdiscard | Forward | {QPriority = H | M | L} X25Profile

= <profil>} <protokół> = DLSW | FTP | IP | IPDATA | ICMP | SMTP |

TCP | TELNET | UDP

  1. W razie potrzeby utwórz filtr lub filtry przy użyciu:

ADD !<ID_filtra> -IP FIlters <warunek> [,<warunek...] <warunek>

= <%offset>:[<operator>]<%wzorzec>

  1. Ustaw parametr FilterDefAction przy użyciu:

SETDefault -IP FilterDefAction = [Forward | Discard]

  1. Włącz filtrowanie pakietów, wprowadzając:

SETDefault -IP CONTrol = Filtering

Cabletron/Enterasys

Aby zabezpieczyć procesor przed nadmiernym ruchem, wykonaj poniższe czynności.

  1. Zainstaluj poniższe lub podobne listy kontroli dostępu (ACL):

ssr(config)# ac1 hackstop deny tcp any x.x.x.x/32 any >1024

ssr(config)# ac1 hackstop deny udp any x.x.x.x/32 any >1024

ssr(config)# ac1 hackstop permit ip any any any any

  1. Zastosuj powyższe listy ACL dla interfejsu, portu lub vLAN-u. Poniższy przykład przedstawia sposób zastosowania listy ACL dla interfejsu o nazwie ip-Inter:

ssr(config)# ac1 hackstop apply interface ip-Inter input

Checkpoint FireWall-1

Aby uniemożliwić przechodzenie ICMP przez firewall, wykonaj poniższe czynności.

  1. Otwórz Security Policy Editor.

  1. Otwórz menu Policy i wybierz Properties.

  2. Upewnij się, czy opcja Accept ICMP jest wyłączona.

Router Cisco

Pokazana poniżej przykładowa konfiguracja odnosi się do głównego routera internetowego, przedstawionego na rysunku 1.52.

Rysunek 1.52.

Scenariusz konfiguracji routera Cisco

0x01 graphic

! Opcja 1: Użycie puli NAT

no ip name-server

no proxy arp

!

ip subnet-zero

no ip domain-lookup

ip routing

!

! Kontrola dostępu w oparciu o kontekst

!

no ip inspect audit-trail

ip inspect tcp synwait-time 30

ip inspect tcp finwait-time 5

ip inspect tcp idle-time 3600

ip inspect udp idle-time 30

ip inspect dns-timeout 5

ip inspect one-minute low 900

ip inspect one-minute high 1100

ip inspect max-incomplete low 900

ip inspect max-incomplete high 1100

ip inspect tcp max-incomplete host 50 block-time 0

!

! IP inspect Ethernet_0_0

!

no ip inspect name Ethernet_0_0

ip inspect name Ethernet_0_0 tcp

ip inspect name Ethernet_0_0 udp

ip inspect name Ethernet_0_0 cuseeme

ip inspect name Ethernet_0_0 ftp

ip inspect name Ethernet_0_0 h323

ip inspect name Ethernet_0_0 rcmd

ip inspect name Ethernet_0_0 realaudio

ip inspect name Ethernet_0_0 smtp

ip inspect name Ethernet_0_0 streamworks

ip inspect name Ethernet_0_0 vdolive

ip inspect name Ethernet_0_0 sqlnet

ip inspect name Ethernet_0_0 tftp

!

interface Ethernet 0/0

no shutdown

description connected to EthernetLAN

ip address 172.29.44.1 255.255.0.0

ip nat inside

ip inspect Ethernet_0_0 in

ip access-group 100 in

keepalive 10

!

interface Ethernet 0/1

no description

no ip address

ip nat inside

shutdown

!

interface Serial 0/0

no shutdown

description connected to Internet

service-module t1 clock source line

service-module t1 data-coding normal

service-module t1 remote-loopback full

service-module t1 framing esf

service-module t1 linecode b8zs

service-module t1 lbo none

service-module t1 remote-alarm-enable

ip address 206.0.139.70 255.255.255.128

ip nat outside

ip access-group 101 in

encapsulation hdlc

!

!Lista kontroli dostępu ACL 1

!

no access-list 1

access-list 1 permit 172.29.0.0 0.0.255.255

access-list 1 permit 172.20.44.0 0.0.0.3

access-list 1 permit 172.18.0.0 0.0.255.255

!

!Lista kontroli dostępu ACL 100

!

no access-list 100

access-list 100 permit ip any any

!

!Lista kontroli dostępu ACL 101

!

no access-list 101

access-list 101 deny ip any any

!

! Statyczny NAT (Serwer pocztowy)

!

ip nat inside source static 172.20.44.2 206.0.139.72

!

! Dynamiczny NAT

!

ip nat translation timeout 86400

ip nat translation tcp-timeout 86400

ip nat translation udp-timeout 300

ip nat translation dns-timeout 60

ip nat translation finrst-timeout 60

ip nat pool Cisco2611-natpool-40 172.29.44.10 172.29.44.250 netmask 255.255.255.0

ip nat inside source list 1 pool Cisco2611-natpool-40 overload

!

router rip

version 2

network 172.29.0.0

passive-interface Serial 0/0

no auto-summary

!

!

ip classless

!

! Trasy statycznych adresów IP

ip route 0.0.0.0 0.0.0.0 Serial 0/0

no ip http server

snmp-server community xyzincnet1 RO

! Opcja 2: Użycie interfejsu WAN do dynamicznej translacji źródła

no ip name-server

!

ip subnet-zero

no ip domain-lookup

no proxy arp

ip routing

!

! Kontrola dostępu w oparciu o kontekst

!

no ip inspect audit-trail

ip inspect tcp synwait-time 30

ip inspect tcp finwait-time 5

ip inspect tcp idle-time 3600

ip inspect udp idle-time 30

ip inspect dns-timeout 5

ip inspect one-minute low 900

ip inspect one-minute high 1100

ip inspect max-incomplete low 900

ip inspect max-incomplete high 1100

ip inspect tcp max-incomplete host 50 block-time 0

!

! IP inspect Ethernet_0_0

!

no ip inspect name Ethernet_0_0

ip inspect name Ethernet_0_0 ftp

ip inspect name Ethernet_0_0 http java-list 99

ip inspect name Ethernet_0_0 tcp

ip inspect name Ethernet_0_0 realaudio

ip inspect name Ethernet_0_0 smtp

ip inspect name Ethernet_0_0 udp

!

interface Ethernet 0/0

no shutdown

description connected to EthernetLAN

ip address 172.29.44.1 255.255.0.0

ip nat inside

ip inspect Ethernet_0_0 in

ip access-group 100 in

keepalive 10

!

interface Ethernet 0/1

no description

no ip address

ip nat inside

shutdown

!

interface Serial 0/0

no shutdown

description connected to Internet

service-module t1 clock source line

service-module t1 data-coding normal

service-module t1 remote-loopback full

service-module t1 framing esf

service-module t1 linecode b8zs

service-module t1 lbo none

service-module t1 remote-alarm-enable

ip address 206.0.139.70 255.255.255.128

ip nat outside

ip access-group 101 in

encapsulation hdlc

!

!Lista kontroli dostępu ACL 1

!

no access-list 1

access-list 1 permit 172.29.0.0 0.0.255.255

access-list 1 permit 172.20.44.0 0.0.0.3

access-list 1 permit 172.18.0.0 0.0.255.255

!

!Lista kontroli dostępu ACL 99

!

no access-list 99

access-list 99 deny any

!

!Lista kontroli dostępu ACL 100

!

no access-list 100

access-list 100 permit udp any eq rip any eq rip

access-list 100 permit tcp any any range 20 21

access-list 100 permit tcp any any eq 80

access-list 100 permit tcp any any eq 144

access-list 100 permit tcp any any eq 7070

access-list 100 permit tcp any any eq 25

access-list 100 permit udp any any eq domain

!

!Lista kontroli dostępu ACL 101

!

no access-list 101

access-list 101 deny ip any any

!

! Dynamiczny NAT

!

ip nat translation timeout 86400

ip nat translation tcp-timeout 86400

ip nat translation udp-timeout 300

ip nat translation dns-timeout 60

ip nat translation finrst-timeout 60

ip nat inside source list 1 interface Serial 0/0 overload

!

router rip

version 2

network 172.29.0.0

passive-interface Serial 0/0

no auto-summary

!

!

ip classless

!

! Trasy statycznych adresów IP

ip route 0.0.0.0 0.0.0.0 Serial 0/0

no ip http server

snmp-server community xyzincnet1 RO

Firewall Cisco PIX

Kolejna przykładowa konfiguracja odnosi się do firewalla PIX, który został dodany na zewnątrz korporacyjnej sieci LAN i wewnątrz głównego routera internetowego (zobacz rysunek 1.52).

ip address outside 206.1.139.1

ip address inside 172.29.44.1

global 1 206.1.139.10-206.1.139.250

nat 1 172.0.0.0

mailhost 206.0.139.72 172.20.44.2

Router Intel Express

W przypadku routera Intel Express filtry IP są definiowane dla poszczególnych łączy, oddzielnie dla transmisji i odbioru. Aby zabezpieczyć sieć LAN przed nieautoryzowanym dostępem, wykonaj poniższe czynności.

  1. Na ekranie Advanved ustaw dla łącza IP parametr Filtering na Enabled.

  1. Na ekranie Advanved wybierz dla łącza IP Rx Filters, aby zdefiniować filtry odbioru. Takie filtry przekazują lub odrzucają przychodzący ruch z łącza.

  2. Ustaw Default Action na Discard, aby odrzucić wszystkie dane z tego łącza, które nie mogą być przepuszczone przez konkretne filtry, lub ustaw Pass, aby przepuścić wszystkie pakiety z wyjątkiem tych, które zostaną odrzucone przez konkretne filtry.

  3. Ustaw parametr Logging na Enabled, aby przetestować działanie filtrów (normalnie ten parametr jest ustawiony na Disabled w celu minimalizacji nakładów na zewnętrzną obróbkę). Po włączeniu w dzienniku System Log routera będą zapisywane szczegóły wszystkich pakietów, które zostały odrzucone przez domyślne działanie filtrów.

  4. Dodaj i skonfiguruj filtry IP wymagane przez Twoją instalację. Użyj Add, aby dołączyć nowy filtr po zaznaczonym filtrze, Insert, aby dodać nowy filtr przed zaznaczonym filtrem, lub Setup w celu edycji zaznaczonego filtru.

Proszę zauważyć, iż kolejność definiowania filtrów ma znaczenie. Pierwszy odnoszący się do pakietu filtr na liście spowoduje jego odfiltrowanie.

Firewall NetScreen

Przykładowa konfiguracja przedstawiona na rysunku 1.53 odnosi się do firewalla NetScreen, który został dodany na zewnątrz korporacyjnej sieci LAN i wewnątrz głównego routera internetowego (zobacz rysunek 1.52).

Rysunek 1.53.

Scenariusz konfiguracji firewalla NetScreen

0x01 graphic

Inżynieria społeczna

W opinii publicznej hakerzy działają w ukryciu, przeprowadzając zdalną penetrację systemów komputerowych w środku nocy lub atakując z użyciem siły. Od pewnego czasu już tak się nie dzieje. Chociaż wiele technik hakerskich nie zmieniło się przez lata, do typowych strategii dołączyła inżynieria społeczna, często używana jako główny środek ataku. Inżynieria społeczna to metoda zmuszenia legalnego użytkownika atakowanej sieci do wyjawienia najważniejszych informacji, takich jak nazwa logowania i hasło. Taki proces odegrał główną rolę w wielu, dobrze znanych publicznie, atakach hakerskich. Niesławny haker Kevin Mitnick ujawnił, iż sprytna taktyka inżynierii społecznej leżała u podstaw jego wielu skutecznych penetracji, włączając w to głośny atak na Sun Microsystems w latach 80. (Firma Sun Microsystems twierdziła, iż prawdopodobnie skradziony przez Mitnicka kod źródłowy był warty około 80 milionów dolarów). Również wiele uwieńczonych powodzeniem ataków, które zostały przedstawione w pierwszym tomie tej książki, opierało się o proste techniki inżynierii społecznej.

Nie ma żadnej wątpliwości, iż obecnie wszyscy użytkownicy powinni zdawać sobie sprawę z typowych taktyk inżynierii społecznej, które są powszechnie używane. Obejmuje to na przykład podszywanie się pod nowego użytkownika lub pracownika technicznego. Pewnym minimum powinno być nauczenie pracowników przestrzegania ogólnej zasady nieujawniania nikomu swojego hasła pod żadnym pozorem, chyba iż mają pewność, że rozmawiają z zaufaną osobą. Dla przykładu, udając nowego użytkownika, napastnik może zadzwonić pod główny numer telefonu firmy będącej celem ataku, a następnie poprosić o przełączenie do działu informatyki lub grupy wsparcia technicznego. Po nawiązaniu rozmowy z osobą tam pracującą haker może poinformować, iż jest nowym pracownikiem tymczasowym, któremu nakazano skontaktowanie się właśnie z tym działem w celu przydzielenia tymczasowej nazwy użytkownika i hasła. Dodatkowe badanie może jeszcze bardziej ułatwić ten proces, gdyż haker może na przykład sprawdzić nazwisko dyrektora ds. marketingu, a następnie poinformować administratora „Dzień dobry, nazywam się Jan Kowalski. Jestem nowym pracownikiem tymczasowym Roberta Nowaka (dyrektora działu marketingu), który powiedział mi, iż mam zadzwonić do pana w celu uzyskania tymczasowego hasła i nazwy użytkownika”.

Udając z kolei pracownika działu technicznego, napastnik może poprosić o połączenie z kimś z działu sprzedaży, komu następnie powie, iż Andrzej Malinowski, dyrektor działu IT, nakazał mu skontaktowanie się ze wszystkimi użytkownikami danego działu w celu weryfikacji informacji potrzebnych do zalogowania, ponieważ nowy serwer ma zastąpić stary. Użytkowników należy również nauczyć, iż nie należy wyrzucać żadnych informacji, które mogą stanowić jakąś wartość dla hakerów. Mogą to być listy kontaktowe, schematy organizacyjne, podręczniki, dyskietki, taśmy archiwizacyjne, dyski twarde, a także ważne dane różnego rodzaju. Wszystkie nośniki magnetyczne powinny być wykasowane, a niepotrzebne papiery muszą być pocięte w niszczarkach dokumentów. Należy pamiętać również o zamykaniu pomieszczeń z okablowaniem oraz centrów danych. Wszystkie urządzenia firmowe powinny być inwentaryzowane i sprawdzane regularnie. Gościom zawsze muszą towarzyszyć pracownicy firmy, którzy z kolei powinni nosić w biurze karty identyfikacyjne.

W czasie swojego przemówienia na konferencji Access All Areas w 1997 roku Harl powiedział, iż w sprawie zapobiegania atakom przez inżynierię społeczną, pierwszym krokiem powinno być uczynienie bezpieczeństwa komputerów częścią zadań każdego pracownika, niezależnie od tego, czy używają oni komputerów. Podobnie jak w życiu, edukacja jest najlepszą metodą zapobiegania atakom hakerów przy użyciu inżynierii społecznej. Należy wyjaśnić pracownikom znaczenie bezpieczeństwa komputerów, a następnie przedstawić im szczegóły dotyczące sposobów, używanych przez hakerów do manipulacji ludźmi w celu uzyskania informacji. Menedżerowie powinni poznać typy osobowości, które łatwiej przekonać do ujawnienia danych osobie z zewnątrz, a następnie poświęcić im więcej czasu na edukację. Podsumowując, najlepszą obroną jest atak — wszyscy pracownicy firmy powinny znać i zaangażować się w politykę bezpieczeństwa. Niewielkim wysiłkiem można uzyskać znaczne zmniejszenie ryzyka.

160 Hack Wars. Tom 2. Na tropie hakerów

Rozdział 1. Zabezpieczanie portów i usług 137

160 C:\Biezace\Hack Wars\hack wars 2\9 makieta\01c.doc

C:\Biezace\Hack Wars\hack wars 2\9 makieta\01c.doc 137

C:\Biezace\Hack Wars\hack wars 2\9 makieta\01c.doc 137



Wyszukiwarka

Podobne podstrony:
MI Polaczenia 01c
01c bibliografieid 3300
Geografia ekonomiczna, geoeko5 01c
FIG 01C
01c Noże Tokarskie obwiedniowe
31 01c
FIG-01C, Elektrotechnika, PODSTAWY ELEKTROTECHNIKI, wyklad
01c bibliografie
01c Kapcie szydełkiem
01c 2005 01 II 5 ProbaPoznan
01C, wykład -sprzęt komputerowy
36 01c
Ćw 01c Przepisy BHP
MI Polaczenia 01c
01c bibliografieid 3300
Geografia ekonomiczna, geoeko5 01c
91942 01c
01c Noże Tokarskie obwiedniowe

więcej podobnych podstron