Как я могу определить, используется ли поврежденный файл изображения для скимминга кредитной карты?


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

Я не нашел никакого подозрительного кода в общих местах, которые я видел в нескольких статьях.

Я нашел подозрительный "сломанный" файл изображения в:

/skin/adminhtml/default/default/images/db-tab-bottom-right-bg_bg.gif

Я изменил расширение файла и открыл ее, но это просто стена зашифрованного текста с разбросанными JPEG-1.1.

Как могу ли я определить, скомпрометирован ли сайт?

Я подтвердил, что патч был применен, но взлом мог произойти до патча.

ИЗМЕНИТЬ: Уязвимая версия 1.7.0.2

Author: 7ochem, 2015-06-30

4 answers

Конкретный ответ на ваш вопрос см. в разделе https://magento.stackexchange.com/a/72700/361

Предыстория

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

Оригинальная статья просто сказала (и я перефразирую),

Если бы хакер смог получить доступ к вашему Magento файлы, они могут получать информацию от вашего клиента

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


Не паникуйте... это не имеет ничего общего с Magento

С точки зрения сбора информации, в Magento нет ничего особенного, чем в любом другом веб-сайте/платформе. Если хакер получит доступ к вашим файлам, его игра фактически закончится - они смогут захватить любую информацию, которую они хотел.

Лучшее, что вы можете сделать (и, в конечном счете, минимум, что вы должны делать), - это поддерживать хорошую политику безопасности, которая соответствует стандартам безопасности PCI в индустрии обработки платежей, вы можете найти список здесь, https://www.pcisecuritystandards.org/documents/Prioritized_Approach_for_PCI_DSS_v3_.pdf


Укрепите свой магазин

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

Блокировка разрешений

Вы можете ограничить права доступа к корневому каталогу документа, разрешив запись только в основные каталоги (/var и /media)

Это то, что мы делаем по умолчанию в Magestack,

