Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Turvallinen kirjautumiskoodi

Rox [20.05.2013 16:25:35]

#

Miten tekisit turvallisen kirjautumis-systeemin VB:llä?

Hostauksen ja nettisivun omistan, eli MySQL on käytettävissä.
Ongelmana on se, että sen pitäisi olla turvallinen ja ilman rekisteröintiä (eli tunnukset on valmiina jossain). Jos teen perus VB kirjautumis-systeemin, sehän on helposti murrettavissa wampin kanssa ja muokkaamaalla hosts tiedostoa?
Eli mikä olisi paras tapa tehdä "turvallinen" kirjautumis-formi VB:llä, tiedän että VB:llä on huono tehdä mitään turvalliseksi mutta mikä olisi paras tapa?
Käytössä on myös {SmartAssembly} koodin suojaamiseksi mikäli se mitään auttaa.

Edit: Toki voin aina tarkistaa josko hosts tiedosto sisältää nettisivuni, ja estää ohjelman käynnistymisen, mutta muita ideoita?

Sienikasvusto [20.05.2013 19:46:48]

#

Yks kysmys, MITÄ HELVETTIÄ NYT?!

Mitä sä olet tekemässä? Entäs mihin sä meinaat käyttää siinä VB:tä?

Btw. hosts-tiedosto ei muuten liity mitenkään mihinkään kirjautumisiin.

Metabolix [20.05.2013 19:47:06]

#

Yritätkö siis kysyä, miten ohjelmaan tehdään turvallinen kirjautuminen, joka estää ohjelman käytön ilman kelvollista tunnusta ja jota ei voi mitenkään kiertää?

Yksi tarpeellinen asia on ainakin se, että ohjelmasi vahvistaa kirjautumisen yhteydessä palvelimen aitouden – mielellään ennen salasanan lähetystä. Siihen sopii esimerkiksi DSA tai RSA. Salasanan voi tarkistaa myös challenge–response-tekniikalla. Viimeinen ongelma on, että käyttäjä voi muokata ohjelmaa, mutta tälle et viime kädessä voi juuri mitään: toki voit liittää kirjautumiseen myös ohjelmatiedoston aitouden tarkistuksen, mutta joku voi hakkeroida ohjelman niin, että tarkistuksessa käytetään alkuperäistä tiedostoa vaikka ohjelma muuten on hakkeroitu. Yksi mahdollisuus on myös tallentaa palvelimelle jotain ohjelman toiminnan kannalta välttämätöntä tietoa, mutta hakkerin on mahdollista kaapata myös se.

Sopivat turvatoimet riippuvat siitä, miten paljon haluat panostaa suojaukseen ja onko ohjelmasi oikeasti niin arvokas, että joku haluaisi hakkeroida sen.

Rox [20.05.2013 21:02:17]

#

Yritän tehdä vaan vaikean "crackme" ohjelman VB:llä, jollain muulla kielellä sen varmaankin saisi vaikeammaksi, jos osaisi :)

http://www.crackmes.de/

Sienikasvusto kirjoitti:

Btw. hosts-tiedosto ei muuten liity mitenkään mihinkään kirjautumisiin.

Liittyy siinä mielessä, jos palvelimelta pitää saada 'vahvistus' että tunnus & salasana on oikea. Palvelimen voi vaihtaa omaksi muuttamalla hosts tiedostoa. Jos oma palvelimeni on www.sivu.com, voi 'kräkkeri' vaihtaa sen seuraavankaltaiseksi:

127.0.0.1 sivu.com

Vai olenko ihan väärässä?

Metabolix kirjoitti:

Yritätkö siis kysyä, miten ohjelmaan tehdään turvallinen kirjautuminen, joka estää ohjelman käytön ilman kelvollista tunnusta ja jota ei voi mitenkään kiertää?

