【你敢“钓鱼”,我就能溯源你的产业链!】

  • A+
所属分类:安全闲碎
某天先森在别人邮箱里翻到一封钓鱼邮件,这让快蔫了的先森两眼放光,消沉的生活又有了动力。本文纪实了如何从一封钓鱼邮件,到结合攻击者的网络痕迹追踪溯源出相关人员,实现对此黑产领域的“窥探”,其中不乏涉及到邮件原文分析、反制钓鱼网站、取证相关日志、关联涉事人员和分析钓鱼背后的产业链等。希望本文能给各位网友在相关领域工作的开展带来一点启发,扩展应对此类网络犯罪的思路等。

【你敢“钓鱼”,我就能溯源你的产业链!】

溯源攻击者的流程图

发现并反制钓鱼网站
钓鱼内容的大意是因为客户长期不使用邮箱,服务商要将其收回,如果想要继续使用就得对账号信息进行验证。刚开始先森还真被唬住了,直到点开钓鱼网站才恍然大悟,请注意看那个高仿微软的邮箱,若不是前缀乱七八糟,以及钓鱼网址的太随意,怕是很多专业人员也会看走眼。

【你敢“钓鱼”,我就能溯源你的产业链!】

【你敢“钓鱼”,我就能溯源你的产业链!】

对此类网站我一般常用的思路:1.whois查询域名持有者、2.找真实IP确定服务器、3.常规漏洞(注入、XSS等)测试一遍、4.扫目录、5.锁定特征并反查等。由于网站域名是.TK并且使用了CloudFlare,无法查询到有用的信息,并且并未找到任何漏洞,就在快要无功而返之际发现某个目录下存在另一套钓鱼系统,打开后自动跳转到
sxxxxxxx.tk/xxxxx/app/login/index。

【你敢“钓鱼”,我就能溯源你的产业链!】

这URL风格很像是用ThinkPHP框架写的,于是从网上找了几个漏洞利用代码,通过测试还真存在RCE。但站长把整个目录的权限锁死并且启用了disable_function了,估计是被批量入侵搞怕了,如此看来站长应该不会修复漏洞?没办法只能先将后门代码写入到/tmp目录,然后将payload指向/tmp/,但奇葩的事情又来了,/tmp目录下的后门明明可以执行(例如执行phpinfo或者echo 123等基础代码)但就是无法控制网站…

【你敢“钓鱼”,我就能溯源你的产业链!】

跑去请教了两位朋友,大家都表示没遇到过这奇葩状况,于是只能继续修改payload。直到我把请求方式从http改成https,奇迹出现,网站终于被控制了。

【你敢“钓鱼”,我就能溯源你的产业链!】

下一步我们需要查找攻击者是如何保存受害者信息的,常见的记录方式有写入文本、写入数据库、邮件转发和上传FTP等。前期对网站测试时,成功将发信端代码爆出,102行写明是通过sendEmail函数来实现发信的。

【你敢“钓鱼”,我就能溯源你的产业链!】

那么发信端的配置信息在哪?通过对TP手册的查阅可知,配置信息一般是在application目录下,如数据库的配置信息database.php、定义公共函数common.php等。逐个文件查看后找到了发信的账号密码,看来攻击者常用的账号名为z****(代码中的“汪玉龙”与钓鱼网站没有任何关系,是攻击者盗用了人家的代码)。

【你敢“钓鱼”,我就能溯源你的产业链!】

当先森迫不及待地尝试登录其foxmail时,提示账号密码不正确,在朋友C的提醒下改用客户端收信。现在的邮箱为了保护用户安全,单独为客户端设置了密码,所以只能通过客户端来完成收取信件。

【你敢“钓鱼”,我就能溯源你的产业链!】

【你敢“钓鱼”,我就能溯源你的产业链!】


取证并分析相关日志
为了取证相关日志和更好的溯源攻击者的真实身份,需要对服务器上其他痕迹进行提取。当我尝试访问/www/wwwroot/的时候提示没有权限访问,除当前路径和/tmp目录,其他目录皆无访问权限,查看.user.ini后得知受到open_basedir的限制。