echo -n "Fixing ownership"
chown -R $SSH_USER:$WEB_GROUP $INSTALL_PATH && echo " ... OK" || echo " ... ERROR"
INSTALL_PATH="/path/to/public_html"
chmod 750 $INSTALL_PATH
find $INSTALL_PATH -type d ! -perm 750 -exec chmod 750 {} \; && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing file permissions"
find $INSTALL_PATH -type f ! -perm 740 -exec chmod 740 {} \; && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing cron permissions"
find $INSTALL_PATH/*/cron.sh -type f ! -perm 750 -exec chmod 750 {} \; && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing media/var file permissions"
chmod -R 760 $INSTALL_PATH/*/media $INSTALL_PATH/*/var && echo " ... OK" || echo " ... ERROR"
echo -n "Fixing media/var directory permissions"
find $INSTALL_PATH/*/media $INSTALL_PATH/*/var -type d ! -perm 770 -exec chmod 770 {} \; && echo " ... OK" || echo " ... ERROR"

Отрегулируйте INSTALL_PATH,SSH_USER,WEB_GROUP в соответствии с требованиями. Важно то, что ваш SSH_USER не является тем же пользователем, которого PHP использует для процесса веб-сервера, в противном случае вы, по сути, предоставляли бы полный доступ на запись к веб-сервер (смягчающий любые преимущества).

Заблокируйте доступ администратора/загрузчика

В MageStack вы бы установили это в ___general/x.conf

set $magestack_protect_admin true;
set $magestack_protect_downloader true;

В Nginx вы могли бы использовать это,

location ~* ^/(index.php/)?admin{
  satisfy any;

  allow x.x.x.x;

  auth_basic "Login";
  auth_basic_user_file /microcloud/data/domains/x/domains/x/___general/.htpasswd;

  deny all;

  location ~* \.(php) {
    include fastcgi_params;
  }
  try_files $uri $uri/ /admin/index.php ;
}

Здесь есть немного больше документации о том, как подготовить файл .htpasswd

Завершите процесс cron.sh

Я сталкивался с другими хостинг-провайдерами, использующими выделенные компьютеры для использования cron/администратором, что означает, что изменение файла cron.sh позволит использовать удаленный код выполнение на cron/admin без необходимости доступа к нему. Завершение процесса с нужным пользователем в fakechroot может пойти еще дальше, чтобы заблокировать процесс.

Для меня слишком много кода для публикации, но здесь есть скрипт . Он специфичен для MageStack, но может быть скорректирован для использования в менее элегантных конфигурациях серверов:)

Аудит, аудит, аудит

Linux является фантастическим с точки зрения ведения журнала и подключения к нему, что даст вам полное представление о том, что делает ваш сервер.

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

/microcloud/logs_ro
|-dh[0-9]+
|---access-YYYY-MM-DD.log.gz
|---backup-YYYY-MM-DD.log.gz
|---magescan-YYYY-MM-DD.log.gz
|---php-differential-YYYY-MM-DD.log.gz
|-acc[0-9]+
|---access-YYYY-MM-DD.log.gz

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

Например. Если ваши резервные копии доступны локально, вы можете сделать следующее. Это приведет к сухому запуску сравните два каталога и создайте список исправлений различий.

rsync -na /path/to/public_html/ /path/to/backup/public_html/ > change.log
grep -E '\.php$' change.log | while read FILE; do
  diff -wp /path/to/public_html/$FILE /path/to/backup/public_html/$FILE >> php-differential.log
done

Изменения PHP происходят настолько редко, что вы можете запланировать их выполнение ежедневно (или несколько раз в день) и уведомлять вас по электронной почте, если произойдет изменение файла PHP.


Вкратце

  • Используйте контроль версий, так проще отслеживать изменения
  • Простого наличия SSL-сертификата недостаточно, чтобы сделать ваш сайт безопасным
  • Не ждите, пока вас взломают, чтобы подумать о безопасности
  • Только потому, что ты перенаправление к поставщику платежного шлюза (против сбора информации) - это не означает, что вы можете избежать соответствия требованиям PCI, вам все равно необходимо соблюдать
  • Будьте активны, безопасны и тщательно проверяйте код модуля перед его установкой, ежедневно проверяйте файлы PHP, просматривайте журналы, проверяйте доступ по FTP/SSH, регулярно меняйте пароли

Ваши клиенты оказывают вам огромное доверие, когда передают всю свою личную информацию, и если вы предадите это доверие, не управляя безопасным бизнесом, вы потеряете их обычаи и все будущие обычаи.

Судебные расследования PCI невероятно дороги, отнимают много времени и в конечном итоге ставят под угрозу вашу способность когда-либо снова принимать платежи по картам. Никогда не позволяй ставить себя в такое положение!


Получить исправление

В последнее время в Magento была выпущена серия исправлений, которые исправляли дыры, в том числе некоторые, которые позволяли выполнять удаленный код. Вы можете принести их сюда, https://www.magentocommerce.com/products/downloads/magento/

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


Источники

 21
Author: Ben Lessani - Sonassi, 2020-06-15 08:30:17

Я добавляю еще один ответ только потому, что мой другой на самом деле не ответил на вопрос - и это, конечно, больше не нужно!

Как я могу проверить, содержит ли изображение информацию о CC

В конечном счете, вы не можете. Иногда есть индикаторы, которые выделяют его,

Например.

  • Большой размер файла
  • Наличие обычного текста в файле
  • Неправильные заголовки изображений

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

Наиболее распространенный эксплойт, который я видел, не включает запись обычных текстовых данных в файл с расширением .jpg|png|gif|etc, обычно они включают в себя какое-то кодирование/шифрование для запутывания данных (например, base64 или mcrypt и т. Д.). Это означает, что простой grep не будет работать.

Вы могли бы (и это ни в коем случае не является исчерпывающим)...

Поиск файлов аномально большого размера

find \
/path/to/public_html/skin \
/path/to/public_html/media \
-type f -size +20M 2>/dev/null

Найти файлы, соответствующие регулярному выражению CC

grep -lE '([0-9]+\-){3}[0-9]{4}|[0-9]{16}' \
/path/to/public_html/skin \
/path/to/public_html/media 2>/dev/null

Проверьте, являются ли файлы изображений действительными

find \
/path/to/public_html/skin \
/path/to/public_html/media -type f \
-regextype posix-egrep -regex '.*\.(jpg|gif|png|jpeg)' |\
xargs identify 1>/dev/null

Или

find \
/path/to/public_html/skin \
 -name '*' -exec file {} \; | grep -v -o -P '^.+: \w+ image'

Как я могу проверить PHP-файлы в моей установке, чтобы узнать, были ли они изменены

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

Процесс действительно легко,

Например. Для версии Magento 1.7.0.2

wget sys.sonassi.com/mage-install.sh -O mage-install.sh
bash mage-install.sh -d -r 1.7.0.2
tar xvfz latest-magento.tar.gz
diff -w --brief -r magento-ce-*/app/code/core app/code/core
diff -w --brief -r magento-ce-*/lib lib

