Як я можу визначити, чи використовується пошкоджений файл зображення для знімання кредитних карт?


17

Я працюю з сайтом, який, на мою думку, був зламаний для збору даних кредитної картки клієнта, але я не можу бути впевненим.

Я не знайшов жодного підозрілого коду в загальних місцях, про які я бачив, запропонований у кількох статтях.

Я зробив знайти підозрілий «зламаний» файл зображення:

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

Я змінив розширення файлу і відкрив її, але це лише стіна зашифрованого тексту з JPEG-1.1розсіяним.

Як я можу зрозуміти, чи порушено сайт?

Я підтвердив, що патч застосовано, але злом міг статися до виправлення.

РЕДАКТУВАННЯ: Повернута версія 1.7.0.2

Відповіді:


21

Конкретну відповідь на ваше запитання див. 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 / admin - це означає, що зміна cron.shфайлу дозволить віддалено виконувати код на cron / admin, не потребуючи доступу до нього. Згортання процесу з потрібним користувачем у підробці може перейти ще трохи до блокування процесу.

Там це занадто багато коди для мене пост, але є сценарій тут . Він специфічний для 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/

Але ці нові статті не посилаються на новий подвиг, вони просто констатують, як хакери використовують історичні подвиги (або будь-який інший вектор нападу), щоб мати змогу захопити інформацію про власника картки.


Джерела


4
Спасибі! Це дивовижна запис і багато дуже корисної інформації.
Пьотр Камінський

9

Я додаю ще одну відповідь лише тому, що моя інша насправді не відповіла на питання - і це, звичайно, більше не потрібно!

Як я можу перевірити, чи зображення містить інформацію про КС

Зрештою, ви не можете. Іноді є індикатори, які дозволяють виділити це,

Напр.

  • Великий розмір файлу
  • Наявність простого тексту у файлі
  • Неправильні заголовки зображень

Але може бути особливо важко перетравити вміст двійкових файлів, щоб визначити вміст, якщо вміст не є просто простим текстом.

Найбільш поширеним експлуатують я бачив не передбачає написання простих текстових даних в файл з .jpg|png|gif|etcрозширенням, вони , як правило , пов'язані з якої - то кодування / шифрування , щоб заплутати дані (наприклад, base64чи й mcryptт.д.). Це означає, що простий греп не працюватиме.

Ви могли (і це аж ніяк не вичерпно) ...

Знайдіть аномально великі файли

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-релізи (дратівливо) не виправлені, тому виконання основного розряду призведе до появи змін. Щоб уникнути цього, нанесіть патчі на щойно завантажене чисте джерело, а потім знову відмежуйте після.


2
Враховуючи обидві ваші відповіді, ця, здається, краще відповідає питанням.
pspahn

Бен, я вступив, перш ніж я міг закінчити своє виправдання запропонованої мною редакції ... не головне, лише те, що PCI - це галузевий стандарт, а не регламент чи закон, ухвалений урядовим органом, принаймні не в США: en.wikipedia.org/wiki/…
Брайан 'BJ' Hoffpauir Jr.

1
Я просто використовував "регулювання" в контексті взаємозамінності з "правилом" (не законом)
Бен Лессані - Сонассі

