加载中...
不想等待可以点我关掉

之前备案域名的时候整了一台阿里云的服务器,但是考虑到它的带宽和防御都很低,所以就一直闲置着,挂的域名也是用着CDN,换句话说除了扫IP段,不然你都找不到我这个服务器。然后戏剧性的事情就来了,5月26号,直接就是被人抓着隔一个小时打半个小时UDP反射放大攻击,因为这种攻击可以隐藏攻击者的真实IP,所以说我也拿他没办法,只能关机保平安

思路

首先要搞明白这种UDP反射放大攻击的原理是什么:

  1. UDP连接具有无连接性,不像TCP连接要经过三次握手,一发送就到对面了,所以服务端无法检验客户端IP的真实性,在返回数据时只能按照报文里的源IP地址返回
    百度百科
  2. 基于上面的原理,我们可以实现隐藏请求来源,实现借刀杀人
  3. 但这样还不够,如果服务器发送和接收是1:1的话那想实现给人家上压力的同时自己压力也怪大的,所以说还要想办法提高发送和接收的比值,称作反射倍率,常见的使用UDP协议的协议的反射倍率如下
协议端口理论放大倍数
DNS5328~54
NTP123556.9
SNMP1616.3
SSDP190030.8
PORTMAP1117~28
QOTD17140.3
CHARGEN19358.8
TFTP6960
NETBIOS1383.8
MEMCACHED1121110000~50000
WS_DISCOVERY370270~500
CLDAP38956~70
  1. 在这里,我受到的是使用NTP协议的攻击。那么,为什么它能够实现放大呢?

标准NTP服务提供了一个monlist查询功能,也被称为MON_GETLIST,该功能主要用于监控 NTP 服务器的服务状况。
当用户端向NTP服务提交monlist查询时,NTP服务器会向查询端返回与NTP服务器进行过时间同步的最后600个客户端的IP,响应包按照每6个IP进行分割,最多有100个响应包。

因此,攻击者可以通过这个查询指令来实现将很小的请求放大上百倍

  1. 该漏洞已被标记并修复(默认禁用,并在后续版本中移除),但仍有相当多的服务器仍然运行着旧版的ntpd,因此,还需要通过扫描互联网上存在该漏洞的NTP服务器来实现效果
    image.png
  2. 那么我们现在已经有了一个完整的逻辑链,那怎么溯源呢

溯源

遗憾的是,由于UDP协议的特点,无法从被攻击方进行溯源。从攻击者角度出发,进一步提高攻击效率可以找目标附近的NTP服务器或者自身附近的提高扫描效率,但事实是这类服务器通常比较少,直接扫IP段拿下更全面的

对本次攻击的数据我做了些处理,这是国区的IP分布
Snipaste_2025-06-16_11-30-14.png

抛开事实不谈,说不定就在浙江
image.png
风云榜

处理用到的脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import openpyxl
import ipdb

# 加载IP数据库
db = ipdb.City("ipipfree.ipdb")
# 打开Excel文件
wb = openpyxl.load_workbook('1.xlsx')
ws = wb.active

# 从第2行开始,查找A列IP的省份和城市,写入G列和H列
for row in range(2, ws.max_row + 1):
    ip = ws[f'A{row}'].value
    if ip:
        ipinfo=db.find_map(ip, "CN")
        country=ipinfo["country_name"]
        province= ipinfo["region_name"]
        city= ipinfo["city_name"]
        ws[f'G{row}'] = country
        ws[f'H{row}'] = province
        ws[f'I{row}'] = city
# 保存到新文件
wb.save('2.xlsx')
print('已完成IP到省市的写入。')

安装ipdb

$

雁过留痕,前面说到攻击者可以通过这个查询指令来实现将很小的请求放大上百倍,但并不是每个服务器都能有这样的能力(由最近向这个服务器同步过时间的客户端数量决定)。因此为了达到更高的攻击效率,理应还要经过一次筛选,筛选的时候需要接收返回数据来衡量反射倍率,所以在筛选时是无法隐藏自己的,而MON_GETLIST正是返回最近请求过的客户端,根据请求原始数据求个交集,如果存在某个IP请求了多个NTP服务器,那么它便存在很大的嫌疑,当然也无法百分百确定,用别的服务器做个跳板或过几天在攻击就行了
当然,假如它所使用的网络运营商部署了一些监控网络,那直接从他们身上下手也是一种方法,当然应该大多数人都没那实力

