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

Скажу відразу, що зламувати сервер не обов’язково. Саме ця стаття не дасть практично ніякого досвіду, однак вона дійсно важлива для розуміння того, як все влаштовано. Адже без азов не можна в майбутньому написати щось дійсно хороше. Саме ця стаття починає мою серію про безпеку лінукс і саме вона розповідає, чому xspider корисний, але якщо він нічого не видає, то це не значить, що жертва не вразлива(як вважають 95% початківців зломщиків).

У статті описується саме безпека linux-систем, так як windows не зовсім призначений для «глибокої» роботи з мережею.

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

Дуже рідко використовуються, та й мало допомагають бази whois
[email protected]$ whois foo.com
Domain name: —
Registar: —
Referall: bar.com

і т. д. Найбільш корисними рядками будуть registar і referall, т. к. при запит whois із зазначенням компанії реєстратора ми отримаємо найбільш повну інформацію. ([email protected]$ whois [email protected])

Раджу так само застосувати whois щодо не тільки якогось домену, але і за певним ip адресою. Саме це допоможе дізнатися про такі тонкощі, як останнє оновлення сервера.

Ping, traceroute, host
Про ping, напевно, не треба розповідати. Багато інформації від нього не отримаєш, хоча він завжди під рукою.

Traceroute ґрунтується на відправку UDP-пакетів з зазначеним max-forwards і очікуванні ICMP-відповідей. Шле пакети на порти в діапазоні від 33434 до 33523. Ми бачимо через які комп’ютери проходили пакети, можемо дізнатися більше про віддаленій машині. І навіть якщо вона не вразлива, то можна спробувати надалі протестувати на безпеку, приміром, його провайдера.

Host. Спочатку розповім Вам про DNS. DNS є в інтернеті важливою сполучною ланкою. Без нього життя було б не представима. DNS перекодовує імена хостів в ip і назад. Всі хости прописуються у файлі etc/hosts. Без dns ми могли б заходити тільки на ті адреси, що знаходяться у нас в цьому файлі.

Однак зараз не про його користь, а про його шкоду. Головне — отримати як можна більше інформації. І це нам цілком може вдасться, якщо dns створювалася не вручну.

а)При виклику команди host з наступними параметрами можна домогтися результатів:
-HINFO вказує конфігурацію сервера, встановлене на нього.
-ТХТ додаткова інформація про сервер.
(це далеко не всі параметри, проте саме вони потрібні при скануванні мережі).

б)Оскільки одна машина може працювати некоректно, то створюють вторинні dns-сервера, які є «запасними».

Проблема в тому, що хакер може поряд з адміністратором створити таку dns.

Якщо спочатку ввести host baz.ru, а потім host baz.ru name_of_server (де name_of_server — відповідь на ваш перший запит), то можна отримати список всіх хостів для даного сервера з їх ip.

Визначення ОС і запущених процесів
Сканування портів

а)Ось те головне, що необхідно при аналізі безпеки комп’ютера. Знаючи всі відкриті порти жертви можна підключатися до неї через різні проксі і дізнаватися, які саме версії програм встановлені на ньому(наприклад старий sendmail). Так само відкриті порти найкраще дозволяють визначити запущену систему, однак не варто вірити у всі відкриті порти. Іноді відкривають порти для windows, коли на сервері стоїть linux, що вводить багатьох сум’яття. Кожен порт краще перевірити на дійсну працездатність.

Я віддаю перевагу сканувати віддалену машину з допомогою nmap (саме тієї, що була в матриці 2). Всі її параметри Ви легко можете знайти в документації, а саму програму знайти в інтернеті не становить абсолютно ніяких труднощів.

Треба зауважити, що інформація, яку буде передаватися на ваш комп’ютер при підключенні до комп’ютера жертви може бути підмінена адміністратором і визначити справжню версію ВП буде вже не так легко, тому сканування портів може бути недостатньо.

б)Необхідно формувати явно некоректні запити. Тоді відповідь сервера може допомогти з визначенням ОС. Для формування таких запитів я раджу використовувати nmap (і взагалі, nmap краще інших програм такого роду в усьому, тому використовувати його потрібно як можна більше).

Однак і формування запитів не дасть результату, якщо адміністратор поставив firewall, а це він точно зробив.

Однак з’явилося удосконалення попереднього методу. Полягає це удосконалення в тому, що ми не посилаємо спеціальні запити на сервер, нам достатньо простого підключення до віддаленої машині. У кожної системи свої конфігурації з’єднання і роботи по протоколу tcp/ip: DF, Windows Size, TOS, TTL. (головні атрибути). Отримуючи їх ми можемо визначити встановлену на віддаленому комп’ютері систему.

Якщо самі ви не вмієте дивитися властивості з’єднання, то зайдіть на сайт subterrain.net, де ви зможете завантажити потрібну програму.

