红队的夜行衣——反反制的那些事
有同志问了,那我就献丑了。
蓝队在防什么
作为多年参与蓝队的点鼠标猴子,我简单讲讲猴子平常干点啥。
先不涉及蓝队的前期布防,直接讲攻防进行时。
- 监控:通过安全设备,发现异常流量,定位发起者ip和url,将相关流量情况上报给研判。
- 研判:在第一天的时候也会做点监控的活,将发现的异常流量进行分析,确认流量中的行为是否是红方攻击流量,需要与甲方的技术人员进行沟通确认。如果发现流量中存在红方身份特征,同时会要求溯源人员进行及时响应。
- 指挥:背锅的
通常甲方不会外聘“指挥”,当然,如果指挥也是甲方外聘的,那么乙方能放进甲方的岗位通常就这三种,至于溯源嘛,那是乙方原厂自己的人,想参与溯源的临时参与者就别想了。
综上,蓝队会从安全设备中发现并提取带有 *攻击特征* 的流量信息,同时会从蜜罐中寻找同样特征的信息,并确认红方身份,进行溯源,同时IP封禁。
打铁还需自身硬
作为红队,除了需要有足够强悍的外网打点、漏洞挖掘 、内网渗透这些实力外,还需要在反溯源、反定位、反暴露、流量特征隐藏等手段中磨练,以下是笔者意识到的部分问题。
WebRTC——真实IP暴露的罪魁祸首
说起这件事,还要从今年微博博主:安全北北的一篇微博说起
获取ip的网站:
https://www.hackjie.com/tracking
https://ip8.com/webrtc-test
打开网站后我们发现自己的ip直接就在网站上显示出来了,这事谁看谁崩溃 ,于是就有了这样一个疑问:为什么即使平常有挂代理的习惯,还是会暴露外网ip呢?
- 什么是WebRTC?
网络实时通信(WebRTC)是一项先进的开源技术,允许台式机和移动浏览器通过使用简单的API实时交换数据。
WebRTC有大量的用途,包括通过移动或基于网络的应用实现音频、视频和网络功能。WebRTC的功能类似于媒体捕获和流媒体API。所有这三种功能可以结合起来,实现网络上前所未有的惊人的多媒体功能。
WebRTC的关键优势在于它能实现实时的点对点多媒体通信,这在当今的数字媒体时代是不可缺少的。- 关键组成部分
WebRTC包括3个主要的API:
- 同行连接:这允许你发送和接收多媒体文件
- GetUserMedia:顾名思义,它可以访问用户的媒体(如摄像头和麦克风)。
- 数据通道:允许在浏览器之间直接传输非媒体。
WebRTC目前在以下浏览器上得到支持:Mozilla Firefox, Opera, Chrome和Google Chrome。
- 反面
WebTRC的一个主要缺点是,由于用户使用的VPN泄露了他们的IP地址,用户的隐私可能会受到影响。
由Paolo Stagno在2015年发现并标记为 “WebTRC泄漏”,当一些知名的VPN供应商开始在未经用户同意的情况下将用户的IP地址泄露给网站时,一些用户的隐私被泄露了。
更糟糕的是,最近的一项调查指出,有23%的VPN供应商正在泄露用户的IP地址,并保留了设备类型、个人信息、访问过的网站,甚至是支付信息等个人信息。
简单来说就是,WebRTC这个技术,直接将你的浏览器和服务端建立联系,绕过了中间所有的代理。
我们打开B站搜索WebRTC,会看到,这个技术经常应用于视频通话、点对点通信等等。
- 防范策略
- 直接从浏览器扩展入手:
下载并安装Chrome/Edge/Firefox浏览器扩展:WebRTC Leak Shield1
2
3
4
5https://chrome.google.com/webstore/detail/webrtc-leak-shield/bppamachkoflopbagkdoflbgfjflfnfl
https://microsoftedge.microsoft.com/addons/detail/pblfgfehcokbglafpcldgjpmknildihk
https://addons.mozilla.org/en-US/firefox/addon/webrtc-leak-shield/ - 从浏览器本身配置入手:但经过测试,还是扩展好用
1
2
3chrome://flags/#enable-webrtc-hide-local-ips-with-mdns
opera://flags/#enable-webrtc-hide-local-ips-with-mdns
edge://flags/#enable-webrtc-hide-local-ips-with-mdns
Firefox配置项:FireFox不需要扩展,直接配置就比上面那些搞扩展的好使。1
2about:config
media.peerconnection.enabled
- 再测试:
代理池
作为一个红队成员,在打点过程中,最讨厌的就是信息还在收集,扫描器还在运行时,突然就拿不到数据了,不用问,被封ip了。
但信息收集和找口子阶段少不了大批量的扫描流量的发送了,这就需要红队自身要有足够多的ip喂给蓝队去封禁。
介绍几个代理池项目:
https://github.com/jhao104/proxy_pool
https://github.com/Anyyy111/ProxyPoolxSocks
代理池的原理和代理服务器一样,没啥好讲的,只不过用于爬虫的代理服务器会快速更换代理ip,直到ip池中的ip都被封禁。
啥?你问我ip从哪来?买的,找ip提供商买的,和你科学上网买梯子是一回事。
以上都是简单可操作的部分,接下来就要上强度了
云函数
总结这一块知识的时候,感觉这一块内容太丰富,甚至应该单独开一篇来写
什么是云函数
云函数提供了一种直接在云上运行,无状态的、短暂的、由事件触发的代码的能力。
对比:
随着云服务的发展,计算资源高度抽象化,腾讯云提供了从物理服务器到云函数和横跨各种抽象程度的计算资源供用户选择。
黑石物理服务器:以物理机为扩展单位。用户完全拥有整台实体计算资源,安全性最好。
云服务器:以云服务器为扩展单位,虚拟化硬件设备。用户和其他租户共享物理机资源,仍可自行配置 CVM 的各项指标,相对部署和迭代更加简单。
容器服务:以服务为扩展单位,虚拟化操作系统。测试和生产环境完全一致,测试和部署非常轻松。
云函数:以函数为扩展单位,虚拟化运行时环境(Runtime)。是现有计算资源的最小单位,具有完全自动、一键部署、高度可扩展等特点,是轻量级服务部署非常好的选择。
【引自腾讯云文档】
特性:
- 云函数不需要服务器,也就是说你不需要去买 VPS。
- 云函数只是云厂商用自己的服务器帮你运行你上传的代码片段, 执行某个单一的逻辑,可以简单理解为只帮你执行一个函数。
- 云函数无法长驻,调用的时候创建,执行完之后立即就销毁,所以无法直接保存状态。也正是这一点,让我们无法代理像 SSH 这种需要长连接的服务,只能代理 HTTP(s) 这种无状态的协议。
利用云厂商提供的云函数(函数计算)功能,将客户端的HTTP请求进行转发,由于云函数多出口的特性,让我们也变相拥有了代理池。
当前国内已知云平台,阿里云和腾讯云都可以使用云函数。
怎么使用云函数
目标:将burp、CS、webshell等攻击流量全部通过云函数代理,以达到不可封禁和不可溯源的效果。
设计:
如图,浏览器访问流量经过本地代理程序,转发到云服务端,经由写好的云函数将我们发出的流量进行重新打包,并由云服务的DNS再次发送至目标站点。
从目标站点来看,我们发送的流量,都是由云服务商提供的ip进行的访问。
更有趣的是,无论是微步qax的威胁情报平台都会记录来自云服务商的干净ip。
于是我们根据场景,可以制作【基于云函数的socks代理】和【基于云函数的http代理】
以腾讯云为例
在腾讯云控制台,找到函数服务,新建云函数
云函数可以使用多种语言编写,当前已知的项目都是python写的
建议牛逼的大佬都用go来写
之后配置timeout的时间,900秒,足够大佬在被封前拿到想要的数据了。
设置API触发
以上就是腾讯云的云函数实现socks代理的办法
http这一块相比,就是多了个鉴权,去B站还能找到添加了ssl证书的https版本。
可以看一下渣渣老师在2021年发布的腾讯云云函数代理办法:
也可也看看大C老师做的基于阿里云云函数代理办法,这个是用go写的:
啥?不会写?行吧,有位大佬在Github上发布了一键部署项目:
https://github.com/shimmeris/SCFProxy/blob/main/README_zh.md
还看不懂就真的帮不了你了。
利用硬件隐身
这一块就没什么难的,我一句话概括:用手机开热点
我就知道你会骂我
手机开热点为什么好使吗?
前面WebRTC中讲到,如果你使用宽带上网,服务器会获取你的公网ip,而公网ip都是由运营商提供的,除非你很有钱,买了一个独享的ip专线,否则,你就是和整个小区,甚至整个街区共用同一个ip。因此,ip定位不会太详细。
比如,笔者所在的这个小县城共用一个ip。。。(手动狗头)
问题又来了,手机开热点,也是运营商提供的上网服务啊,怎么就找不到呢?
已知手机上网的办法并不是宽带的那一套,而是WCDMA的那一套东西,使用的ip是由基站分配的,也不会太详细。
但即使不详细,这个定位依然很好使啊,至少它定位到了搞事情所在的城市甚至小区啊。
这里就用到了一个不起眼的小玩具:
没错就是 随身WIFI
还是手机开热点的那一套
但可以实现匿名的点在 流量卡 上,笔者曾经记录使用流量卡上网时的ip
每次ip定位都在不同的城市,从来就没有过ip定位在所在地附近的情况。
于是,渗透机流量经过随身WIFI转发,再经由14层协议到达目标,目标机上记录的ip就是和你丝毫没关系的运营商基站ip。
但这就完事了吗?这也太没劲了
如图,笔者把随身WIFI拆了,并深入进去逆了一下。
硬件:CPU4核|ROM512MB|RAM4GB
架构:ARM v7 Processor rev0(v7l)
自带系统:Android4.4
熟不熟悉?就是手机!
红米2的配置!
虽然性能不大,但是刷进去一个arm的linux系统不是刚刚好嘛?
于是我刷了个OpenWrt
然后连进去看看
ok这就是个linux机子!
同时还可以安装Debian,Debian这一块我还没试
但是我们大胆推测
linux都有了,ssh上去,一顿nmap && subfinder | httpx | nuclei
那可太爽了
甚至,写进去自动化渗透脚本,再把棒子找个信号好、有电源的地方一放
近源渗透的事也解决了有没有?
说回主题,既然这个随身WIFI棒子就是一个linux机子,那么我们把代理池云函数等同时集成到棒子上,我们就直接实现了随身软路由。
总结
本篇文章我们从多种角度实现了红队的自我隐匿,而且付出代价不多。还方便逃跑。
参考:
https://mp.weixin.qq.com/s/A5dd7WXojGBzsz52_iLtJQ
https://cloud.tencent.com/developer/article/1857034
https://cloud.tencent.com/document/product/583/9694
https://www.cnblogs.com/supdon/p/15099742.html
https://github.com/shimmeris/SCFProxy/blob/main/README_zh.md
https://qust.me/post/m[sm8916](https://acg.tv/sm8916)/
- 标题: 红队的夜行衣——反反制的那些事
- 作者: Brathon
- 创建于: 2023-06-12 22:42:22
- 更新于: 2023-09-23 02:56:06
- 链接: https://fiddling.blog/2023/06/12/红队的夜行衣——反反制的那些事/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。