【你敢“钓鱼”,我就能溯源你的产业链!】

查阅相关资料发现是可以绕过的。秉承着拿来主义,将exploit代码直接插到后门里即可绕过限制并以当前www-data权限访问其他文件。由于服务器内核较新及disable_function的限制,并未进一步提权。

【你敢“钓鱼”,我就能溯源你的产业链!】

网站服务器是通过宝塔面板搭建的,所以我们需要围绕着宝塔面板展开工作。此前宝塔也存在一个较为严重的安全问题,但是无奈攻击者使用的是最新版。好在虽然不能获取完全的访问权但这并不影响我们对攻击者痕迹的取证和溯源分析:
1.宝塔面板相关目录下的大部分文件是允许读取的;
2.Recycle_bin类似windows的回收站,临时保存了用户通过面板删除的所有文件;
3.Backup下的data目录存放了数据库的备份文件、file_history目录存放了变动的文件等
4.Server下为各种应用服务器的安装和配置目录;
5.wwwlogs记录了网站的访问日志,其中access_log为访客通过IP访问的、xxxx.tk-access_log则是鱼站的访问日志;
6.还可以借助ThinkPHP框架下的debug日志,即通过获取/Runtime/Logs/202008/xx.log来分析访问网站的详细情况;
7.Linux服务器的登录日志,如lastlog、wtmp等。

【你敢“钓鱼”,我就能溯源你的产业链!】

通过上述思路,获知了攻击者的这些信息:
账号邮箱:z****@foxmail.com(发信账号)、3*******[email protected](收信账号)、z****@gmail.com(收信账号)
服务器登录IP:183.**.***.201(江苏省南京市 移动)。
宝塔面板登录IP:172.**.***.83(日本东京)、149.***.**.195(香港特别行政区 阿里云)、47.***.**.209(香港特别行政区 阿里云)等
由于攻击者使用代理服务器访问宝塔面板,所以对于上述无论是服务器的登录IP还是面板的使用IP,先森都持有怀疑态度的,于是对账号开始了初步的社工。在百度上检索其常用的用户名z****,很幸运找到一个博客名完全匹配的人,通过对其发布的文章的仔细阅读,在某篇文章中找到了他的京东购物的配送地址:江苏省南京市江宁区。

【你敢“钓鱼”,我就能溯源你的产业链!】

根据以上线索可以推测出攻击者可能位于江苏省南京市,不过仅通过IP和一个可疑账号来推测,这实在是太牵强了。为了进一步溯源攻击者的真实身份,我们需要继续对已有的线索抽丝剥茧。

分析邮件原文,发现更多线索
这时候我想起了可以通过前面拿到的邮箱来扩展更多战果。通常我们分析邮件原文可以得到发件服务器/客户端的IP、攻击者的主机名(若是通过客户端发送的话)、发送的时间(通过时区确定攻击者的国家)和邮件原文中附加的其他有用信息。这里我拿攻击者邮箱里的一封邮件来分析,能力有限,若各位发现分析有误请留言斧正,谢谢

//邮件头部是由底部往上逐一添加的,也就是说阅读顺序是从下往上。
//Received是由接收方添加的。通常企业邮件会经过三四道路由才能到达目的地,所以Received也可以表示传递的次数,而钓鱼邮件通常只有一个Received(当然这也可以伪造)。Received的form虽然可以伪造,但仍然会暴漏其发信IP。

