Zurück   Flashforum > Flash und Server > Flash mit XML und Webservices

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-02-2012, 10:02   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Sicherheit Socket-Server

Hallo,

Wenn ich es richtig verstanden habe, kann ein User nur seine eigene
Verbindung abhören und dementsprechen seine Daten verändert an den
Server schicken, oder hat er die Möglichkeit den gesamten Verkehr
des Socket-Server Port einzusehen?

Falls ersteres zutrifft, ist man auf der sicheren Seite, wenn man jede
Interaktion des Users vom Server gegenprüft und erst bei Ligimitation
zur Verarbeitung durchlässt?

Ich hoffe es kann mir jemand etwas genaues dazu sagen.

Danke & Grüße
macmasterflash ist offline   Mit Zitat antworten
Alt 11-02-2012, 10:42   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.326
der server muss immer mit manipulationen rechnen.
du kannst niemals wissen, ob die eingehenden daten echt oder falsch sind. sind echte daten echt, weil sie echt sind oder nur deshalb, weil die gefälschten daten wie echte daten sind. nur unechte daten kann man als unechte daten erkennen.

(sicher wäre wohl nur quantentechnik, weil ein abhören der daten die daten selbst verändert.)

in der praxis heisst es wohl, du solltest prüfen ob die daten logisch richtig sein können. ob eventuell die rückantwort zu schnell gekommen ist, ob erkennbare muster auf eine automatische reaktion schliessen könnte.
ein möglichst komplexer ablauf der kommunikation, der sich ändert und vorherige antworten mit in die überprüfung mit einbeschliesst ist schlecht von angreifern nach zu bilden.

usw.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (11-02-2012 um 10:47 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 11-02-2012, 11:23   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Danke für deine schnelle Antwort.

Doch ganz konkret war sie leider für mich noch nicht, oder ich hab nicht
genug zwischen den Zeilen gelesen?! :-)


Die Kommunikation ist wie folgt aufgebaut:

Userlogin und Passwort an Socketserver, nach Überprüfung ob
Daten mit den Daten in der Datenbank übereinstimmen, wird Username
und UserId als Client eingetragen und eine Bestätigung an Flash zurückgeschickt. Erst wenn dies gegeben ist, erhält der User die
aktuellen Spieldaten und seine Balance per XML-Socket übertragen.

Sobald der User seine Spielrunde bestätig hat, werden alle gesetzten
Felder aus einem Array an den Server gesendet und dort die Anzahl der
Felder mit ihrem jeweiligen Wert berechnet und von seiner Balance
abgezogen. Anschließend wird eine Bestätigung und der neue Balancewert an Flash wieder zurückgesendet. Flashseitig wird hier nichts sensibles berechnet.

Das es nie 100%ig sicher ist sollte klar sein und wenn ein User seine Daten
manipuliert dann nur in soweit, dass es entweder wenige oder mehr Spielfelder sind. Seine Balance wird immer serverseitig berechnet.

Vorausgesetzt er hat nur Zugriff auf seine eigene Socket-Verbindung.
Andernfalls hieße es, er könnte die gesetzten Spielfelder anderer User einsehen und manipulieren und das muss ausgeschlossen werden.

Gruß
macmasterflash ist offline   Mit Zitat antworten
Alt 11-02-2012, 11:56   #4 (permalink)
NCC 1701 D
 
Benutzerbild von speedjunkie
 
Registriert seit: Oct 2009
Ort: Metropolregion Hamburg
Beiträge: 586
EDIT: hgseib war schneller und hat es auf den Punkt gebracht!!:-) hab noch ein bisschen nebenbei gedaddelt.

Hallo macmasterflash,

was meinst Du mit "ein User nur seine eigene Verbindung abhören"?

Prinzipiell ist es möglich alles mit zuhören wenn man das dazu nötige investiert. So wie Du das schilderst ist es schon korrekt aber wenn jemand z.B. ein Proxy dazwischen schiebt und vorgaukelt der jeweils andere zu sein kann derjenige der den ungewollten Service bedient die Daten nach belieben verändern und mitlesen. Das heiß aber nicht das man sich nicht mit dem Thema Sicherheit befassen soll im Gegenteil.

Such einmal bitte nach Socket Sniffer oder Socket Hacking!

vielleicht noch:

TCP/IP - HackerWiki

und allgemein:

CR172 SSL. Oder: Einmal aufmachen, bitte. - Chaosradio Podcast Network

Sicherheit bzw. dieses Wort ist etwas für Menschen die glauben Facebook o.ä. sei das Internet also nicht für uns.

Das ist ein sehr ausschweifendes Thema!!

Soviel wie für SSL TLS, CD/DVD/Software Kopierschutz, Pay-TV et cetera hineingesteckt wird, soviel wird auch wieder hineingesteckt um das umgehen. Kommt aber auch immer darauf an wie attraktiv Deine Daten für andere sind.

Aber wenn Du so etwas wie Wireshark meinst da analysiert der User nur seine eigenen Ports.
__________________
just be Daniel
JUNK FOOD: JavaScript Core Reference