Yksi tarpeellinen asia on ainakin se, että ohjelmasi vahvistaa kirjautumisen yhteydessä palvelimen aitouden – mielellään ennen salasanan lähetystä. Siihen sopii esimerkiksi DSA tai RSA. Salasanan voi tarkistaa myös challenge–response-tekniikalla. Viimeinen ongelma on, että käyttäjä voi muokata ohjelmaa, mutta tälle et viime kädessä voi juuri mitään: toki voit liittää kirjautumiseen myös ohjelmatiedoston aitouden tarkistuksen, mutta joku voi hakkeroida ohjelman niin, että tarkistuksessa käytetään alkuperäistä tiedostoa vaikka ohjelma muuten on hakkeroitu. Yksi mahdollisuus on myös tallentaa palvelimelle jotain ohjelman toiminnan kannalta välttämätöntä tietoa, mutta hakkerin on mahdollista kaapata myös se.

Sopivat turvatoimet riippuvat siitä, miten paljon haluat panostaa suojaukseen ja onko ohjelmasi oikeasti niin arvokas, että joku haluaisi hakkeroida sen.

Kyllä! Juuri tämän haluan tehdä.

Palvelimen aitouden vahvistamiseen ajattelin käyttää seuraavaa koodia:

Dim tsekkaa As StreamReader = New StreamReader(Environment.GetEnvironmentVariable("SystemRoot") + "\System32\drivers\etc\hosts")
Dim val As String = tsekkaa.ReadToEnd() tsekkaa.Close
If val.Contains("munpalvelin.com")
Then
Me.Close()
End If

Mutta kerro ihmeessä tuosta vahvistamisesta DSA tai RSA:n avulla, taikka tuosta "challenge-response" tekniikasta.

Tiedän että krakkeri voi muokata ohjelmaani, mutta yritän tehdä parhaani että saan ollydebuggerit yms. samankaltaiset ohjelmat suljettua ennenkuin ohjelma aukeaa, taikka jos ohjelma on avattu ollydbg:ssa tms.

Metabolix kirjoitti:

toki voit liittää kirjautumiseen myös ohjelmatiedoston aitouden tarkistuksen, mutta joku voi hakkeroida ohjelman niin, että tarkistuksessa käytetään alkuperäistä tiedostoa vaikka ohjelma muuten on hakkeroitu.

Kerro ihmeessä lisää :)

Metabolix kirjoitti:

Yksi mahdollisuus on myös tallentaa palvelimelle jotain ohjelman toiminnan kannalta välttämätöntä tietoa, mutta hakkerin on mahdollista kaapata myös se.

Jos vain jaksat / viitsit, niin pieni esimerkki on tervetullut.

Metabolix kirjoitti:

Sopivat turvatoimet riippuvat siitä, miten paljon haluat panostaa suojaukseen ja onko ohjelmasi oikeasti niin arvokas, että joku haluaisi hakkeroida sen.

Eipä se ole, ihan mielenkiinnosta teen tämmöstä ohjelmaa, niin kuin tämän viestin alussa jo kerroinkin :)

Metabolix [20.05.2013 21:31:09]

#

Rox kirjoitti:

Palvelimen aitouden vahvistamiseen ajattelin käyttää seuraavaa koodia: – – (hosts-tiedoston tarkistus)

Tuosta ei ole mitään apua, koska yhtä hyvin hakkeri voi pystyttää oman DNS-palvelimen ja ohjata nimikyselyt sinne. Itsekin pidän omaa DNS-palvelinta (aivan järkevistä syistä), eikä ohjelmasi pystyisi mitenkään selvittämään asiaa koneeltani, koska koneeni lähettää DNS-kyselyt normaalisti ja ohjaus tapahtuu vasta WLAN-tukiasemalla. Jos haluat yrittää estää tämänkin, voit tehdä itse UDP-socketilla DNS-kyselyn jollekin tunnetulle nimipalvelimelle (esim. Googlen palvelin osoitteessa 8.8.8.8). Kuitenkin lähes yhtä helposti hakkeri voi ohjata palomuurin asetuksista nuokin pyynnöt omalle palvelimelleen ilman, että ohjelmasi tietää mitään.

