OVH - Anti-hack - DOS UDP attacks to port 80. Peer2peer mode.
Par PlaceOweb le vendredi, septembre 14 2012, 21:48 - Système - Lien permanent
En tant qu'utilisateur d'hébergement de serveur dédié OVH ou Kimsufi, vous avez peut être déjà reçu un mail "Anti-hack" concernant "DOS UDP attacks to port 80. Peer2peer mode."
Selon ce que vous hébergez, je vous invite à bien configurer votre pare feux, car OVH surveille et traque le peer-to-peer.
OVH - Détection de Hack
Bonjour, Votre serveur ks123456.kimsufi.com representant une trop grande menace pour notre reseau, nous n'avons eu d'autre choix que de le placer dans le mode 'rescue FTP'. Un identifiant et un mot de passe vous ont ete communiques par email afin que vous puissiez recuperer simplement vos donnees encore presente sur son espace de stockage. N'hesitez pas a vous rapprocher du support technique afin que cette situation ne devienne pas critique. Vous pourrez retrouver ci-dessous les logs remontes par notre systeme qui ont conduit a cette alerte. - DEBUT DES INFORMATIONS COMPLEMENTAIRES - DOS UDP attacks to port 80. Peer2peer mode. startime endtime scr:port dst:port ---------------------------------------------------------------------------------------------- 2012-09-14 21:04:49 2012-09-14 21:05:21 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:05:21 2012-09-14 21:05:54 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:05:55 2012-09-14 21:06:27 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:06:27 2012-09-14 21:07:00 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:07:00 2012-09-14 21:07:33 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:07:33 2012-09-14 21:08:06 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:08:06 2012-09-14 21:08:39 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:08:39 2012-09-14 21:09:12 91.121.76.65:28960 188.218.19.90:80 2012-09-14 21:09:12 2012-09-14 21:09:45 91.121.76.65:28960 188.218.19.90:80 - FIN DES INFORMATIONS COMPLEMENTAIRES - Cordialement, Support client OVH.
Également, sur la console de gestion, on retrouve la procédure et l'ultimatum en terme d'avertissement et de rupture du contrat :
Votre serveur "ks123456.kimsufi.com" été hacké 3 fois depuis sa livraison. Votre serveur a été désactivé suite à un comportement anormal récurrent. Vous avez reçu les identifiants d'accès vous permettant de récupérer vos données. Votre serveur ne sera réactivé qu'après une réinstallation complète. Ceci est votre dernier avertissement. Toute nouvelle alerte entrainera la fermeture définitive du serveur et la rupture du contrat.
Ce qu'il en est vraiment concernant "DOS UDP attacks to port 80. Peer2peer mode."
Ce serveur dédié héberge un serveur de jeu "Call of Duty 4" qui écoute sur le port 28960 et qui fonctionne en UDP. On peut consulter anonymement l'état des joueurs sur le serveur via des commandes RCON transportées par UDP. De nombreux sites de statistiques de serveurs de jeux interrogent 24h/24 ces serveur de jeux. > Bonjour, > le problème est lié au fait que ce soit sur le port 80, en effet cela déclenchera toujours les robots de détection de scan, > a moins que vous parveniez à modifier les ports concernés ou à désactiver complétement ce trafic.
DoS "getstatus" dans les logs
A regarder les logs d'iptables, on constate effectivement par à coups, du DoS UPD sur le port 28960 du serveur de jeu "Call of Duty 4" avec la commande "getstatus" lancée plus de 1000 fois en même pas 2 minutes....
Sep 14 14:23:45 ks351544 kernel: IN=eth0 OUT= MAC=00:27:0e:1b:98:99:00:d0:c0:d0:51:04:08:00 SRC=208.64.121.29 DST=91.121.76.66 LEN=42 TOS=0x00 PREC=0x00 TTL=248 ID=2608 PROTO=UDP SPT=80 DPT=28960 LEN=22 Sep 14 14:23:45 ks351544 kernel: IN=eth0 OUT= MAC=00:27:0e:1b:98:99:00:d0:c0:d0:51:04:08:00 SRC=208.64.121.29 DST=91.121.76.66 LEN=42 TOS=0x00 PREC=0x00 TTL=248 ID=2609 PROTO=UDP SPT=80 DPT=28960 LEN=22
17:49:24.296203 IP 203.46.105.66.www > ks351544.kimsufi.com.28960: UDP, length 14 0x0000: 4500 002a 6709 0000 f811 7f8e cb2e 6942 E..*g.........iB 0x0010: 5b79 4c41 0050 7120 0016 7a6c ffff ffff [yLA.Pq...zl.... 0x0020: 6765 7473 7461 7475 730a 0000 0000 getstatus..... 17:49:24.296310 IP 203.46.105.66.www > ks351544.kimsufi.com.28960: UDP, length 14 0x0000: 4500 002a 670a 0000 f811 7f8d cb2e 6942 E..*g.........iB 0x0010: 5b79 4c41 0050 7120 0016 7a6c ffff ffff [yLA.Pq...zl.... 0x0020: 6765 7473 7461 7475 730a 0000 0000 getstatus..... 17:49:24.296417 IP 203.46.105.66.www > ks351544.kimsufi.com.28960: UDP, length 14 0x0000: 4500 002a 670b 0000 f811 7f8c cb2e 6942 E..*g.........iB 0x0010: 5b79 4c41 0050 7120 0016 7a6c ffff ffff [yLA.Pq...zl.... 0x0020: 6765 7473 7461 7475 730a 0000 0000 getstatus.....
L'appel UDP étant émis depuis le port 80 (http), le serveur de jeu réponds sur ce même port. Donc d'un point de vue réseau, c'est de l'UDP qui passe sur du port web (80). Alors que justement, initialement le protocole HTTP sur port 80 est prévu exclusivement en TCP et non pas UDP (List of TCP and UDP port numbers : 80 TCP Hypertext Transfer Protocol (HTTP)).
Également, puisque le serveur réponds en dépilant les questions "getstatus", il réponds la même trame autant de fois que l'attaquant a interroger le serveur. Donc répondre en émettant 1000 fois la même trame à destination du l'attaquant, étant donné que c'est sur le port 80, la surveillance du réseau détecte cela comme un DoS de votre serveur à destination de l'attaquant sur le port 80.
La commande incriminée "getstatus"
Par exemple en lançant manuellement la commande UPD "getstatus"
ks123456:~# echo -e '\xFF\xFF\xFF\xFFgetstatus' | nc -u localhost 28960 ÿÿÿÿstatusResponse \_Admin\MIJA\_Email\contact@mija.com\_Location\Paris, FRANCE\_Maps\COD4 Stock & Custom\_Website\http://cod4.mija.com/\g_compassShowEnemies\0\g_gametype\sab\gamename\Call of Duty 4\mapname\mp_overgrown\protocol\6\shortversion\1.7\sv_allowAnonymous\0\sv_disableClientConsole\0\sv_floodprotect\1\sv_hostname\COD4 v1.7 FR\sv_maxclients\38\sv_maxPing\60\sv_maxRate\5000\sv_minPing\0\sv_privateClients\0\sv_punkbuster\0\sv_pure\1\sv_voice\0\ui_maxclients\38\pswrd\0\mod\0 40 84 "[ZSP]Bauer67" 110 92 "[-__-]FilipM98" 110 111 "[-__-]MPJUAN06" 172 95 "[-__-] Nintelav" 70 92 "m c h r 3 0 0 0"
Correction
Pour COD4 : le patch anti DoS
Nous obtenons des rapports d'attaques par déni de service, où les réseaux de zombies va envoyer des requêtes au serveur dédié COD4 aussi vite que possible avec des adresses usurpées. Ils envoient un petit paquet UDP, et le serveur répond avec un grand paquet à l'adresse falsifiée. Multipliez cela aussi rapidement que vous pouvez traiter les paquets UDP dans le tampon du serveur paquet entrant par trame. Sur les serveurs COD4 publics, vous pouvez vraiment faire une victime à ses genoux avec une grave inondation de paquets indésirables.
Côté système
iptables
Linux CoD4 DDoS Query Limit Binary
$IPT -A INPUT -p UDP -m length --length 42 -m recent --set --name getstatus_cod $IPT -A INPUT -p UDP -m string --algo bm --string "getstatus" -m recent --update --seconds 1 --hitcount 20 --name getstatus_cod -j DROP # mieux selon la taille variable des paquets $IPT -A INPUT -p UDP -m length --length 41:45 -m recent --set --name getstatus_cod $IPT -A INPUT -p UDP -m string --algo bm --string "getstatus" -m recent --update --seconds 1 --hitcount 20 --name getstatus_cod -j DROP
DDoS attack from Wolfenstein ET Servers. Developers, please fix the exploit
iptables -N CHAIN_GETSTATUS # new chain_getstatus iptables -I INPUT -p udp -m multiport --dports 27960,27961,27962,27963,27964,27965,27966,27967,27968,27969 -m string --string "getstatus" --algo bm --from 30 --to 45 -j CHAIN_GETSTATUS # setup for Input iptables -A CHAIN_GETSTATUS -m hashlimit --hashlimit 30/sec --hashlimit-burst 1 --hashlimit-htable-expire 10000 --hashlimit-mode srcip --hashlimit-htable-gcinterval 2300 --hashlimit-name getstatus -j DROP
Serveur kimsufi suspendu ...
J'ai réussi à concevoir quelques règles Iptables avec un filtre Fail2ban qui permet d'éviter (l'effet de l'attaque).
tcpdump udp -n -v -s0 -XX -c 500 | grep -A4 tstatus
qui fait carrément la recherche du getstatus
Soit directement dropper si dépasse plus de X secondes, ou alors partir dans un log kernel et relayer par fail2ban
iptables -N QuakeLimit iptables -A QuakeLimit -m hashlimit --hashlimit 3/second --hashlimit-mode srcip --hashlimit-name QuakeLimit -j RETURN iptables -A QuakeLimit -j DROP iptables -I INPUT -p udp --dport 28960 -m length --length 41:45 -j QuakeLimit ou iptables -I INPUT -p udp --dport 28960 -m string --algo bm --string 'getstatus' -j QuakeLimit Pour une recherche en hexa : iptables -I INPUT -p udp --dport 28960 -m string --algo bm --hex-string '|FF FF FF FF|' -j QuakeLimit
Ressources similaires
DoS UDP attacks on port 80
"getstatus". J'ai fermé les ports, le jeu n'est pas lancé et pourtant, je continu à être floodé de requêtes bidons.
Serveur kimsufi suspendu ...
Une attaque qui sévit actuellement sur une grosse majorité de serveurs de jeux cod4; enfin tout ceux qui utilisent le protocole de jeu de quake "une faille très connue".