在一次TED演讲上有个人演示了一个和419骗子交互的游戏—— 当你回复垃圾邮件后会发生什么 ,于是我也有了和黑客打游击战的想法。
于是2月10日我将所有关于CryptoWall的信息都公布在一个网站上并将这个网站称为“CryptoWall跟踪”公之于众:
https://www.cryptowalltracker.org/
一般打开一个网站,你可以在网络上直接进行测试后判断“免费安全提醒”。大多数的测试(pentests)都是自动的;防止 CryptoWall代理或者 Zone-H ‘credits’. 。
不久前,我突然注意到有人开始戳CryptoWall跟踪网站,于是拉开了我搞乱的游戏。
首先我想显解释一下这个网站是如何设置。
网站本身是100%静态的。所有页面都呈现我的个人设备上,并通过SCP上传到服务器。之所以让这个网站完全是静态的缘故主要是为了安全性。而且这个网站也没有很多需要更新的内容;这还并不妨碍我在上面工作或者访客浏览使用。
而服务于静态内容的网络服务器在CloudFlare背后运行以过滤掉各种网络噪声,并通过CloudFlare缓存减少流量。这意味着我虽然放弃了对网站本身的一些“控制”,但是从另一方面来说这个网站永远在线。而且我已经在网站上启用了“永远在线”的功能,这代表了即使它原本的服务器要求下线CloudFlare也会永远缓存这个网站的最新版本。使用CloudFlare的另一个优点是请求量的减少。所有网络噪声和正常的扫描仪都会被CloudFlare以“有害”请求而自动过滤掉。还有一个减少后端服务器上请求量的方法是在网页上允许缓存所有内容。这样只有尚未缓存的新要求才能攻击我的服务器;而且通过这些过滤器后只剩下一些独特的请求。
CloudFlare在屏蔽所有的自动扫描工具方面的功能很不错,我通常用来查看那些频率限制较低的工具或者手动测试。
我在服务器上清理磁盘空间的时候,注意到访问日志的内存比平时要大很多。一般说来服务器的访问日志是很小的。可是只有当我清理CloudFlare网页上的缓存时发现存在一些原始请求。
其中出现了很多基于Python的扫描仪请求。我猜测是不是有人在搞小动作了。下面是攻击者在追踪网站上寻找管理界面的一些请求:
[01/Mar/2016:18:24:16 +0100] “GET /administrator/ HTTP/1.1” 404 0 “-” “python-requests/2.2.1 CPython/2.7.6 Linux/2.6.32-042stab092.1”
[01/Mar/2016:18:24:54 +0100] “GET /admin/ HTTP/1.1” 404 0 “-” “python-requests/2.2.1 CPython/2.7.6 Linux/2.6.32-042stab092.1”
[01/Mar/2016:18:25:37 +0100] “GET /adm/ HTTP/1.1” 404 0 “-” “python-requests/2.2.1 CPython/2.7.6 Linux/2.6.32-042stab092.1”
这持续了相当长一段时间,在第一次扫描的时候就扫出了80条请求。看着哪些请求缓慢地打印出来我就觉得是不是有人在手动操作或复制粘贴到浏览器中。我决定去看看,然后和他玩一个游戏
首先是检查ip地址,这貌似是一个Tor出口节点的IP地址。这家伙使用了Tor。
然后,仔细看了那些请求我基本上可以确定他在寻找基于某种列表的特定文件夹。他不断向同一个列表子文件夹发出请求,从而试图获取一系列的备份和配置文件。不过,这家伙攻击了“CSS”文件夹后我也可以获知什么文件被他看过了。基于这个文件列表,我决定开始我的比赛。
首先,我需要引诱那个攻击者离开跟踪网站。 CloudFlare将他所有的请求都缓存了,那些请求中还包含了一些攻击过滤器的。而且据我猜测他可能每次都是手打验证码,因为他每次请求之间存在延迟时间。
他很显然知道我在使用CloudFlare并向他提供了一个假的CloudFlare IP引他调查。而且我还把错误信息透露给他以转移目标。我在/data/test.php里写了这个:
通常在数据库由于某些原因连接服务器失败的时候,这个错误才会显示。在这种情况下,我放置了一个静态文本。我希望攻击者能打开我透露的服务器ip。
两天之后,我收到了一条关于文件的请求,没错,他搜索了/data/ folder.。不过单单一条我不能判别是不是和当时攻击CryptoWall追踪网站的黑客是同一个人。
大约一个小时后,攻击者发现了我种植的错误页面。用户代理显示仍然“python-requests/2.2.1 CPython/2.7.6 Linux/2.6.32-042stab092.1”,没错,现在能确认是同一个人了。
我在准备VPS的时候安装了一个绿色的NGINX并设置了静态文件和Python bottle 框架应用。这一次,我在/backup/下创建了一个诱饵文件。目录中包含了一些SQL文件,除了其中一个转储的,其他的都返回NGINX的禁止页:
现在我需要一个好看的sqldump。我找到了一个能生成假的MySQL转储网站(其中包括大量的其他文件格式)——generatedata.com。于是我生成了“cwt-mysql-settings-backup-01032016”文件放在目录列表中:
这是一份从数据库里自动备份的用户表。我生成了这些数据然后手动添加了两条密码散列条目。这是我用来做测试的’test123′和最后所用的’Crypt3d“的MD5哈希值。如果找到了散列并用那些在线MD5破解服务来破解,就会得到两个密码。我不知道黑客是否已经手动破解哈希值,但是他已经3天没有出现了。
他迟迟不出现让我一开始以为这家伙不玩儿了,因为我设置得非常简单。
我一开始设置MYSQL转储文件的想让那个黑客破解哈希值(无论在线或离线),并使用密码登录到假的管理跟踪网站面板。
我创建了一个bottle框架应用作为CryptoWall跟踪器的“管理面板”。可以在“/administration/login”请求获得:
真的,真的,真的很简单。可这个黑客居然找到了很久才找到备份文件夹(假的MYSQL转储)。
必须要使用从假的MYSQL转储中获取的账户“my”,用户名“yonathan’”和密码“Crypt3d”才能登录面板,然后看到两个页面之一。我还想看看黑客会不会暴露自己的真实IP地址。我从Tor项目网站 https://check.torproject.org/exit-addresses 那里装了所有已知的Tor出口节点,如果用了一个IP地址登录,就可以在列表中显示出来
我一开始还希望通过增加最后一句“你已经登出”让黑客以为“妈蛋!明明登录密码啥啥的还都是正确的,怎么还没登录!”如果他用了一个不是作为出口节点的IP就会出现这个页面:
internetpolice.us网站由我的好友所经营的。如果黑客最后进到这个页面,他就知道他被耍了。
最后,在这场游戏里,这个黑客一开始消失了很久,三天后他发现了SQL转储然后访问到面板、登录。。。3分钟后,P地址登录。然后一个乌克兰的IP地址显示登录到我的假面板。
谢谢你和我玩这个游戏,我的乌克兰朋友。虽然这不一定是他实际的IP地址,也可能是通过某种沙箱处理。
其实我认为我设置得一点也不好。这次设置很匆忙,存在很多漏洞。其中,VPS IP中的历史ip里就记录了我操作的过程。而这个黑客竟然按我的陷阱一步步走下去了,真是让人惊讶~
*原文地址: 0x3a ,FB小编江湖小吓翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)