Software/Programm analysieren und nach Fehlern absuchen

Hallo also ich will in Programmen Sicherheitslücken suchen. Nur so nebenbei es ist kein Gutes Programm es ist eine Spiel Erweiterung und diese sind sehr schlecht geschrieben. Wie kann ich nach Lücken Suchen Programmier Sprachen Kenntnisse habe ich aber habe wirklich keine Ahnung wie das gehen soll

LG iCrypto
 
Mich würde interessieren für welches Spiel die Erweiterung ist und wie sie heißt.
 
Wenn dir der Sourcecode zur Verfügung steht, sollte es reichen darin nach Lücken (Buffer Overflows, Formatstring-Lücken, Privilegieneskalationen etc.) zu suchen. Steht der Code nicht zur Verfügung, ist "reverse engineering" dein Stichwort. Anleitungen dazu findest du bei Google. Und ansonsten bleibt natürlich der "gold old way" ... Trial and Error.
 
http://de.wikipedia.org/wiki/Fuzzing#Fuzzing-Werkzeuge hat gesagt.:
Bekannte OpenSource-Frameworks sind hier z. B. Sulley oder Peach. Diese Frameworks sind sehr komplex und benötigen umfangreiche Kenntnisse im Bereich Fuzzing und Protokolle. Andere Tools, wie z.B. Fuzzino, bieten einen Testdatengenerator für Fuzzing, sind leichtgewichtig und daher leicht in bestehende Testwerkzeuge oder einen bestehenden Testprozess zu integrieren. Kommerzielle, intelligente Fuzzing-Tools sind u. a. beSTORM von BeyondSecurity oder Defensics von Codenomicon. Codenomicon’s Defensics arbeitet mit sogenannten „Testcases“, die vordefiniert sind. BeyondSecurity’s „beSTORM“-Fuzzer bedient hingegen jedes Feld im Protokoll mit n×n Anomalien und nicht mit Testcases.

Die sind ganz gewiss über Google zu finden, wie z.B. https://github.com/fraunhoferfokus/Fuzzino wenn man nach "fuzzino" sucht.
 
Die Supportforen des jeweiligen Herstellers, sofern vorhanden, sind auch eine nicht zu unterschätzende Infoquelle bzgl. Bugs.
 
Zuerst würde ich möglichst viele Informationen sammeln:
- Programmiersprache (bzw, korrekter: benötigte Laufzeitumgebung), damit man auch die passenden Tools für die Analyse nehmen kann: https://tuts4you.com/download.php? (Java/NET machen z.B im OllyDbg nicht soo viel Spass ;))

Zudem machen Java/NET/Python&Co es dem Programmierer schwer, "klassische" Stack/Heapoverflows zu erschaffen, können allerdings nichts gegen "logische" Fehler ausrichten (so a la "if File.exists("admin.secret") then show_admin_interface()") und machen ganz andere Fehler möglich ("print "Mein ultimativer Taschenrechner:", eval(input)" oder "include(menu_auswahl)")

- Eingabemöglichkeiten (Dateien/Netzwerk) und die dabei verwendeten Formate.

Jetzt schaut man im Reflector/OllyDbg/IDA/<siehe: passende Tools für die Analyse> wie diese Eingaben behandelt werden.
Leider wird da i.d.R nicht "Fehler" dran stehen und es hängt von eigenen Kenntnissen ab, ob und welche man findet ;)

Zum Beispiel: pseudo-java-python mit mindestens 2 potentiellen, "remote" für einen Angreifer ausnutzbaren Fehlermöglichkeiten:
Code:
if (password == user_db.get(user)):
 ...
if item_name not in search_cache_hashmap:
    search_cache_hashmap.set(item_name, search(item_name))
return search_cache_hashmap.get(item_name)
(nein, auch wenn direkte Passwortübermittlung an sich schon als eine einzige, große Fehlerquelle angesehen werden kann, zählt 's nicht ;) )
 
Zurück
Oben