Tijdens Hack in the Box Amsterdam heeft een onderzoeker aangetoond hoe telefooncentrales van banken en andere organisaties zijn aan te vallen met een klein python script. Het gaat om IVR (Interactive Voice Response) applicaties, die onder andere bij telefonische banksystemen en reservatiesystemen worden gebruikt. Na een korte introductie over IVR en het bijbehorende VXML liet Rahul zien hoe hij met een vrije grote kans op succes pincodes kan brute-forcen.
De onderzoeker schreef en demonstreerde hiervoor een klein python script dat automatisch probeerde in te loggen bij zijn bank. Het probleem is dat er een willekeurige bankrekening bij een willekeurig wordt gezocht, in plaats van de pincode voor een specifieke bankrekening. Hierdoor wordt de kans op succes vele malen groter.
Omdat eventuele blokkades na drie foute pin's elke nacht gereset worden, kon Rahul vijf pogingen per bankrekening doen (drie vlak voor middernacht en twee vlak hierna), alvorens een ander rekeningnummer te proberen. De onderzoeker demonstreerde hoe het script uiteindelijk zijn eigen pincode succesvol wist te brute-forcen.
Telefooncentrales
In het vervolg van zijn presentatie ging de onderzoeker in op de verschillende 'input validation attacks'. IVR-systemen zijn vatbaar voor dezelfde fouten als de meeste andere applicaties zoals SQL injection en buffer overflows. De beperkende factor hier is vaak de beperkte invoermogelijkheid. Zo is er bij dual-tone multi-frequency (DTMF) invoer, bijvoorbeeld toets 1 voor afdeling verkoop, alleen de beschikking over [0-9], *, #, A, B, C en D. Rahul liet een aantal methodes zien om hiermee toch een blind SQL injection aanval mee uit te kunnen voeren.
Indien er ondersteuning is voor stem-invoer worden de mogelijkheden al groter. De beperking ligt dan aan het gebruikte grammatica bestand. Dit bestand zet stem-invoer om in tekst. Indien het procent teken herkend wordt, is met mogelijk om via 'urlencoded invoer' toch alle karakters te vormen.
Omdat de VXML server de invoer doorstuurt naar de backend om vervolgens de uitkomst voor te lezen voor de gebruiker, is het in veel gevallen mogelijk om in ieder geval de interne servers te 'fingerprinten'. Via fingerprinten is informatie voor het verdere verloop van de aanval te verzamelen. Dit komt omdat de VXML-server alles opleest wat terug komt van de backend, inclusief foutmeldingen. Wanneer de gebruiker onverwachte invoer opgeeft is dit te gebruiken om meer te weten te komen over intern gebruikte versies en IP-adressen.
De presentatie leert dat ook IVR-applicaties vatbaar zijn voor veel van dezelfde fouten als andere applicaties en dat de beveiliging hiervan daarom niet vergeten dient te worden. De slides inclusief demonstratie zijn op HITB.org te vinden.
Deze posting is gelocked. Reageren is niet meer mogelijk.