Мережеві сканери та аналізатори

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Кубанський державний технологічний університет

Кафедра захисту інформації

Курсова робота

З дисципліни:

мови програмування

На тему:

Мережеві сканери та аналізатори

Краснодар 2008

ВСТУП

Даний курсовий проект є оглядовою статтею про передачу інформації в локальних мережах і методах її відстеження (знаходження). Зібраний мною матеріал призначений для досвідчених користувачів, що працюють з локальними мережами, зокрема - для мережевих адміністраторів.

Сканування

Мета сканування - виявити відкриті "вікна" і "дверей". У попередньо зібраної інформації містяться відомості про адреси підмереж і окремих комп'ютерів, отриманих за допомогою запитів whois і перенесення зони.

Інформація, зібрана на цьому етапі, дуже цінна для зломщика, оскільки містить такі дані, як імена та прізвища співробітників, номери телефонів, діапазони IP-адрес, адреси DNS-серверів і поштових серверів. Тепер можна приступати до виявлення тих комп'ютерів, які підключені до мережі і досяжні з Internet. Для цього будуть використовуватися різноманітні засоби і прийоми, такі як ping-прослуховування, сканування портів і різні методи, що дозволяють автоматизувати виконання цих завдань.

Необхідно зазначити, що факт наявності IP-адреси в перенесеної зоні ще не означає, що до відповідного вузла можна отримати доступ через Internet. Необхідно перевірити кожен конкретний комп'ютер окремо і з'ясувати, чи підключений він до Internet і чи є на ньому порти, що знаходяться в стані очікування запитів. Нам доводилося зустрічати чимало неправильно налаштованих DNS-серверів, які надавали всім бажаючим адреси обслуговуваних ними приватних мереж (наприклад, 10.10.10.0). Оскільки такі адреси не маршрутизуються по Internet, ви даремно будете витрачати час, намагаючись зв'язатися з ними. Більш детальна інформація про те, які адреси є маршрутизуються, наведена в RFC 1918 (http://www.ietf.org/rfc/rfcl918.txt).

Тепер давайте перейдемо до другого етапу збору інформації - скануванню.

Прослуховування мережі за допомогою утиліти ping

Одним з основних етапів у визначенні структури мережі є її автоматизоване прослуховування за допомогою утиліти ping за діапазоном IP-адрес або адресами підмереж. Мета такого прослуховування - визначити, чи є в окремих комп'ютерів підключення до Internet. Утиліта ping відправляє пакети ICMP ECHO (тип 8) вказаною комп'ютера і очікує пакету ICMP ECHO_REPLY (тип 0). Отримання такої відповіді говорить про те, що комп'ютер в даний момент підключений до Internet. Хоча при деякій наполегливості за допомогою утиліти ping можна визначити кількість постійно підключених до Internet комп'ютерів в невеликому і навіть середньої мережі, ручний перебір мережевих адрес буде малоефективний, якщо необхідно обстежити корпоративну мережу великої організації.

