Telefoniefraude betaalt de aanvaller meestal rechtstreeks, zonder een koper of losgeld ertussen. Er wordt niets gestolen of versleuteld, dus de gebruikelijke tekenen van een inbreuk ontbreken. Het verlies komt naar boven als belkosten.
Dat bepaalt de verdediging. Je kunt het niet detecteren door te zoeken naar iets ongewoons in de inhoud van een oproep. De maatregelen draaien volledig om waar oproepen naartoe mogen, hoeveel het er mogen zijn en hoeveel ze mogen kosten.
Waarom is het de moeite waard om je hiertegen te verdedigen als mijn systeem goed beveiligd is?
Omdat de waarde van een compromittering onmiddellijk is en het tijdvenster kort.
Een gestolen SIP-credential, of een open poort op een PBX, het bedrijfstelefoonsysteem dat de oproepen van een bedrijf routeert, levert op zodra het wordt gebruikt. De aanvaller heeft als prikkel om zo veel mogelijk te bellen voordat iemand het merkt. De bestemmingen die het meest opleveren zijn de bestemmingen die een normaal bedrijf nooit belt.
Dat laatste punt maakt een allowlist effectief en niet slechts netjes. De meeste bedrijven bellen een kleine en stabiele set landen. Een aanvaller heeft een specifieke en andere set nodig. Alles wat de twee dwingt te overlappen kost de aanvaller zijn hele verdienmodel.
Hoe werken bestemmingsmaatregelen?
Elk land is ingeschakeld voor je werkruimte of niet, en oproepen bereiken alleen de landen die je hebt aangezet.
Twee afzonderlijke dingen bepalen wat je met een land kunt doen, en ze door elkaar halen is de gebruikelijke verwarring:
- Beschikbaarheid geeft aan of je het land überhaupt kunt inschakelen.
Availablebetekent dat Bird vanaf jouw account oproepen daarheen kan plaatsen.Not supportedbetekent dat dit niet kan, en het herstellen ervan is een gesprek met support. - Jouw schakelaar geeft aan of een beschikbaar land is ingeschakeld. De wijziging gaat in op het moment dat je hem doorvoert.
Dat een land beschikbaar is, zegt dus niets over of oproepen het momenteel bereiken. Dat is de schakelaar, en die bedien je zelf.
Sommige landen hebben een high risk-markering, die zowel hun tarieven als hun fraudeblootstelling weerspiegelt. Dat zijn de bestemmingen die een aanvaller probeert te bereiken. Laat ze uitgeschakeld tenzij het bedrijf ze daadwerkelijk belt, en controleer wat een oproep daarheen kost voordat je er een inschakelt. De pagina voice destinations toont elk land met zijn beschikbaarheid en ingeschakelde status, en voice pricing bevat de tarieven.
Een oproep die om deze reden wordt geweigerd, wordt afgewezen met destination_not_enabled. De oplossing is dat land aanzetten, niet opnieuw proberen.
Beschikbaarheid geldt voor een land als geheel. Een specifiek nummer binnen een ingeschakeld land kan alsnog onbereikbaar zijn. Dat wordt afgewezen als no_route_found.
no_route_found dekt meer dan één oorzaak. Bird classificeert het nummer dat je hebt gebeld voordat het naar je bestemmingsinstellingen kijkt. Het weigert een type dat het niet routeert. Premium rate is het type dat hier van belang is: nummers waarvan de terminatie de eigenaar betaalt, en dat is wat een aanvaller belt. Shared-cost- en personal-number-reeksen splitsen de gesprekskosten of sturen door naar een andere lijn. Non-geographic nummers horen bij geen enkel netnummer van een land. Alle drie worden op dezelfde manier geweigerd. Die weigeringen zijn opzettelijk. Ze treffen de nummers die een aanvaller wil, omdat een premium-reeks binnen een land dat je hebt ingeschakeld nooit voorbij de classificatie komt. Een nummer dat daadwerkelijk onbereikbaar is geeft dezelfde code, dus controleer het type van het nummer dat je hebt gebeld voordat je er een ticket voor opent.
Wat beperkt een aanval binnen een land dat ik wel toesta?
Drie plafonds, die elk afzonderlijk een oproep weigeren.
| Reden van weigering | Het plafond dat werd bereikt |
|---|---|
daily_spend_exceeded | Het dagelijkse spraakuitgavenplafond van je organisatie |
concurrent_calls_exceeded | Zoveel gelijktijdige oproepen als het account toestaat |
calls_per_second_exceeded | Nieuwe oproepen sneller geplaatst dan het account toestaat |
insufficient_balance | De wallet dekte de oproep niet, dus werd deze vooraf geweigerd |
Het uitgavenplafond gedraagt zich het meest als een fraudemaatregel, omdat het is uitgedrukt in wat de aanvaller daadwerkelijk afneemt. Het wordt ook op een ander pad afgedwongen dan de andere twee. Het wordt gereset aan het begin van de volgende UTC-dag, dus een piek die het raakt wordt tot dat moment ingeperkt in plaats van alleen vertraagd. Het is ook het plafond dat pas bestaat als je het instelt: een organisatie zonder geconfigureerd dagelijks spraakplafond heeft helemaal geen uitgavenplafond dat wordt afgedwongen.
De andere twee gedragen zich op twee manieren die veranderen hoe je erop vertrouwt.
Ze worden op volgorde gecontroleerd, niet tegelijk. Het plafond voor gelijktijdige oproepen wordt eerst geëvalueerd en geeft direct antwoord, dus een oproep die boven beide plafonds zit meldt concurrent_calls_exceeded en vermeldt nooit de belsnelheid. Dat is belangrijk voor diagnose, niet voor verdediging. Een campagnedialer kan calls_per_second_exceeded raken terwijl hij lang niet in de buurt is van het gelijktijdigheidsplafond. Controleer welke je daadwerkelijk hebt gekregen voordat je een instelling wijzigt, want ze hebben verschillende oplossingen en het verhogen van de verkeerde doet niets.
Een plafond waarvan de eigen controle niet kan worden afgerond, laat de oproep door. Als de gelijktijdigheidsteller of de snelheidsbegrenzer niet kan worden geëvalueerd, gaat de oproep door in plaats van geweigerd te worden. Deze plafonds begrenzen normaal gebruik dus betrouwbaar, maar zijn geen garantie onder alle omstandigheden. Dat is nog een reden waarom de bestemmingslijst ertoe doet: het is de laag die niet afhankelijk is van een live-lookup.
insufficient_balance fungeert als maatregel zonder dat het daarvoor is ontworpen. De wallet begrenst hoeveel fraude een compromittering kan opleveren. Een grote automatische opwaardering verwijdert die begrenzing, wat het opwaardeeringsbedrag ook een fraudebeslissing maakt en niet alleen een gemakskeuze.
Wie kan oproepen naar mijn trunk sturen?
Alleen de adressen op de IP-allowlist van de trunk, de API-sleutels die hij toestaat en de sessiecredentials die hij heeft uitgegeven kunnen er oproepen naartoe sturen.
Een SIP-trunk bepaalt wie er oproepen naartoe mag sturen, en een oproep van elders wordt afgewezen met source_not_allowed voordat enige bestemmingslogica wordt doorlopen. Uitgaande oproepen worden ook gecontroleerd tegen je geverifieerde beller-ID's, dus een oproep die een nummer presenteert dat niet is geverifieerd voor de werkruimte wordt afgewezen met caller_id_not_verified in plaats van geplaatst.
Die twee zijn het waard om op hetzelfde schema te auditen als je bestemmingslijst, want een permissieve allowlist maakt de rest ongedaan. SIP-trunks behandelt de IP-allowlist, API-sleutelauthenticatie en sessiecredentials, en beller-ID's behandelt verificatie.
Wat moet ik eigenlijk doen?
- Schakel de landen in die je belt en verder geen, en behandel de lijst als iets om te herzien in plaats van iets om eenmalig in te stellen. Een land dat twee jaar geleden voor één campagne is ingeschakeld, is een blijvende blootstelling.
- Stel de dagelijkse uitgavenlimiet van je werkruimte in, en kies een bedrag waarbij je het zou merken als het wordt bereikt, in plaats van een bedrag dat nooit afgaat. Elke werkruimte begint met een standaardlimiet; wijzig deze onder Voice → Spend limit, tot het maximum van je organisatie. Een limiet die nooit afgaat is geen beveiliging.
- Maak de allowlist van de trunk strikter, want alles hierboven is alleen relevant voor oproepen die zo ver zijn gekomen.
- Let op de weigeringsredenen zelf. Een plotselinge reeks van
destination_not_enabledofcalls_per_second_exceededis hoe een aanval eruitziet wanneer de maatregelen werken. Het is geen ruis om uit je logs te filteren; het is de waarschuwing.
Voice destinations behandelt het in- en uitschakelen van landen, en het oproeplogboek toont elke weigeringsreden met de bijbehorende oplossing.
Kort gezegd
De aanvaller wordt betaald door de bestemming, niet door jou.
Ze compromitteren een telefoonsysteem en bellen nummers waar ze inkomsten uit halen, zodat de kosten op jouw account landen terwijl de winst op die van hen terechtkomt.
Landen staan uit totdat je ze aanzet.
Een bestemming moet zijn ingeschakeld voordat oproepen er aankomen, dus de schade van een compromittering beperkt zich tot de lijst die je hebt ingeschakeld in plaats van de hele wereld.
Beschikbaarheid en jouw schakelaar zijn verschillende dingen.
Beschikbaarheid geeft aan of je een land überhaupt kunt inschakelen. Jouw schakelaar geeft aan of het aanstaat. Een land kan beschikbaar en uitgeschakeld zijn.
Elk plafond weigert een oproep op eigen kracht.
Dagelijkse uitgaven, gelijktijdige oproepen en oproepen per seconde stoppen elk afzonderlijk een oproep. Elke werkruimte heeft een dagelijkse uitgavenlimiet, die je kunt wijzigen onder Voice → Spend limit. Deze wordt gereset aan het begin van de volgende UTC-dag.