В данной заметке представлена попытка сбора информации о взломе и анализ проникновения.
Захожу намедни в блог и вижу заголовок "Hacked by AYYILDIZ TEAM" со следующим содержимым:
Анамнез
За день до происшествия сменил пароль от админки блога на более слабый и создал одноименного системного пользователя с тем же паролем, чтобы дать доступ веб разработчику до FTP и админки. Так же, в этот же день заходил на сервер по SSH уже со слабым паролем и с чужого айфона при помощи программы zatelnet, пароль набирал сам. Под рутом залогиниться не смог, т.к. не смог набрать сложный пароль на клавиатуре смартфона. Логи по этим входам присутствуют.
Анализ
Судя по логам, в систему взломщики так и не попали, как не заходили и на FTP, хотя могли. И да, зайти и почистить логи тоже не могли, т.к. sudo не стоит, пароль у root сложный и последнее ядро без данной уязвимости.
Права на файлы и каталоги сайта, на момент взлома, были такими:
cd /var/www/site ls -l -rw-rw-rw- 1 www-data admin 4897 Июн 30 13:41 wp-config.php ... drwxr-xr-x 9 www-data admin 4096 Июн 28 00:34 wp-admin ...
Итак, взломщики зашли только в админку сайта, к которой либо подобрали, либо знали пароль. Однако, подбирать было бы проблематично, т.к. стоит плагин Captcha (free)
В phpmyadmin
заходов не было, опять же судя по логам.
Apache access.log
Злоумышленник зашел на страницу авторизации:
216.185.38.178 - - [29/Jun/2014:15:17:39 +0700] "GET /wp-login.php HTTP/1.1" 200 3911 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
В течении минуты сделал 34 запроса на авторизацию (видимо в обход капчи):
216.185.38.178 - - [29/Jun/2014:15:17:40 +0700] "POST /wp-login.php HTTP/1.1" 200 4234 "https://notessysadmin.com/wp-login.php" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
и затем получает доступ к админке:
216.185.38.178 - - [29/Jun/2014:15:18:22 +0700] "POST /wp-login.php HTTP/1.1" 302 919 "https://notessysadmin.com/wp-login.php" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" 216.185.38.178 - - [29/Jun/2014:15:18:22 +0700] "GET /wp-admin/ HTTP/1.1" 200 94736 "-" "Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"
Уже через 30 секунд производится вход с другого IP:
216.185.45.88 - - [29/Jun/2014:15:18:45 +0700] "GET /wp-login.php HTTP/1.1" 200 2033 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/33.1.0.0 Chrome/33.0.1750.152 Safari/537.36" 216.185.45.88 - - [29/Jun/2014:15:18:46 +0700] "GET /wp-includes/css/buttons.min.css?ver=3.9.1 HTTP/1.1" 200 1539 "https://notessysadmin.com/wp-login.php" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/33.1.0.0 Chrome/33.0.1750.152 Safari/537.36"
Затем происходит следующее:
access.log
:
216.185.45.88 - - [29/Jun/2014:15:36:03 +0700] "POST /wp-content/themes/snc-mono/configweb/config.root HTTP/1.1" 200 750 "https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Dragon/33.1.0.0 Chrome/33.0.1750.152 Safari/537.36"
error.log
:
[Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: Removing leading `/' from member names, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: /etc/passwd.tar: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: root.txt: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: root1.txt: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: root2.txt: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root ... [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: daemon.txt: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: daemon1.txt: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root ... [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: myuser.txt: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root [Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: myuser1.txt: Cannot stat: No such file or directory, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root ...
Предположу, что подбирали пароль к системным пользователям. Видно что подставляются файлы по имени пользователей системы, по списку из /etc/passwd
, т.е. не просто какому-нибудь дефолтно-линуксовому, а именно из моей системы, т.к. myuser
это специфическое имя, которое нельзя просто угадать. Получается, каким-то образом был прочитан мой /etc/passwd
, хотя, повторяюсь, входа на FTP и по SSH не было.
Закончилось это неудачей:
[Sun Jun 29 15:36:04 2014] [error] [client 216.185.45.88] tar: Exiting with failure status due to previous errors, referer: https://notessysadmin.com/wp-content/themes/snc-mono/configweb/config.root
Помимо всего этого злоумышленник пытался отправить письма на свой почтовый ящик средствами MTA системы. Не буду вдаваться в подробности настройки, главное что письмо не ушло. Кусок /var/mail/www-data
:
From MAILER-DAEMON Sun Jun 29 15:37:27 2014 Return-path: <> Envelope-to: [email protected] Delivery-date: Sun, 29 Jun 2014 15:37:27 +0700 Received: from daemon-mta-name by notessysadmin.com with local (MTA NAME) id 1X1Ac3-0007li-FR for [email protected]; Sun, 29 Jun 2014 15:37:27 +0700 X-Failed-Recipients: [email protected] Auto-Submitted: auto-replied From: Mail Delivery System To: [email protected] Subject: Mail delivery failed: returning message to sender Message-Id: Date: Sun, 29 Jun 2014 15:37:27 +0700 This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: [email protected] Mailing to remote domains not supported ------ This is a copy of the message, including all the headers. ------ Return-path: Received: from www-data by notessysadmin.com with local (MTA NAME) (envelope-from ) id 1X1Ac3-0007le-Bc for [email protected]; Sun, 29 Jun 2014 15:37:27 +0700 To: [email protected] Subject: 91.226.13.141 X-PHP-Originating-Script: 33:wpmass.php Message-Id: From: www-data Date: Sun, 29 Jun 2014 15:37:27 +0700 notessysadmin.com/wp-content/themes/snc-mono/wpmass.php?do=pass_change
и
From MAILER-DAEMON Sun Jun 29 15:37:40 2014 Return-path: <> Envelope-to: [email protected] Delivery-date: Sun, 29 Jun 2014 15:37:40 +0700 Received: from daemon-mta-name by notessysadmin.com with local (MTA NAME) id 1X1AcG-0007m2-CG for [email protected]; Sun, 29 Jun 2014 15:37:40 +0700 X-Failed-Recipients: [email protected] Auto-Submitted: auto-replied From: Mail Delivery System To: [email protected] Subject: Mail delivery failed: returning message to sender Message-Id: Date: Sun, 29 Jun 2014 15:37:40 +0700 This message was created automatically by mail delivery software. A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: [email protected] Mailing to remote domains not supported ------ This is a copy of the message, including all the headers. ------ Return-path: Received: from www-data by notessysadmin.com with local (MTA NAME) (envelope-from ) id 1X1AcG-0007ly-7Y for [email protected]; Sun, 29 Jun 2014 15:37:40 +0700 To: [email protected] Subject: Server X-PHP-Originating-Script: 33:header.php(2) : eval()'d code Message-Id: From: www-data Date: Sun, 29 Jun 2014 15:37:40 +0700 Dosya Yolu : /var/www/site Server Admin : [email protected] Server isletim sistemi : Apache (Distrib) Shell Link : https://notessysadmin.com/wp-content/themes/snc-mono/header.php Avlanan Site : notessysadmin.com
Вообще, на сайте изменилось только три вещи, которые смог обнаружить:
- Изменена тема с iconic-one на snc-mono. Из
wp-content/themes/snc-mono
удалены все файлы кромеindex.php
, сам файл изменен не был. Т.е. все скрипты которыми пользовался злоумышленник были удалены - Полностью изменен WPшный
index.php
, который и отобразился при посещении сайта - Изменен пароль администратора сайта
Вместо вывода
Здоровая прагматичность подсказывает что пароль все-таки был угнан с одного из устройств описанных выше, а не подобран. Но проверить это предположение возможности нет. Косвенно на это указывает всего три десятков запросов и капча. Так же, проанализировав логи предыдущих месяцев выяснилось что подбора пароля от админки не было. Таким образом данное стечение обстоятельств и троян в какой-то из систем пользователей сыграли решающую роль.
По причине того, что автор не является специалистом в web разработке и безопасности, осталось несколько вопросов:
- Как злоумышленникам удалось прочитать системный
/etc/passwd
- Как обошли капчу. И если это можно сделать настолько легко, то встает вопрос о ее нужности
- Каким образом отредактировали
/var/www/site/index.php
баз доступа к файлу - Почему они не попытались войти в систему или FTP по логину\паролю от админки
Послесловие
Забавно, после взлома появилось несколько рефералов. Среди них фигурируют сайты facebook и golgeler.net.
На втором размещаются дефэйснутые сайты с именами команд или одиночек сделавших это. Проверил на наличие своего домена на данном ресурсе - не оказалось, что достаточно странно, ведь это площадка для мерянья письками выяснения кто из них круче.
На facebook трудно что-то найти, поэтому пошел в гугл:
Видно, что в кэше упоминания есть и оно принадлежит группе AYYILDIZ TEAM, в которой, помимо прочего, оставляют ссылки на хакнутые сайты и скрины, подтверждающие это. Что, видимо, произошло и со мной. Прошерстил все записи группы, начиная со дня взлома, но упоминания о моем домене нет, что, опять же, странно. Может не успели зафиксировать факт дефейса и хак не является засчитанным? Поэтому ссылки удалили. И, как мне кажется, если бы письмо дошло, то ссылка таки светилась бы на этих ресурсах. Быть может это и есть фиксация дефейса? В любом случае, блога данного исследования нет на обоих ресурсах.
UPD:
Знающие люди подсказали что скорее всего это была PHP инъекция, но к сожалению я в этом не шарю.
UPD2: спустя какое-то время, понимаю, что это была череда независимых условий, в которых пароль оказался слабым и его смогли подобрать по словарю.
А возможно хлор мышлением иметь доступ к моему устройству? И вообще может меня прослушивают ))
Не исключено.
Если у вас нет паранойи, это не значит что за вами не следят.