luni, 26 decembrie 2011

Detectarea automata a LoadingMenu.amxx

Dupa cum am observat in ultima vreme multe servicii de boosting, chiar si mastere mari nu accepta pluginul LoadingMenu(cel care modifica meniul jucatorilor Valve_id_lan). Ar fi o munca titanica sa stai si sa verifici manual intrand pe mii de servere si redeschizand CS-ul sau consola de fiecare data.
Facand niste cercetari am reusit sa ghicesc posibilul header al comenzii write_file(folosita la scrierea .res-ului). El este in bytes:

02:00:00:c0:01:00:00:80:59:18:01:03

Un exemplu complet de request ce suprascrie meniul:
 
02:00:00:c0:01:00:00:80:59:18:01:03:80:00:10:42:58:52:40:02:4a:02:10:70:03:21:69:2a:4b:03:66:5b:61:be:2b:ea:91:12:00:02:42:
3c:50:82:a6:18:50:52:38:98:df:ad:80:ce:da:02:61:f6:26:c4:c8:7a:3a:e4:e8:ff:4a:66:3c:10:5f:66:11:25:ea:03:f7:e9:58:63:d5:64:fd:af:80:25:ee:30:a4:4e:c2:24:33:b6:6c:1a:ad:02:b1:8e:50:58:0f:77:54:df:86:9a:47:65:c5:66:5c:dd:0c:59:7b:49:87:df:5b:d6:b9:cb:c0:34:14:c1:a3:52:6c:95:60:8f:e7:4f:9b:eb:dd:f0:00:db:14:39:b9:c5:d2:d6:cc:83:f4:16:10:44:52:8e:99:6f:58:79:78:dc:32:bb:bd:0d:74:4a:18:80

De asemenea pe timpul testului am mai gasit un pachet folositor(cel de deconectare): 05:00:00:00:02:00:00:80:30:6a:64:06:76:6c:73:35:0f:64:2e:60:00


Ideea unui spider ce verifica automat de acel plugin este simpla. Se trimite un request de conectare virtual si se asteapta raspunsul serverului. Daca raspunsul contine acel header inseamna ca trebuie banat. Problema practica e mult mai complicata de atat. De ce? Pluginul loading menu este scris in asa fel incat sa scrie datele la 2 secunde de la client_putinserver, deci dupa conectarea totala. Ca sa creezi o conectare virtuala completa ai nevoie de foarte multe cunostinte despre protocolul Valve(in-game--nu este public) si de mult timp. Ca idee sunt vreo cateva zeci de requesturi pe timpul conectarii la un server. Totusi, cu efort, este posibila crearea unui astfel de spider. Se ia un sniffer si se incepe in a se emula engineul Half-Life pana la un moment dat.Partea urata ca sunt sigur ca cineva o sa se gandeasca sa mareasca timpul de trimitere de la 2 sec la cel putin 30 secunde...si atunci nu prea mai ai ce sa faci, trebuie sa creezi pur si simplu un jucator virtual, cu toate proprietatile, etc. Ganditi-va ca daca acel pachet de loading_menu este trimis la 30 sec de la conectare, in alea 30 secunde botul tau trebuie sa se comporte ca un jucator normal(cateva mii de pachete de date trimise si primite-pachete cunoscute decat de Valve)....cam greu nu? In concluzie cam singura solutie de detectie este cea manuala.

Un comentariu: