我如何知道信用卡图像被盗用了损坏的图像文件?


17

我正在与一个据信遭到黑客入侵以收集客户信用卡数据的网站合作,但我不能确定。

在公共的地方,我在几篇文章见过建议发现任何可疑代码。

的确在以下位置找到了可疑的“损坏”图像文件:

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

我更改了文件扩展名并打开了它,但这只是一堵JPEG-1.1散乱的加密文本墙。

如何判断该网站是否遭到入侵?

我已经确认已应用补丁,但是黑客可能在补丁之前就已发生。

编辑:受影响的版本是1.7.0.2

Answers:


21

有关您问题的具体答案,请参见/magento//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用于Web服务器进程的用户不是同一用户,否则,您实际上将提供对Web服务器的完全写访问权限(减轻任何好处)。

锁定您的管理员/下载者访问权限

在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上远程执行代码,而无需访问它。用合适的用户在fakechroot中包装该过程可以进一步锁定该过程。

还有我张贴了太多的代码,但是有一个脚本这里。它特定于MageStack,但可以调整以用于不太优雅的服务器配置:)

审核,审核,审核

就登录和使用Linux而言,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
谢谢!这是惊人的文章和许多非常有用的信息。
Piotr Kaminski 2015年

9

我要添加另一个答案只是因为我的另一个人实际上并没有回答问题-而且肯定不需要再回答该问题了!

如何验证图像是否包含抄送信息

最终,你不能。有时会有一些指标使其脱颖而出,

例如。

  • 大档案
  • 文件中存在纯文本
  • 图片标题不正确

但是,如果内容不只是纯文本格式,则消化二进制文件的内容以确定内容可能特别困难。

最常见的攻击我见过不涉及纯文本数据写入一个文件.jpg|png|gif|etc扩展名,他们通常涉及某种编码/加密混淆的数据(例如,base64mcrypt等)。这意味着一个简单的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版本,因此进行核心差异将导致显示更改。为避免这种情况,请将补丁程序应用于新下载的干净源,然后再进行比较。


2
给定您的两个答案,这个答案似乎与问题更相关。
pspahn 2015年

Ben,在我完成我建议的编辑工作之前,我按回车了……不是一件大事,只是PCI是一种行业标准,而不是政府机构通过的法规或法律,至少在美国不是这样:en.wikipedia.org/wiki/...
布莱恩'BJ' Hoffpauir小

1
我只是在与“规则”(不是法律)互换使用的情况下使用“法规”
Ben Lessani-Sonassi 2015年

意识到这种区别,它可能比我最初意识到的更多基于语言环境。根据我父亲的说法,在美国,律师和姐姐是法学院院长(我讨厌与他们争吵),即使在以特定修饰语开头的“规则”一词也具有特定含义,例如“行业规则”案例与代理机构规则(在这种情况下,像EPA这样的政府机构可以发布具有法律约束力的详细要求,例如法律,但未由我们的参议院或众议院国会通过作为法规)。不意味着要成为书呆子,只想分享一下:)
布莱恩·“ BJ”霍夫鲍尔Jr.

3

很棒的职位,但不幸的是,并非所有事物都是平等的。

档案权限

当共享托管变得流行时,人们被认为更重要的是不允许人们在同一服务器上查看其他人的内容。在FreeBSD监狱问世之前,这意味着:

  • 受限炮弹
  • / home作为root:root 700
  • 使用umask 007的用户帐户。
  • UID更改Web服务器软件
  • 并且它更改为的UID是该帐户的所有者。

这允许帐户所有者修改(然后)HTML文件,同时,Web服务器进程和帐户所有者都无法访问同一台计算机上的其他文件。

这并没有太大改变,针对共享托管量身定制的软件包(CPanel,DirectAdmin,Plex)都使用了这些原则。这意味着主要入口点(Web服务器和/或脚本解释器)可以写入帐户中的任何文件,从而使文件权限无用。

如果您没有CC,可以不偷

向CC付款提供商通知CC数据是否确实发送到您的服务器,如果是,则以未加密的形式发送给服务器。如今,JavaScript非常强大,并且有付款服务提供商,它们使用客户的JavScript引擎对敏感信息进行加密,然后再传输到服务器。尽管此信息收集器有可能获取会话密钥以及加密的数据(从而能够对其进行解密),但对于收集器来说,它的兴趣就不那么大了,因为收集到的数据更大且机器人的AI更加复杂。

修改检测

超过15年的Unix,当我看到TripWire的转世时,它仍然带给我怀旧的微笑。Git也是一个很好的工具。与已知的好的版本相比,要少一些,因为它没有考虑添加,因此在这里再次git是一个好的工具,因为站点本地修改比原始安装更频繁。

下载器

将downloeader移到文档根目录之外就像安装某种形式的HTTP身份验证一样容易。然后仅在使用时放回去。如果那不切实际,那么我更喜欢根据远程地址而不是另一个用户/密码层将其锁定,尤其是那些以纯文本形式发送密码的用户/密码层。

WAF和替代品

Web应用程序防火墙可以防止很多问题,而这些问题已经处于攻击的扫描阶段。不幸的是,这些都是昂贵的黑匣子,但存在一些替代方法:

  1. 那是在一天绊的同伴回来的一个- Snort的 -is商业WAF的权利在那里。它具有陡峭的学习曲线,但是可以很好地检测出异常和已知的不良现象。
  2. Nginx的Naxsi和Apache的mod_security拒绝包含已知攻击特征的请求。Naxsi更具通用性,并且拒绝为“本该不属于这里的事物”服务,例如模糊的SQL,这与一部分已知的SQL相反。
  3. Fail2ban / sshguard位于前两个之间。他们可以处理不同类型的日志并具有可自定义的操作。不利的一面是他们在事后才工作。日志行通常会在操作完成后命中日志,最重要的是,这些工具具有防止误报的阈值。如果攻击者在较早的阶段获得了准确的信息,则足以使攻击者获得访问权限。

我认为我们涵盖了很多内容,但让我以petpeeve结尾:


停止使用FTP


那里。我说了。在这里开始:https : //wiki.filezilla-project.org/Howto


1

没有什么特定的这个新的黑客,本·马克斯昨日公布,他们正在调查这一问题,有这样的文章了。

您可以尝试的最佳方法是通过SSH登录,然后在所有文件中搜索某个字符串,例如

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

从您的Magento根文件夹中获取,如果您找到匹配项,请手动将该文件添加到文件中以查看发生了什么。与其他字符串(例如“ END PUBLIC KEY”)相同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.