Geändert von speedjunkie (11-02-2012 um 12:03 Uhr)
speedjunkie ist offline   Mit Zitat antworten
Alt 11-02-2012, 12:08   #5 (permalink)
NCC 1701 D
 
Benutzerbild von speedjunkie
 
Registriert seit: Oct 2009
Ort: Metropolregion Hamburg
Beiträge: 586
Zitat:
Zitat von macmasterflash Beitrag anzeigen
Userlogin und Passwort an Socketserver, nach Überprüfung ob
Daten mit den Daten in der Datenbank übereinstimmen, wird Username
und UserId als Client eingetragen und eine Bestätigung an Flash zurückgeschickt. Erst wenn dies gegeben ist, erhält der User die
aktuellen Spieldaten und seine Balance per XML-Socket übertragen.
Ach so! Da könntest Du Hashfunktionen verwenden aus der AS3CoreLib
__________________
just be Daniel
JUNK FOOD: JavaScript Core Reference
speedjunkie ist offline   Mit Zitat antworten
Alt 11-02-2012, 13:24   #6 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Hallo speedjunkie,

danke für die super und ausführliche Erklärung!

Werd den Sniffer später mal testen.

Zitat:
was meinst Du mit "ein User nur seine eigene Verbindung abhören"?
Da der Socketserver eine feste und durch die Firewall bzw. Flashviewer einsehbare Portnummer hat, stell sich mir die Frage, ob man die gesamten
Daten dieses Ports, also alle Übermittlungen an alle oder andere Clients und zurück einsehen könnte, oder nur die eigene Socketverbindung und & -Kommunikation, bei Zwischenschaltung durch Proxy, dann nur die des abzuhörenden?

Das ist nämlich meine größte Sorge...


Zitat:
wenn jemand z.B. ein Proxy dazwischen schiebt und vorgaukelt der jeweils andere zu sein kann derjenige der den ungewollten Service bedient die Daten nach belieben verändern und mitlesen.
Aber hier dann nur wieder die jeweilige Verbindung? Um sich bei allen aktiven Usern über Proxy einzuklinken, müsste er ersteinmal wissen, wer überhaupt online ist, mit welcher IP und welchen Zugangsdaten. Und falls
er die Nachrichten des Servers an andere Clients nicht auslesen kann, kommt er doch da niemals ran, richtig?

Grüße
macmasterflash ist offline   Mit Zitat antworten
Alt 12-02-2012, 10:58   #7 (permalink)
NCC 1701 D
 
Benutzerbild von speedjunkie
 
Registriert seit: Oct 2009
Ort: Metropolregion Hamburg
Beiträge: 586
Ja man könne beispielsweise ein Rootkit basteln mit Backdoor-Funktionalitäten dazu musste man aber im Voraus Recherche über das System führen und das erst einmal in das System rein quetschen. Wäre dann in der Lage das System komplett zu kontrollieren oder Daten auszulesen, so dass der Admin das nicht bzw. vorübergehend nicht bemerkt.

Es ist auch die Wahl des Systems z.B. OpenBSD was auch google für seine Services nutzt, ist zu und man muss es aufmachen um mit der Außenwelt zu kommunizieren. Das ist einfacher zu überwachen. Alle anderen Systeme sind auf und man muss sie zu machen.

Ich denke aber das ihr alles richtig gemacht habt und nicht von einer "Unsicherheit" ausgehen solltet.
__________________
just be Daniel
JUNK FOOD: JavaScript Core Reference

Geändert von speedjunkie (12-02-2012 um 10:59 Uhr)
speedjunkie ist offline   Mit Zitat antworten
Alt 17-02-2012, 08:07   #8 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Hey speedjunkie,

interessante Infos, danke! Aber blind darauf zu vertrauen, dass alles richtig
gemacht wurde, wäre fahrlässig.

Ich habe jetzt einen bekannten ausfindig gemacht, der sich ohne Infos zum Server und Betriebsystems, versucht dort reinzuschleusen. Bin gespannt, welche Angriffsflächen noch zu finden sind.

Danke nochmal an euch beide für die Unterstützung.

Grüße
macmasterflash ist offline   Mit Zitat antworten
Alt 18-02-2012, 10:42   #9 (permalink)
NCC 1701 D
 
Benutzerbild von speedjunkie
 
Registriert seit: Oct 2009
Ort: Metropolregion Hamburg
Beiträge: 586
Habt ihr Debian?

gib mal ein über die Konsole:

su -
tcpdump

dann kannst Du den Netzwerkverkehr einsehen.

zum beenden Strg+c
__________________
just be Daniel
JUNK FOOD: JavaScript Core Reference

Geändert von speedjunkie (18-02-2012 um 10:45 Uhr)
speedjunkie ist offline   Mit Zitat antworten
Alt 18-02-2012, 11:36   #10 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Der Server läuft mit Ubuntu.
Ich werd mir mal die Syntax dafür raussuchen...

Unter SocketSniff sieht man nur die eigene Kommunikation und das,
was an alle Clients gesendet wird. Sehr erfreulich :-)