Received: //最终邮件的路由信息:邮件从ateway33.websitewelcome.com发出,投送至QQ邮箱服务器newmx35.qq.com,由该服务器将邮件转发给[email protected]
from 192.185.145.82 (unknown [192.185.145.82])
by newmx35.qq.com (NewMx) with SMTP id
for <[email protected]>; Thu, 09 Jul 2020 13:28:27 +0800
/*
以下为QQ邮箱收件后,自定义添加的
X-QQ-FEAT: Ftv......Ko=
X-QQ-MAILINFO: M9mp......Kw==
X-QQ-mid: mx......qw
X-QQ-CSender: [email protected] 攻击者的账号
X-QQ-ORGSender: [email protected]
X-QQ-XMAILINFO: MS4......Q5QOMN2
*/
Received:  //接着邮件从cm10.websitewelcome.com传递至邮件网关服务器(gateway33.websitewelcome.com),不再赘述
from cm10.websitewelcome.com (cm10.websitewelcome.com [100.42.49.4])
by gateway33.websitewelcome.com (Postfix) with ESMTP id 9DE9154B03
for <[email protected]>; Thu,  9 Jul 2020 00:28:24 -0500 (CDT)
Received:  //这一段我没弄懂,不知道为什么有的带for有的不带
from m3.websitewelcome.com ([192.185.82.120])
by cmsmtp with SMTP
id tP6ejuzKaXGIktP6ej7aZm; Thu, 09 Jul 2020 00:28:24 -0500
X-Authority-Reason: ss=1
DKIM-Signature:  //电子邮件验证标准——域名密钥识别邮件标准,其中d字段携带了发送者的域名。
v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=attacker.com;
s=default; h=Date:Message-Id:MIME-Version:From:Subject:To:Sender:Reply-To:Cc
:Content-Type:Content-Transfer-Encoding:Content-ID:Content-Description:
Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:
In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
List-Post:List-Owner:List-Archive;
bh=PJmC......Q==;
Received:  //attcker的邮件首先会投递到邮件服务器(m3.websitewelcome.com),接收方为攻击者的收信邮箱[email protected],接收时间是 北京时间 13点28分24秒,同时本地服务器给邮件标记了一个唯一id。for表示邮件投送的下一跳,to表示目的地址。
from attcker
by m3.websitewelcome.com with local (Exim 4.93) 
(envelope-from <[email protected]>)
id 1jtP6e-002QLA-HH
for [email protected]; Thu, 09 Jul 2020 00:28:24 -0500
To: [email protected] //用于显示的收信地址,经常会被【伪造】
Subject: 受害者IP (Taiwan) //标题
X-PHP-Script: attcker.club/login.php for //触发发信脚本的url地址和访问者(受害者)的IP,一般由xff获取
From: Mr TW <[email protected]>//用于显示的发信人名字和地址,经常会被【伪造】
MIME-Version: 1.0
Message-Id: <[email protected]> //当创建邮件时,由发信服务器标记的唯一字符
Date: Thu, 09 Jul 2020 00:28:24 -0500//邮件撰写的时间,注意是西五区。北京时间 13点28分24秒
/*
以下由Exim程序添加的自定义头部
X-AntiAbuse: Sender Address Domain - m3.websitewelcome.com
X-Exim-ID: 1jtP6e-002QLA-HH
X-Source-Dir: attcker.com:/attcker.club 发信的目录
X-Source-Sender: 
X-Source-Auth: attcker 发信的账号(于发信服务器来说)
X-Email-Count: 1
X-Source-Cap: bX......20=
X-Local-Domain: yes
*/

------------------------------------------------------------------------
受害者的信息
------------------------------------------------------------------------

上面谈到了邮件是可以伪造的,那先森就顺便提一下,满足大家的好奇心。具体伪造的原理我就不再叙述了,网上有很多深入分析的文章,这里算是实践一番。假设攻击者要伪造管理员的邮箱gov.cn、收件人的地址[email protected],需要准备以下工作:1.准备一个邮件服务器,用于代发并绕过SPF;2.从邮箱里导出一封邮件并命名为test.eml;3.用于发送邮件的软件swaks。
接着将导出邮件test.eml中的发件人from字段改成[email protected],收件人to字段改成[email protected],邮件内容自定义,执行如下参数:swaks --data test.eml --from [email protected][smtp服务器地址] --to [email protected] --server [smtp服务器地址] -au [账号] -ap [密码]

从发件人到收件人再到发件时间统统都被篡改了,效果图如下。

