Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: Jan Jurík 02. 08. 2011, 22:24:30
-
Zdravím přátelé, obracím se na Vás ohledne jedné rady, spíše nasměrování.
Mám na debianu určitý sw, ale bohužel jsou mezi námi tací co mi do daneho sw posílají upravene packety pomocí software WPE (Winsock Packet Editor). Chtěl bych se tedy optat, jde se proti tomu bránit a případne čím nebo zda můj problém uspokojí iptables? Děkuji za informaci.
-
zalezi od rozdilu mezi nezadoucimi paketmi a zadoucimi. adresa odesilatele? nejaka specificka byte sekvence? pripadne bych zvazil odstraneni mozneho bugu v software
-
Adresa odesílatele není známá, na server se pripojuje zároven až 200 různých IP, ale pouze třeba 5 se snaží využívat programu WPE a proto aby serveru odesílaly falešné packety. Bug v sw není, jen práve že wpe umožnuje odesilat zkreslené a upravene packety. A tím si upravovat hodnoty dat co prijma server. A nevím jak se tomu bránit aby sever upravene packety neprijmal.
-
A čím se liší ty upravené od těch neupravených?
-
Zdravím,
tohle vypadá jako např. nějaký gameserver, na který game client (gamesa u uživatele) posílá např. dosažené score, tím packet editorem si to podvodník "vylepší" a server nepozná, že byl paket změněn mimo originální aplikaci, protože data nejsou nijak podepsaná (checksum, ssl ???) ...
Jestli je to tak, tak je to docela problém, protože beze změny protokolu lze asi jen hádat na straně serveru pravděpodobné podvodníky (příliš velká změna příliš rychle apod. ...).
-
Winsock Packet Editor
neni jediny packet editor :)
protože data nejsou nijak podepsaná (checksum, ssl ???) ...
Checksumem detekujeme chyby a ssl sifrujeme a autentizujeme
Pokud sw vklada data do paketu v otevrene forme, tak mate smulu :)
-
Z principu samozřejmě nepujde rozeznat data odeslaná aplikací a data upravená. Nemusí ani používat žádný packet editor, muže si nějaký svobodný software překompilovat sám. Data z neznámého zdroje jsou vždycky nespolehlivá a musí se kontrolovat. Třeba WPE se dříve zneužíval ve hrách typu WoW, server musí pak testovat prakticky vše jestli se hráč nepohybuje rychleji než má, jestli neprodává něco co nemá atd.
-
Čau,
např. mmorpg hra lineage 2 funguje takto.
V klientovi je uložen jeden staticky blowfish key. Jakmile se klientem připojíš na server, tak první příchozí paket je zašifrovaný tímto statickým blowfishem a v paketu se nachází nový dynamicky vygenerovaný blowfish key, který se bude následně používat pro šifrování jak klientem, tak serverem. Dál se v onom paketu nachází veřejný klič pro RSA šifrování, kterým se zašifrují přihlašovací údaje. RSA klič je navíc zpřeházený a každý paket nakonci projde takovou xor smyčkou.
I přes tohle všechno se stejně podařilo to rozluštit a vzniklo několik prográmků, jako např. l2 walker, který hraje za hráče, takže si to pustíte a jdete do školy a postava se vesele expí.
Dokonce nějaký rusák udělal program - hlapex - který umožňoval právě vyrábět itemy atd. tím, že vytvářel "fejk" pakety, takže se musela dělat ochrana ještě na serveru, jako např. kontrolovat, jestli item, co se přidává do invu, opravdu někde vypadl z moba atd..
Je to celkem složitá záležitost, ale jestli to je nějaké tvoje home-made hra, kterou hraje pár lidí a jen se našli nějací blbánci, co si hrajou na hackery, tak bych řekl, že stačí bohatě šifrování nějakou symetrickou šifrou a máš po problémech. Pokuď ti do toho bude bušit banda rusáků, tak stejně neuděláš nic.
-
Hehe, proti blbe koncipovanemu softwaru nepomuze ani tisic sifer. :-D Napis o co presne se jedna, trebas neco vymyslime.
-
Pokud sw vklada data do paketu v otevrene forme, tak mate smulu :)
A i pokud je podepisuje, šikovný reverzní inženýr ten klíč stejně dostane.
-
Bug v sw není
Pokud server přijme podvržený paket a provede bez jakékoliv kontroly to, co v něm je, pak je ten software děravý a dokonce to je jeden z nejzávažnějších bugů.
Žádný program nesmí věřit externímu vstupu, uživatelé (a hackeři) jsou velice vynalézaví, a pro veřejně přístupný server to platí obzvlášť, protože je to obrovská brána pro útok na ten server.
-
Jenže tady se jedná o podvádění ze strany klienta nějaké pitomé hry. Takže server to samozřejmě přijme, samozřejmě to zpracuje a samozřejmě to ničemu nevadí. A nějaký neoficiální server pro nelegální klienty bez anticheatu pochopitelně nikoho nepálí.
-
v tomto pripade se to musi osetrit na strane serveru (bud client+serverova cast - urcity kus kodu na klientovi, ktery to bude sifrovat, nebo pridavat nejaky salt, pripadne jeste sifrovane spojeni), nebo kontrola "pravosti packetu" na strane serveru
-
v tomto pripade se to musi osetrit na strane serveru (bud client+serverova cast - urcity kus kodu na klientovi, ktery to bude sifrovat, nebo pridavat nejaky salt, pripadne jeste sifrovane spojeni), nebo kontrola "pravosti packetu" na strane serveru
Ne, uživatel si salt může z programu vyextrahoavat a jsme tam, kde jsme byli.
-
Jenže tady se jedná o podvádění ze strany klienta nějaké pitomé hry. Takže server to samozřejmě přijme, samozřejmě to zpracuje a samozřejmě to ničemu nevadí. A nějaký neoficiální server pro nelegální klienty bez anticheatu pochopitelně nikoho nepálí.
Moc rád bych viděl nějaký funkční anticheat. Škoda, že nic takového nelze z principu udělat.
-
Podvádění v online hrách se bez hardwarové podpory (http://en.wikipedia.org/wiki/Trusted_Computing (http://en.wikipedia.org/wiki/Trusted_Computing)) nedá uspokojivým způsobem zabránit. Obvykle se používá nějaká kombinace security‐through‐obscurity a heuristik na straně serveru, snažícím se podvodné chování odhalit.
-
Moc rád bych viděl nějaký funkční anticheat. Škoda, že nic takového nelze z principu udělat.
A proč by ne? Anti cheaty jsou tu už dávno a fungují dobře.
-
Jenda: ano, pro ultra-hyper-leet hackery je tato ochrana zbytecna...
nicmene pokud se program sikovne udela, nemusel by salt jit tak jednodusse zjistit... jinak anticheaty existuji a funguji, pokud chce, at si zaplati gameguard a ma to vyresene
-
Anticheat z principu nemůže fungovat. Lze např realizovat ochranu proti tomu, aby nekoupil to, co nikdo neprodává, nebo aby se nepohyboval rychleji, než je na mapě možné. Ale není možné z principu detekovat věci, které možné jsou, akorát jsou např. obtížné. Nanejvýš heuristikou odstřihnout hráče, kteří příliš vyčuhují ze statistik...
-
Pokud ty upravená data posílá klient, není možné ty data zkotrolovat proti serveru?
-
Jde o to, jestli je kontrolovat vůči čemu. Takhle zabráníš "nelegálním" akcím, ale nezabráníš akcím legálním, byť provedeným strojem. Např. různé expovací skripty apod.
-
Pokud nejsou nastavené vektory přerušení, tak si žádný normální zavadeč neškrtne. Jako řešení mě napadá napsat jednoduchý vlastní zavaděč, ten uložit do toho souboru spolu s linuxovým jádrem a initramdiskem (takže ExpressGate tohle všechno najednou načtě do paměti). Zavaděč potom po spuštění najde a spustí jádro a předá mu ukazatel na začátek initramdisku.
-
Pardon, špatné diskuse
-
Podvádění v online hrách se bez hardwarové podpory (http://en.wikipedia.org/wiki/Trusted_Computing (http://en.wikipedia.org/wiki/Trusted_Computing)) nedá uspokojivým způsobem zabránit. Obvykle se používá nějaká kombinace security‐through‐obscurity a heuristik na straně serveru, snažícím se podvodné chování odhalit.
Ani s HW, koukni na Sony.
-
Moc rád bych viděl nějaký funkční anticheat. Škoda, že nic takového nelze z principu udělat.
A proč by ne? Anti cheaty jsou tu už dávno a fungují dobře.
Tak to bych princip takového rád viděl.
-
Podvádění v online hrách se bez hardwarové podpory (http://en.wikipedia.org/wiki/Trusted_Computing (http://en.wikipedia.org/wiki/Trusted_Computing)) nedá uspokojivým způsobem zabránit. Obvykle se používá nějaká kombinace security‐through‐obscurity a heuristik na straně serveru, snažícím se podvodné chování odhalit.
Ani s HW, koukni na Sony.
To je nutná podmínka, ne postačující, chybami v softwaru se dá pokazit všechno. :-)
-
A proč by ne? Anti cheaty jsou tu už dávno a fungují dobře.
Tak to bych princip takového rád viděl.
http://en.wikipedia.org/wiki/Valve_Anti-Cheat
http://en.wikipedia.org/wiki/PunkBuster
-
http://en.wikipedia.org/wiki/Valve_Anti-Cheat
http://en.wikipedia.org/wiki/PunkBuster
Jsem si téměř jist, že ani jeden odkazovaný anticheat ve skutečnosti nefunguje. Ten druhý dokonce skenuje pamět klienta na známé hacky, ale co když k pozměnění dojde na cestě? O tom prvním se pro jistotu nic neví, takže jediná vrstva zabezpečení, kterou to přináší, je security by obscurity.
-
Server musí obsahovat clearingové centrum, kde se všechny akce kontrolují oproti informacím od ostatních hráčů. Není možné vyrobit předmět jen tak ze vzduchu, buď ho někdo měl, pak bude existovat nejen akce získání, ale i akce předání. Pokud ten předmět byl v NPC, musí existovat záznam o jeho získání, třeba tím, že NPC ví, že selhal v testu na okradění, nebo že umřel v souboji.
Prostě veškeré akce musí být dvojmo, jako v účetnictví, má dáti, dal. Pak není možné, aby jeden hráč dělal něco, co nemohou ověřit ostatní hráči.
Rychlý pohyb? Pokud klienti ostatních hráčů znají možnosti postavy, kterou trekují po obrazovce a vizualizují jeho pozici, nemohou slepě přejímat jeho souřadnice a v případě odchylky začít nastalou situaci nějak řešit. Třeba logovat na centrálu podezření.
-
Jenže běžně jsou ve hrách nelegální i např. expovací stroje, a ty se mohou pohybovat v podstatě "normálně". Samozřejmě, nepřirozeně rychlý pohyb je také detekovatelný, ale ono často stačí se urychlit o kousek, což ostatní nemohou detekovat.
-
U některých typů her, kde např. závodních, kde záleží na rychlosti a přesnosti reakce uživatele, pak umělé "zšikovnění" hráče je prakticky nedetekovatelné.
-
Co som videl, tak mimo kopy mechanizmov proti obchadzaniu VAC kontroluje checksumy svojich (a prip. niektorych dalsich) binarok na disku a v pamati a posiela ich tvorcovi. Na klientskej strane nie je "skoro nic". Kedze niektore bany sa aplikuju az po dlhsej dobe, tak je tazke zistit, ze je cheat rozpoznavany VAC. Za novu hru sa musi platit, co velmi pomaha proti pustaniu cheatov "len tak".
Veci ako rychly pohyb je mozne zistit na serveri - potom nejake programove urychlenie nepomoze.
Ak ide o rychle reakcie alebo pomoc zo strany PC, tak to sa da odhalit pomerne uspesne neuronovou sietou na serveri. Moje pokusy ukazali uspesnost u cheaterov cez 80% s jednotkami percent falosnych detekcii.
-
Programoval jsem RedDragon a par let jsem provozoval L2 server ADT Arena.
Pokud jde o vynalezavost hracu - nema hranice.
Vsechny akce musi generovat server a klient byt o nich jen informovan. Vsechny vstupy od klienta musi byt zkontrolovany. Napriklad - klient rika jdu vpravo, ted utocim a pod. Server musi rict ted vypadl item, ted jsi zpusobil zraneni.
A pak uz zbyva jen ochrana proti automatum. Jsou ruzne druhy automatu. Co mne napada :
- navrh stratege: Tomu asi nezabranite, na druhou stranu je tezke je udelat. Jako navrh strategiie lze chapat i navod. Hra, ktera ma jednoznacne viteznou strategii takovy navod evokuje. Hra nesmi mit viteznou strategii podle navodu.
- zrychleni reakci: S timhle jsem nebojoval. Ale co mne napada: zavedeni sumu do dat ze serveru. Mozek ma uzasnou schopnost sum filtrovat. A naprogramovat reakce je tezke. Dale statistika: pokud ma nekdo neprimerene rychle reakce - neni to robot ?
- unavne expeni/crafteni: Tady pomuze dobrovolny pomocnik admina ktery zacne s hracem chatovat. Neodpovida - je to asi robot. Treba pro Lineage jsem si udelal HW klikatko na mysi. 1x NE555, par soucastek a SW to nezjisti. Premyslel jsem i o tom, ze to udelam na jednocipu - ktery bude klikani nahodne flakat, ale zjistil jsem ze pravidelnost nikdo nezjistuje.
Ohledne zabezpeceni kodovani paketu = nemoznost jejich napodobeni mam pochybnosti. Pokud hra vyzaduje pravidelne akce, da se to udelat na urovni HW (klavesnice, mys). Je pravda, ze zbastlit emulator klavesnice a mysi nezvladne kazdy. Instalovat SW ano.
SW, ktery umozni klientovi podstrcit serveru hodnotu je treba refaktorizovat. Trochu mimo tema - uz jsem videl eshop, ktery si cenu postovneho posila pres POST. A nevadila mu zaporna cena postovneho.
-
Jenže běžně jsou ve hrách nelegální i např. expovací stroje, a ty se mohou pohybovat v podstatě "normálně". Samozřejmě, nepřirozeně rychlý pohyb je také detekovatelný, ale ono často stačí se urychlit o kousek, což ostatní nemohou detekovat.
No expování je chyba špatného RPG systému. Dodnes jsem nepochopil, proč postupování na úroveň je řešeno tak hloupě. Když to bylo na CircleMUDu nebo EOB II (kde se dalo slušně expovat v Crimson Tower u bazilišků, protože jich bylo nekonečno), tak jsem to považoval za nedokonalost prvních RPG. Ale ono se v tom jede vesele dál.
-
Co som videl, tak mimo kopy mechanizmov proti obchadzaniu VAC kontroluje checksumy svojich (a prip. niektorych dalsich) binarok na disku a v pamati a posiela ich tvorcovi.
Syscall pro čtení souborů se dá odchytit a podvrhnout snadno. S checksumováním paměti to bude složitější, ale pořád je tu možnost ten program prostě disasemblovat a upravit. Schopnosti [zejména ruských] hackerů, co se týče reverse-engineeringu, jsou neuvěřitelné, a pokud mají motivaci, udělají z programu open-source :).
Veci ako rychly pohyb je mozne zistit na serveri - potom nejake programove urychlenie nepomoze.
Ak ide o rychle reakcie alebo pomoc zo strany PC, tak to sa da odhalit pomerne uspesne neuronovou sietou na serveri. Moje pokusy ukazali uspesnost u cheaterov cez 80% s jednotkami percent falosnych detekcii.
Tak jde o to, jak okatě to ten hráč udělá.
-
Vidím, že je nejvyšší čas donutit spolužáky-hráče, aby mi o tom něco řekli. Protože hry už mnoho let nehraju, vůbec netuším, co je to expování :-).
-
Jedná se o maly wow server, pomoci WPE si nekteri hraci upravují čas za jaky muzou treba pouzit dalsi kouzlo, kdyz ten čas je pevne dany ve hre atd, nemluvim o rychlosti, letani atd.
-
No tak todle všechno holt musíš kontrolovat aplikačně na serveru: nesmíš spoléhat na klienta.
-
Jedná se o maly wow server, pomoci WPE si nekteri hraci upravují čas za jaky muzou treba pouzit dalsi kouzlo, kdyz ten čas je pevne dany ve hre atd, nemluvim o rychlosti, letani atd.
Hodiny přece běží na serveru, takže snad není co řešit. Při použití kouzla pošle klient požadavek serveru, ten požadavek porovná s timestampem v databázi, případně ho aktualizuje včetně dalších stavů a hráči pošle informaci, v jakém stavu se nachází. Pokud kouzlo nemá k dispozici, nemá manu nebo ještě neuplynul timeout, akce se neprovede a hráči se pošlou nezměněné stavy.