Файлова система
Існує цікава можливість зібрати інформацію завдяки NFS, яка дозволяє спільно використовувати файли машин, заснованим на linux. При цьому будь-яка людина може(якщо це не заборонили) підключитися до віддаленої машині і змонтувати(підключити) жорсткий диск жертви до себе з правами суперкористувача. Якщо таке підключення і заборонили, але команди showmount(що вона робить, напевно, самі здогадаєтеся) — навряд чи. Треба зауважити, що часто необхідно використовувати цю команду з параметрами -а і -е, що покаже всі хости, на які змонтовані файли, а так само всі хости, яким це дозволено.

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

Програми для роботи з snmp широко поширені в інтренеті.

Протокол ONC RPC
RPC є механізмом, який дозволяє процесам одного комп’ютера викликати деякі процедури на інших комп’ютерах. Цікавим є той факт, що за RPC не встановлюються певні порти, вони самі реєструються в спеціальній службі portmap. Portmap підтримує команду rpcinfo, що дозволяє вам побачити всі запущені rpc процеси на віддаленому комп’ютері.

Я і для цього сканування волію використовувати nmap.

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

Власне кажучи, використовувати всі методи збору інформації, може, хоч про один адміністратор забув.

——————————————————————————–

Частина статті щодо того, як збирати інформацію про мережі я написав. Тепер напишу для адміністраторів мереж, як не дати зловмисникові дізнатися про те, що його цікавить. Все це буде описано досить стисло, оскільки більше захисті я присвячу в наступних статтях. Треба зауважити, що в лінукс досить багато потенційних вразливостей, проте багато з них вирішуються однаковим способом(установкою firewall, наприклад).

Отже, поїхали.

1) Бази даних whois.

Тут все просто. Не давати їм даних…

2) Ping, host traceroute

Для відключення ping необхідно налаштувати політику безпеки щодо echo запитів. Необхідно, щоб таку можливість мали тільки певні вузли. Можна з допомогою firewall, можна з допомогою політики ipchains(про неї докладно в іншій статті). Можна так само відключити саму службу echo в файлі /etc/inetd.conf. Закоментуйте рядки:
echo stream…
echo dgram…

Host: так, тут складніше.

а) По-перше, запису в dns створюйте в ручну. Не пишіть інформацію в поле hinfo. (інші поля на розсуд).

б) При створенні вторинних серверів необхідно у файлі named.conf вказати IP-адреси «дозволених». (як це зробити, написано в документації, але все ж скажу, що зробити це можна за допомогою allow_transfer:

zone «foo.ru» {

allow-transfer {ip.ip.ip.ip;};

Traceroute: т. к. вказати адміністраторам інших комп’ютерів що ви не можете, то доведеться єдине, що ви можете зробити — заборонити echo запити та/або встановити firewall. Тоді зловмисникові буде відправлятися повідомлення про те, що порт недоступний і інформацію про вашої мережі він отримає не всю.

3)Визначення ОС і запущених процесів.

а)Я віддаю перевагу програму з www.psionic.com/abucus/portsentry (як ви вже здогадалися, програма називається PortSentry). Вона допомагає розпізнавати наявність підключення до якогось порту.

Власне, я вже згадував про те, що необхідно якомога більше відкривати портів з незапущенными на них службами(причому портів для різних операційних систем).

Так як дуже часто зловмисників хвилюють telnet і sendmail, то я опишу те, де зберігається інформація, яка видається при підключенні до вашого комп’ютера(версія служби). У файлі sendmail.cf в папці /etc/ необхідно змінити рядок smtpgreetingmessage. (це для sendmail, якщо хтось не здогадався). А для telnet — /etc/essue Там треба видалити всю інформацію, яку будуть показувати зловмисникові.

б) Для закриття можливості отримати інформацію, використовую некоректні пакети для запиту необхідно просто встановити firewall.

При закритті «пасиву» необхідно знову ж видавати неправдиву інформацію. Для /proc/sys/net/ipv4 параметра ip_default _ttl можна написати echo 1024 і вона буде видавати 1024 при запиті, а насправді все не так. Для перегляду інших параметрів дослідіть вихідні коди системи.

4)Постарайтеся уникати цієї NFS (не як нечисть, звичайно). Якщо все ж nfs вам необхідний для роботи, то забороніть підключення до порту 2049 для «не своїх». Бажано заборонити доступ до програм nfs, оскільки їх безпека залишає бажати кращого.

5)Буду небагатослівним. Треба встановити firewall і заблокувати доступ до портів з snmp для чужих комп’ютерів. Ну і, природно, використовувати як можна більш нові версії smtp.

6)Закрийте всі непотрібні порти використовуючи firewall, вимкніть можливість звертатися до portmaper з допомогою все того ж firewall.