【你敢“钓鱼”,我就能溯源你的产业链!】


回到正文,通过上述分析邮件原文的思路,我追踪到攻击者可能在浙江某机房的服务器上通过Foxmai程序批量发送的,并且每次实施钓鱼攻击的邮箱都不一样。有趣的一点,每次发送钓鱼邮件的主机名是固定的YGLIUCHANG-VM,但发送的IP却次次变化,说明攻击者可能出于担心被溯源及IP遭到邮件网关拉黑等目的使用了专门的IP拨号器或代理池等(即发送钓鱼邮件的服务器不一定在浙江)。

【你敢“钓鱼”,我就能溯源你的产业链!】

除此之外,还从其他邮件里找到了四个钓鱼网站。通过对这四个钓鱼网站的分析,发现其中两个是搭建在美国的一台服务器上,一个域名已停止解析,另一个则是前面已获取访问权限的。

【你敢“钓鱼”,我就能溯源你的产业链!】

有趣的是那两个钓鱼网站,其中有一个源码同被反制的网站完全一致,换言之可以直接用漏洞拿到网站的访问权。很幸运,这次网站权限并没有锁死,可以直接写入后门,接着在common.php里找到了其中一个实施钓鱼攻击的邮箱账号密码和接收受害者信息的收信邮箱1*******[email protected],取证日志等过程不再赘述。

【你敢“钓鱼”,我就能溯源你的产业链!】

尝试登录实施钓鱼攻击的邮箱。其中收件箱有大量拒收的通知,已发送邮件文件夹中只有一部分邮件,结合前面已控制的foxmail中的收件情况来看,攻击者会频繁更换发送钓鱼邮件的邮箱。

【你敢“钓鱼”,我就能溯源你的产业链!】

从最早的已发邮件和草稿箱里找到了一个QQ邮箱,与刚才在网站配置文件里找到的收信邮箱完全一致,很有可能是攻击者的真实QQ。这封邮件或许是攻击者专门测试能否过企业的反垃圾邮件网关留下的。

【你敢“钓鱼”,我就能溯源你的产业链!】


我们重新梳理一下掌握的情况。
A服务器中发现:
z****@foxmail.com(发信账号)、3*******[email protected](收信账号)、z****@gmail.com(收信账号);
服务器登录IP:183.**.***.201(江苏省南京市 移动)。
宝塔面板登录IP:172.**.***.83(日本东京)、149.**.***.195(香港特别行政区 阿里云)、47.***.**.209(香港特别行政区 阿里云)等
京东购物的配送地址:江苏省南京市江宁区

B服务器中发现:
1******[email protected](收信账号)、j****@****.*******.******rosoft.com(实施钓鱼攻击的账号和发信账号) 、3*******[email protected](收信账号)
Cpanel登录IP:183.**.***.101(重庆市移动)、203.**.***.191 (香港环球全域电讯)、183.**.***.93 (重庆市移动)、203.**.***.191 (香港环球全域电讯)、154.**.*.99 (美国加利福尼亚州洛杉矶DMIT数据中心)、183.**.***.246 (重庆市移动)、47.**.***.233 (香港阿里云)、183.**.***.242 (重庆市移动)、183.**.***.33 (重庆市移动)、116.**.***.172 (广东省广州市电信)、119.**.***.47 (香港电讯盈科有限公司)

搜集网络痕迹,关联相关身份

A和B两台服务器的登录IP似乎未存在什么共通点,但是收信账号存在共通点,所以我们可以从账号上入手。通过自建的数据库,查到B服务器的收信账号1******[email protected]和江苏南京的一个手机号18*******13存在直接关联并且此人注册账号的IP中有一部分显示是重庆的。
这时候想起了前面发现的Gmail邮箱,利用Gmail的找回密码功能得到了其绑定手机号的后两位,似乎与此人存在关联。

【你敢“钓鱼”,我就能溯源你的产业链!】