实操?

理论存在,实践不了——点名表扬阿里云的用户页面
详情页面只能查看7天内的,但是你想知道这个限制只有在过期以后在显示,默认显示的90天只是事件的记录保存时间

image.png

发工单问了,人家丢了份文档给我,并且也没有恢复过期记录的方法。
所以为什么这种事不明写出来
image.png

常见的泄露源IP地址的情况

这实在没办法了,不如梳理一下常见的会被抓住ip的情况吧

直接泄露

听上去挺扯淡的,通常是因为某些原因,比如说速度方面只能妥协,只能寄希望于没人关照

SSL证书泄露

  1. 泄露子域名
    crt.sh | Certificate Search
    通过证书透明度机制,该网站可以查询一个域名曾经申请过的SSL证书,如果有某个子域名直接解析到IP上且申请了证书就会泄露
    image.png

  2. 被批量扫描
    Censys Search
    Shodan Search Engine
    在早期的nginx版本中,若直接请求ip:443的话会直接返回某个站点的SSL证书,但在新版本中已经修复了这个问题,理论上是扫不到。但似乎他们还利用了上文的证书透明度机制,用域名再去请求时服务器就分不清了,一旦返回了正常的数据即可证明两者有关联。

AI总结的扫描方式

Censys 的核心数据来源是主动互联网扫描。它使用开源网络扫描工具 ZMap 对全球 IPv4 地址空间进行端口扫描,并结合应用层扫描器 ZGrab/ZGrab2 对常见服务协议进行探测innovationpartnerships.umich.edudocs.censys.com。通过快速扫描,Censys 可以在短时间内探测数十亿个 IP 及端口,并收集设备响应(如 TCP/UDP 握手和协议 banner)。此外,Censys 也采用被动数据源进行补充:证书透明日志 (Certificate Transparency, CT) 中会同步收录公开发行的 TLS/SSL 证书信息,被动 DNS 数据库(DNS 解析记录和历史解析记录)以及WHOIS 注册信息等都被纳入关联分析docs.censys.comdocs.censys.com。通过融合主动扫描数据和这些公开信息,Censys 能够更全面地识别互联网上的资产和服务。

扫描技术
Censys 的扫描引擎覆盖广泛的网络协议和端口:它对整个公网 IPv4 地址空间上的所有 65,535 个端口进行定期扫描docs.censys.comdocs.censys.com。具体调度策略为:热门端口高频扫描——例如每日扫描流量排名前 100 的端口;大端口集定期扫描——对前 2,500 个热门端口每 10 天全网扫描一次prnewswire.com。发现新服务后,Censys 还会优先刷新老旧数据——任何超过 24 小时未更新的已知服务都将在次日重新扫描docs.censys.comdocs.censys.com。此外,Censys 设计了“预测扫描”机制,根据历史数据动态生成扫描目标,对云服务 IP 段(AWS、Azure、GCP 等)等高风险区域进行重点扫描。扫描节点分布在全球(美洲、欧洲、亚洲)多地,以达到近 99% 的监听主机覆盖率并降低丢包风险prnewswire.comdocs.censys.com

在协议层面,Censys 支持对数百种网络协议的探测。扫描器默认使用 TCP 作为传输层,并针对 IANA 指定协议端口尝试对应握手(如对 TCP 23 端口尝试 Telnet 握手)docs.censys.com;如果连接到非标准端口或协议响应不匹配,系统会尝试其他协议(自动协议检测)。部分协议使用 UDP 扫描(例如 DNS 查询通常使用 UDP),而 HTTP 协议检测则可通过 HTTP/3 (QUIC) 兼容方式进行docs.censys.com。应用层面,Censys 对 HTTP(S) 服务会请求根页面并跟随重定向,收集网站标题、响应头和服务标识;对常见数据库、邮件、IoT、VoIP、文件共享、SCADA 等协议均执行特定握手或 banner 抓取docs.censys.comdocs.censys.comdocs.censys.com。值得注意的是,无论协议类型,Censys 扫描都只读取公开信息,不尝试登录或验证访问任何系统docs.censys.com

