Exploits -Folgen-Erkennung-Vermeidung

  • Ich dachte ich mach hier mal ein kleine Artikel über Gmod und Lua Exploits...


    Zuerst: Was sind Exploits ?

    Ein Exploit (englisch to exploit ‚ausnutzen‘) ist in der elektronischen Datenverarbeitung eine systematische Möglichkeit, Schwachstellen auszunutzen, die bei der Entwicklung eines Programms nicht berücksichtigt wurden. Dabei werden mit Hilfe von ProgrammcodesSicherheitslücken und Fehlfunktionen von Programmen (oder ganzen Systemen) ausgenutzt, meist um sich Zugang zu Ressourcen zu verschaffen oder in Computersysteme einzudringen, bzw. diese zu beeinträchtigen. Ein Exploit eines Hackers (bzw. eines Crackers) ist mit der Brechstange eines Einbrechers vergleichbar: beide verschaffen sich damit Zugang zu Dingen, für die sie keine Berechtigung besitzen.

    Nun ja in Gmod wird meist in lua ( https://www.lua.org/ ) bzw gLua ( abgewandelte version ) programmiert.
    Doch was heißt das jetzt, Lua ist eine Script Sprache und wird deshalb nicht Kompiliert. Zudem wird der Source Code in Klartext und nicht wie bei Compilersprachen( c oder c++ ) als bytecode gespeichert.
    Das macht das Finden von Fehlerhaften Programmen umso komfortabler da man direkt sieht* (im Normalfall was ein Script macht ).
    Ich werde hier ein bisschen auf Bekannte Fehler eingehen und Strategien erläutern wie man diese findet/behebt.



    Zur Detection:
    Zuerst rate ich ein Programm bzw weg die Client Scripts des servers zu bekommen( z.b. Scripthook ), für leute die dies selbst machen wollen detourt einfach luaL_loadbuffer -> http://pgl.yoyo.org/luai/i/luaL_loadbuffer


    nun Joint ihr auf ein Server / bzw holt euch die Client Scripts ( kleiner trick mit NotePad++ könnt ihr ganze dir's. auf verschiedene Keywords scannen ).
    So Jetzt Habt ihr die Client Files dort solltet ihr immer nach Folgenden Wörter Ausschau halten:

    C
    net.SendToServer( )
    RunConsoleCommand
    :IsAdmin        -> LocalPlayer():IsAdmin (
    
    
    //zu merken die Formatierung kann abweichen Aufpassen!



    Ich habe hier mal ein Beispiel:


    Code
    //cl_bs.lua ->ClientSide
    //code[...]
    net.Start( "admin_tool_kick" )
       net.WriteEntity( ply ) 
    net.SendToServer()
    //code[...]

    Also jetzt wo wir ein potenziellen Exploit gefunden haben schauen wir uns den Pfad an ( optional aber zu empfehlen ) dort können wir Informationen finden wann die Nachricht aufgerufen wird und um welches Addon es sich handelt.
    ->Danach einfach ein bisschen rumprobieren( ich möchte nicht näher darauf eingehen )


    Aber wie kann ich das jetzt verhindern?!?!?!11

    Wenn man sich die net Libery von GMod genau anschaut ( https://wiki.garrysmod.com/page/net/Receive ) Sollte man eigentlich gleich sehn
    net.Receive( str messageName, function callback )
    und


    Da der Server ein Parameter hat "ply" ist nun wohl klar worauf ich hinaus will ( ply ist repräsentativ für den Spieler der die net nachricht aufruft )
    Diese kann man jetzt ohne zweifel überprüfen und schauen ob er z.b. Kickrechte hat.


    ES IST NIE EINE GUTE IDEE DEIN LocalPlayer ALS ENITIY MITZUSENDEN DA ES EIN GROßES SICHERHEITS RISKIO IST!



    Beispiele Von Gmod Exploits:
    ( ich werde hier alte zeigen die schon gepatched sind also denkt nicht mal dran sie zu benutzen )



    Code
    //banleaver ulx ban
    //banned player 
    
    
    net.Start("banleaver")
    net.WriteString( id .."{sep}".. name )
    net.SendToServer()



    Code
    //Gambles/lottery 
    //started a gamble of a given player and opend the gamble menu
    //make player poor
    net.Start( "LotteryMenu" )
       net.WriteEntity( ply )
      net.WriteInt( 1, 16)
    net.SendToServer( )


    Bei weiteren Fragen Steh ich gerne zur Verfügung wenn jemand interresse an der Sicherheit seinse Servers hat ich kann gerne euren server auf exploits überprüfen und an alle ich hoffe diser Text war informativ
    Würde mich auf KONSTRUKTIVE ( BITTE NICHT "SCHEIß HACKER" ) Kommentare freuen ;)^^


    -K0e


    Das wichtigste ist Geduld!


    *man sieht natürlich nur die Dateien die der Server für die Clienten zu Verfügung stellt

  • Finde deine Beiträge ebenso interessant und informativ. Danke, dass Du hier ein wenig Leben rein bringst.
    Bisher warst Du mir eher ein Dorn im Auge. Können aber gerne via PM (die du bereits erhalten hast) mal darüber quatschen.


    Der "Scan" der Server durch eine weitere Person dürfte nicht Schaden. Zwei Augen mehr sehen immer mehr(?). Du weißt worauf ich hinaus möchte :D

    Viele Grüße,
    Instinkt


    Owner werden ist nicht schwer. Owner sein dagegen sehr.
    Denken ist harte Arbeit, weshalb sie auch nur von Wenigen ausgeübt wird.


    giphy.gif

    76561198030713180.png