Hab noch Amayeta 6 ausprobiert, anschließend mit AS Viewer geöffnet und muss sagen, da ist vom SWF Code nichts mehr zusehen...Ist jedenfalls
eine zusätzliche Sicherheitsmaßnahme, die wiederum das manipulieren
um einiges erschwert.

Falls du dich mit Ubuntu auskennst, könntest du mir vielleicht sagen, wie ich SOMAXCONN von 128 auf X stellen kann. Die befehle, die ich im Netz gefunden habe, sind wie es scheint gesperrt, trotz ROOT berechtigung.
Es ist ein VServer mit Rootszugriff.

Danke und Gruß
macmasterflash ist offline   Mit Zitat antworten
Alt 20-02-2012, 09:31   #11 (permalink)
NCC 1701 D
 
Benutzerbild von speedjunkie
 
Registriert seit: Oct 2009
Ort: Metropolregion Hamburg
Beiträge: 586
Hi,

sorry für die späte Antwort.

Wo hast Du versucht socket max connections zu ändern?

Bei mir ist das in socket.h definiert.

Verzeichnis: /usr/include/bits/socket.h:#define SOMAXCONN 128

Wolltest Du das mit einem Editor ändern oder über die Shell?

find /usr/include -name \*.h -exec grep SOMAXCONN {} /dev/null \;
__________________
just be Daniel
JUNK FOOD: JavaScript Core Reference
speedjunkie ist offline   Mit Zitat antworten
Alt 20-02-2012, 12:30   #12 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Hi,

da brauchst du dich doch nicht entschuldigen, ich möchte doch etwas von dir :-)

Das war auch das Problem, socket.h ist nicht ausfindig zu machen.
Ordner "bits" gibt es nicht, nur "lct" und "python2.6" und in diesen ist auch keine socket.h...

Vielleicht bringt es etwas den Ordner "bits" selbst zu erstellen und
in die dann angelegte socket.h den Wert einschreiben.

Es kommt mir eher so vor, dass sie ausgelagert wurde und irgendwo zentral vom Hoster gesteuert wird.. Dann muss entweder ein dedicated Server her, oder man verteilt die Connections bei über 128 Clients auf die nächsten freien Socketports. Hier stellt sich dann die Frage, ob User auf Port A die gleichen Infos bekommt wie der auf Port B, und es nicht wie Rooms beim Chat gehandhabt wird.

Grüße

Geändert von macmasterflash (20-02-2012 um 12:32 Uhr)
macmasterflash ist offline   Mit Zitat antworten
Alt 20-02-2012, 13:09   #13 (permalink)
NCC 1701 D
 
Benutzerbild von speedjunkie
 
Registriert seit: Oct 2009
Ort: Metropolregion Hamburg
Beiträge: 586
es gibt unterschiedliche Verzeichnisse. Bei OS X ist es auch anders. Gib mal ein in der Shell:

sudo find / -name \*.h -exec grep SOMAXCONN {} /dev/null \;

mach mal copy and paste mit dieser Zeile. Wenn Du in der Shell bist mittlere Maustaste oder Strg + Shift + v und dann lass mal suchen. Wenn nix kommt hast Du recht

edit: was benutzt ihr serverseitig für eine language?
__________________
just be Daniel
JUNK FOOD: JavaScript Core Reference

Geändert von speedjunkie (20-02-2012 um 13:27 Uhr) Grund: editieren
speedjunkie ist offline   Mit Zitat antworten
Alt 20-02-2012, 16:22   #14 (permalink)
Neuer User
 
Registriert seit: Oct 2008
Beiträge: 114
auch mit somaxconn=128 kannst du ohne Probleme hundertausend clients an einem Port hängen haben. man 2 accept und man 2 listen nochmal genau lesen oder das TCP-IP Buch vom Herrn Stevens. Oder einfach mal jemanden fragen der...

btw:
Code:
/sbin/sysctl -a | grep somaxconn
fippo ist offline   Mit Zitat antworten
Alt 20-02-2012, 16:39   #15 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Beiträge: 25
Hi,

ich benutze PHP und mySQL...

Bei
Code:
/sbin/sysctl -a | grep somaxconn
kommt
Code:
error: "Operation not permitted" reading key "net.ipv4.route.flush"
net.core.somaxconn = 128
und bei
Code:
sudo find / -name \*.h -exec grep SOMAXCONN {} /dev/null \;
passiert nichts, nur prompt.

Zitat:
auch mit somaxconn=128 kannst du ohne Probleme hundertausend clients an einem Port hängen haben.
Danke, das werd ich mir nochmal genauer anschauen, denn genau darum geht es ja... MaxClients

Grüße an euch... :-)
macmasterflash ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
FlashCom Server und Sicherheit diebertadiebera Flash Einsteiger 0 08-11-2006 16:39
XML Socket Server 123dabinich ActionScript 2 2 19-02-2006 15:10
XML-Socket - PHP-Server Doedelbaer Flash mit XML und Webservices 1 27-11-2003 20:54
XML Socket Server vaude Flash und Datenbanken 14 17-09-2002 18:55
Sicherheit Socket Steppel ActionScript 1 7 24-08-2002 09:49


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele