[Home/Nieuws] [Magazines] [Meetings] [Downloads] [Redaktie] [Geschiedenis] |
||||||||||||||||||||||||||
Een Borland Paradox database kan benaderd worden door middel van de al eerder genoemde Borland Database Engine (BDE). Omdat de hiervoor benodigde ontwikkeltools niet beschikbaar waren, en omdat het vermoeden bestond dat de bestanden wel eens beveiligd zouden kunnen zijn, is meteen gezocht naar een andere oplossing om deze database bestanden uit te kunnen lezen.
Via Wotsit's File Format Collection (http://www.wotsit.org/) was snel een beschrijving van het Paradox bestandsformaat gevonden. Met behulp van deze beschrijving is het programmaatje PXDUMP gemaakt, wat een Paradox bestand snel en eenvoudig kan uitlezen.
Een volledig overzicht van de tabellen is te vinden in Appendix B, de source code van PXDUMP in Appendix E.
Bij het onderzoeken van de database-bestanden valt meteen op dat deze niet beveiligd zijn - Paradox biedt de mogelijkheid om database bestanden te encrypten, en van deze mogelijkheid is geen gebruik gemaakt. Voor eenieder met toegang tot de PC waarop HomeNet geïnstalleerd is zijn de database-bestanden met wat moeite uit te lezen.
Zo is een lijstje met 'interessante' bestanden snel gemaakt:
Customer.exe blijkt een hulpprogramma voor de HomeNet helpdesk te zijn, wat dient om de toegang tot het HomeNet pakket te herstellen wanneer de gebruiker zijn wachtwoord vergeten is. Wanneer het gestart wordt verschijnt de volgende tekst (inclusief twee verschillende spelwijzen van het woord 'Sleutelcode'):
Wanneer het wachtwoord wordt gewijzigd wordt de oude waarde van het USR_PASSWORD-veld in USR_OLDPASSW1 geplaatst, en die van USR_OLDPASSW1 in USR_OLDPASSW2. Deze velden dienen ervoor te zorgen dat een gebruiker die zijn wachtwoord moet wijzigen, niet hetzelfde wachtwoord als de vorige keer (of de 2 keer daarvoor) kan kiezen.
Wanneer USR_LASTPASSMODDAT op nul gezet wordt, krijgt de gebruiker bij het inloggen de melding dat het huidige wachtwoord is toegekend door de hoofdgebruiker, en dat hij zijn wachtwoord dient te wijzigen.
Het veld USR_STATUS wordt gebruikt voor het blokkeren van gebruikersaccounts. Wanneer dit de waarde '1' heeft (0x31) is het account geblokkeerd.
Het veld USR_PASSVALIDCYCLE geeft de geldigheid van een wachtwoord aan, in dagen. Wanneer de huidige datum groter is dan USR_LASTMODIFDATE + USR_PASSVALIDCYCLE, dient de gebruiker zijn wachtwoord te wijzigen.
SysHashPwd() heeft als invoer het wachtwoord, en als uitvoer de hash-waarde van dat wachtwoord. Dat opent natuurlijk perspectieven: de hash is blijkbaar alleen maar afhankelijk van het wachtwoord.
Dit houdt het volgende in:
Hiermee komen we op het volgende (werkende) scenario:
Het programma geeft een overzicht van beschikbare gebruikers. Nadat een gebruiker gekozen is zijn er twee mogelijkheden:
5.3.3 Meer over wachtwoordenKort rondvragen in onze omgeving leerde dat bij de meeste gebruikers het wachtwoord om toegang te verkrijgen tot het HomeNet pakket, gelijk is aan het bankwachtwoord. Het is dus erg interessant om ook de vertaalslag van hash terug naar wachtwoord te kunnen maken.De volgende eisen worden aan een wachtwoord gesteld:
Wanneer we de regel van 4 verschillende tekens even vergeten (dat doet nauwelijks af aan de hoeveelheid mogelijkheden), komt het aantal mogelijke wachtwoorden op:
In de praktijk zullen de meeste gebruikers een bestaand woord of bestaande naam als wachtwoord nemen waaraan cijfers zijn toegevoegd of letters door cijfers zijn vervangen (O door 0, i door 1, Z door 2, etc.). Er zijn diverse programma's op internet beschikbaar (bijv 'Crack') die aan de hand van woordenlijsten kandidaatwachtwoorden genereren en ze testen. Praktijkstudies met UNIX /etc/passwd files hebben uitgewezen dat een groot percentage wachtwoorden op deze wijze binnen enkele uren gevonden kan worden. Omdat in tegenstelling tot de UNIX passwords HomeNet geen gebruik maakt van 'salting' (het toevoegen van willekeurige data aan een password voor het gehashed wordt), is het mogelijk een veel snellere wachtwoordzoekmethode op te zetten: men maakt van te voren een lijst van waarschijnlijke wachtwoorden (aan de hand van een woordenlijst) en berekent de bijbehorende hash. Met huidige gangbare harddisks van 15GB is het mogelijk een lijst op te slaan van tegen de miljard wachtwoorden. Dit is ruim voldoende voor de complete Nederlandse en Engelse woordenlijsten gecombineerd met eenvoudige toevoegingen van cijfers of substituties met cijfers. Het 'kraken' van een HomeNet wachtwoord kan nu in enkele seconden gebeuren: alleen de betreffende hash moet in de lijst worden opgezocht.
5.4 De database met overschrijvingenWanneer de gebruiker een overschrijving/betaalopdracht aanmaakt om die vervolgens via HomeNet te verzenden, wordt deze opdracht opgeslagen in een tabel die zich bevindt in het bestand PAYMENT.DB.5.4.1 Opbouw van de tabel met overschrijvingenInteressante velden in deze tabel zijn onder meer:
Het veld PAY_STATUS kan onder meer de volgende waarden aannemen:
5.4.2 Manipulatie van PAYMENT.DBEvenals in het geval van USERFILE.DB blijkt het mogelijk om PAYMENT.DB op eenvoudige wijze te wijzigen zonder dat HomeNet hier 'erg' in heeft. Dit schept de mogelijkheid om betalingsopdrachten te wijzigen of toe te voegen.Betalingsopdrachten dienen echter, nadat ze zijn aangemaakt, door de gebruiker per stuk en handmatig te worden geselecteerd voor verzending. Dat wil zeggen dat het niet zonder meer mogelijk is om een betalingsopdracht toe te voegen zonder dat de gebruiker dit merkt. Het scherm waarin de gebruiker de betalingsopdrachten dient te selecteren, kent een zwakheid. Het is op dit scherm niet mogelijk om te zien naar welke rekening het bedrag wordt overgemaakt - alleen de naam van de begunstigde en de omschrijving zijn zichtbaar. Daarnaast wordt het bedrag getoond en de rekening waarvan het bedrag zal worden afgeboekt (HomeNet ondersteunt meerdere rekeningen).
Eén mogelijkheid is dus, om het rekeningnummer van de begunstigde te vervangen door een ander rekeningnummer. Hierbij mogen het bedrag en de naam van de begunstigde niet gewijzigd worden, zodat een aldus gewijzigde betaling te ontdekken is doordat de naam en het rekeningnummer van de begunstigde niet overeenkomen. In de praktijk is gebleken dat ABN AMRO hierop geen controle uitvoert en dat een op dergelijke wijze gemanipuleerde betaling gewoon wordt uitgevoerd. Een andere methode wordt mogelijk gemaakt door het veld PAY_SENDED in de tabel. Wanneer een betaling ter verzending wordt geselecteerd door de gebruiker, wordt die betaling gemarkeerd door het plaatsen van een sterretje in dit veld. Wanneer een betaling een sterretje in PAY_SENDED bevat, is deze al door de gebruiker geselecteerd. De betaling wordt echter pas verzonden indien de gebruiker het bankwachtwoord invoert en op de knop 'Zenden / Legen postbus' drukt. Het tijdsinterval tussen selectie en verzending kan worden aangegrepen om ongemerkt ook de naam van de begunstigde en het bedrag van de betaling te manipuleren, zonder dat de gebruiker dit merkt. Hiervoor is vanzelfsprekend wel toegang tot de PC vereist terwijl de gebruiker bezig is om het verzenden van de betalingen voor te bereiden. Wanneer de computer al verbonden is met Internet en bovendien onveilig geconfigureerd is (bijvoorbeeld doordat Windows Bestandsdeling is ingeschakeld) is het mogelijk om de database op afstand aan te passen. Eenvoudiger is echter om een geautomatiseerde oplossing te maken. Door middel van een 'Trojaans paard' zou het zeer eenvoudig zijn om door middel van een verborgen stukje programmatuur op de computer van de gebruiker de databasetabellen in de gaten te houden, en het rekeningnummer te wijzigen nadat een nieuwe betaling is aangemaakt. De enige drempel die dan moet worden genomen, is het installeren van deze software op de computer van de gebruiker. Hiervoor zou bijvoorbeeld gebruik gemaakt kunnen worden van bugs in bekende software - zoals Microsoft Outlook Express. Bij het door ons geïmplementeerde trojaans paard is de software vermomd als een 'update' voor HomeNet. Een andere mogelijkheid zou zijn om de software als een leuk 'grapje' te verpakken. Een wijdverbreide trojan als HAPPY99.EXE bewijst dat deze methode uitermate succesvol is. Bij deze aanpak ontvangt de gebruiker een programma (per mail, of op andere wijze zoals bijvoorbeeld via ICQ). Wanneer het programma gestart wordt lijkt het slechts kortstondig te 'draaien'. In werkelijkheid nestelt het programma zich diep in het systeem en zorgt het, door middel van een wijziging in de Windows registry, dat het bij elke systeemstart weer opnieuw actief wordt. De source code van de trojan is te vinden in Appendix G. Het betreft hier een proof-of-concept waarin slechts het rekeningnummer van de begunstigde wordt gewijzigd. Met enkele modificaties van de code zou de trojan veel krachtiger kunnen worden, zodat ongemerkt het hele saldo van de rekening van de HomeNet gebruiker zou kunnen worden overgemaakt naar een andere rekening. Hiertoe zou bij een betaling waarvan PAY_SENDED een sterretje bevat, het bedrag, naam, en rekeningnummer gewijzigd kunnen worden. Het is in dat geval nodig om een bestaande betaling te wijzigen. Het toevoegen van een extra betaling is niet mogelijk. Hoogstwaarschijnlijk levert dit problemen op met de gegevens in sre.cnt en sre.in (zie paragraaf 4.1.1).
|
||||||||||||||||||||||||||
Vorige Inhoudsopgave Volgende
| ||||||||||||||||||||||||||
De informatie in 't Klaphek dient slechts een educatief doel. Gebruik van deze informatie zou strafbaar kunnen zijn. De redaktie wijst iedere verantwoordelijkheid voor gebruik door lezers van de in 't Klaphek opgenomen informatie af. De mening van een auteur weerspiegelt niet noodzakelijkerwijs de mening van de redaktie of uitgever. |
||||||||||||||||||||||||||