Etikettarkiv: iphone

Apple iPhone/iPad och Remote Virtual Interfaces

Jag har tidigare skrivit om hur du analyserar iPhone och iPad-appars nyttjande av API:er med hjälp av Charles Proxy. Dock så när jag testade en App nyligen så sket den högaktningsfullt i mina proxy-inställningar. Det man då kan göra är att använda något som heter Remote Virtual Interfaces (RVI).

Att använda RVI kräver en Mac med kommandot rvictl. Det enda du behöver göra är att skriva in följande kommando från kommandotolken med iPhone eller iPad ansluten via USB-kabeln:

$ rvictl -s 91f2312af0624dade4731e934d3962e45dda0833

Där den långa strängen ska vara din UDID eller identifier som det heter i Xcode Organizer. Du kan även hitta UDID genom att klicka på enhetens serienummer i iTunes.

När kommandot genomförts så skapas en ny virtuell enhet vid namn rvi0 enligt följande:

$ ifconfig rvi0
rvi0: flags=3005<UP,DEBUG,LINK0,LINK1> mtu 0

Sen är det bara att använda Wireshark eller tcpdump för att lagra och titta på kommunikation till och från telefonen. Skillnaden mot att exempelvis använda Charles är att du ej ser krypterad https-trafik.

Exempel på hela förfarandet:

Klicka på bilden för en större version.

Uppdatering: Glömde att skriva att Apple även har en supportsida för ”Getting a Packet Trace”.

Så analyserar och använder du iPhone Appars API

Visste du att majoriteten av alla iPhone och iPad-appar använder någon form av API?

Jag tänkte gå igenom hur du själv kan använda dessa API:er i dina egna implementationer med hjälp av exempelvis PHP eller Python. Observera att informationen som du hämtar via API:er eventuellt inte användas till vad som helst då den kan omfattas av upphovsrätt eller andra lagar.

Först och främst så måste vi ladda hem någon form av Proxy-programmvara som medger analys av den API-trafik som går fram och tillbaka från iPhonen och Appen. Jag rekommenderar Charles Proxy som är gratis att använda men det finns även en betalversion för ynka 50$ som jag har köpt (du slipper ”nag-screens” och sådant). Charles Proxy fungerar för Linux, Mac och Windows.

Här är en skärmdump på hur det ser ut när du startat upp Charles Proxy:

Så, det första vi ska göra är att stänga av så att vi ej ser all webbsurf till och från vår egna dator och det kan man göra under Proyx-fliken och sedan se till att ”Windows Proxy” ej är förkryssad.

Nästa steg är att vi ska skicka ett E-brev med Charles SSL-certifikat till vår iPhone för att ges möjlighet att analysera krypterad HTTPS-trafik till och från telefonen. Ladda hem följande ZIP-fil: charlesproxy.com/ssl.zip och packa upp den där du sedan hittar en .CRT fil som du bifogar i ett mail som du sedan kan öppna på din iPhone (Dropbox eller annan typ av filöverföring går säkert också bra).

När du lagt in Charles certifikat i din telefon bör det se ut så här under Inställningar -> Allmän -> Profil (längst ner):

Då var det nästa steg, och det är att ta reda på IP-adressen till din dator. Jag brukar använda cmd.exe och sedan skriva ipconfig så bör det se ut något i stil med:

Denna IP-adress skall vi ange under inställningarna som det nätverk vår iPhone är ansluten till. I mitt fall så är det via WiFi och längst ner under inställningarna för det trådlösa nätverket anger jag IP-adressen till min dator som kör Charles Proxy så det ser ut så här:

Sedan är det bara att starta den App som vi vill analysera på iPhonen, i mitt fall så startar jag Swedavias App vid namn Arlanda flygplats. Och se hur Charles Proxy visar API-anropen efter varandra. Eftersom vi är intresserad av Avångar så klickar jag helt enkelt på Avångar i Arlanda Appen och får upp följande intressanta API-anrop i Charles:

Fleratalet parametrar är intressanta att anteckna eftersom de behövs vid anrop från PHP eller Python. Det varierar från app till app men i detta fall är det URL:en för anrop som innehåller flygplats (airport=arn_utr) samt datum (searchDate=2011-08-10).

Tittar vi på XML-svaret så ser det ut enligt följande:

När vi sedan implementerat en funktion som härmar denna förfrågan så bör vi få ut samma XML-svar i slutändan och kan då exempelvis hämta hem avgångar med PHP och CURL på följande sätt:

<?php
  $today = date("Y-m-d");
  $path = '/ArrivalsDeparturesMobile/ArrDepMobileService/ArrDep.asmx/GetDeparturesFlightTable?airport=arn_utr&language=sv&searchString=&searchDate='.$today;
  $host = "wsc1.swedavia.se";

  $headers = array(
    "GET $path HTTP/1.1",
    "Host: $host",
    "User-Agent: Arlanda/1.4 CFNetwork/485.13.9 Darwin/11.0.0",
    "Authorization: Basic V1NBcnJEZXBNb2JpbGU6c1AtR0U1NWJlY3I4c1BhKWhlMHBlNXJ1NkVmYUNyRSE=",
    "Accept: */*",
    "Accept-Language: sv-se",
    "Accept-Encoding: gzip, deflate",
    "Pragma: no-cache",
    "Connection: keep-alive"
  );

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "http://".$host.$path);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

  $sXML = curl_exec($ch);

  $oXML = new SimpleXMLElement($sXML);

  print_r($oXML);

?>

Ovan kod kan du sedan köra från kommandotolken enligt följande:

$ php swedavia.php

Tadaa! Nu slipper vi använda vår iPhone varje gång vi ska se avgångar från Arlanda. I detta exempel så behövdes ej SSL-certifikatet användas då anropen skickas i klartext.

