如何用Canarytokens搭建蜜罐并检测可疑入侵

摘要

在本文中,我们将通过使用 Canarytokens工具来搭建蜜罐,对特殊资源的异常访问行为进行感知,及时发现入侵痕迹,促使安全人员能在攻击者入侵过程中的各个节点将安全事件应急响应的时间基线推前。

广告也精彩

如何用Canarytokens搭建蜜罐并检测可疑入侵

在本文中,我们将通过使用 Canarytokens工具来搭建蜜罐,对特殊资源的异常访问行为进行感知,及时发现入侵痕迹,促使安全人员能在攻击者入侵过程中的各个节点将安全事件应急响应的时间基线推前。

蜜罐的建立,主要的目的是用于当检测到蜜罐中的数据或者计算资源有可疑访问时,可对管理员进行告警。在下文中,通过Canarytokens(注:该工具是由Thinkst 创建的开源项目 ,工具的下载地址为GitHub)工具生成的这类蜜罐与传统的蜜罐不同,其可以有许多种形式,例如它可以是一个无人使用的用户账户,也可以是一个正常用户不会去访问的文件,又或是一个没有人会去点击的链接等等。当针对这个蜜罐(在本文中,这类蜜罐统称为蜜标,honeytokens)进行操作时,通过Canarytokens将会使得检测这些异常操作更加容易,并利用获取的信息对可疑攻击者进行溯源。

FreeBuf百科

HoneyToken:HoneyToken概念的提出,使蜜罐不再局限于硬件设备,在这里我们可以将HoneyToken看成是一个数字化的实体。它可以是一个访问链接、一个文件、一个可执行文件或是一个数据库的入口等等。任何黑客感兴趣的目标信息的去价值化伪造均可成为蜜罐。

了解Canarytokens

Thinkst认为honeytokens是可以“以快速的,便捷的方式帮助防御方发现他们已经被攻击了的客观事实”。为了实现这个目标,我们可以使用Canarytokens应用来生成token,例如可生成以下类型的token,

1、一个入侵者可能访问的URL;
2、一个入侵者可能解析的域名或主机名称;
3、一个入侵者可能打开的Word或 PDF文档;
4、一个入侵者可能从其中取出资金的比特币钱包。

当入侵者访问或者使用由Canarytokens应用生成的honeytoken时,该工具将会通过邮件通知我们,并附带异常事件的细节说明。

目前,使用Canarytokens工具的这种功能最容易的途径是通过 Thinkst在 canarytokens.org上预部署的应用版本,来生成一个可用的token。该站点无需通过安装及配置个人的Canarytokens应用,便可生成b并监控honeytokens。但这种方法的不足之处在于我们并不能控制该工具生成的数据以及无法通过这种方法来跟踪我们自有的域名。

部署个人版的Canarytokens应用

基于上一种方法的不足之处,如果我们想更好地监控honeytokens,那么我们需要部署个人的Canarytokens实例。而部署过程也并不复杂,首先我们需要注册一个域名(如果已有,那么请跳过这一步),然后在一个可访问的网络服务器上安装部署Canarytokens应用即可。

我们可以将Canarytokens部署在一个较为便宜的公有云上,例如DigitalOcean(此处为作者推荐,实际上我们可根据自身情况选择其他云平台)。因为该云服务商对于租用的虚拟服务器只需5美刀一个月。我们可以通过“droplet”来运行Ubuntu ,具体如下,

如何用Canarytokens搭建蜜罐并检测可疑入侵

一旦新的系统运行起来,登录进去并通过执行以下命令,来安装Canarytokens应用,

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D add-apt-repository -y "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -sc) main" apt-get update apt-get -y dist-upgrade apt-get -y install docker-engine python-pip python-dev libyaml-dev pip install -U docker-compose git clone https://github.com/thinkst/canarytokens-docker cd canarytokens-docker

在执行完上面的安装指令,如前文所提到的,我们还需要注册一个个人的域名,该域名仅用于Canarytokens应用。接下来,当有了域名,我们需要去指定运行着Canarytokens应用的服务器来作为此前注册的域名的DNS服务器。(在本案例中使用了Google域名,因其并不会产生其他额外费用,谁用谁知道),而如果你要使用到Canarytokens的PDF tokens,那么则需要两个域名,此处先略过不谈。