Для виконання ping-прослуховування можна скористатися будь-яким з. G ® *- »численних засобів, розроблених як для системи UNIX, так і для i-""""" Windows NT. У світі UNIX одним із самих надійних і перевірених методів такого прослуховування є використання утиліти fping (http:/packetstorm security.com / Exploit_Code_Archive / fping.tar.gz). На відміну від інших подібних утиліт, які перед переході до тестування наступного комп'ютера очікують відповіді на раніше посланий запит, утиліта fping розсилає всі запити одночасно, а потім чекає відповіді відразу від всіх вузлів. Саме тому утиліта fping забезпечує набагато вищу швидкість прослуховування великого діапазону IP-адрес, ніж звичайна утиліта ping. Утиліта fping була написана спеціально для використання в сценаріях оболонок спільно з утилітою gping (http://www. hacking-exposed.com/tools/tools.html), яка входить в пакет, розповсюджуваний разом з fping. Утиліта gping генерує список IP-адрес, переданих на вхід fping для прослуховування. Лістинг використання утиліти gping для мереж класу А, В або З може здатися трохи незрозумілим, тому розглянемо його докладніше.

[Tsunami] '$ gping

usage: gping aO aN bO bN cO cN dO dN

gping a bO bN cO cN dO dN

gping ab cO cN dO dN

gping ab з dO dN

gping abcd

Як параметри утиліті gping необхідно передати діапазон IP-адрес. На підставі цього діапазону буде генеруватися лістинг, в якому адреси перебираються один за одним. Кожен октет переданого IP-адреси повинен відокремлюватися від інших пробілами. Наприклад, якщо ми збираємося генерувати IP-адреси для мережі класу С, нам необхідно просто додати 254 в якості останнього параметра. Це дозволить утиліті перебрати всі адреси від 192.168.1.1 до 192.168.1.254. Припустимо, що ця мережа не містить підмереж і використовує маску підмережі 255.255.255.0. Крім того, ми не будемо перевіряти адресу самої мережі 192.168.1.0 і адресу широкомовлення 192.168.1.255. Слід уникати застосування утиліти ping до адресами широкомовлення, оскільки це може призвести до відмови, або так званого станом DoS (denial of service), якщо відповідний пакет одночасно буде згенерований многіміузламі (більш детальна інформація про те, як встановити маску підмережі вузла, наведена в документації за запитами ICMP). З використанням утиліти gping можна згенерувати перелік адрес, які потім будуть використовуватися утилітою fping.

[Tsunami] gping 192 168 1 1 254

192.168.1.1

192.168.1.2

192.168.1.3

192.168.1.4

192.168.1.5

192.168.1.251

192.168.1.252

192.168.1.253

192.168.1.254

Тепер у нашому розпорядженні є список всіх вузлів, які можуть перебувати у досліджуваній мережі класу С. Залишилося лише перенаправити висновок утиліти gping на вхід утиліти fping, яка виконає прослуховування мережі і визначить, які комп'ютери в даний момент підключені до мережі.

[Tsunami]? gping 192 168 1 1 254 | fping-a

192.168.1.254 is alive

192.168.1.227 is alive

192.168.1.224 is alive

192.168.1.3 is alive

192.168.1.2 is alive

192.168.1.1 is alive

192.168.1.190 is alive

Параметр-а утиліти fping призначений для включення режиму, в якому виводиться інформація про всі активних в даний момент комп'ютерах мережі. Якщо потрібно, утиліта може виводити та інформацію про імена вузлів. Цей режим включається за допомогою параметра-d. На нашу думку, параметр-а краще всього використовувати в сценаріях оболонки, а параметр-d - при дослідженні мережі на предмет пошуку певних вузлів. Серед інших параметрів необхідно згадати-f, який дозволяє вводити адреси з заздалегідь підготовленого файлу, а також-h, за допомогою якого можна отримати перелік всіх параметрів утиліти та режимів їх використання. Ще однією утилітою, про яку ми будемо багато говорити в цій книзі, є утиліта nmap, створена хакером на ім'я Федір (Fyodor) (www.insecure.org / nmap). Більш докладно ця утиліта буде розглядатися нижче в цій главі, проте буде незайвим згадати, що, крім всіх інших можливостей, дана утиліта також дозволяє виконати прослуховування мережі. Для включення відповідного режиму необхідно вказати параметр-SP.

[Tsunami] nmap-sP 192.168.1.0/24

Starting nmap V. 2.53 by fyodor@insecure.org

(Www.insecure.org/nmap/)

Host (192.168.1.0) seems to be a subnet broadcast

address (returned 3 extra pings).

Host (192.168.1.1) appears to be up.

Host (192.168.1.10) appears to be up.

Host (192.168.1.11) appears to be up.

Host (192.168.1.15) appears to be up.

Host (192.168.1.20) appears to be up.

Host (192.168.1.50) appears to be up.

Host (192.168.1.101) appears to be up.

Host (192.168.1.102) appears to be up.

Host (192.168.1.255) seems to be a subnet broadcast

address (returned 3 extra pings).

Nmap run completed - 256

IP addresses (10 hosts up) scanned in 21 seconds

Що стосується прихильників Windows, вони також не залишилися без уваги. Зокрема, є така безкоштовна утиліта, як Finger (рис. 1.1), написана хакерами з групи Rhino9 (http://www.nmrc.org/files/snt/). Ця утиліта є однією з найбільш швидких у своєму класі. Як і fping, утиліта Finger одночасно розсилає кілька ICMP-пакетів ECHO, а потім очікує надходження відповідей. Крім того, Finger дозволяє також отримувати імена вузлів і зберігати результати своєї роботи у файлі. Такий же швидкістю, як і Finger, має комерційний продукт Ping Sweep, пропонований компанією SolarWinds (www.solarwinds.net). Вражаюча швидкість роботи Ping Sweep пояснюється тим, що дана програма дозволяє встановлювати час затримки між переданими пакетами (delay time). Встановивши це значення рівним 0 або 1, можна просканувати всю мережу класу С і отримати імена її вузлів менш ніж за 7 секунд. Однак при використанні цих коштів дотримуйтеся обережності, оскільки в цьому випадку можна значно знизити пропускну здатність якого-небудь низької каналу, наприклад каналу ISDN з пропускною здатністю 128 Кбіт / с або Frame Relay (не кажучи вже про супутникове або інфрачервоному каналі).

Серед інших утиліт Windows, призначених для прослуховування мережі, можна відзначити WS_Ping ProPack (www.ipswitch.com) і Netscan Tools (www.nwpsw.com). Хоча можливостей цих утиліт цілком достатньо для прослуховування невеликих мереж, вони значно повільніше Finger і Ping Sweep. Крім того, не забувайте, що утиліти з графічним інтерфейсом, незважаючи на зручність їх використання, позбавляють вас можливості їх застосування в сценаріях і автоматизованих процедурах.

Можливо, ви хочете запитати, як чинити, якщо досліджуваний вузол блокує повідомлення ICMP? Хороше питання. Такий підхід часто застосовується на тих вузлах, адміністратори яких піклуються про безпеку. Однак, незважаючи на блокування пакетів ICMP, існують додаткові засоби і методи, що дозволяють визначити, чи підключений такий вузол до мережі чи ні. Разом з тим необхідно відзначити, що всі ці засоби виявляються не такими точними і ефективними, як звичайні утиліти сімейства ping.

У тих випадках, коли обмін даними по протоколу ICMP заблокований, в першу чергу застосовується метод сканування портів (port scanning), який більш детально розглядається нижче в цьому розділі. Просканувавши стандартні порти кожного потенційного IP-адреси мережі, можна визначити, які вузли підключені до мережі. Якщо порт відкритий (opened mode) або знаходиться в режимі очікування (listening mode), значить, за даною адресою знаходиться підключений до Internet вузол мережі. Недоліками цього методу є великі часові витрати і деяка невизначеність результату (якщо за якоюсь адресою не вдалося виявити жодного порту, то це ще не означає, що відповідний вузол не підключений до Internet). Однією з утиліт, які можна використовувати для сканування портів, є nmap. Як вже згадувалося, за допомогою цієї утиліти можна проводити ICMP-прослуховування, однак цим перелік її можливостей далеко не вичерпується. Зокрема, ця утиліта дозволяє виконувати так зване TCP-прослуховування скануванням (TCP ping scan). Даний режим включається за допомогою параметра-рт і вказівки номера порту, наприклад 80. Вибір порту з номером 80 зумовлена ​​тим, що в переважній більшості випадків саме він використовується вузлами мережі для обміну даними через прикордонні маршрутизатори або брандмауери з комп'ютерами, розташованими в так званої демілітаризованій зоні (DMZ - demilitarized zone). При використанні зазначеного параметра утиліта розсилає версій сайту досліджуваної мережі пакети АСК, а потім очікує надходження пакетів RST, що свідчить про те, що вузол підключений до Internet.

[Tsunami] nmap-sP-PT80 192.168.1.0/24

TCP probe port is 80

Starting nmap V. 2.53

Host (192.168.1.0) appears to be up.

Host (192.168.1.1) appears to be up.

Host shadow (192.168.1.10) appears to be up.

Host (192.168.1.11) appears to be up.

Host (192.168.1.15) appears to be up.

Host (192.168.1.20) appears to be up.

Host (192.168.1.50) appears to be up.

Host (192.168.1.101) appears to be up.

Host (192.168.1.102) appears to be up.

Host (192.168.1.255) appears to be up.

Nmap run completed (10 hosts up) scanned in 5 seconds

Як видно з наведеного вище лістингу, цей метод визначення підключених до Internet вузлів дуже ефективний, навіть якщо на них блокується передача пакетів ICMP. За допомогою утиліти nmap має сенс провести кілька подібних перевірок, тестуючи такі стандартні порти як SMTP (25), POP (110), AUTH (110), IMАР (143) або інші порти, які, за вашими даними, можуть бути унікальними на якому -якому комп'ютері досліджуваної мережі.

Ще однією утилітою, спеціально призначеної для TCP-прослуховування, є утиліта hping (http://www.kyuzz.org/antirez/). По можливостях вона навіть перевершує утиліту nmap. Утиліта hping дозволяє користувачам управляти параметрами протоколу TCP, що може забезпечити проникнення відправляються пакетів навіть через деякі пристрої управління доступом. Так, встановивши порт призначення за допомогою параметра-р, можна обійти деякі пристрої управління доступом точно так само, як це було зроблено з застосуванням утиліти traceroute у розділі 1. Тому утиліта hping може з успіхом служити не тільки для TCP-прослуховування, а й долати перешкоди деяких пристроїв управління доступом завдяки можливості фрагментації пакетів.

[Tsunami] hping 192.168.1.2-S-p 80-f

HPING 192.168.1.2 (ethO 192.168.1.2):

S set, 40 data bytes

60 bytes from 192.168.1.2:

flags = SA seq = 0 ttl = 124 id = 17501 win = 0 time = 46.5

60 bytes from 192.168.1.2:

flags = SA seq = l ttl = 124 id = 18013 win = 0 time = 169.1

У деяких випадках прості пристрої керування доступом не можуть коректно обробляти фрагментовані пакети, що дозволяє їм проходити через такі пристрої і досягати цікавить зломщика адреси. Зверніть увагу, що у разі, коли порт відкритий, повертаються прапори TCP SYN (s) і грудень (А). Утиліту hping дуже легко використовувати в сценаріях оболонки з параметром лічильника пакетів-cN, де N - це кількість пакетів, які потрібно відправити в Internet, перш ніж переходити до виконання наступної команди сценарію. Хоча даний метод і не володіє такою швидкістю, як описані вище методи ICMP-прослуховування, в деяких випадках тільки він може допомогти з'ясувати конфігурацію мережі. Більш докладно утиліта hping розглядається в розділі 11, "Брандмауери".

Останнім з засобів прослуховування розглянемо утиліту icmpenum хакером Сімплі номад (Simple Nomad) (http://www.nmrc.org/files/sunix/icmpenum-1.1.tgz). Цю утиліту зручно використовувати для визначення архітектури мережі. Утиліта icmpenum дозволяє швидко виявити підключені до мережі комп'ютери, передаючи стандартні ICMP-пакети ECHO, а також ICMP-запити TIME STAMP REQUEST і INFO. Якщо вхідні пакети ECHO не пропускаються прикордонним маршрутизатором або брандмауером, то підключені вузли можна як і раніше ідентифікувати за допомогою альтернативних пакетів ICMP.

[Shadow] icmpenum-i2 - з 192.168.1.0

192.168.1.1 is up

192.168.1.10 is up

192.168.1.11 is up

192.168.1.15 is up

192,168.1.20 is up

192.168.1.103 is up

У наведеному прикладі мережа класу С (192.168.1.0) була протестована з використанням ICMP-запиту TIME STAMP REQUEST. Однак реальна міць утиліти icmpenum полягає в можливості ідентифікації вузлів за допомогою неправдивих пакетів, що дозволяє уникнути виявлення зловмисника. Це можливо завдяки тому, що утиліта icmpenum дозволяє генерувати помилкові пакети з використанням параметра-s і пасивно чекати відгуку при вказівці параметра-р.

Підводячи підсумок, можна відзначити, що IСМР-або TCP-прослуховування дозволяє точно встановити, які комп'ютери мережі підключені до Internet. Так, у розглянутому прикладі ми встановили, що з 255 потенційних адрес мережі класу С до Internet підключені лише кілька комп'ютерів. Виявлені вузли стають предметом першочергової уваги в подальших дослідженнях. Таким чином, ми значно звузили область пошуку, що дозволяє заощадити час і сили для більш ефективних дій.

Ідентифікація запущених TCP-і UDP-служб

Використання гарною утиліти сканування портів - найважливіший етап збору інформації про досліджувану мережі. Хоча для цих цілей існує багато різних програм, орієнтованих як на платформу UNIX, так і на платформу Windows NT, ми обмежимося розглядом лише найбільш популярних і перевірених часом сканерів.

strobe

Утиліта strobe - це загальновизнаний і популярний TCP-сканер портів, написаний Джуліаном Ассанжем (Julian Assange) (ftp://ftp.FreeBSD.org/pub/ FreeBSD/ports/distfiles/strobe-l.06.tgz). Вона стала відомою вже досить давно і, поза всяким сумнівом, вважається однією з найбільш швидких і надійних утиліт цього класу. До основних можливостей утиліти strobe відноситься оптимізація системних і мережевих ресурсів, а також сканування досліджуваної системи з максимальною ефективністю. Крім високої ефективності, утиліта strobe версії 1.04 і вище може збирати ідентифікаційні маркери (якщо, звичайно, вони є), пов'язані з кожним перевіряється портом. Ця інформація може виявитися корисною при визначенні операційної системи, а також запущених на комп'ютері службах. У даних, що виводяться утилітою strobe, є інформація про кожного прослухане порте TCP.

[Tsunami] strobe 192.168.1.10

strobe 1.03 © 1995 Julian Assange (proff@suburbia.net).

192.168.1.10 echo 7/tcp Echo [95, JBP]

192.168.1.10 discard 9/tcp Discard [94, JBP]

192.168.1.10 sunrpc 111/tcp rpcbind SUN RFC

192.168.1.10 daytime 13/tcp Daytime [93, JBP]

192.168.1.10 chargen 19/tcp ttytst source

192.168.1.10 ftp 21/tcp File Transfer [Control] [96, JBP]

192.168.1.10 exec 512/tcp remote process execution;

192.168.1.10 login. 513/tcp remote login a la telnet;

192.168.1.10 cmd 514/tcp shell like exec, but automatic

192.168.1.10 ssh 22/tcp Secure Shell

192.168.1.10 telnet 23, / tcp Telnet [112, JBP]

192.168.1.10 smtp 25/tcp Simple Mail Transfer [102, JBP]

192.168.1.10 nfs 2049/tcp networked file system

192.168.1.10 lockd 4045/tcp

192.168.1.10 unknown 32772/tcp unassigned

192.168.1.10 unknown 32773/tcp unassigned

192.168.1.10 unknown 32778/tcp unassigned

192.168.1.10 unknown 32799/tcp unassigned

192.168.1.10 unknown 32804 / tcp unassigned

Хоча в більшості випадків утиліта strobe надає точні дані, все ж важливо пам'ятати про деяких її обмеження. По-перше, дана утиліта виконує TCP-сканування, не підтримуючи сканування по протоколу UDP. Тому в деяких випадках можна отримати лише половину необхідної інформації. По-друге, при з'єднанні з кожним портом утиліта strobe виконує лише TCP-сканування підключенням. Хоча саме цим і пояснюється висока надійність отриманих результатів, у той же час використання утиліти strobe дуже легко виявити на досліджуваній системі. Тому необхідно розглянути й інші утиліти сканування, позбавлені зазначених недоліків.

udp_scan

Для UDP-сканування, якого не виконує strobe, можна скористатися утилітою udp_scan, яка спочатку входила в пакет SATAN (Security Administrator Tool for Analyzing Networks), написаний Деном Фармером (Dan Farmer) і Вайетсом Венема (Wietse Venema) у 1995 році. Хоча сам пакет SATAN трохи застарів, що входять до його складу утиліти як і раніше можна використовувати. Крім того, за адресою http://wwdsilx.wwdsi.com можна отримати нову версію пакету SATAN, яка тепер називається SAINT. Незважаючи на наявність безлічі інших утиліт UDP-сканування, ми прийшли до висновку, що udp_scan - одна з самих надійних утиліт, що дозволяє отримувати достовірні результати. Правда, необхідно сказати також про те, що, незважаючи на високу надійність утиліти udp_scan, у неї є й один суттєвий недолік. Ця утиліта не може протистояти контратаці будь-якого з пакетів IDS, який обізнаний про методи, які використовуються в пакеті SATAN для сканування портів. Таким чином, якщо сканування необхідно виконати більш потайки, поішіте яке-небудь інший засіб. Звичайно за допомогою утиліти udp_scan перевіряються порти з номерами, меншими 1024, а також деякі певні порти з великими номерами.

; Tsunami] udp_scan 192.168.1.1 1-1024

-: 2: UNKNOWN: 5 3: UNKNOWN: 123: UNKNOWN: 135: UNKNOWN:

netcat

Ще однією прекрасною утилітою є netcat (або nc), написана Хоббітом (Hobbit, hobbit@avian.org). Ця утиліта може виконувати так багато різних завдань, що була названа нами "швейцарським армійським ножем". Крім інших можливостей, про які ми ще не раз будемо говорити протягом всієї книги, утиліта nc дозволяє застосовувати основні методи TCP-і UDP-сканування. Ступенем деталізації даних, що виводяться можна керувати за допомогою параметрів-v і-vv, які включають, відповідно, режими докладного і дуже докладного відображення результатів. Параметр-z застосовується для включення режиму нульового введення-виведення (zero mode I / O), використовуваного для скануванні портів, а параметр -.. 2 дозволяє задати для кожного з'єднання інтервал очікування. За замовчуванням утиліта пс виконує TCP-сканування, а для UDP-сканування необхідно використовувати параметр-і (як показано у другому прикладі).

tsunami] nc-v-z-w2 192.168.1.1 1-140

192.168.1.1] 139 (?) Open

192.168.1.1] 135 (?) Open

192.168.1.1] 110 (pop-3) open

[192.168.1.1] 106 (?) Open

[192.168.1.1] 81 (?) Open

[192.168.1.1] 80 (http) open

[192.168.1.1] 79 (finger) open

[192.168.1.1] 53 (domain) open

[192.168.1.1] 42 (?) Open

[192.168.1.1] 25 (smtp) open

[192.168.1.1] 21 (ftp) open

[Tsunami] nc-u-v-z-w2 192.168.1.1 1-140

[192.168.1.1] 135 (ntportmap) open

[192.168.1.1] 123 (ntp) open

[192.168.1.1] 53 (domain) open

[192.168.1.1] 42 (name) open

nmap

Розглянувши найпростіші засоби сканування портів, давайте перейдемо до обговорення можливостей безумовного лідера цієї категорії - утиліти nmap. Дана утиліта, розроблена Федором (Fyodor) (http://www.insecure.org/nmap), володіє не тільки базовими можливостями TCP-і UDP-сканування, але і підтримує всі інші згадувані вище методи. Дуже рідко можна знайти утиліту, яка надавала б настільки багатий набір можливостей в одному пакеті. Отже, запустимо утиліту і подивимося, які можливості вона надає.

[Tsunami] # nmap-h

nmap V. 2.53 Використання:

nmap [Тип (и) сканування] [Параметри]

<Список вузлів або підмереж>

Деякі стандартні типи сканування

(При використанні параметрів, зазначених символом '*',

потрібні привілеї root)

-ST TCP-сканування підключенням

(Встановлюється за умовчанням) *-sS TCP-сканування

за допомогою повідомлень SYN (серед всіх методів TCP-сканування є найкращим)

*-SU UDP-сканування

-SP ping-прослуховування

(Виконується пошук всіх досяжних вузлів)

*-SF,-sX,-sN сканування за допомогою повідомлень FIN,

за методом "різдвяної ялинки" і

нуль-сканування,

відповідно (рекомендується використовувати тільки досвідченим користувачам)

-SR/-I Сканування з використанням демона

RPC / identd (застосовується спільно з іншими типами сканування)

Деякі стандартні параметри

(Є необов'язковими, можуть комбінуватися один з одним):

*-О режим вивчення пакетів TCP / IP

з метою визначення типу віддаленої операційної системи

-Р <діапазон> - діапазон портів,

які будуть скануватися.

Приклад діапазону: '1 -1024,1080,6666,31337 '

-F Виконується сканування портів,

перелічених у файлі / etc / services

-V Режим виведення докладної інформації.

Рекомендується завжди використовувати цей параметр.

Для включення режиму виведення дуже

докладної інформації використовуйте параметр-vv

-РВ Відключення перевірки активності вузла за допомогою утиліти ping (застосовується для сканування таких вузлів, як www.microsoft.com і аналогічних)

*-Ddecoy_hostl, decoy2 [,...]

Приховане сканування з зазначенням декількох помилкових адрес вузлів

- Т <Paranoici I Sneaky|Polite|Normal[Aggressive IInsane>

Прийнята політика очікування відгуку від віддаленого вузла

-n/-R Ніколи не виконувати дозвіл імен DNS /

Завжди виконувати [за замовчуванням: імена вирішуються

при необхідності] -oN/-oM <logfile>

Вивести результати сканування у файл <logfile> в

зрозумілому людині / машинному форматі-iL <inputfile>

Взяти IP-адреси або імена вузлів з ​​файлу <inputfiie>.

Для використання стандартного потоку введення stdin вкажіть '-'

*-S <your_IP> /-e <devicename>

дозволяє вказати вихідний IP-адреса або пристрій

- Перехід в інтерактивний режим

(Потім для отримання довідки потрібно натиснути клавішу h)

[Tsunami] nmap-sS 192.168.1.1

Starting nmap V. 2.53 by fyodor@insecure.org

Interesting ports on (192.168.1.11):

(The 1504 ports scanned but

not shown below are in state: closed)

Port State Protocol Service

21 open tcp ftp

25 open tcp smtp

42 open tcp nameserver

53 open tcp domain

79 open tcp finger

80 open tcp http

81 open tcp hosts2-ns

106 open tcp popSpw

110 open tcp pop-3

135 open tcp loc-srv

139 open tcp netbios-ssn

443 open tcp https

Крім вищевказаних, утиліта nmap надає і інші корисні можливості, що заслуговують детального обговорення. Так, у наведеному вище прикладі ми вико-ПОЛЬЗОЕІЛІ параметри командного рядка, при яких здійснювалося сканування одного вузла. Однак утиліта nmap з такою ж легкістю дозволяє сканувати і всю мережу. Як легко помітити, nmap підтримує опису діапазонів адрес в нотації CIDR (Classless Inter-Domain Routing - безкласова маршрутизація доменів Internet), описаної в RFC 1519 (серед всіх методів TCP-сканування є найкращим)

*-SU UDP-сканування

-SP ping-прослуховування (виконується пошук всіх досяжних вузлів)

*-SF,-sX,-sN сканування за допомогою повідомлень FIN,

за методом "різдвяної ялинки" і нуль-сканування, відповідно (рекомендується використовувати тільки досвідченим користувачам)

-SR/-I Сканування з використанням демона RPC / identd (застосовується спільно з іншими типами сканування)

Деякі стандартні параметри (є необов'язковими, можуть комбінуватися один з одним):

*-О режим вивчення пакетів TCP / IP

з метою визначення типу віддаленої операційної системи

-Р <діапазон> - діапазон портів, які будуть скануватися.

Приклад діапазону: '1 -1024,1080,6666,31337 '

-F Виконується сканування портів, перелічених у файлі / etc / services

-V Режим виведення докладної інформації.

Рекомендується завжди використовувати цей параметр.

Для включення режиму виведення дуже докладної інформації використовуйте параметр-vv

-РВ Відключення перевірки активності вузла за допомогою утиліти ping (застосовується для сканування таких вузлів, як www.microsoft.com і аналогічних)

*-Ddecoy_hostl, decoy2 [,...]

Приховане сканування з зазначенням декількох помилкових адрес вузлів

- Т <Paranoici I Sneaky|Polite|Normal[Aggressive IInsane>

Прийнята політика очікування відгуку від віддаленого вузла

-n/-R Ніколи не виконувати дозвіл імен DNS /

Завжди виконувати [за замовчуванням: імена дозволяються при необхідності] -oN/-oM <logfile>

Вивести результати сканування у файл <logfile> у зрозумілому людині / машинному форматі-iL <inputfile>

Взяти IP-адреси або імена вузлів з ​​файлу <inputfiie>.

Для використання стандартного потоку введення stdin вкажіть '-'

*-S <your_IP> /-e <devicename>

дозволяє вказати вихідний IP-адреса або пристрій - перехід в інтерактивний режим (потім для отримання довідки потрібно натиснути клавішу h)

[Tsunami] nmap-sS 192.168.1.1

Starting nmap V. 2.53 by fyodor@insecure.org

Interesting ports on (192.168.1.11):

(The 1504 ports scanned but

not shown below are in state: closed)

Port State Protocol Service

21 open tcp ftp

25 open tcp smtp

42 open tcp nameserver

53 open tcp domain

79 open tcp finger

80 open tcp http

81 open tcp hosts2-ns

106 open tcp popSpw

110 open tcp pop-3

135 open tcp loc-srv

139 open tcp netbios-ssn

443 open tcp https

Крім вищевказаних, утиліта nmap надає і інші корисні можливості, що заслуговують детального обговорення. Так, у наведеному вище прикладі ми використовували параметри командного рядка, при яких здійснювалося сканування одного вузла. Однак утиліта nmap з такою ж легкістю дозволяє сканувати і всю мережу. Як легко помітити, nmap підтримує опису діапазонів адрес в нотації CIDR (Classless Inter-Domain Routing - безкласова маршрутизація доменів Internet), описаної в RFC 1519 (http://www.ietf.org/rfc/rfcl519.txt). У цьому форматі дуже легко задавати діапазони адрес виду 192.168.1.1-192.168.1.254. Отриману інформацію можна зберегти в звичайному текстовому файлі за допомогою параметра-о. При вказівці параметра-oN результати будуть збережені у зрозумілому людині форматі.

[Tsunar.i] # ranap-sF 192.168.1.0/24-oN outfile

Якщо виводяться дані потрібно зберегти у файлі, в якому в якості роздільників використовуються символи табуляції (наприклад, щоб згодом програмно аналізувати отриману інформацію), використовуйте параметр-му. У будь-якому випадку при скануванні мережі, швидше за все, буде отримано дуже багато інформації, тому має сенс зберегти результати в будь-якому з форматів. У деяких випадках доцільно зберігати їх одразу в обох форматах, використовуючи як параметр-ON, так і-оM.

Припустимо, що після збору попередніх даних про мережу організації ми прийшли до висновку, що в якості основного брандмауера в ній використовується простий пристрій, що виконує фільтрацію пакетів. У цьому випадку можна скористатися параметром-f утиліти nmap, щоб включити режим фрагментації пакетів. Очевидно, що це призведе до відділення заголовків TCP-пакетів від самих пакетів, що ускладнить для пристроїв управління доступом або систем IDS можливість виявлення спроби сканування. У більшості випадків сучасні пристрої фільтрації пакетів та брандмауери прикладного рівня, перш ніж здійснювати аналіз пакетів IP, поміщають всі фрагменти в чергу. Однак при використанні більш старих моделей пристроїв управління доступом або пристроїв, в яких відповідні функції були відключені для підвищення продуктивності, дефрагментація не виконується і пакети передаються далі у внутрішню мережу в тому вигляді, в якому вони надходять.

Якщо архітектура системи безпеки досліджуваної мережі та її вузлів була добре продумана, то ця система без особливих зусиль виявить сканування, здійснюване за допомогою наведених вище прикладів. Для таких випадків утиліта nmap надає додаткові можливості маскування, призначені для заповнення системних журналів досліджуваного вузла надлишковою інформацією. Даний режим включається за допомогою параметра-D. Головна ідея даного підходу полягає в тому, щоб під час виконання реального сканування створити видимість одночасного сканування з інших зазначених у командному рядку адрес. Для того щоб перешкодити такому скануванню, системі безпеки досліджуваного вузла доведеться перевірити всі записи, щоб з'ясувати, які з отриманих IP-адрес джерел сканування є реальними, а які - фіктивними. При використанні цього методу потрібно впевнитися в тому, що IP-адреси, які виступають в якості маскувальних, належать реальним вузлам, які в момент сканування підключені до Internet. В іншому випадку досліджувана система буде не в змозі обробити всі повідомлення SYN, в результаті чого виникне умова DoS.

[Tsunami] nmap-sS 192.168.1.1-D 10.1.1.1

www.target_web.com, ME-p25, 139,443

Starting nmap V. 2.53 by fyodor@insecure.org

Interesting ports on (192.168.1.1):

Port State 'Protocol Service

25 open tcp smtp

443 open tcp https

Nmap run completed - 1 IP address (1 host up) scanned in 1 second

У наведеному прикладі параметри, введені в командному рядку утиліти nmap, забезпечують сканування в режимі, що утруднюють виявлення реальної адреси скануючого вузла.

Ще одним корисним методом є сканування з метою ідентифікації запущених процесів (докладніше про нього йдеться в RFC 1413, http://www.ieff.org/rfc/rfcl413.txt). Цей тип сканування, званий ident-скануванням, призначений для визначення користувача шляхом встановлення TCP-з'єднання з портом 113. Дуже часто у відповідь приходить повідомлення, що містить ідентифікатор власника процесу, пов'язаного з даним портом. Однак цей метод годиться лише для дослідження систем UNIX.

[Tsunami] nmap-I 192.168.1.10

Starting nmap V. 2.53 by fyodor@insecure.org

Port State Protocol Service Owner

22 open tcp ssh root

25 open tcp smtp root

80 open tcp http root

110 open tcp pop-3 root

113 open tcp auth root

6000 open tcp Xll root

У наведеному вище фрагменті показано, як ідентифікуються власники всіх виявлених процесів. Досвідчений читач повинен звернути увагу на те, що Web-сервер належить не користувачеві nobody, як це повинно бути у відповідності з елементарними правилами забезпечення безпеки, а користувачеві root, що є кричущим порушенням. Виконавши ідентифікацію процесів і встановивши такий цікавий факт, можна зробити висновок, що зломщик, якому вдасться проникнути через систему захисту Web-сервера, отримає повний контроль над комп'ютером.

Останній метод, на якому ми зупинимося, називається скануванням з проривом по FTP (FTP bounce scanning). Цей метод вперше був описаний Хоббітом (Hobbit). У своїй статті, опублікованій в електронному бюлетені Bugtraq в 1995 році, він висвітлив деякі приховані недоліки протоколу FTP (RFC 959, http://www.ietf.org/rfc/rfc0959.txt). Коротко цей метод можна описати як приховане підключення через FTP-сервер, використовуючи підтримку proxy-серверів, реалізовану на цьому FTP-сервер. Як зазначає Хоббіт у вищезгаданій статті, прорив по FTP "можна використовувати практично для неотслежіваемой відправки електронної пошти і повідомлень у групи новин, злому серверів різних мереж, заповнення диска, спроб прориву через брандмауери та іншої шкідливої ​​діяльності, яка при цьому може залишатися практично непоміченою" . Додамо, що за допомогою прориву по FTP можна сканувати порти, щоб приховати свою адресу, і, що ще більш важливо, обходити пристрої керування доступом.

Звичайно, утиліта nmap підтримує і цей режим сканування (параметр-b). Однак для його виконання необхідне дотримання кількох умов. По-перше, на FTP-сервер повинен бути каталог, доступний для читання / запису з боку будь-якого користувача, наприклад / incoming. По-друге, FTP-сервер повинен прийняти від утиліти nmap свідомо неправильну інформацію про порт за допомогою команди PORT. Хоча цей метод дуже ефективний для проникнення через пристрої управління доступом, а також для приховування своєї адреси, у нього є один істотний недолік - дуже низька швидкість роботи. Крім того, багато сучасних FTP-сервери просто забороняють виконання таких операцій.

Однак застосування різних засобів для сканування портів - це тільки половина завдання. Тепер потрібно розібратися з тим, як проаналізувати дані, отримані за допомогою кожної з утиліт. Незалежно від застосовуваного засоби, необхідно ідентифікувати відкриті порти, оскільки їх перелік дозволить визначити операційну систему віддаленого вузла. Наприклад, якщо на вузлі відкриті порти 135 і 139, то, швидше за все, цей вузол працює під управлінням операційної системи Windows NT. Зазвичай Windows NT опитує порти 135 і 139, тоді як Windows 95/98 - лише порт 139.

Наприклад, вивчивши результати, отримані під час роботи утиліти strobe, яка розглядалася раніше в цій главі, можна зробити висновок, що досліджувався в розглянутому прикладі вузол працює під управлінням операційної системи з сімейства UNIX. Даний висновок можна зробити на підставі того, що на досліджуваному вузлі відкриті порти з номерами 111 (portmapper), 512-514 (служби Berkley R), 2049 (NFS), а також порти з номерами 3277Х, що характерно саме для систем сімейства UNIX. Більш того, можна також припустити, що дана операційна система відноситься до сімейства Solaris - саме цій системі притаманне використання служб RPC разом з портів з цього діапазону. Потрібно підкреслити, що це лише припущення, оскільки насправді встановлена ​​операційна система, якщо з її настроюванням попрацював досвідчений адміністратор безпеки, може лише "видавати себе" за Solaris, а в дійсності не мати з нею нічого спільного.

Отже, після завершення TCP-і (або) UDP-сканування портів вже можна висунути припущення про тип операційної системи, що працює на досліджуваному вузлі, і, отже, про те, як можна проникнути на цей вузол. Наприклад, якщо на сервері Windows NT відкритий порт 139, то такий вузол піддається дуже високого ступеня ризику. Детальніше про приховані недоліки системи захисту Windows NT, а також про те, як за допомогою порту 139 можна проникнути в систему, в якій не прийняті адекватні контрзаходи для захисту цього порту, розповідається в розділі 5.

Розглядалася у якості прикладу система UNIX, швидше за все, також піддається великому ризику, оскільки виявлені нами працюють служби надають у розпорядження щасливого зломщика дуже великі можливості. Наприклад, використання служб віддаленого виклику процедур (RPC - Remote Procedure Call) і підтримки мережевої файлової системи (NFS - Network File System) є двома основними методами проникнення через систему захисту сервера UNIX (докладніше див розділ 8).

З іншого боку, якщо служба RPC не знаходиться в режимі очікування запитів, то проникнути через її систему захисту практично неможливо. Саме тому так важливо пам'ятати, що чим більше служб працює на комп'ютері, тим більшому ризику він піддається.

Сканування за допомогою утиліт

Утиліта cheops (вимовляється "ки-опс", http://www.marko.net/cheops/), зображена на рис. 1.2, представляє собою програму з графічним інтерфейсом, призначену для повномасштабного дослідження мережі. При цьому в одному пакеті об'єднані утиліти ping, traceroute, засоби сканування портів, а також визначення типу операційної системи (за допомогою queso). Крім цього, cheops дозволяє отримати графічне схематичне зображення досліджуваної мережі пов'язаних з нею мереж, що значно полегшує розуміння її архітектури.

Друга утиліта, на якій ми зупинимося, називається tkined і входить до складу пакету Scotty (http://wwwhome.cs.utwente.nl/ ~ schoenw / scotty /). По суті, ця утиліта є редактором мережевого редагування, написаним на мові Tel, який, об'єднує різні засоби управління мережею, що забезпечують збір усілякої інформації про архітектуру і роботі мережі. Утиліта tkined має велику гнучкість і дозволяє проводити дослідження мережі з представленням результатів у графічній формі. Крім утиліти tkined, до складу пакету Scotty входить чимало інших цікавих коштів, які заслуговують найпильнішої уваги.

Контрзаходи: захист від засобів автоматичного збору інформації

Оскільки в автоматизованих засобах, подібних Scotty, tkined і cheops, об'єднані прийоми, про які розповідалося вище в цьому розділі, для захисту від них можна застосовувати контрзаходи, аналогічні тим, які застосовуються для відповідних засобів збору інформації, сканування і т.д.

Пасивне дослідження стека

Основні принципи пасивного дослідження стека аналогічні концепціям, які лежать в основі його активного дослідження. Проте в даному випадку замість передачі пакетів для визначення використовуваної операційної системи зломщик здійснює моніторинг мережевого трафіку. Таким чином, спостерігаючи за мережевим трафіком між різними комп'ютерами, можна визначити тип і версію віддаленої операційної системи. Великі дослідження в цій області були проведені Ланцов Спітзнером (Lance Spitzner). На їх основі була написана книга, яку можна знайти за адресою http://www.enteract.com/ ~ lspitz / finger.html. Крім ТОГО, за адресою http://www.subterrain.net/projects/siphon можна також знайти утиліту siphon, призначену для пасивного дослідження портів та ідентифікації операційної системи. Тепер познайомимося з тим, як же виконується пасивне дослідження стека.

Параметри, які використовуються для пасивного дослідження стека

Для визначення типу і версії операційної системи можна використовувати найрізноманітніші ознаки. Однак зараз ми обмежимося розглядом лише декількох атрибутів, пов'язаних з сеансом мережної взаємодії з допомогою протоколу TCP / IP.

  • атрибутів TTL (Time-to-Live - час життя). Чи встановлює операційна система значення TTL для вихідних пакетів?

  • Windows Size (розмір вікна). Який розмір вікна використовується?

  • DF (Don't Fragment - біт фрагментації). Чи встановлюється операційною системою ознака DF?

  • TOS (Type-of-Service - тип служби). Встановлюється чи операційною системою значення TOS. Якщо так, то яке?

Проаналізувавши кожен з атрибутів і порівнявши отримані результати зі значеннями з наявної бази даних, можна визначити віддалену операційну систему. Оскільки цей метод не гарантує отримання правильної відповіді на основі кожного з атрибутів окремо, для отримання більш надійних результатів атрибути можна комбінувати. Саме такий підхід і використовується утилітою siphon.

Ось як працює описаний метод. Якщо за допомогою утиліти telnet встановити віддалене з'єднання між вузлами 192 .168 .1.10 і 192 .168 .1.11, то з використанням утиліти siphon можна визначити тип віддаленої операційної системи.

[Shadow] # telnet 192.168.1.11

За допомогою нашої улюбленої утиліти snort можна частково переглянути пакети, що передаються в процесі мережевої взаємодії.

06/04-11: 23:48.297976 192.168.1.11:23 -> 192.168.1.10:2295

TCP TTL: 255 TOS: OxO 10:58934 DF

** S *** A * Seq: OxD3B709A4 Ack: OxBE09B2B7 Win: 0x2798

TCP Options => NOP NOP TS: 9688775 9682347 NOP WS: 0 MSS: 1460

При цьому видно, що згадувані вище атрибути приймають наступні значення:

  • TTL = 255

  • Розмір вікна = 2798

  • Біт DF = Yes A TOS = 0

Тепер звернемося до бази даних утиліти siphon - файлу osprints.conf:

[Shadow] f grep-i Solaris osprints.conf

# Window: TTL: DF: Operating System DF = 1 for ON, 0 for OFF.

2328:255: l: Solaris 2.6 - 2.7

2238:255: l: Solaris 2.6 - 2.7

2400:255: l: Solaris 2.6 - 2.7

2798:255: l: Solaris 2.6 - 2.7

FE88: 255: l: Solaris 2.6 - 2.7

87CO: 255: l: Solaris 2.6 - 2.7

FAFO: 255:0: Solaris 2.6 - 2.7

FFFF: 255:1: Solaris 2.6-2.7

З наведеного фрагмента видно, що в четвертій запису містяться ті ж значення, які були отримані з використанням утиліти snort. Таким чином, за допомогою утиліти siphon можна точно визначити досліджувану операційну систему.

[Crush] # siphon-v-i xl0 - про fingerprint.out

Running on: 'crush' running FreeBSD 4.0-RELEASE on a (n) i386

Using Device: xlO

Host Port. TTL DF Operating System 192.168.1.11 23255 ON Solaris 2.6 - 2.7

Отже, в якості віддаленої була визначена система Solaris 2.6. І це. Не викликало особливих проблем. Пасивне дослідження стека зломщик може використовувати для вибору потенційних жертв. Для цього досить поспостерігати за відповідним Web-вузлом і проаналізувати мережевий трафік або скористатися утилітою siphon. Незважаючи на те що описаний метод є досить ефективним, він все ж таки має деякі обмеження. По-перше, в додатках, що генерують свої власні пакети (наприклад, Шпара), не застосовуються ті ж ознаки, що і самою операційною системою. Тому отримані результати можуть виявитися неточними. По-друге, на віддаленому вузлі можна без проблем змінити атрибути з'єднання.

Solaris: ndd-set / dev / ip ip_def_ttl 'число'

Linux: echo 'число'> / proc/sys/net/ipv4/ip_default_ttl

NT:

HKEY_LOCAL_MACHINESystemCurrentControlSet

ServicesTcpipParameters

Активне дослідження стека

Перш ніж перейти до розгляду можливостей утиліт nmap і queso, необхідно коротко пояснити, в чому ж полягає суть дослідження стека TCP / IP. Дослідження стека (stack fingerprinting) - це дуже потужна технологія, що дозволяє швидко визначити тип і версію операційної системи вузла з високим ступенем вірогідності.

Очевидно, що різні розробники по-різному підходять до реалізації стека TCP / IP. Зокрема, багато розробників по-своєму трактують рекомендації документів RFC, що згодом виявляється в логіці роботи тих чи інших мережевих служб. Таким чином, знаючи про існуючі розбіжності та перевіривши реакцію служб вивчається на різні ситуації, можна практично однозначно визначити тип і версію відповідної операційної системи. Для досягнення максимальної достовірності при дослідженні стека потрібно принаймні один порт, що знаходиться в режимі очікування запитів. За допомогою утиліти nmap можна висунути припущення про використовуваною операційною системою навіть при відсутності таких портів, однак ступінь його достовірності в цьому випадку буде невисокою. Повний опис процесу дослідження стека можна знайти у статті Федора (Fyodor), вперше публікувалися в журналі Phrack Magazine.

Нижче наведено перелік тестів, які можна використовувати у процесі дослідження стека для визначення типу і версії операційної системи.

  • Передача пакетів FIN (FIN probe). Пакет FIN відсилається у відкритий порт. Як вже згадувалося, згідно з документом RFC 793 досліджувана система не повинна відповідати на таке повідомлення. Однак багато реалізації стека (наприклад, Windows NT) відповідають на них, відправляючи пакет FIN / ACK.

  • Спроба встановлення прапорів (bogus flag probe). Відсилається пакет SYN з встановленим прапором у заголовку TCP, значення якого не визначено специфікацією протоколу. Деякі операційні системи, наприклад Linux, у відповідному пакеті встановлюють цей же прапор.

  • Вивчення початкової послідовності (Initial Sequence Number (ISN) sampling). Основне завдання цього тесту - спробувати визначити характерні ознаки початкової послідовності, що генерується вузлом при отриманні запиту на встановлення з'єднання, які характерні для тієї чи іншої реалізації TCP.

  • Моніторинг біта фрагментації ("don't fragment bit" monitoring). Цей біт встановлюється деякими операційними системами для підвищення продуктивності. Перевірка даного біта може допомогти у визначенні типу операційної системи, для якої характерно таку поведінку.

  • Початковий розмір вікна TCP (TCP initial window size). Для деяких реалізацій стека протоколів TCP / IP цей параметр унікальний, що сприяє точності визначення типу операційної системи.

  • Значення АСК (грудень value). У різних реалізаціях стека IP по-різному задається значення поля АСК. В одних випадках повертається отриманий від вас номер послідовності, а в інших - значення номера послідовності, збільшене на 1.

  • Обробка повідомлень про помилки ICMP (ICMP error message quenching). Деякі операційні системи дотримуються рекомендацій документа RFC 1812 (www. ietf.org/rfc/rfcl812.txt) і обмежують швидкість передачі повідомлень про помилки. Тому, відправляючи UDP-пакети на який-небудь порт (зазвичай з великим номером), цілком реально виміряти кількість повідомлень про помилки, що надійшла за певний період, і визначити таким чином тип операційної системи.

  • Вимірювання довжини повідомлень ICMP (ICMP message quoting). При виникненні помилок ICMP різними операційними системами передаються повідомлення різної довжини. Проаналізувавши отримане повідомлення, можна зробити деякі припущення про досліджувану операційній системі.

  • Перевірка цілісності відповідних повідомлень про помилки ICMP (ICMP error message-echoing integrity). У деяких реалізаціях стека використовується зміна заголовка IP при поверненні повідомлень про помилки ICMP. Перевіривши тип змін, внесених в заголовок, можна зробити деякі припущення про операційну систему досліджуваного вузла.

  • Тип служби (TOS - type of service). Можна перевіряти поле TOS для повідомлень "ICMP port unreachable" (порт недоступний). У більшості реалізацій це поле має значення 0, проте іноді використовуються і інші значення.

  • Обробка фрагментації (fragmentation handling). Як відзначають Томас пташок (Thomas Ptacek) і Тім Ньюсхам (Tim Newsham) у своїй відомій статті Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection (http://www. Clark.net / ~ roesch / idspaper.html) , різні стеки обробляють перекриваються повідомлення по-різному. При складанні фрагментірованньк пакетів деякі стеки записують нові дані поверх старих і навпаки. Перевіривши, яким чином були зібрані тестові пакети, можна зробити припущення про досліджувану операційній системі.

  • Параметри TCP (TCP options). Параметри TCP визначені в документі RFC 793 і нещодавно виданому RFC 1 323 (www.ietf.org/rfc/rfcl323.txt). Нововведення, описані в RFC 1323, знайшли відображення тільки в самих останніх реалізаціях стеків. Відправляючи пакет з набором різних параметрів, таких як по operation, maximum segment size, window scale factor, timestamp і так далі, можна зробити висновок про тип і версію операційної системи.

    Для того щоб скористатися утилітою nmap і виконати всі перераховані тести (за винятком обробки фрагментації і обробки повідомлень про помилки ICMP), достатньо вказати в командному рядку параметр-о. Давайте подивимося, як буде виглядати отриманий результат.

    [Tsunami] nmap -0192.168.1.10

    Starting nmap V. 2.53 by fyodor@insecure.org

    Interesting ports on shadow (192.168.1.10):

    Port State Protocol Service

    7 open tcp echo

    9 open tcp discard

    13 open tcp daytime

    19 open tcp chargen

    21 open tcp ftp

    22 open tcp ssh

    23 open tcp telnet

    25 open tcp smtp

    37 open tcp time

    111 open tcp sunrpc

    512 open tcp exec

    513 open tcp login

    514 open tcp shell

    2049 open tcp nfs

    4045 open tcp lockd

    TCP Sequence Prediction: Class = randorn positive increments

    Difficulty = 26590 (Worthy challenge)

    Remote operating system guess: Solaris 2.5, 2.51

    Як видно, при включенні режиму дослідження стека утиліти nmap можна легко отримати досить точне визначення типу і версії операційної системи. Навіть якщо на досліджуваному вузлі не відкрито жодного порту, утиліта nmap допоможе зробити досить точний припущення про використовуваною операційною системою.

    [Tsunami] # nmap-p80 -0 10.10.10.10

    Starting nmap V. 2.53 by fyodor@insecure.org

    Warning: No ports found open on this machine,

    OS detection will be

    MUCH less reliable

    No ports open for host (10.10.10.10)

    Remote OS guesses: Linux 2.0.27 - 2.0.30, Linux 2.0.32-34,

    Linux 2.0.35-36, Linux 2.1.24 PowerPC,

    Linux 2.1.76, Linux 2.1.91 - 2.1.103, Linux 2.1.122 - 2.1.132; 2.2.0-prel - 2.2.2, Linux 2.2.0-pre6 - 2.2.2-ac5

    Nmap run completed - 1 IP

    address (1 host up) scanned in 1 second

    Як видно з наведеного лістингу, утиліта nmap навіть без відкритих портів, правильно визначила операційну систему Linux.

    Однією з примітних особливостей утиліти nmap є те, що лістинг сигнатур зберігається в окремому файлі з ім'ям nmap-os-fingerprints. При появі кожної нової версії утиліти цей файл також оновлюється, і на момент написання даної книги в ньому містилися сотні сигнатур. Якщо ви хочете додати нові сигнатури і підвищити таким чином ефективність утиліти nmap, зверніться ПО адресою http://www.insecure.org:80/cgi-bin/nmap-submit.cgi.

    Хоча на момент написання даної книги утиліта nmap, мабуть, дозволяє найбільш точно виконати дослідження стека TCP / IP, вона, тим не менш, є далеко не першою програмою, у якій реалізована відповідна технологія. До того як Федір вбудував в утиліту nmap засоби визначення операційної системи, для цих же цілей вже була створена утиліта queso (http://www.apostols.org/projectz/). Необхідно відзначити, що утиліта queso не дозволяє виконувати сканування портів і може визначати тип операційної системи тільки за наявності в досліджуваній системі відкритого порту (за замовчуванням використовується порт 80). Якщо порт 80 закритий, необхідно задати інший відкритий порт, як показано в наступному прикладі, в якому за допомогою утиліти queso здійснюється спроба визначити тип операційної системи через порт 25.

    [Tsunami] queso 10.10.10.20:25

    10.10.10.20:25 * Windoze 95/98/NT

    Контрзаходи: захист від визначення операційної системи

    Виявлення спроб визначення операційної системи

    Багато хто з згадуваних вище засобів виявлення сканування з успіхом можуть служити і для виявлення спроб визначення типу операційної системи, Хоча вони не проінформують вас про те, що виконувалося спеціальне сканування за допомогою утиліти nmap або queso, з їх допомогою все ж таки вдасться розпізнати сам факт такого особливого сканування, наприклад з установкою прапора SYN.

    Попередження спроб визначення операційної системи

    Хотілося б порадити якийсь спосіб, що дозволяє протидіяти спробам визначення операційної системи, проте, на жаль, змушені констатувати, що вирішити цю проблему досить непросто. Звичайно, можна змінити вихідний код операційної системи (природно, якщо він є у вашому розпорядженні) або поміняти її параметри, що впливають на характеристики стека, однак таке втручання може значно змінити функціональність ОС. Наприклад, в системі FreeBSD 4.x є параметр ядра TCP_DROP_SYNFIN, який можна застосувати для ігнорування пакетів SYN + FIN, використовуваних утилітою nmap з метою дослідження стека. Установка цього параметра допоможе припинити спроби визначення типу операційної системи, проте в той же час порушить підтримку RFC 1644 (TCP Extensions for Transactions).

    Замість цього ми пропонуємо створювати такі мережі, в яких скануванню могли б піддатися лише надійні і добре захищені proxy-сервери і брандмауери, а не комп'ютери внутрішньої мережі. У цьому випадку, навіть якщо зломщикові і вдасться розвідати тип операційної системи того чи іншого вузла, проникнення через пристрої захисту буде значно ускладнено.

    Пасивне визначення операційної системи

    З попередніх розділів видно, наскільки ефективними виявляються засоби активного дослідження стека, такі як утиліти nmap і queso. Важливо не забувати про те, що розглянуті вище прийоми є активними за своєю природою. При цьому для визначення специфічних особливостей мережевого стека і використовуваної операційної системи кожному вузлу потрібно передавати тестові пакети. Оскільки всі активні методи передбачають передачу пакетів, ідентифікації операційної системи. Іншими словами, активне дослідження є далеко не самим прихованим методом, до якого може вдатися зломщик.

    Типи сканування

    Перш ніж перейти до опису конкретних засобів, що використовуються для сканування портів, необхідно приділити трохи часу огляду методів сканування, відомих у даний час. Одним з піонерів реалізації різних методів сканування є раніше згадуваний Федір (Fyodor). Численні прийоми сканування були реалізовані ним в утиліті nmар. Багато з описаних в даній книзі методів сканування були запропоновані самим Федором.

    TCP-сканування підключенням (TCP connect scan). При такому типі сканування здійснюється спроба підключення по протоколу TCP до цікавого для нас порту з проходженням повної процедури узгодження параметрів (handshake), що складається в обміні повідомленнями SYN, SYN / ACK і АСК. Спроби такого сканування дуже легко виявляються. На рис. 1.3 показана діаграма обміну повідомленнями в процесі узгодження параметрів.

    TCP-сканування за допомогою повідомлень SYN (TCP SYN scan). Цей метод називається також скануванням з незавершеним відкриттям сеансу (half-open scanning), оскільки при його використанні повне TCP-з'єднання не встановлюється. Замість цього на досліджуваний порт відправляється повідомлення SYN. Якщо у відповідь надходить повідомлення SYN / ACK, це означає, що даний порт знаходиться в стані LISTENING. Якщо ж відповідь приходить у вигляді повідомлення RST / ACK, то, як правило, це говорить про те, що досліджуваний порт відключений. Отримавши відповідь, комп'ютер, що виконує сканування, відправляє досліджуваного вузла повідомлення RST / ACK, тому повне з'єднання не встановлюється. Цей метод забезпечує більш високу скритність у порівнянні з повним підключенням. Багато системи не реєструють такі спроби, тому вони досить часто можуть залишатися непоміченими.

    Рис. 1.3. При установці TCP-з'єднання відбувається обмін трьома повідомленнями: (1) клієнт відправляє серверу пакет SYN, (2) отримує від сервера пакет SYN / ACK і (3) відправляє серверу пакет АСК

    • TCP-сканування за допомогою повідомлень FIN (TCP FIN scan). У цьому випадку досліджуваній системі відправляється пакет FIN. Згідно з документом RFC 793 (http://www.ieff.org/rfc/rfc0793.txt), у відповідь вузол повинен відправити пакет RST для всіх закритих портів. Даний метод спрацьовує лише для стека протоколів TCP / IP, реалізованого в системі UNIX.

    • TCP-сканування за методом "різдвяної ялинки" (TCP Xmax Tree scan). При використанні даного методу на досліджуваний порт відправляються пакети FIN, URG і PUSH. Згідно з документом RFC 793, досліджуваний вузол у відповідь повинен відправити повідомлення RST для всіх закритих портів.

    • TCP нуль-сканування (TCP Null scan). Цей метод полягає у відправці пакетів з відключеними прапорами. Згідно RFC 793, досліджуваний вузол повинен відповісти відправкою повідомлення RST для всіх закритих портів.

      • TCP-сканування за допомогою повідомлень АСК (TCP ACK scan). Цей метод дозволяє отримати набір правил, використовуваних брандмауером. Таке сканування допоможе визначити, чи виконує брандмауер просту фільтрацію пакетів лише певних сполук (пакетів зі встановленим прапором АСК) або забезпечує розширену фільтрацію вступників пакетів.

      • TCP-сканування розміру вікна (TCP Windows scan). Такий метод дозволяє виявити відкриті, а також фильтруемое / нефільтрованого порти деяких систем (наприклад, AIX і FreeBSD), в залежності від отриманого розміру вікна протоколу TCP.

      • TCP-сканування портів RFC (TCP RFC scan). Цей метод застосовується тільки для систем UNIX і використовується для виявлення портів RFC (Remote Procedure Call - віддалений виклик процедур), пов'язаних з ними програм та їх версій.

      А UDP-сканування (UDP scan). Даний метод полягає у відправці на досліджуваний вузол пакетів по протоколу UDP. Якщо у відповідь надходить повідомлення про те, що порт ICMP недоступний (ICMP port unreachabie), це означає, що відповідний порт закритий. З іншого боку, якщо такого повідомлення немає, можна припустити, що цей порт відкритий. У зв'язку з тим, що протокол UDP не гарантує доставки, точність даного методу дуже сильно залежить від безлічі факторів, що впливають на використання системних і мережевих ресурсів. Крім того, UDP-сканування - дуже повільний процес, що особливо позначається при спробах сканування пристроїв, в яких реалізовано потужний алгоритм фільтрації пакетів. Тому, плануючи використовувати UDP-сканування, приготуйтеся до того, що результати можуть виявитися ненадійними.

      Деякі реалізації IP-протоколу мають однією неприємною властивістю: пакети RST відправляються назад для всіх сканованих портів незалежно від того, чи знаходяться відповідні порти в режимі очікування запитів. Враховуйте цей факт при використанні описаних методів. Однак у той же час сканування підключенням і сканування з використанням повідомлень SYN можуть застосовуватися для всіх вузлів.

      Утиліти сканування портів для системи Windows

      У попередніх розділах були розглянуті утиліти сканування портів з точки зору користувача UNIX, проте невже не існує аналогічних засобів, доступних для користувачів Windows? Звичайно ж, це не так. Наступні утиліти сканування портів є кращими серед подібних засобів, оскільки мають високу швидкість, точністю і широким набором функціональних можливостей.

      NetScanTools Pro 2000

      Одним з найбільш універсальних засобів дослідження мереж, доступних в даний час, є пакет NetScanTools Pro 2000 (NSTP2K), що містить найрізноманітніші утиліти, об'єднані загальним інтерфейсом. З використанням NSTP2K можна генерувати запити DNS, включаючи nslookup, dig і axf r, запити whois, здійснювати ping-прослуховування, сканувати таблиці імен NetBIOS, відстежувати повідомлення SNMP і виконувати багато інших завдань. Більш того, з використанням пакета NetScanTools Pro 2000 можна виконувати кілька завдань одночасно. Наприклад, можна виконувати сканування портів одній мережі і здійснювати ping-прослуховування іншої мережі (хоча ми не можемо ручатися за правильність таких дій по відношенню до великих мереж).

      До складу пакету NetScanTools Pro 2000 включено також один з кращих сканерів портів Windows. Всі необхідні параметри можна встановити у вкладці Port Probe. До переваг утиліти сканування NSTP2K. можна віднести можливість гнучкого завдання параметрів досліджуваних вузлів і портів (і IP-адреси і список портів можуть бути імпортовані з текстових файлів), можливість TCP-і UDP-сканування (хоча відповідні режими не можна встановити окремо для кожного порту), а також високу швидкість завдяки реалізації багатопоточності. До недоліків утиліти сканування пакету NSTP2K можна віднести деяку громіздкість отриманих результатів, що ускладнює їх аналіз за допомогою сценаріїв, і, крім того, графічний інтерфейс робить неможливим застосування цієї утиліти в сценаріях. Нам хотілося б висловити наступне побажання: було б дуже зручно, щоб результати, отримані з використанням однієї утиліти пакету NSTP2K (скажімо, NetScanner), можна було б безпосередньо передавати іншій утиліті (наприклад, Port Probe).

      Загалом, пакет NSTP2K (http://www.nwpsw.com) представляє собою професійно розроблений програмний продукт, який регулярно оновлюється за допомогою сервісних пакетів, проте все ж залишається кілька дорогим у порівнянні з наданими їм можливостями. Можна також ознайомитися з менш робастної версією Netscan Tools (в даний час доступна версія 4), що є пробної 30-денний версією пакета NSTP2K. Однак надані нею можливості не настільки широкі, як у пакеті Pro 2000 (наприклад, вона не дозволяє виконувати UDP-сканування).

      При використанні пакету NSTP2K не забудьте відключити сервер ідентифікації у вкладці IDENT Server, щоб не забороняти прослуховування порту 113.

      SuperScan

      Утиліта SuperScan, написана Робіном Кейра (Robin Keir) (http://members. Home.com / rkeir / software.html), є ще однією швидкої і гнучкої утилітою TCP-сканування портів і має набагато більш привабливу вартість - вона поширюється безкоштовно! Як і пакет NSTP2K, утиліта SuperScan дозволяє гнучко задавати перелік IP-адрес досліджуваних вузлів і сканованих портів. Особливо зручно використовувати режим Extract from file. Краще за все особливості його застосування описані в довідковій системі. Ось невеликий фрагмент з довідкової системи утиліти SuperScan, з якого видно, що вона дозволяє заощадити значну частину часу.

      "Режим [The" Extract from file "feature scans] дозволяє переглядати вміст будь-якого текстового файлу і витягати з нього коректні IP-адреси та імена вузлів. При пошуку коректних імен програмою виконуються досить інтелектуальні дії. Однак перед обробкою файлу з нього потрібно видалити потенційно неоднозначні фрагменти тексту, скориставшись зовнішнім текстовим редактором. На кнопках Browse і Extract можна клацати стільки разів, скільки різних файлів є у вашому розпорядженні. При цьому в список імен досліджуваних вузлів програмою будуть додані всі нові імена. Всі елементи, що повторюються будуть автоматично видалені. Після знаходження всіх імен вузлів клацніть на кнопці Resolve, щоб перетворити їх в числові IP-адреси і виконати підготовку до етапу сканування портів. " Ця утиліта надає також один з найбільш великих списків портів, з яким нам коли-небудь доводилося зустрічатися. (Авторам книги подобається список під назвою henss.lst. Більш того, у вихідному англомовному назві книги перші літери складають абревіатуру HENSS & S, звідки можна зробити висновок, що автори - просто фанати цього списку.) Крім того, порти можна виділити або скасувати їх виділення вручну. Не зайвий раз повторити, що утиліта SuperScan крім всіх перерахованих можливостей володіє також і високою швидкістю.

      NTOScanner

      Утиліта NTOScanner компанії NTObjectives, Inc. (Http://www.ntobjectives.com) являє собою швидку програму TCP-сканування з графічним інтерфейсом, яка при ручній установці відповідного режиму дозволяє також збирати маркери портів, що знаходяться в стані очікування запитів. Однак ця утиліта має деякі незручності при завданні досліджуваних вузлів і портів, а також вимагає, щоб перед скануванням мереж класу С до вузлів було застосовано ping-прослуховування. Утиліта NTOScanner надзвичайно корисна для визначення служб, запущених на конкретному вузлі або в мережі, досяжною за допомогою ICMP-пакетів.

      WinScan

      Утиліта WinScan компанії Scan Mathias of Prosolve (http://www.prosolve.com) розповсюджується вільно програмою TCP-сканування портів, реалізованої в двох версіях: з графічним інтерфейсом (winscan.exe) і для використання в командному рядку (scan.exe ). Ми регулярно звертаємося до версії для командного рядка у файлах сценаріїв, оскільки при скануванні мереж класу С вона дозволяє отримати зручні для аналізу результати. При використанні утиліт Win32 strings, tee і tr компанії Mortice Kern Systems, Inc. (Http://www.mks.com) наступна консольна команда NT буде виконувати сканування мережі для портів з діапазону 0-1023 і формувати результат у вигляді рядків з полями, розділеними двокрапками, у форматі IP-адреса: ім'я_служби: порт / протокол ( для полегшення сприйняття рядок була розділена на дві частини).

      scan.exe-n 192.168.7.0-s 0 - е 1023-f | strings | findstr / з: "/ top" |

      tr \ 011 \ 040: | tr-s:: | tee-ia results.txt

      Параметр-f при повільних з'єднаннях краще не використовувати, оскільки отримані результати можуть виявитися не дуже надійними. При запуску наведеної вище команди будуть отримані приблизно такі дані.

      192.168.22.5: nbsession: 139/tcp

      192.168.22.16: nbsession: 139/tcp

      192.168.22.32: nbsession: 139/tcp

      Велике спасибі Патріку Хейм (Patrick Heim) і Ясонові Глассбергу (Jason Glassberg) за надання цієї цікавої команди.

      ipEye

      Чи не думаєте ви, що для виконання нетрадиційного сканування потрібно систему Linux і утиліта nmap? He поспішаєте з висновками, оскільки утиліта ipEye Арні Відстрома (Arne Vidstrom) '(http://ntsecurity.nu) дозволяє виконати сканування необхідних портів, а також TCP-сканування за допомогою повідомлень SYN, FIN і з використанням методу "різдвяної ялинки", з командного рядка Windows. На використання цієї прекрасної утиліти накладається лише кілька обмежень. Вони полягають в тому, що її можна використовувати тільки в середовищі Windows 2000 і одночасно сканувати один вузол. Ось приклад запуску утиліти ipEye для виконання TCP-сканування за допомогою повідомлень SYN порту з номером 20. При цьому зроблена спроба уникнути правил фільтрації, використовуваних маршрутизатором. Наведений приклад аналогічний запуску утиліти nmap з параметром-д (для стислості отримані результати відредаговані).

      С: \ Toolbox> ipeye.exe

      192.168.234.110-syn-p січня 1023-sp 20

      ipEye 1.1 - (з) 2000, Arne Vidstrom (arne.vidstrom @ ntsecurity.nu)

      - Http://ntsecurity.nu/toolbox/ipeye/

      1-52 [closed or reject]

      53 [open]

      54-87 [closed or reject]

      88 [open]

      89-134 [closed or reject]

      135 [open]

      136-138 [closed or reject]

      139 [open]

      636 [open]

      637-1023 [closed or reject]

      1024-65535 [not scanned]

      WUPS

      Утиліта Windows UDP Port Scanner (WUPS) розроблена тими ж авторами (http://ntsecurity.nu). Ця утиліта є надійне, з графічним інтерфейсом і відносно швидке засіб сканування UDP-портів, незважаючи на те, що дозволяє одночасно сканувати задану послідовність портів лише одного вузла. Як видно з рис. 2.6, утиліта WUPS є надійним засобом для швидкого UDP-сканування кожного необхідного вузла і, отже, значно полегшує виконання цієї стомлюючої завдання.

      Захист від сканування портів

      У табл. 1.4 наведено перелік різних популярних утиліт сканування, а також типи сканування, які ці утиліти дозволяють виконувати.

      Контрзаходи: захист від сканування портів

      Виявлення факту сканування

      Як правило, зломщики вдаються до сканування TCP-і UDP-портів віддаленого комп'ютера, щоб встановити, які з них знаходяться в стані очікування запитів. Тому виявити факт сканування - значить, встановити, в якому місці і ким буде зроблена спроба злому. Основні методи виявлення факту сканування складаються або у використанні спеціальної програми, призначеної для виявлення вторгнень на рівні мережі (IDS), такий як NFR, або у використанні механізму захисту на рівні окремого вузла.

      Таблиця 1.4. Популярні утиліти сканування портів та їх можливості

      Утиліта

      Сканування

      Ресурс

      UNIX

      TCP

      UDP

      Приховане

      Strobe

      X

      ftp://f tp.FreeBSD.org /

      pub / FreeBSD

      / Ports/distfiles/strobe-1.06.tgz

      Tcp_scan

      X

      http://wwdsilx.

      wwdsi.com / saint /

      Udp_scan

      X

      http://wwdsilx.

      wwdsi.com / saint /

      Nmap

      X

      X

      X

      http://www. inscure. org / nmap

      Netcat

      X

      X

      http://www.10pht.com/

      users/10pht/nc110.tgz

      Windows

      Netcat

      X

      X

      http://www.10pht.com/users/

      10pht/ncllnt.zip

      NetScanTools Pro 2000

      X

      X

      http://www.nwpsw.com

      SuperScan

      X

      http://members.home.com/

      rkeir / software.html

      NTOScanner

      X

      http://www.ntobjectives.com

      WinScan

      X

      http://www.prosolve.com

      IpEye

      X

      http://ntsecurity.nu

      WUPS

      X

      http://ntsecurity.nu

      Fscan

      X

      X

      http://www.foundstone.com

      Метод UDP-сканування утиліти netcat не працює в операційній системі Windows NT, тому користувачам цієї ОС не варто довіряти отриманим результатам.

      # Алгоритм виявлення факту сканування

      # Автор - Стюарт Мак-Клар (Stuart McClure)

      # Даний алгоритм виявляє невдалі спроби сканування портів,

      # Які призводять до генерації повідомлень ACK / RST.

      У процесі налаштування

      # Можна поекспериментувати зі значеннями

      # Maxcount і maxtime.

      port_schema = library_schema: new (1, ["time", "ip", "ip",

      "Int"],

      scope ()};

      time = 0;

      count = 0;

      maxcount = 2; t Максимально допустимий кількість ACK / RST.

      maxtime = 5; tt Максимально допустимий час, протягом

      # Якого може досягатися значення maxcount.

      source = 0; port = 0; target = 0;

      filter portscan ip ()

      {

      if (tcp.is)

      (

      # Перевірка АСК, RST і джерела надходження.

      if (byte (ip.blob, 13) == 20)

      # Встановлено прапори АСК, RST

      {

      count = count + 1;

      source = ip.dest;

      target = ip.source;

      port = tcp.sport;

      time = system.time;

      }} On tick = timeout

      (Sec: maxtime, repeat)

      call checkout;

      }

      func checkout {

      if (count> = maxcount) {

      echo ("Спроба сканування порту,

      Час: ", time," \ n); record system.time, source, target,

      port to the_recorder_portscan; count = 0;}

      else

      count = 0;

      }

      the_recorder_portscan = recorder ("

      bin / histogram packages / sandbox / portscan.cfg ",

      "Port_schema"

      );

      Для виявлення спроб сканування портів можна також скористатися утилітою snort (www.snort.org) (див. також http://spyjurenet.com/linuxrc.org/projects/ snort /). Як ви могли здогадатися, ця утиліта є однією з ваших улюблених нами програм IDS (зауважимо, що її версії 1.x не дозволяють виявляти фрагментацію пакетів). Ось приклад лістингу, що містить дані про спроби сканування портів.

      [**] Spp_portscan: PORTSCAN DETECTED from 192.168.1.10 [**]

      05/22-18: 48:53.681227

      [**] Spp_portscan: portscan status from 192.168.1.10: 4 connections

      across 1 hosts: TCP (O), UDP (4) [**]

      05/22-18: 49:14.180505

      [**] Spp_portscan: End of portscan from 192.168.1.10 [**]

      05/22-18: 49:34.180236

      Для платформи UNIX існує чимало утиліт, таких, наприклад, як Утиліта: scanlogd (http://www.openwall.com/scanlogd/) компанії Solar Designer, які виявляють і реєструють спроби сканування. Крім того, утиліту Psionic PortSentry, створену в рамках проекту Abacus (http://www.psionic.com/abacus), можна налаштувати не тільки на реєстрацію, але і на прийняття контрзаходів при виявленні факту активного сканування. Один із способів боротьби зі спробами сканування портів полягає в автоматичній установці для ядра правил фільтрації, коли до вже існуючих додається нове правило, що забороняє доступ з боку вузла-порушника. Таке правило можна задати в конфігураційному файлі утиліти PortSentry. При цьому одне і те ж правило може відрізнятися в різних системах. Для системи Linux 2.2.x, в якій є підтримка ядра брандмауера, у файл portsentry.conf потрібно додати запис, аналогічну наступної.

      # New ipchain support for Linux kernel version 2.102 +

      KILL_ROUTE = "/ sbin / ipchains-I input-s $ TARGET $-j DENY -1"

      Утиліта PortSentry сумісна з більшістю версій UNIX, включаючи Solaris. Незалежно від того, чи застосовуєте ви будь-які утиліти чи ні, необхідно пам'ятати, що масовані спроби сканування портів, ініційовані будь-яким вузлом або який-небудь мережею, можуть означати, що хтось вивчає вашу мережу. Завжди звертайте найпильнішу увагу на такі дії, оскільки за ними може послідувати повномасштабне вторгнення. І нарешті, не забувайте про те, що є можливість активного протистояння або блокування спроб сканування портів. Всі ці питання розглядаються в статті, опублікованій компанією Solar Designer (http://www. Openwall.com/scanlogd/P53-13.gz). У цій статті містяться додаткові поради щодо розробки та використання систем виявлення спроб сканування.

      Більшість брандмауерів не тільки можуть, а й повинні налаштовуватися на режим виявлення спроб сканування. Проте одні брандмауери справляються з цим завданням краще, інші гірше. Наприклад, деякі брандмауери вміють виявляти приховане сканування. Однак багато хто з них, підтримуючи режим виявлення SYN-сканування, абсолютно ігнорують FiN-сканування. Найбільшою проблемою при виявленні факту сканування є завдання аналізу величезних системних журналів, що накопичуються при щоденній роботі серверів мережі. Для спрощення рішення цього завдання можна скористатися утилітою Psionic Logcheck (http://www.-psionic.com/abacus/logcheck/). Крім того, ми рекомендуємо налаштувати утиліти таким чином, щоб вони реагували на виявлені спроби сканування в реальному часі, відсилаючи повідомлення по електронній пошті. Скрізь, де це тільки можливо, встановлюйте порогові значення для кількості реєстрованих подій (threshold logging), щоб зломщик не завалив вашу поштову скриньку купою повідомлень, в яких буде так само важко знайти інформацію, як і в системних журналах. Крім того, в цьому випадку може також виникнути умова DoS. При використанні порогових значень всі попередження будуть групуватися, а не оброблятися по одному. Як мінімум необхідно налаштувати систему безпеки на видачу звітів про сам факт виявленої спроби сканування. Для брандмауера Firewall-1 з цією метою можна використовувати утиліту Ланца Спітцнера (Lance Spitzner) alert, sh (http://www. Enteract.com / ~ lspitz / intrusion.html). Ця утиліта буде виявляти і відстежувати спроби сканування портів, працюючи під управлінням Firewall-1 в якості засобу захисту, заданого користувачем.

      Для платформи Windows NT також є декілька утиліт, призначених для виявлення спроб сканування. Перш за все, необхідно відзначити таку утиліту, як Genius 2.0, розроблену компанією Independent Software (http://www. Indiesoft.com) для платформ Windows 95/98 і Windows NT. Цей програмний продукт надає набагато більше можливостей, ніж простий засіб виявлення TCP-сканування портів. Однак необхідно відзначити, що навіть з урахуванням цього, має сенс його використовувати. Утиліта Genius відстежує численні запити до відкритих портів і при виявленні спроб сканування відображає на екрані попереджувала діалогове вікно, в якому міститься IP-адреса зломщика і доменне ім'я його вузла.

      Утиліта Genius дозволяє виявляти як спроби звичайного сканування, тобто з встановленням TCP-з'єднання, так і SYN-сканування.

      Ще одним детектором сканування для системи Windows, що заслуговує окремої згадки, є програма BlackICE компанії Network ICE (http://www.-networkice.com). Дана програма представляє перший засноване на використанні агентів засіб виявлення вторгнень, яке можна використовувати як в Windows 9х, так і в NT. У момент написання даної книги цей програмний продукт був комерційним, хоча в найближчому майбутньому компанія обіцяє підготувати вільно поширювану версію. І нарешті, програма ZoneAlarm (http://www.zonelabs.com/zonealarm.htm) добре підходить для платформи Windows і може застосовуватися в якості засобу IDS на рівні брандмауера.

      Запобігання сканування

      Навряд чи можна перешкодити будь-кому зробити спробу сканування портів на вашому комп'ютері, проте цілком реально звести до мінімуму пов'язаний з цим ризик. Для цього потрібно заблокувати всі служби, в роботі яких немає необхідності. У середовищі UNIX дане завдання вирішується за допомогою додавання символів коментаря до відповідних рядків файлу / etc / inetd. corif, а також відключення автоматичного запуску непотрібних служб у сценарії початкового завантаження. У системі Windows NT також доцільно відключити всі непотрібні служби. Проте зробити це складніше, оскільки через мережевий архітектури Windows NT принаймні Порт 139 повинен працювати постійно. Тим не менше, інші служби можна відключити, запустивши аплет Services панелі управління. Тут же варто згадати про те, що компанією Tiny Software (www.tinysoftware.com) поширюється модуль ядра, що дозволяє виконувати фільтрацію вхідних пакетів. За допомогою цього модуля можна захистити більшість важливих портів. Що ж до інших операційних систем і пристроїв, то нам залишається лише порадити як можна уважніше прочитати відповідні довідкові керівництва. Постарайтеся знайти в них інформацію про те, які порти вам дійсно необхідні й як відключити інші, щоб звести ризик до мінімуму.

      Активне визначення операційної системи

      Отже, ми переконалися, що існує безліч різних прийомів і засобів сканування портів. Згадайте, що при скануванні портів переслідується дві основні мети. По-перше, потрібно встановити, які TCP-і UDP-порти на досліджуваному комп'ютері знаходяться в стані очікування запитів. По-друге, необхідно визначити тип операційної системи, використовуваної на віддаленому вузлі. Інформація про операційну систему знадобиться на наступних етапах, при складанні схеми вразливих ділянок. Про це мова піде в наступних розділах. Важливо пам'ятати, що при цьому необхідно бути особливо точним і уважним до дрібниць. Саме тому дуже важливо абсолютно правильно встановити тип віддаленої операційної системи. При визначенні типу ОС дуже корисною виявляється непряма інформація, що отримується, наприклад за допомогою збору маркерів, про які ми поговоримо в розділі 3. При цьому буде зібрана інформація про такі служби, як FTP, telnet, SMTP, HTTP, POP і інших. Збір маркерів - це один з найпростіших методів визначення типу операційної системи, а також версій працюють під її управлінням служб. Неважко здогадатися, що існують різні засоби, покликані допомогти у вирішенні цього завдання. Серед доступних можна відзначити дві утиліти, що дозволяють отримати найточніші результати, - вже добре нам відома nmар і утиліта queso. Точність результатів, що видаються обома утилітами, пояснюється, перш за все, тим, що обидві вони надають можливість дослідження стека протоколів TCP / IP (stack fingerprinting).

      Висновок

      Метою даної курсової роботи було оглядової статті про передачу інформації в локальних мережах і методах її відстеження (знаходження).

      В ході курсової роботи мною було проаналізовано програмне забезпечення, яке дозволяє здійснювати сканування ресурсів локальної мережі. Так само мною були вивчені технології, за допомогою яких здійснюється сканування. Вся інформація була представлена ​​у формі курсового проекту.

      Список літератури

      1. Мурлін В.А. Інформатика і програмування. Методична розробка до курсової роботи з дисципліни «Інформатика та програмування» для студентів всіх форм навчання спеціальності 080801 - «прикладна інформатика в економіці» факультету комп'ютерних технологій і автоматизованих систем .- Краснодар: видавництво КубГТУ, 2004. - 49с.

      2. С.В. Пеніки «Локальні мережі», видавництво «АПВ», 2004 - 151 с.

      3. Г.Т. Сизов «Системи та мережі», видавництво «Інтер» 2005 - 204 с.

  • Додати в блог або на сайт

    Цей текст може містити помилки.

    Програмування, комп'ютери, інформатика і кібернетика | Курсова
    198.3кб. | скачати


    Схожі роботи:
    Мережеві можливості Windows 9X за версіями Основні мережеві програми і їх призначення
    Сканери 2
    Сканери та їх види
    Принтери та сканери
    Трохи про сканери
    Сканери їх будова та робота з ними
    Рефлекси і аналізатори
    Аналізатори людини
    Аналізатори болю
    © Усі права захищені
    написати до нас