Rox kirjoitti:

Mutta kerro ihmeessä tuosta vahvistamisesta DSA tai RSA:n avulla, taikka tuosta "challenge-response" tekniikasta.

Lue netistä. RSA on ehkä maailman tunnetuin epäsymmetrinen salaus, ja sitä tai DSA:ta käytetään yleisesti henkilöiden ja palvelinten tunnistamiseen erilaisissa salatuissa yhteyksissä (mukaan lukien HTTPS, jota käyttävät esimerkiksi verkkopankit). Challenge–response taas on kirjautumisessa yleisesti käytetty tekniikka, jossa salasanaa ei siirretä verkossa vaan palvelin antaa ohjelmalle tiedon A ja ohjelma vastaa tiedolla B ja palvelin pystyy näistä jotenkin varmistamaan salasanan, mutta tämä menetelmä ei ehkä ole tavoitteesi kannalta hyödyksi. Vielä yksi luettava asia voisi olla Diffie-Hellman-avaimenvaihtoprotokolla.

Rox kirjoitti:

Metabolix kirjoitti:

toki voit liittää kirjautumiseen myös ohjelmatiedoston aitouden tarkistuksen, mutta joku voi hakkeroida ohjelman niin, että tarkistuksessa käytetään alkuperäistä tiedostoa vaikka ohjelma muuten on hakkeroitu.

Kerro ihmeessä lisää :)

Eipä siinä ole paljon kertomista. Jälleen netistä selviää miten tiedoston nimi selvitetään, ja sitten vain pitää laskea tiedostosta tarkistussumma ja ilmoittaa se palvelimelle vaikka salasanan mukana. Jos summa on väärä, palvelin tietää, että ohjelmaa on muokattu, ja voi kieltää kirjautumisen.

Rox kirjoitti:

Metabolix kirjoitti:

Yksi mahdollisuus on myös tallentaa palvelimelle jotain ohjelman toiminnan kannalta välttämätöntä tietoa, mutta hakkerin on mahdollista kaapata myös se.

Jos vain jaksat / viitsit, niin pieni esimerkki on tervetullut.

En koodaa Windowsissa enkä tuollaisilla kielillä, mutta yksinkertaisesti voisit vaikka tehdä kaksi ohjelmaa, joista ensimmäinen lataa toisen netistä ja käynnistää sen ja vasta toinen sisältää ne oikeat turvatoimet. Toki näin naiivissa toteutuksessa hakkerin on todella helppo kopioida se toinenkin ohjelma talteen, ja hienompaa olisikin ladata netistä vaikka jotain koodia, jonka voisi kirjoittaa suoraan koneen muistiin ja ajaa, tosin se voi olla .NET-kielillä vaikeaa (en tiedä).

Rox [20.05.2013 22:11:31]

#

En nyt jaksa mitään pidempää värssyä kirjoittaa, mutta koitan lähteä noista vinkeistä. Ja tuosta koodin lataamisesta netistä, eikö tällöin voisi käyttää CodeDOMia koodin suorittamiseen? Toki ilman salausta hakkeri saisi helposti koodin poimittua, vaikkapa Fiddlerin kaltaisella ohjelmalla..

neau33 [21.05.2013 07:30:12]

#

MORJENS!

On se vaan niin käsittämätöntä, että joka kerta kun joku koodipummi copy paste kombinaatio tyyppi innostuu liikaa niin se alkaa ensimmäisenä suunnitteleen aivan ihmeellisiä suojasydeemeitä viritelmiinsä joiden koodista korkeintaan 0,5% on oman ajattelun tulosta. Sit se imppaa netistä päähänsä kaikenlaista sälää jota sit yhdistelee oman mielikuvituksensa voimalla ja alkaa uhoon foorumeilla tietävänsä 'ETTÄ NÄIN ON...'

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta