当您阅读本文时,机器人将查找并摧毁您的网络钓鱼网站。你需要在为时已晚之前保护他们!但是如何?
如果我们的目标永远无法看到它,那么网络钓鱼页面就不好用了。在绕过安全邮件网关、说服用户单击我们的链接并绕过任何链接爬虫之后,我们需要绕过的最后一个“用户出站”控制是公司 Web 代理。通常,组织会选择通过代理路由其所有 Web 流量(HTTP 和 HTTPS),以阻止已知不良网站、监视用户并在 Web 资源上实施数据丢失防护 (DLP)。对于网络钓鱼,我们主要关心的是远离已知不良列表。这意味着我们需要避免被可能将我们归类为恶意的服务抓取,并在我们发送网络钓鱼活动之前为其他人发出警报。我们还需要避免可能触发代理实时识别我们的内容为恶意内容的提示尾部。
linux文件系统存储与文件过滤安全开发视频教程
其它相关课程
linux高级usb安全开发与源码分析视频教程
linux程序设计与安全开发
-
恶意软件开发
-
-
-
windows网络安全防火墙与虚拟网卡(更新完成)
-
-
windows文件过滤(更新完成)
-
-
USB过滤(更新完成)
-
-
游戏安全(更新中)
-
-
ios逆向
-
-
windbg
-
-
还有很多免费教程(限学员)
-
-
-
更多详细内容添加作者微信
-
-
我认识你吗?
在启动 Web 服务器时,您是否真正查看过日志?我指的不仅仅是Apache访问日志。我的意思是完整的请求 URL、查询、标头和正文。在打开端口 80 或 443 的几分钟内,您会看到来自各种互联网地址的流量。如果您仔细检查流量及其意图,您会发现他们通常会问以下两个问题之一:
-
你是干什么的?
-
我可以剥削你吗?
你没有告诉任何人你正在创建一个网站或你刚刚购买的域名,但流量会立即显示出来。这怎么可能?好吧,事实证明,在现代网络速度下,扫描整个公共 IPv4 范围以查找 80 和 443 等几个常见端口实际上并不是那么昂贵或耗时。像 Zmap 这样的开源工具吹捧能够在短短五分钟内扫描整个 IPv4 范围:
https://zmap.io/
正因为如此,研究人员和黑帽黑客都在不断运行自己的互联网“调查”,以识别和识别开放的Web端口。对于研究项目,如 Shodan 和 Project Sonar,良性 HTTP 请求用于询问开放的 Web 服务器,以对每个 Web 服务进行编目。另一方面,黑帽黑客将配置他们的扫描程序以对每个 Web 服务器运行漏洞利用检查,以寻找机会主义的胜利。同样在研究阵营中,您将看到来自安全供应商的流量,这些供应商运行互联网调查,以根据 HTTP 响应内容识别和阻止潜在威胁。
显然,如果我们希望我们的网络钓鱼网站远离安全供应商阻止列表,我们应该注意不要向我们网站的任何观察者展示“网络钓鱼”内容;尤其是那些刚刚通过扫描我们服务器的公共 IP 地址发现我们网站的网站。在我们的 Web 服务器上使用服务器名称指示 (SNI),当使用其 IP 地址请求我们的网站时,可以很容易地显示默认页面,并且仅在对我们的网络钓鱼域提出请求时才显示我们的网络钓鱼页面。这将阻止基于 IP 的扫描程序查看我们的网络钓鱼页面。然而,这种方法本身是不够的。不幸的是,当您注册网络钓鱼域名并设置网络钓鱼网站时,您的域名将通过两个来源泄露给公众:
-
互联网名称与数字地址分配机构 (Internet Corporation for Assigned Names and Numbers, ICANN) 集中式域名数据服务 (Centralized Zone Data Service, CZDS) 域名列表: https://czds.icann.org/home
-
Google 的 Certificate Transparency 服务:https://certificate.transparency.dev/
当您注册域名时,您的域名将被添加到 ICANN 顶级域名的区域列表中。安全产品供应商经常下载更新的列表并扫描他们尚未看到的任何域。此外,当您为网站注册 TLS 证书时(假设您在网络钓鱼时使用 TLS 正确保护客户的数据),您的证书详细信息将由 Certificate Transparency 发布。如果您以前没有看过数据集,请花点时间查看 Ryan Sears 的 Cert Stream 项目,从浏览器实时查看证书透明度数据示例:
https://certstream.calidog.io/
您可以打赌,安全供应商也在订阅证书透明度源,以识别要扫描恶意网站的新域和子域,因此配置 SNI 不足以阻止扫描程序。现在我们知道了我们要面对的是什么,让我们来谈谈如何保护我们的网络钓鱼网站。
避免陷阱
首先,认识到您在互联网上发布的任何网站都将被扫描。至少,我们希望避免几个常见的陷阱,这些陷阱会立即烧毁您的网络钓鱼网站。
N00b 错误 1:使用网络钓鱼内容响应每个 HTTP 请求
相反,您应该将服务器配置为默认提供良性内容。仅当 URL 与您在网络钓鱼链接中放置的特定属性匹配时,才会提供恶意内容;例如,一个特殊的“GET”参数,向服务器指示这是合法点击。
N00b 错误 2:使用新域进行网络钓鱼
相反,只要有可能,最好让他们坐下来提供良性内容至少几周,然后再将它们用于网络钓鱼。我们知道机器人会抓取我们的网站,那么为什么不放低姿态,给他们时间对我们的域名进行不正确的评估呢?在需要时准备好一个可靠的域名总是很好的,所以如果你目前没有任何“经验丰富的”域名准备好,那就继续购买一些来开始老化过程。你以后会感谢我的。
N00b 错误 3:在 TLS 证书请求中列出子域
当您在 TLS 证书请求中列出网络钓鱼域的子域时,您正在向敌人提供不必要的遥测数据。请改用通配符证书!有大量的脚本和 Web 服务器插件可以为您自动执行该过程。就个人而言,我是 Caddy 的忠实粉丝,因为它使获取和自动续订证书变得多么容易:
https://caddyserver.com/
N00b 错误 4:在可预测的位置设置网络钓鱼内容
不要从可预测或常见位置提供您的恶意内容;尤其是不是网络根!
不 不 不:
https://www.myofficeonline.com/index.html
仍然没有:
https://www.myofficeonline.com/owa/outlook/logon.html
体面!现在我们开始谈论!
https://www.myofficeonline.com/documents/policies/confimation/index.html
只需几个 mkdir 命令,我们就添加了大量针对网络爬虫的额外保护。
N00b 错误 5:1 对 1 克隆
如果您尝试克隆 Outlook 或 VPN 网关等常见登录页面,请不要只克隆该站点。这些都是死赠品!想象一下,如果爬虫看到的页面看起来与 Outlook HTML 源代码完全相同,但服务器的响应标头显示的是 Apache 而不是 IIS?如果发生这种情况,你就完蛋了!与其尝试修复标题以融入其中,不如更改 HTML 更容易。最终结果只需要看起来像真实的东西。
使用图像进行网络钓鱼 — 只需截取要克隆的页面的屏幕截图,将其设置为页面的背景,然后将输入放在顶部!您可能需要调整样式以调整屏幕大小,但这适用于许多简单的网络钓鱼页面。该页面对人类来说看起来是一样的,而对机器人来说则完全不同。
编码克隆 — 使用一些 JavaScript 对克隆页面的 HTML 进行编码。然后,提供编码数据以及解码函数,以便在页面加载时动态打印 HTML。这需要更多的编码知识,但是一个很好的通用解决方案。这是我在几分钟内完成的概念验证,它将页面上“body”标签的 HTML 压缩到控制台上。解码脚本解压缩我们放入变量中的内容,并交换当前文档的“正文”:
//Encode Script - Run this from the console on a webpage you want to clone
function _arrayBufferToBase64( buffer ) {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return window.btoa( binary );
}
function compress(string, encoding) {
const byteArray = new TextEncoder().encode(string);
const cs = new CompressionStream(encoding);
const writer = cs.writable.getWriter();
writer.write(byteArray);
writer.close();
return new Response(cs.readable).arrayBuffer();
}
compress(document.body.innerHTML, 'gzip').then(
(result)=>console.log(_arrayBufferToBase64(result))
)
//Decode Script - Swap out the content variable with your encoded content,
//and include this script in your document head
function decompress(byteArray, encoding) {
const cs = new DecompressionStream(encoding);
const writer = cs.writable.getWriter();
writer.write(byteArray);
writer.close();
return new Response(cs.readable).arrayBuffer().then(function (arrayBuffer) {
return new TextDecoder().decode(arrayBuffer);
});
}
function base64ToArrayBuffer(base64) {
var binaryString = atob(base64);
var bytes = new Uint8Array(binaryString.length);
for (var i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
return bytes.buffer;
}
var content = 'H4sIAAAAAAAACvNITM5WKMlIVQjIScxLLVFUVAQA9yGx4xIAAAA='
decompress(base64ToArrayBuffer(content), 'gzip').then(
(result)=>document.body.innerHTML=result)
)
请注意,这将交换页面正文中的任何内容,因此当文档传送到浏览器时,我们可以将我们想要的任何良性内容放在那里。由于我们无法使用 JavaScript 动态修改“head”标签,因此您需要保持该部分不变。如果有任何明确的迹象表明您正在欺骗的内容,您可能还想混淆或缩小头部的内容。下面是一个包含一些缩小的 JavaScript 的完整示例:
<html><head>
<title>Example Domain</title>
<script>
function d(e,n){const r=new DecompressionStream(n),t=r.writable.getWriter();return t.write(e),t.close(),new Response(r.readable).arrayBuffer().then((function(e){return(new TextDecoder).decode(e)}))}function b(e){for(var n=atob(e),r=new Uint8Array(n.length),t=0;t<n.length;t++)r[t]=n.charCodeAt(t);return r.buffer}var content="H4sIAAAAAAAACvNITM5WKMlIVQjIScxLLVFUVAQA9yGx4xIAAAA=";d(b(content),"gzip").then((e=>document.body.innerHTML=e));
</script>
</head>
<body>
<div style="">
<h1 style="">Example Domain</h1>
<p style="">Nothing to see here.</p>
</div>
</body></html>
升级
虽然避免陷阱可能足以偷偷溜过大多数网络代理,但我们可以通过一些技巧做得更好。
无需域名:公共托管
大多数网络钓鱼网站都可以作为静态文件提供。有很多信誉良好的域名允许用户发布静态内容。您可以使用内容分发网络 (CDN)、GitHub Pages、Google Docs、Google Apps Script、Vercel、OneDrive 和许多其他工具来托管网络钓鱼文档和网站;这样你就不必太担心你的域名的声誉了。
警告!请记住,这些服务显然不赞成网络钓鱼,但任何域名注册商也会对我们作为红队成员所做的事情不屑一顾。在某些时候,我们必须选择我们可能得罪的人,并接受我们的选择,知道我们不是坏人。在任何情况下,请仔细考虑您使用的帐户,因为它可能会被暂停或禁止。
下一级别:使用视频进行网络钓鱼
什么!?!这甚至可能吗?是的,它生病了!通过中间浏览器攻击,我们可以用视频内容对用户进行网络钓鱼。他们看到真实网站的视频源,他们与网络钓鱼页面的交互通过视频反映给他们。这种方法有很多好处,但为了这篇博文,只需知道交付给最终用户的内容根本不是传统的网络钓鱼页面。这是一个视频流,这使得机器人很难发现该页面有任何网络钓鱼。对于机器人来说,它看起来只是一个非常小的视频播放器。
我发布了一个名为 CuddlePhish 的工具,用于自动对红色团队进行中间浏览器攻击。这是我的网络钓鱼武器库中我最喜欢的武器之一。
综上所述
在网络钓鱼时,我们应该期望用户在 Web 代理后面。考虑到这一点,我们需要远离已知的坏列表。通过使我们的网络钓鱼网站和页面的内容尽可能良性,我们可以欺骗代理认为我们是安全的。一般来说,我们应该将网络钓鱼服务器配置为默认提供完全无害的内容,以便网络爬虫将我们的域归类为安全的。此外,我们可以对页面的 HTML 进行修改,或者使用高级攻击(如中间浏览器)在用户点击我们的链接时实时欺骗代理。
原文始发于微信公众号(安全狗的自我修养):如何让您的网络钓鱼网站融入其中
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论