Quote:
Originally Posted by TealSky
The login I am speaking of would be a simple check against existing information (now remember haxti you can use a non-standard sql port + des encrypted password + privilage limited account (read only) to fetch information from auth)
Now if the user attempted to log in an admin account that has a character with permission 100 || this user is now allowed access to the "instant" functions of this tool. All he has to do is press a button which will fetch the relative info under encryption.
Storing these encrypted variables (telnet port/telnet password/db passwords etc..) until they are called for a function. When called they are decrypted into throw-away variables used then those variables are blanked leaving only the encrypted variables.
This is what I have thought anyway, any constructive comments are welcomed.
(P.S.
Remember that in good practice any and all SQL sided functions should operate under a heavily restricted account built and secured specifically for that function e.g. a READ ONLY account for anything that only reads or a WRITE only account who can't delete/update etc..etc..)
|
Well I can totally understand the intention behind that system, but I think there will be to many problems with that, which you can't really fix. The first thing is, that you have the SQL Server kind of exposed.
So if I get you right, you are thinking about this:
1. USER (got limited DB Access Credential, to let the tool connect to the DB) --> 2. USER should then provide his ID/PW and the DB will compare the hash --> 3. USER gets telnet data in return -> 4. USER establishing a telnet connection
So the things I dont get:
A) If you want some access to the DB, you need the credentials. If you give those to the user, why would the user play the "check my login name"? So instead of going form point 1 to 2, they could also start searching the db manually and get the data for point 3, without an ok-gm-login, cause (as far as i know) you would have to store the login info anywere the current DB login has access to. Even if not, you can still jump to plan B and start cracking the MD5 hash offline.
B) At point 4 the user got the data in his memory. Even if those things will be secure, which i doubt, cause decompiling all those .Net tools is terrible simple, we have another problem with esabtlishing the telnet connection afterwards. We are sending our sensitive command OTA with no encryption again. Even if you plan to do a funny lua-encryption (which won't be secure i guess), all those tricks will only work AFTER logging in. So the damage is already done.
There may be plenty of other ways to attack this "protocol" but those where the first on my mind.
Quote:
Originally Posted by c1ph3r
For your "encryption":
You know that it's pretty easy to load a c# program into a debugger to read your "throw away variables" decrypted? (This will work even with an obfuscated program!) Or you can decompile the program to get the encryption/decryption algorythm
On top of that a telnet connection is never encrypted. IF you want you can read the pw from the network traffic. Login via cmdtelnet (no restriction) get sql pw for the dbusers. Login via the open sql connection that you tool needs and have a lot of fun on the hacked server!
|
Thats the long way short.
The main problem is the telnet usage. I think the easiest way to get that part a little more secure would be, to use hamachi again. As far as I know, they use AES 256 which should be sufficient for this case.