利用搜索引擎查找此人QQ的网络痕迹,通过腾讯微博可知此人的居住地【可能】在重庆,这也就解释了攻击者的B服务器登录IP为什么在重庆,而他手机号的归属地似乎又解释了A服务器登录IP为什么在江苏南京(大胆推测一下,攻击者在攻击期间可能去过南京)。此外,该QQ在一些论坛和网站上发过”邮件代发、精准引流”的广告,这就更加实锤了QQ、手机号与攻击者的关系。

【你敢“钓鱼”,我就能溯源你的产业链!】

通过搜索此人的QQ,发现与博客的头像完全吻合并且昵称一致。这说明博主与QQ主人是一个人,同时博客的英文地址与攻击者的邮箱一致,综上所述锁定攻击者就是此人。

【你敢“钓鱼”,我就能溯源你的产业链!】

【你敢“钓鱼”,我就能溯源你的产业链!】

关于攻击者的真实身份继续扩展。从A服务器中提取了3个被宝塔面板删除的压缩包,压缩包中的网站日志里出现了前面没有被发现的域名j********.cn,利用whois查到域名持有者的姓名**鑫、邮箱为1******[email protected],虽然阿里云要求是实名制的,但是我表示怀疑。

【你敢“钓鱼”,我就能溯源你的产业链!】

【你敢“钓鱼”,我就能溯源你的产业链!】

随后翻阅此人博客中的几篇文章,在一篇编程文章中的代码里,得知博主正是*******xin。

【你敢“钓鱼”,我就能溯源你的产业链!】

继续梳理日志。通过A服务器里获取的几个压缩包及网站上的日志,与B服务器对比后发现6月以前它们的日志是基本一样的;最早的日志都是本地调试产生的,通过目录的命名可以大致推测出开发者正在建设一个影视网站,内容应该与钓鱼无关;直到当日12.30左右开发者POST字段的数据开始画风突变,与本次钓鱼网站表单中的字段重叠。

【你敢“钓鱼”,我就能溯源你的产业链!】

粗略看了当天的日志,基本上都是在用几个邮箱做钓鱼测试,因此推测其中可能会有攻击者的邮箱,于是对所有localhost日志中出现的邮箱进行提取。得到s*****@****.com、*****@qq.com、1********[email protected]、a********[email protected]、*******@qq.com、*********@qq.com,剔除不存在的邮箱,猜测开发者应该是s*****@****.com或者1********[email protected]

【你敢“钓鱼”,我就能溯源你的产业链!】

反查网络痕迹,找到网站开发者。s*****@****.com在网络上留有大量痕迹,很轻松得知此人叫沈**,可能是广东人,在某知名企业做销售工作,由此看来此人可能不是涉事人。对于另一个QQ邮箱,通过支付宝实名校验得知号主可能叫**星(*超),贴吧里找到一个用户名与QQ重叠的账号,根据发帖内容可知此人经常活跃于“建站”、“CP盘口”等灰色领域。由此我们就将此人列为重要嫌疑人。

【你敢“钓鱼”,我就能溯源你的产业链!】

继续梳理翌日的访问日志,利用正则表达式提取当日的所有IP并批量查询归属地。其中有两个重庆的IP引起了我的注意,183.***。*.24一直在访问钓鱼网站并且经常会访问/home/www/、/www/等地址,说明此人并非受害者而且似乎还对计算机不是很懂行…另一个183.**.***.33则多次访问并测试(可以看到有明显的测试痕迹,例如是通过QQ邮箱安卓版访问的、多次测试多次更换邮箱等),留下最多的是邮箱6******[email protected]

【你敢“钓鱼”,我就能溯源你的产业链!】


老思路查找QQ的网络痕迹,在某些灰色领域论坛里找到了此人并且贴吧里也有他的账号,通过此人QQ的空间的动态可知,经常发布“接单”一类的广告并且在某些QQ黑客论坛上活跃频繁。我们可以推测出,此人可能也是涉事嫌疑人之一。

【你敢“钓鱼”,我就能溯源你的产业链!】