Вдячний за відмінність, і це може бути більше засноване на локалі, ніж я спочатку зрозумів. За словами мого тата, адвоката та сестри декана юридичної школи (я ненавиджу сперечатися з ними, як ви могли здогадатися) тут, у США, навіть правило слова має специфічне значення, коли воно передує конкретному модифікатору, наприклад, промисловому правилу, як у цьому справа проти Агентства (де урядове відомство, як EPA, може видати детальні вимоги, які є юридично обов'язковими, як закон, але не приймаються як регламент палат Конгресу сенату або палати представників). Не маю на увазі бути педантичним, просто ділитися :)
Брайан 'BJ' Хофпаур-молодший,

3

Чудовий пост, але, на жаль, не всі речі створюються рівними.

Дозволи файлів

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

  • обмежені снаряди
  • / home як root: root 700
  • Облікові записи користувача з umask 007.
  • Програми веб-сервера, що змінюються UID
  • І UID, на який він змінився, є власником цього облікового запису.

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

Це не дуже змінилося, і всі програмні пакети, які налаштовані на спільний хостинг (CPanel, DirectAdmin, Plex), використовують ці принципи. Це означає, що головна точка входу (веб-сервер та / або інтерпретатор сценаріїв) може записувати в будь-який файл облікового запису, роблячи права доступу до файлів марними.

Ніякого ЦК не красти, якщо у вас його немає

Повідомте свого постачальника платежів за CC, якщо дані CC насправді надсилаються на ваш сервер, і якщо так, якщо вони надсилаються незашифрованими незашифрованими. У цей час JavaScript є досить потужним, і там надаються постачальники платіжних послуг, які використовують механізм JavScript вашого клієнта для шифрування конфіденційної інформації перед передачею на сервер. Хоча для цього збирача інформації можливо отримати ключ сеансу, а також зашифровані дані (і, таким чином, змогти розшифрувати його), збирачеві менш цікаво, оскільки зібрані дані більше, а AI бота - набагато складніший .

Виявлення модифікації

Понад 15 років Unix, і це все ще викликає ностальгічну посмішку на моє обличчя, коли я бачу перевтілення TripWire . Зроби це гарним інструментом і для цього. Якщо порівняти з відомою хорошою версією, дещо менше, оскільки вона не враховує доповнень і знову є хорошим інструментом, оскільки модифікації локальних сайтів частіші, ніж незаймані.

Завантажувач

Перенести завантажувач за межі кореня документа так само просто, як і встановити певну форму аутентифікації HTTP. Потім поверніть його лише тоді, коли ним користуєтесь. Якщо це не є практичним, я вважаю за краще блокувати його на основі віддаленої адреси, а не іншого шару користувача / пароля, особливо тих, які надсилають паролі у простому тексті.

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

Брандмауер веб-додатків може запобігти безліч проблем, вже на стадії сканування атаки. На жаль, це дорогі чорні скриньки, але існують деякі альтернативи:

  1. Той, що був супутником поїздки ще в той день, - Snort - тут прямо з комерційними WAF. У нього крута крива навчання, але може досить добре виявити аномалії та відомі погані малюнки.
  2. Naxsi для nginx та mod_security для Apache заперечують запити, що містять підписи нотатки. Naxsi трохи більш загальний і відмовляє в обслуговуванні "речей, які тут не належать", як прихований SQL - на відміну від частини відомого біта SQL.
  3. Fail2ban / sshguard сидять між двома попередніми. Вони можуть обробляти журнали різних типів і мати настроювані дії. Мінус у тому, що вони працюють після факту. Логіни зазвичай потрапляють у журнал після завершення дії, а крім того, інструменти мають поріг для боротьби з помилковими позитивами. Цього може бути достатньо для отримання зловмисника, якщо він отримав точну інформацію на більш ранніх етапах.

Я думаю, що ми висвітлювали багато речей, але дозвольте мені закінчитися з моїм вихованцем:


ЗАСТАНОВИТИ ВИКОРИСТАННЯ FTP


Там. Я це сказав. І ось вам: https://wiki.filezilla-project.org/Howto


1

Там немає нічого певного про це новому трюку Бен Marks вчора відправив вони розслідують це питання і є цей стаття теж.

Найкращий підхід, який ви можете спробувати, - це увійти через SSH та здійснити пошук у всіх файлах, які ви маєте для певного рядка, щось подібне

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

з кореневої папки Magento, і якщо у вас є відповідність, вручну рубайте файл, щоб побачити, що відбувається. Те саме з іншими рядками, такими як "END PUBLIC KEY", наприклад.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.