Имейте в виду, что более старые версии Magento (досадно) не исправлены, поэтому изменение ядра приведет к отображению изменений. Чтобы избежать этого, примените исправления к только что загруженному чистому источнику, а затем снова измените его.

 9
Author: Ben Lessani - Sonassi, 2020-06-15 08:30:17

Отличный пост, но, к сожалению, не все вещи созданы равными.

Права доступа к файлам

Когда общий хостинг стал популярным, считалось более важным, чтобы людям не разрешалось просматривать контент других пользователей на том же сервере. До появления тюрем FreeBSD это означало:

  • ограниченные оболочки
  • /дом как корень: корень 700
  • Учетные записи пользователей с umask 007.
  • Программное обеспечение веб-сервера, изменяющее UID
  • И идентификатор, на который он изменился, является владелец этой учетной записи.

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

Это не сильно изменилось, и программные пакеты, адаптированные к совместному хостингу (cPanel, DirectAdmin, Plex), все используют эти принципы. Это означает, что основная точка входа (веб-сервер и/или интерпретатор сценариев) может записывать данные в любой файл учетной записи, что делает права доступа к файлам бесполезными.

Нет CC, чтобы украсть, если у вас его нет

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

Обнаружение изменений

Более 15 лет unix, и это все еще вызывает ностальгическую улыбку на моем лице, когда я вижу реинкарнации Tripwire. Гит, это тоже хороший инструмент для этого. По сравнению с известной хорошей версией, несколько меньше, так как она не учитывает дополнения и снова дает хорошую инструмент здесь, так как локальные модификации сайта происходят чаще, чем первоначальные установки.

Загрузчик

Переместить загрузчик за пределы корневого каталога документа так же просто, как установить некоторую форму аутентификации HTTP. Затем кладите его обратно только тогда, когда вы его используете. Если это непрактично, то я предпочитаю блокировать его на основе удаленного адреса, а не другого уровня пользователя/пароля, особенно тех, которые отправляют пароли в виде обычного текста.

WAF и альтернативы

А Брандмауэр веб-приложений может предотвратить множество проблем уже на стадии сканирования атаки. К сожалению, это дорогие черные ящики, но существуют некоторые альтернативы:

  1. Тот, который был компаньоном tripwire в те дни - Фырканье - находится прямо там с коммерческими WAF. У него крутая кривая обучения, но он может довольно хорошо обнаруживать аномалии и известные плохие паттеры.
  2. Naxsi для nginx и mod_security для Apache отклоняют запросы, содержащие атаку know подписи. Naxsi немного более универсален и запрещает обслуживание "вещей, которым здесь не место", таких как скрытый SQL - в отличие от части известного фрагмента SQL.
  3. Fail2ban/sshguard находятся между двумя предыдущими. Они могут обрабатывать различные типы журналов и выполнять настраиваемые действия. Недостатком является то, что они работают постфактум. Строки журнала обычно попадают в журнал после завершения действия, и, кроме того, инструменты имеют порог для борьбы с ложными срабатываниями. Это может быть достаточно, чтобы злоумышленник получил доступ, если он получил точную информацию на более ранних этапах.

Я думаю, что мы рассмотрели много вопросов, но позвольте мне закончить моим петпивом:


ПРЕКРАТИТЕ ИСПОЛЬЗОВАТЬ FTP


Там. Я сказал это. И вот, пожалуйста: https://wiki .filezilla-project.org/Howto

 3
Author: Melvyn, 2015-06-30 23:37:12

Нет ничего определенного в этом новом взломе, Бен Маркс вчера опубликовал, что они расследуют проблему, и есть эта статья тоже.

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

find . | xargs grep 'db-tab-bottom-right-bg_bg.gif' -sl

Из корневой папки Magento, и если вы получите совпадение, вручную проверьте файл, чтобы увидеть, что происходит. То же самое с другими строками, такими как, например, "КОНЕЧНЫЙ ОТКРЫТЫЙ КЛЮЧ".

 1
Author: mbalparda, 2015-06-30 14:16:41