在安装Canarytokens应用之后,我们还需修改两个配置文件:frontenv.env以及switchboard.env,以便能顺利运行Canarytokens,具体参考如下,

如何用Canarytokens搭建蜜罐并检测可疑入侵

1、在frontenv.env文件中,我们需要指定已注册好的域名,将其配置为CANARY_DOMAINS的参数。而如若我们需要使用到PDF tokens,那么可修改CANARY_NXDOMAINS的参数为注册的第二个域名。否则,则同样将其参数设置为第一个域名。

2、在 switchboard.env文件中,指定CANARY_PUBLIC_DOMAIN参数为此前在frontenv.env文件配置的第一个域名。指定服务器的公网IP地址作为 CANARY_PUBLIC_IP的参数。在CANARY_ALERT_EMAIL参数中自定义发送告警邮件所用的邮箱,可通过申请创建一个 Mailgun 账户,并将之也匹配到CANARY_MAILGUN参数中。

以下为本文的 Canarytokens应用配置文件的配置情况。当然,个人的配置情况会与此不同,这里仅供参考,

如何用Canarytokens搭建蜜罐并检测可疑入侵

在配置好Canarytokens之后,我们可以通过运行“docker-compose up”指令(第一次运行时会自动下载合适的Docker镜像)来启用该应用工具,

如何用Canarytokens搭建蜜罐并检测可疑入侵

随后,使用浏览器通过IP地址或域名,来访问启用了Canarytokens的服务器。请注意,上述应用的URL是对任何人都开放的,而该应用目前也暂不支持管理员账户的默认认证。

运行Canarytokens应用

在将浏览器页面定向到Canarytokens实例时,我们将会看到类似的如下截图,在这里,我们可以生成一个新的token,而我们也需要在这里填写上接收告警信息(当token被访问时)的邮箱。

如何用Canarytokens搭建蜜罐并检测可疑入侵

在这里,我建议从默认的“DNS/HTTP”处来开始实验。该token可被多种方式触发,包括访问Canarytokens生成的URL,主机名解析,打开文档文件等方式。

如何用Canarytokens搭建蜜罐并检测可疑入侵

例如,当访问一个与上述生成的token相符的URL时,应用将会通过邮件来进行告警通知。正如我们所看到的,该告警信息包括了访问该链接的源IP地址,访问的客户端浏览器信息。如果一开始不能接收到相关的告警通知,请检查下此前的Mailgun设置以及查看邮件账户的垃圾箱。

如何用Canarytokens搭建蜜罐并检测可疑入侵

当入侵者解析主机名时,该token亦能被触发。告警信息如下,其中包含了攻击者DNS服务器的IP地址。该信息可用于溯源追踪攻击者的物理位置。

如何用Canarytokens搭建蜜罐并检测可疑入侵

如果我们使用Canarytokens生成一个Microsoft Word文档,在其被打开时,我们同样也会接收到告警邮件。但告警内容会与之前的告警略有不同,其中的客户端信息还会包含打开该Word文档的软件版本信息。其利用了底部一个隐藏的图像文件来感知打开情况。值得注意的是,在“ Protected View”模式下,是无法访问该Word文件的,需要点击“启用编辑”(Enable Editing)按钮才能触发honeytoken。

如若需要关闭 Canarytokens应用,在终端命令中按下Ctrl+C便可终止应用。而该应用服务器会通过它生成的dump.rdb文件来定位终止前的状态。通过该方式,将会记录上一次运行时生成的tokens,在下次使用时仍然进行监控。如果我们想以一个全新的状态开始,将dump.rdb文件即可。

开始Honeytokens的实验吧

Honeytokens提供了一种诱骗的方式来检测入侵者对我们数据、基础设施以及应用的访问状态。因为合法的用户并无法访问到这些蜜罐资源,所以任何对这些蜜罐的访问我们皆可认为是可疑的。而通过这种行为相关性也可以来提高检测异常行为的成功率。

所以,接下来,就让我们开始试试吧!

*参考来源:canarytokens-setup,FB小编troy编译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

发表评论

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