Мой новый блог

субота, 7 лютого 2009 р.

Скануєм по уму


Ця стаття не дасть практично ніякого досвіду, однак вона дійсно важлива для розуміння того, як все влаштовано. Адже без азов не можна в майбутньому написати щось дійсно хороше. Саме ця стаття розповідає, чому xspider корисний, але якщо він нічого не видає, то це не значить, що жертва Невразливий (як вважають 95% початківців зломщиків).
У статті описується саме безпека Linux-систем, так як Windows не зовсім призначений для "глибокої" роботи з мережею.
Отже, приступимо. Почнемо, як я вже казав, з азів. Тобто зі сканування мережі та отримання від неї всієї потрібної нас інформації. Думаю, що всім зрозуміло, як користуватися соц. інженерією. Я не буду заглиблюватися в цей недостойний людини метод і розповім Вам про справжніх сканування мережі.
1) Дуже рідко використовуються, та й мало допомагають бази Whois.
Root @ localhost $ whois foo.com
Domain name: ---
Registar: ---
Referall: bar.com
і т.д. Найбільш корисними рядками будуть registar і referall, т.к. при запиті Whois із зазначенням компанії реєстратора ми отримаємо найбільш повну інформацію. (Root @ localhost $ whois foo.com @ whois.bar.com). Раджу так само застосувати Whois відносно не тільки какого-то домену, але й за певним IP адресою. Саме це допоможе дізнатися такі тонкощі, як останнє оновлення сервера.
2) Ping, Traceroute, Host.
Про PING, мабуть, не треба розповідати. Багато інформації від нього не отримаєш, хоча він завжди під рукою.
Traceroute грунтується на відправленні UDP-пакетів з вказаним Max-Forwards і очікуванні ICMP-відповідей. Шлет пакети на порти в діапазоні від 33434 до 33523. Ми бачимо через які комп'ютери проходили пакети, можемо дізнатися більше про віддаленій машині. І навіть якщо вона не вразлива, то можна попробывать надалі протестувати на безпеку, наприклад, його провайдера.
Host. Головне - отримати якомога більше інформації. І це нам цілком може вдасться, якщо DNS створювалася не вручну.
а) При виклику команди Host з наступними параметрами можна домогтися результатів:
-HINFO вказує конфігурацію сервера, встановлене на нього ПЗ.
-ТХТ додаткова інформація про сервер.
(це далеко не всі параметри, проте саме вони потрібні при скануванні мережі).
б) Оскільки одна машина може працювати некоректно, то створюють вторинні DNS-сервера, які є "запасними". Проблема в тому, що хакер може поряд з адміністратором створити таку DNS. Якщо спочатку ввести host baz.ru, а потім host baz.ru name_of_server (де name_of_server - відповідь на ваш перший запит), то можна отримати список всіх хостів для даного сервера з їх IP.
3) Визначення ОС і запущених процесів.
Сканування портів.
а) Ось те головне, що необхідно при аналізі безпеки комп'ютера. Знаючи всі відкриті порти жертви можна підключатися до неї через різні проксі і дізнаватися, які саме версії програм встановлені на ньому (наприклад старий Sendmail). Так само відкриті порти найкраще дозволяють визначити ОС, однак не варто вірити у всі відкриті порти. Іноді відкривають порти для Windows, коли на сервері стоїть Linux, що вводить багатьох в сум'яття. Кожен порт краще перевірити на дійсну працездатність. Я віддаю перевагу сканувати віддалену машину з допомогою nmap (тим сканером, що був у Матриця 2). Всі параметри ви легко можете знайти в документації.
Треба зауважити, що інформація, яку буде передаватися на ваш комп'ютер при підключенні до комп'ютера жертви може бути підмінила адміністратором і визначити справжню версію ПЗ буде вже не так легко, тому сканування портів може бути недостатньо.
б) Необхідно формувати явно некоректні запити. Тоді відповідь сервера може допомогти з визначенням ОС. Для формування таких запитів я раджу використовувати nmap (і взагалі, nmap краще за інших програм такого роду в усьому, тому потрібно використовувати його як можна більше). Однак і формування запитів не дасть результату, якщо адміністратор поставив Firewall, а це він точно зробив. Однак з'явилося удосконалення попереднього методу. Полягає це вдосконалення в тому, що ми не посилаємо спеціальні запити на сервер, нам досить простого підключення до віддаленої машині. У кожної системи свої конфігурації з'єднання і роботи по протоколу TCP / IP: DF, Windows Size, TOS, TTL. (головні атрибути). Отримуючи їх ми можемо визначити встановлену на віддаленому комп'ютері систему. Якщо ви не вмієте дивитися властивості з'єднання, то зайдіть на сайт subterrain.net, де ви зможете завантажити потрібну програму.
4) Файлова система
Існує цікава можливість зібрати інформацію завдяки NFS, що дозволяє спільно використовувати файли машинам, заснований на Linux. При цьому будь-яка людина може (якщо це не заборонили) підключитися до віддаленої машині і змонтувати (підключити) жорсткий диск жертви до себе з правами користувача root. Якщо таке підключення і заборонили, то команду showmount (що вона робить, мабуть, здогадалися самі) - ймовірно немає. Треба зауважити, що часто необхідно використовувати цю команду з параметрами-а і-е, що покаже всі хости, на які змонтовані файли, а так само всі хости, яким це дозволено.
5) Протокол SNMP
Зупинятися докладно я на ньому не буду, так як він більше придатний для злому (а це тема іншої статті), ніж для збору інформації. Даний протокол дозволяє звертатися до різних мережних пристроїв. Головною проблемою його є те, що багато програм працюють тільки з однією з найбільш ранніх його версій, безпека якої залишає бажати кращого. Програми для роботи з SNMP широко поширені в інтернеті.
6) Протокол 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.

Немає коментарів:

Мой блог