域名与 IP 地址关联
Censys 通过扫描过程中收集的多种信号,将域名与其托管的 IP 进行关联。首先,在 TLS/SSL 扫描时会记录证书中的域名信息(证书中的 Common Name 和 Subject Alternative Name 列表)docs.censys.com,以及 握手中的 SNI(Server Name Indication) 字段;这允许 Censys 知道一个 IP 在提供哪一主机名的证书。其次,在 HTTP 层面,Censys 解析 HTTP(S) 响应中的 Host 头或虚拟主机(Virtual Hosts)信息来确定域名。实际应用时,同一台服务器常通过 SNI 和 Host 承载多个域名,Censys 会将从中解析出的所有域名记录为该 IP 的关联域名。

另外,Censys 利用 DNS 数据来补充域名映射:它可能对扫描到的 IP 进行正反向 DNS 查询,或使用被动 DNS 库查找历史 A/AAAA 记录,从而获取域名到 IP 的映射关系。WHOIS 注册信息虽然不直接揭示 IP,但可为域名归属和组织提供背景。总之,Censys 综合利用协议自带字段(SNI、HTTP Host 等)和外部数据源,实现了域名和 IP 的多角度映射docs.censys.comdocs.censys.com

利用公开信息和数据泄露来源增强关联
除了实时扫描数据,Censys 大量依赖公开可用的信息来丰富资产关联。例如,它同步采集证书透明日志中的所有公开 TLS/SSL 证书docs.censys.com。这些证书通常包含域名,即便该证书所用 IP 未被当前扫描捕获,也能通过历史数据发现新域或新服务器。类似地,Censys 可接入被动 DNS(Passive DNS)数据库和 DNS 历史记录,通过第三方或自建数据源追踪域名解析变化,了解某个域名曾映射到的 IP 列表。WHOIS 数据则用于确认域名注册商及所有者信息,帮助判断机构所有权和潜在关联资产。在资产发现与追踪的场景中,Censys 甚至结合公共泄露数据(如开放漏洞库、互联网路由数据)进行上下文分析,但核心依旧是证书和 DNS 等公开记录。这些外部数据源与主动扫描结果相结合,使 Censys 能更全面地绘制网络地图,从而有效揭示主机、服务与域名之间的关联docs.censys.comdocs.censys.com

解决方法

  1. 可爱可恨的扫描程序 Censys-腾讯云开发者社区-腾讯云
  2. 如何拦截Shodan探测 - 知乎

子域名扫描

即便你没有配置SSL证书,也排除了上述工具的扫描,如果配置了一个较为简单常见的子域名,跑下字典就出来了

  1. Subdomain Finder - C99.nl
  2. DNSDumpster - Find & lookup dns records for recon & research
  3. yunxu1/dnsub: dnsub一款好用且强大的子域名扫描工具
  4. lijiejie/subDomainsBrute: A fast sub domain brute tool for pentesters
  5. bit4woo/teemo: A Domain Name & Email Address Collection Tool
  6. aboul3la/Sublist3r: Fast subdomains enumeration tool for penetration testers
  7. OJ/gobuster: Directory/File, DNS and VHost busting tool written in Go
  8. tomnomnom/assetfinder: Find domains and subdomains related to a given domain
  9. screetsec/Sudomy: Sudomy is a subdomain enumeration tool to collect subdomains and analyzing domains performing automated reconnaissance (recon) for bug hunting / pentesting

邮箱发件

某些邮箱在使用SMTP发件时会暴露IP地址
以QQ邮箱为例,在显示邮件原文处即可查看
image.png
image.png
尝试访问一下还可以和上文衔接
image.png

像我这个情况即便没有公开也被打,所以我干脆切了一部分主要服务到上面试试看,再被打了再实践下