Overview
Minecraft Ping is a specialized Layer 7 attack designed specifically for Minecraft Java Edition servers. It exploits the Server List Ping protocol by flooding the server with status requests, forcing it to process packet parsing, JSON serialization, and response generation for each request.This attack uses the legitimate Minecraft protocol and appears as normal server list pings.
How it works
The Minecraft Ping attack implements the official Minecraft Server List Ping protocol:- TCP Connection: Establishes connection to target server (default port 25565)
- Handshake Packet: Sends protocol handshake with:
- Packet ID:
0x00 - Protocol Version:
754(Minecraft 1.16.4+) - Server Address: Target hostname
- Server Port: Target port
- Next State:
1(status)
- Packet ID:
- Status Request: Sends status request packet (
0x00) - Response Handling: Reads partial response and discards it
- Connection Close: Closes connection immediately
- Repeat: Each thread continuously sends new ping requests
Minecraft protocol structure
When to use
Minecraft Ping is effective for:- Minecraft server stress testing: Test your server’s capacity to handle status requests
- Query flood simulation: Simulate massive server list queries (like from server lists)
- DDoS protection testing: Verify if anti-DDoS plugins (like TCPShield) work correctly
- Resource exhaustion: Test server’s JSON serialization and packet handling under load
- Plugin stress testing: Test if monitoring/status plugins can handle high request rates
Usage
Basic Minecraft Ping attack (uses default port 25565):Parameters
Minecraft server hostname or IP. Can include
tcp:// prefix and :port suffix.Attack duration in seconds
Delay between ping requests in milliseconds per thread
Not used in Minecraft Ping (kept for API consistency)
Number of concurrent threads (0 = number of CPU cores)
Show detailed logs for each ping request
Allow running without proxies (not recommended)
Expected behavior
Console output
Standard mode:Server-side impact
On the Minecraft server, each ping request causes:- Packet parsing: Deserialize VarInt-encoded handshake packet
- Protocol handling: Validate protocol version and state transition
- Status generation: Serialize server info to JSON:
- Response transmission: Send JSON response with VarInt length prefix
- Connection cleanup: Close connection and free resources
Technical implementation
Implementation details frominternal/attacks/game/minecraft_ping.go:19-73:
- Protocol version: Uses
754(compatible with Minecraft 1.16-1.20+) - VarInt encoding: Custom
writeVarInt()implementation - String encoding: Length-prefixed UTF-8 strings via
writeString() - Port handling: Defaults to
25565if target uses scheme-less format with port 80 - Response reading: Reads 256 bytes + copies 64 more to prevent buffer clog
- Timeout: 3-second deadline for entire operation
- Proxy support: Full SOCKS5/HTTP proxy support
Packet construction
Attack effectiveness
Why Minecraft servers are vulnerable
Why Minecraft servers are vulnerable
- CPU-intensive: JSON serialization for every ping
- Favicon encoding: Base64 PNG encoding in response
- Plugin overhead: Many plugins hook into status events
- No caching: Most servers regenerate JSON for each request
- Query plugins: Additional overhead from query/vote plugins
Server performance impact
Server performance impact
At high request rates (500+ pings/sec):
- CPU usage spikes (JSON serialization bottleneck)
- Network thread saturation
- Increased tick time (gameplay lag)
- Potential crash if
max-tick-timeexceeded - Plugin event handlers slow down
Optimizing attack rate
Optimizing attack rate
- Lower delay: 100-200ms for aggressive attacks
- More threads: 50-100 threads typical
- More proxies: Harder to IP-block
- Longer duration: Sustain pressure over time
Defense mechanisms
If you’re protecting a Minecraft server:Use DDoS protection
Services like TCPShield, Cosmic Guard, or cloudflare Spectrum specifically protect Minecraft servers.
Real-world scenarios
Testing server capacity
Validating DDoS protection
Protocol compatibility
Protocol Version 754:
- Compatible with Minecraft 1.16 through 1.20+
- Works with Paper, Spigot, Purpur, Fabric, Forge servers
- BungeeCord and Velocity proxies also vulnerable
- Bedrock Edition servers not affected (different protocol)
Comparison with other attacks
- vs TCP Flood
- vs HTTP Flood
Minecraft Ping:
- Protocol-specific, appears legitimate
- Triggers server-side processing
- Harder to distinguish from real traffic
- Generic TCP, random data
- Minimal server processing
- Easier to detect and block
Advanced techniques
Protocol version randomization
Modify the attack to randomize protocol versions to test version validation:Hostname spoofing
Test virtual host routing by varying the hostname sent:Related attack methods
TCP Flood
Generic TCP flood for any service
HTTP Flood
Layer 7 HTTP request flood