Apple iOS utvecklarlicens

Efter många om och men så har jag äntligen blivit godkänd av Apple att utveckla iOS-appar till iPad, iPhone osv. Förfarandet att godkännas var inte helt lätt då Apple ville att jag skulle faxa(?!) in ett registreringsbevis på mitt bolag. Som tur var så köpte jag en fax på B Locket för några år sedan men insåg rätt snabbt att jag inte hade någon analog förbindelse att koppla in den på.

Bild CC http://www.flickr.com/photos/78518472@N00

Efter lite Google-hjälp så var det någon som föreslog att det gick att använda sig av någon ”gratis fax på Internet”-tjänst som skulle leverera dessa handlingar till Apple. Sagt och gjort så testade jag några stycken men hörde inte så mycket av Apple så jag kontaktade dess support som svarade att de ej godkände att handlingarna faxades via tredje part(!).

Nåväl, så jag skickade tillbaka en länk till Dropbox där handlingarna återfanns men inte det heller fungerade så till slut så bifogade jag dem som filer till ett svar på supportbrevet. Efter några dagar så ringer en person från Apple i USA och bekräftar då att jag har någon slags koppling till mitt företag. Pust, vilken process.

Nu återstår bara att införskaffa en Macdator.

Säkerhetsbrist i Skatteverkets appar

För några veckor sedan så laddade jag hem Skatteverkets nya iPhone App för deklaration dagen efter den släpptes. Jag kunde snabbt konstatera att viss information skickades okrypterat till Skatteverket.

Denna information som skickas okrypterat kan en angripare modifiera och lura den iPhone App som Skatteverket utvecklat. Detta förutsätter att någon loggar in med personliga koder över ett oskyddat eller delat krypterat WiFi-nätverk på ett café exempelvis.

Angriparen kan då presentera en inloggningssida eller deklarationssida som är helt identisk med den som Skatteverket tillhandahåller och kan då läsa av personliga koder (verifierat) och troligtvis även ändra bankuppgifter (ej verifierat). Detta helt utan användarens kännedom.

Appen hade vid tillfället då säkerhetsbristen uppdagats laddats hem över 50 000 gånger. Skatteverket uppdaterade sin app omgående då detta uppdagande rapporterats till dem. Troligtvis så gällde denna brist även Android-telefoner men det har jag dock ej verifierat.

Skärmdump på nätverkstrafiken som skickas okrypterat (http) till Skatteverket:

Vanliga frågor och svar (FAQ)

Fråga: Hur vet jag om jag blivit av med mina personliga koder?

Svar: Det vet du inte, dock så är skadan som någon kan göra med dina personliga koder begränsad.

Fråga: Om någon kan ändra mina bankuppgifter för skatteutbetalning, märks det?

Svar: Vet ej, om du vet lämna en kommentar.

Fråga: Hur går attacken till rent tekniskt?

Svar: Genom att ändra det HTTP-redirect svar som Skatteverket skickar okrypterat i den första HTTP-frågan så är det möjligt att skicka ett annat svar till godtycklig URL där exempelvis en fiktiv inloggningssida visas. Dvs Skatteverkets App fungerar enbart som en enkel webbläsare och visar vilken URL som används samt om sidan är krypterad via https eller ej.

Fråga: Varför har inte Skatteverket meddelat något om denna sårbarhet?

Svar: I dess uppdateringar till iPhone Appen så skriver de ”Förbättrad nätverkskommunikation”. Se skärmdump:

AlternativeTo, AuktionsFynda, iPhone 3GS, Bambuser

Om du mot all förmodan missat AlternativeTo.net av @raawmarkus och @olaj (som även bloggar på ohsohightech.se). AlternativeTo listar alternativ på mjukvaror som du använder dagligen såsom Photoshop och Firefox.

**

Auktionsfynda.se av Henrik Berggren, David Kjelkerud och Ted Valentin. Henrik och David skapade även den coola mashupen citysounds.fm under Music Hackday. Läs mer på SoundClouds blogg.

**

Visste du att krypteringen i iPhone 3GS är så kass att den knäcks på några minuter?

**

Är det nu man kan säga att Bambuser är mainstream? Martin Sandberg har skrivit om detta.

Seedcamp, TradeDoubler, DNS, iPhone och Geolokalisering

Bloggen Disruptive.nu tipsar om att ni som har webbstartups kan söka till SeedCamp 2008. Ansökan hittas här och ska vara inne före 10’de Augusti.

**

Åtskilliga bloggare är lite småsura på TradeDoubler och Travelpartner som snuvar (av misstag) annonsörer på pengar. Magnus Lundin, vVD och grundare för TravelPartner förklarar att något har varit fel.

**

Dan Kaminsky hittar en läskig bugg relaterad till designen av DNS-protokollet vilket gör att det är möjligt att styra om godtycklig domän/hostnamn.

**

Den ”inofficiella” iPhone software 2.0 går nu att köra: http://lifehacker.com/398280/iphone-20-software-update-unofficially-available

**

Var är festen? Nu behöver du inte fundera längre på vart festen är: http://www.primidi.com/2008/06/29.html

iPhone, Ted, Reboot, Mikroblogg

Ingen kan ju ha missat att Telia kommer att sälja iPhone i Sverige. Säljstart är 11’de Juli och priset kommer att vara horribelt högt: telia.se/iphone

Andra bloggare som skriver om iPhone:

**

Ted Valentin är överallt: What’s Next och SydSvenskan.

**

Reboot 10 har genomförts i Köpenhamn. Många bloggare har varit där och rapporterat: http://reboot.bloggz.se

**

Min blogg mikroblogg.se rankar nu högt på sökordet ”mikroblogg”, inte så konstigt kanske.. Nu återstår bara kryptera