Назад | Перейти на главную страницу

Коллекция шаблонов grep, связанных с файлом журнала Shell Shock

Есть много тем об уязвимости shellshock bash, но нет какой-либо коллекции шаблонов, которые мы могли бы "grep" найти ни в файлах webservers access.log, ни в обычных журналах.

Уже открыто 6 CVE, связанных с контузией, каждая со своей уникальностью.

Существует Wiki-страница CVE, связанная с Shell Shock: https://en.wikipedia.org/wiki/Shellshock_(software_bug)

Вопрос: Может ли кто-нибудь подвести итог, что нужно "grep" в файлах журнала, чтобы проверить, был ли веб-сервер нацелен / использован с уязвимостью bash?

ПРИМЕРЫ:

В журнале доступа http-сервера (каталог может быть в другом месте, перечислено несколько. Также имя файла журнала доступа может отличаться, например: «* access.log»):

cd /var/log/apache2/
cd /var/log/httpd/
cd /var/www/logs/
cd /var/log/nginx/

zgrep 'bash' access*
zgrep "};" access*
zgrep "}\s*;" access*
zgrep "() {" access*
zgrep "wget" access*
zgrep "uname -a" access*

Из примера атак IP-адреса:

zgrep "187.0.222.86" access*
zgrep "209.126.230.72" access*
zgrep "217.14.242.115" access*
zgrep "218.216.190.234" access*
zgrep "54.251.83.67" access*
zgrep "67.227.0.77" access*
zgrep "74.201.85.77" access*
zgrep "78.60.1.101" access*
zgrep "89.207.135.125" access*

В обычных журналах (каталог может быть в другом месте):

cd /var/log/

zgrep 'bash' messages*
zgrep 'bash' syslog*

Если вы не хотите использовать grep для всех ... grep для "bash" - это самый общий способ.

Ссылки по теме:

Уязвимость, связанная с внедрением кода Bash через специально созданные переменные среды (CVE-2014-6271, CVE-2014-7169)

Устранение уязвимости shellshock (CVE-2014-6271 и CVE-2014-7169)

В будущем я обновлю шаблоны grep для IP-адреса злоумышленников

ОБНОВИТЬ: Вам следует использовать grep только с начала 24 сентября, поскольку уязвимость стала достоянием общественности только тогда. Поэтому поместите egrep после zgrep (этот синтаксис предназначен для access.logs), например:

egrep -i "24/Sep/2014|25/Sep/2014|26/Sep/2014|27/Sep/2014|28/Sep/2014|29/Sep/2014|30/Sep/2014|Oct/2014"

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

вот что я проверяю:

$ grep -e "() {" /var/log/nginx/*access.log

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

[Thu Sep 25 21:16:55 2014] [error] [client ::1] --2014-09-25 21:16:55--  http://fump.8ack.org/
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Resolving fump.8ack.org (fump.8ack.org)... 
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 46.4.8.254
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Reusing existing connection to fump.8ack.de:80.
[Thu Sep 25 21:16:55 2014] [error] [client ::1] HTTP request sent, awaiting response... 
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 200 OK
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Length: 1631 (1.6K) [text/html]
[Thu Sep 25 21:16:55 2014] [error] [client ::1] Saving to: `STDOUT'
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 
[Thu Sep 25 21:16:55 2014] [error] [client ::1]      0K .                                                     100% 8.27M=0s
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 
[Thu Sep 25 21:16:55 2014] [error] [client ::1] 2014-09-25 21:16:55 (8.27 MB/s) - written to stdout [1631/1631]