后面日志有的不全有的太大,搞得先森很崩溃。偶然翻到一条访问记录更是惊呆我了,希望被老美溯源的时候不要连累到我…比较有趣的一点是NSA的人居然还用huawei的手机(仿佛听到了一句“You are Fired!” O(∩_∩)O )。

【你敢“钓鱼”,我就能溯源你的产业链!】

到这里先森也累了,基本上也完成了对主要人员的溯源。钓鱼网站的开发人员很有可能是1********[email protected](*超),此人的邮箱频繁出现在网站搭建时的调试日志中且本人长期游走在黑产圈,当然不排除钓鱼攻击者基于**星(*超)的源码基础上二次开发;团伙中可能还有一个6******[email protected](**成),此人长期游走在QQ黑客和易语言开发等领域,可能起到定制软件的作用;实锤的钓鱼邮件实施者1******[email protected](**鑫),此人擅长python开发,但对PHP脚本和Linux等方面不是很懂,这也就解释通了*超可能是网站开发人员。前面还有个疑问,主要攻击者**鑫到底是哪里人?重庆人。先森这里还要分享下如何利用开源情报落查目标籍贯的思路——利用各地公安公开的姓名查重接口:

【你敢“钓鱼”,我就能溯源你的产业链!】

【你敢“钓鱼”,我就能溯源你的产业链!】


简单“窥探”此类黑色产业

通过对**鑫的网络痕迹的搜集,可知此人主要从事邮件引流和外贸等领域。顺便提一下外贸领域中的那些黑灰产业:外贸行业最重要的就是老外客源,所以推广员需要与外国人推广的各种渠道;其中较为重要的渠道有Facebook、Twitter、邮件推广等等,众所周知这些账号都需要注册才能使用,但注册成本越来越高了,所以黑市里出现一些以卖号养号为生的数据贩子。这些账号除了批量注册外,更多还是通过针对邮箱的钓鱼盗号、撞库等非法手段获取到的,毕竟邮箱可以作为找回账号密码的重要依据并且失去价值的邮箱还可以用于垃圾邮件推广,所以这也滋生了针对老外的盗号行业。近期发生过Facebook上名人账号实施比特币诈骗事件、YouTube频道劫持等等,都是邮箱等重要密保方式的访问权限遭到攻击所致。

【你敢“钓鱼”,我就能溯源你的产业链!】

【你敢“钓鱼”,我就能溯源你的产业链!】
此人在几个地下黑客论坛里发布过收购某某邮箱的帖子,需求量极大。不知道这些邮箱是被用于新一轮的钓鱼攻击还是精准引流推广,或是其他目的。

【你敢“钓鱼”,我就能溯源你的产业链!】


最后将两台服务器上找到的受害者IP整理并可视化处理,得到下面的热力图。通过热力图我们可以直观看出受害者主要集中在北美、欧洲和东南亚地区,(可惜日志不全只是展示一小部分受害者的情况),这也能象征性地展显出外贸行业主要面向的客户群体的范围。

【你敢“钓鱼”,我就能溯源你的产业链!】


最后再梳理下攻击者的攻击流程和产业链。

【你敢“钓鱼”,我就能溯源你的产业链!】


主要参考文章
《Email邮件头揭密》—— 作者不详
《一封伪造邮件引发的研究》——ForrestX386
《如何通过一封恶意邮件追踪幕后黑客组织》—— 道明君


来源:信息时代的犯罪侦查,作者:先森

【你敢“钓鱼”,我就能溯源你的产业链!】


【纪实】从一个钓鱼网站揪出了背后的犯罪团伙

【从一封电子邮件入手】揭开一场已持续两年之久的网络钓鱼活动

【图解】鱼叉式网络钓鱼——有的放矢的攻击

对一次网络钓鱼攻击的逆向分析

【由小小姐炫耀引起的】一次钓鱼网站入侵并溯源

【U盘钓鱼?】其实有好几种姿势!

【基于tor网络】钓鱼邮件分析

美国钓鱼式取证与中国的应对

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: