1 00:00:00,000 --> 00:00:02,610 >> [Seminario] [Difendere Dietro il dispositivo: Mobile Security Application] 2 00:00:02,610 --> 00:00:04,380 [Chris Wysopal] [Harvard University] 3 00:00:04,380 --> 00:00:07,830 [Questo è CS50.] [CS50.TV] 4 00:00:07,830 --> 00:00:10,360 >> Buon pomeriggio. Il mio nome è Chris Wysopal. 5 00:00:10,360 --> 00:00:13,360 Io sono il CTO e co-fondatore di VeraCode. 6 00:00:13,360 --> 00:00:15,880 VeraCode è una società di sicurezza delle applicazioni. 7 00:00:15,880 --> 00:00:18,230 Testiamo tutti i tipi di applicazioni differenti, 8 00:00:18,230 --> 00:00:25,060 e quello che ho intenzione di parlare oggi è la sicurezza delle applicazioni mobile. 9 00:00:25,060 --> 00:00:28,630 Il mio background è ho fatto io la ricerca sulla sicurezza 10 00:00:28,630 --> 00:00:31,970 per un tempo molto lungo, probabilmente circa finché nessuno. 11 00:00:31,970 --> 00:00:35,000 Ho iniziato a metà degli anni '90, 12 00:00:35,000 --> 00:00:37,370 ed è stato un tempo che era abbastanza interessante perché 13 00:00:37,370 --> 00:00:39,220 abbiamo avuto un cambiamento di paradigma nella metà degli anni '90. 14 00:00:39,220 --> 00:00:43,520 Tutto computer di un tratto di tutti era collegato a Internet, 15 00:00:43,520 --> 00:00:46,550 e poi abbiamo avuto gli inizi di applicazioni web, 16 00:00:46,550 --> 00:00:49,330 ed è quello che mi sono concentrato su un terreno di allora. 17 00:00:49,330 --> 00:00:51,160 E 'interessante. 18 00:00:51,160 --> 00:00:53,930 Ora abbiamo un altro cambiamento di paradigma accadendo con l'informatica, 19 00:00:53,930 --> 00:00:58,710 che è il passaggio alle applicazioni mobili. 20 00:00:58,710 --> 00:01:03,680 >> Mi sento una specie di tempo simile poi è stato alla fine degli anni '90 21 00:01:03,680 --> 00:01:07,650 quando stavamo indagando applicazioni web e di trovare difetti come 22 00:01:07,650 --> 00:01:11,800 errori di gestione sessione e SQL injection 23 00:01:11,800 --> 00:01:14,940 che in realtà non esisteva prima, e tutto ad un tratto si erano dappertutto 24 00:01:14,940 --> 00:01:19,360 in applicazioni web, e ora un sacco di tempo che trascorro 25 00:01:19,360 --> 00:01:27,950 sta guardando applicazioni mobili e guardando quello che sta succedendo là fuori nel selvaggio. 26 00:01:27,950 --> 00:01:32,060 Le applicazioni mobili sono davvero intenzione di essere la piattaforma informatica dominante, 27 00:01:32,060 --> 00:01:35,060 così abbiamo davvero bisogno di spendere un sacco di tempo, se sei nel settore della sicurezza 28 00:01:35,060 --> 00:01:39,280 incentrato su applicazioni web. 29 00:01:39,280 --> 00:01:43,420 Ci sono stati 29 miliardi di applicazioni mobili scaricate nel 2011. 30 00:01:43,420 --> 00:01:47,920 E 'previsto per essere di 76 miliardi di applicazioni entro il 2014. 31 00:01:47,920 --> 00:01:54,040 Ci sono 686 milioni i dispositivi che stanno per essere acquistati quest'anno, 32 00:01:54,040 --> 00:01:57,060 quindi questo è dove la gente va di fare 33 00:01:57,060 --> 00:01:59,600  la maggior parte del loro client computing andare avanti. 34 00:01:59,600 --> 00:02:04,220 >> Stavo parlando con un vice presidente di Fidelity Investments 35 00:02:04,220 --> 00:02:08,780 un paio di mesi fa, e ha detto che appena visto più traffico 36 00:02:08,780 --> 00:02:12,610 fare transazioni finanziarie dalla loro base di clienti 37 00:02:12,610 --> 00:02:16,230 sulla loro applicazione mobile che sul loro sito web, 38 00:02:16,230 --> 00:02:20,610 quindi un uso comune per il Web, in passato è stato 39 00:02:20,610 --> 00:02:23,800 controllare le quotazioni di borsa, la gestione del portafoglio, 40 00:02:23,800 --> 00:02:28,060 e realmente stiamo vedendo che nel 2012 switch over 41 00:02:28,060 --> 00:02:30,960 per essere più dominante sulla piattaforma mobile. 42 00:02:30,960 --> 00:02:34,530 Certo, se non ci sara 'alcuna attività criminale, 43 00:02:34,530 --> 00:02:38,900 qualsiasi attività dannosa, che sta per iniziare a essere focalizzata sulla piattaforma mobile 44 00:02:38,900 --> 00:02:44,210 nel tempo come persone che commutano. 45 00:02:44,210 --> 00:02:48,320 Se si guarda alla piattaforma mobile, 46 00:02:48,320 --> 00:02:54,380 a guardare i rischi della piattaforma è utile scomposizione in diversi strati, 47 00:02:54,380 --> 00:02:59,010 proprio come si farebbe su un computer desktop, 48 00:02:59,010 --> 00:03:02,860 e si pensa i diversi strati, software, sistema operativo, 49 00:03:02,860 --> 00:03:07,730 livello di rete, livello di hardware, e, naturalmente, c'è vulnerabilità su tutti quegli strati. 50 00:03:07,730 --> 00:03:10,510 >> La stessa cosa accade sul cellulare. 51 00:03:10,510 --> 00:03:14,880 Ma telefonia mobile, sembra che alcuni di questi strati sono peggio. 52 00:03:14,880 --> 00:03:19,840 Per uno, il livello di rete è più problematico sul cellulare 53 00:03:19,840 --> 00:03:25,650 perché un sacco di persone hanno nel loro ufficio oa casa 54 00:03:25,650 --> 00:03:30,780 cablata connessioni o hanno sicure connessioni Wi-Fi, 55 00:03:30,780 --> 00:03:36,530 e con un sacco di dispositivi mobili si è, ovviamente, al di fuori della casa 56 00:03:36,530 --> 00:03:40,520 o al di fuori della sede molto, e se si sta utilizzando la connessione Wi-Fi lì 57 00:03:40,520 --> 00:03:42,820 si potrebbero utilizzare una connessione Wi-Fi insicuro, 58 00:03:42,820 --> 00:03:45,570 qualcosa che è una connessione Wi-Fi pubblico, 59 00:03:45,570 --> 00:03:48,840 così quando pensiamo mobile apps dobbiamo prendere in considerazione 60 00:03:48,840 --> 00:03:53,770 che l'ambiente di rete è più rischioso per quelle applicazioni 61 00:03:53,770 --> 00:03:57,640 quando viene utilizzata la connessione Wi-Fi. 62 00:03:57,640 --> 00:04:02,410 E quando mi trovo in più dei rischi di applicazioni mobili 63 00:04:02,410 --> 00:04:04,910 capirete perché questo è più importante. 64 00:04:04,910 --> 00:04:09,710 Ci sono rischi a livello hardware su dispositivi mobili. 65 00:04:09,710 --> 00:04:11,670 Si tratta di un'area di ricerca in corso. 66 00:04:11,670 --> 00:04:15,910 La gente chiama questi attacchi a banda larga o attacchi in banda 67 00:04:15,910 --> 00:04:21,870 dove si sta attaccando il firmware che sta ascoltando alla radio. 68 00:04:21,870 --> 00:04:25,430 >> Questi sono davvero spaventosi attacchi, perché 69 00:04:25,430 --> 00:04:27,280 l'utente non deve fare nulla. 70 00:04:27,280 --> 00:04:30,760 Si può colpire un sacco di dispositivi entro il raggio RF 71 00:04:30,760 --> 00:04:36,690 in una sola volta, e sembra che ogni volta che questa ricerca si propaga 72 00:04:36,690 --> 00:04:40,750 rapidamente viene classificato dove 73 00:04:40,750 --> 00:04:46,600 gente picchiata in giro e dicono: "Ecco, ci raccontano che, e vi prego di smettere di parlarne." 74 00:04:46,600 --> 00:04:49,460 Ci sono alcune ricerche in corso nel settore della banda larga, 75 00:04:49,460 --> 00:04:51,980 ma sembra essere hush hush molto. 76 00:04:51,980 --> 00:04:56,910 Penso che sia più di un tipo di Stato nazionale di ricerca che sta succedendo. 77 00:04:56,910 --> 00:05:02,140 Un'area di ricerca attiva, però, è lo strato di sistema operativo, 78 00:05:02,140 --> 00:05:08,910 e di nuovo, questo è diverso che nel mondo desktop computing 79 00:05:08,910 --> 00:05:14,840 perché nel settore mobile si dispone di questi gruppi di persone chiamate jailbreakers, 80 00:05:14,840 --> 00:05:18,670 e jailbreakers sono diverse da quelle ricercatori di vulnerabilità regolari. 81 00:05:18,670 --> 00:05:21,970 Stanno cercando di trovare le vulnerabilità del sistema operativo, 82 00:05:21,970 --> 00:05:27,000 ma la ragione che stanno cercando di trovare le vulnerabilità non è 83 00:05:27,000 --> 00:05:31,810 irrompere nella macchina di qualcun altro e compromettere esso. 84 00:05:31,810 --> 00:05:34,280 E 'per entrare nel proprio computer. 85 00:05:34,280 --> 00:05:38,820 >> Vogliono entrare nel proprio cellulare, modificare il sistema operativo del proprio cellulare 86 00:05:38,820 --> 00:05:41,050 in modo che possano eseguire le applicazioni di loro scelta 87 00:05:41,050 --> 00:05:44,510 e cambiare le cose con le autorizzazioni amministrative complete, 88 00:05:44,510 --> 00:05:49,050 e non vogliono raccontare il fornitore di questo. 89 00:05:49,050 --> 00:05:52,960 Non sono come un ricercatore di sicurezza che è un bianco ricercatore di sicurezza cappello 90 00:05:52,960 --> 00:05:56,600 che sta per fare divulgazione responsabile e raccontare il venditore su di esso. 91 00:05:56,600 --> 00:06:01,270 Vogliono fare questa ricerca, e vogliono pubblicare realtà 92 00:06:01,270 --> 00:06:06,400 in un exploit o un rootkit o di un codice jailbreak, 93 00:06:06,400 --> 00:06:10,010 e vogliono farlo in modo strategico, come subito dopo 94 00:06:10,010 --> 00:06:13,570 le navi fornitore del nuovo sistema operativo. 95 00:06:13,570 --> 00:06:16,350 Hai questo rapporto conflittuale 96 00:06:16,350 --> 00:06:19,000 con vulnerabilità a livello di sistema operativo sul cellulare, 97 00:06:19,000 --> 00:06:23,150 che credo sia molto interessante, e un posto ci vedo 98 00:06:23,150 --> 00:06:29,210 si fa in modo che ci sia buon codice pubblicato sfruttare là fuori 99 00:06:29,210 --> 00:06:31,750 per le vulnerabilità a livello di kernel, 100 00:06:31,750 --> 00:06:35,040 e abbiamo visto quelli effettivamente essere utilizzato da autori di malware. 101 00:06:35,040 --> 00:06:38,450 E 'un po' diverso rispetto al mondo PC. 102 00:06:38,450 --> 00:06:42,530 E poi lo strato finale è lo strato superiore, il livello di applicazione. 103 00:06:42,530 --> 00:06:45,250 Questo è quello che ho intenzione di parlare oggi. 104 00:06:45,250 --> 00:06:48,970 >> Gli altri strati esistono, e gli altri strati svolgono in esso, 105 00:06:48,970 --> 00:06:53,310 ma sto per lo più intenzione di parlare di quello che sta succedendo a livello di applicazione 106 00:06:53,310 --> 00:06:55,560 in cui il codice viene eseguito nella sandbox. 107 00:06:55,560 --> 00:06:58,670 Non ha privilegi amministrativi. 108 00:06:58,670 --> 00:07:02,170 Deve utilizzare le API del dispositivo, 109 00:07:02,170 --> 00:07:06,970 ma ancora, un sacco di attività dannose e un sacco di rischio possono accadere in quel livello 110 00:07:06,970 --> 00:07:09,220 perché questo è il livello in cui tutte le informazioni sono. 111 00:07:09,220 --> 00:07:12,330 Apps possono accedere a tutte le informazioni sul dispositivo 112 00:07:12,330 --> 00:07:15,390 se hanno i permessi giusti, 113 00:07:15,390 --> 00:07:17,540 e possono accedere ai diversi sensori sul dispositivo, 114 00:07:17,540 --> 00:07:23,950 Sensore GPS, microfono, fotocamera, quello che hai. 115 00:07:23,950 --> 00:07:27,380 Anche se stiamo parlando solo a livello di applicazione 116 00:07:27,380 --> 00:07:33,700 abbiamo un sacco di rischio c'è. 117 00:07:33,700 --> 00:07:38,450 L'altra cosa che è diverso l'ambiente mobile 118 00:07:38,450 --> 00:07:45,060 sono tutti i giocatori del sistema operativo, sia esso BlackBerry o Android 119 00:07:45,060 --> 00:07:53,410 o iOS o Windows Mobile, tutti hanno un bel modello di autorizzazione grana, 120 00:07:53,410 --> 00:07:56,990 e questo è uno dei modi che incorporate nel sistema operativo 121 00:07:56,990 --> 00:08:01,230 l'idea che non è così rischioso come si pensa. 122 00:08:01,230 --> 00:08:04,550 Anche se avete tutti i vostri contatti su lì, tutte le vostre informazioni personali, 123 00:08:04,550 --> 00:08:09,080 avete le vostre foto, avete la vostra posizione in là, 124 00:08:09,080 --> 00:08:14,820 stai memorizzare il PIN banca per il login automatico in là, è sicuro perché 125 00:08:14,820 --> 00:08:19,430 applicazioni devono avere determinate autorizzazioni per arrivare a talune parti 126 00:08:19,430 --> 00:08:25,080 delle informazioni sul dispositivo, e l'utente deve essere presentato con 127 00:08:25,080 --> 00:08:29,230 queste autorizzazioni e dire va bene. 128 00:08:29,230 --> 00:08:32,590 >> Il problema è che l'utente dice sempre male. 129 00:08:32,590 --> 00:08:35,240 Come persona di sicurezza, so che è possibile richiedere all'utente, 130 00:08:35,240 --> 00:08:40,100 dire qualcosa di veramente brutto sta per accadere, vuoi che accada? 131 00:08:40,100 --> 00:08:44,680 E se siete di fretta o c'è qualcosa di veramente allettante sull'altro lato di questo, 132 00:08:44,680 --> 00:08:47,760 come un gioco sta per essere installato che stavate aspettando, 133 00:08:47,760 --> 00:08:50,860 andranno a fare clic su ok. 134 00:08:50,860 --> 00:08:56,630 Ecco perché io dico la mia presentazione qui fammelo scagliare gli uccelli a suini già, 135 00:08:56,630 --> 00:09:03,150 e si può vedere nella diapositiva qui ci sono esempi di una scatola di autorizzazione BlackBerry. 136 00:09:03,150 --> 00:09:05,990 Si dice "Vi preghiamo di impostare le autorizzazioni per le applicazioni BlackBerry di viaggio 137 00:09:05,990 --> 00:09:09,720 dopo Facendo clic sul pulsante in basso ", e fondamentalmente l'utente è solo andando a dire 138 00:09:09,720 --> 00:09:12,240 impostare le autorizzazioni e salvare. 139 00:09:12,240 --> 00:09:18,010 Ecco un prompt di Android, dove si vede le cose, 140 00:09:18,010 --> 00:09:20,260 e in realtà mette qualcosa che appare quasi come un avvertimento. 141 00:09:20,260 --> 00:09:25,090 E poi una sorta di segno di rendimento lì a dire la comunicazione di rete, telefonata, 142 00:09:25,090 --> 00:09:28,120 ma l'utente sta per fare clic su Installa, giusto? 143 00:09:28,120 --> 00:09:32,940 E poi l'Apple si è del tutto innocuo. 144 00:09:32,940 --> 00:09:34,300 Non fornisce alcun tipo di avvertimento. 145 00:09:34,300 --> 00:09:37,380 E 'solo di Apple vorrebbe usare la tua posizione attuale. 146 00:09:37,380 --> 00:09:39,670 Naturalmente si sta andando a fare clic su ok. 147 00:09:39,670 --> 00:09:42,260 >> C'è questo modello di autorizzazione a grana fine, 148 00:09:42,260 --> 00:09:45,890 e apps avere un file manifesto in cui dichiarano 149 00:09:45,890 --> 00:09:49,410 le autorizzazioni di cui hanno bisogno, e che avranno mostrato all'utente, 150 00:09:49,410 --> 00:09:53,480 e l'utente dovrà dire che mi concedo queste autorizzazioni. 151 00:09:53,480 --> 00:09:55,080 Ma cerchiamo di essere onesti. 152 00:09:55,080 --> 00:09:58,400 Ci sono solo andando a dire sempre male. 153 00:09:58,400 --> 00:10:04,460 Diamo un rapido sguardo a le autorizzazioni che queste applicazioni siano chiedono 154 00:10:04,460 --> 00:10:06,850 e alcune delle autorizzazioni che ci sono. 155 00:10:06,850 --> 00:10:09,950 Questa società Praetorian fatto un sondaggio dello scorso anno 156 00:10:09,950 --> 00:10:14,170 di 53.000 applicazioni analizzate nei mercati mercato e 3rd party Android, 157 00:10:14,170 --> 00:10:16,770 quindi questo è tutto Android. 158 00:10:16,770 --> 00:10:19,670 E l'app media ha richiesto 3 autorizzazioni. 159 00:10:19,670 --> 00:10:23,370 Alcune applicazioni hanno chiesto 117 autorizzazioni, 160 00:10:23,370 --> 00:10:27,480 quindi ovviamente questi sono molto grana fine e troppo complesso per un utente a capire 161 00:10:27,480 --> 00:10:31,600 se sono presentati con questa applicazione che ha bisogno di questi 117 autorizzazioni. 162 00:10:31,600 --> 00:10:37,270 E 'come il contratto di licenza con l'utente finale che è lungo 45 pagine. 163 00:10:37,270 --> 00:10:40,240 Forse presto avranno un'opzione dove è come 164 00:10:40,240 --> 00:10:43,100 stampare le autorizzazioni e mandami una email. 165 00:10:43,100 --> 00:10:45,480 >> Ma se si guarda ad alcune delle principali autorizzazioni interessanti 166 00:10:45,480 --> 00:10:50,840 Il 24% delle applicazioni che hanno scaricato fuori dal 53.000 167 00:10:50,840 --> 00:10:57,230 informazioni GPS richieste dal dispositivo. 168 00:10:57,230 --> 00:10:59,810 8% legge i contatti. 169 00:10:59,810 --> 00:11:03,770 4% ha inviato SMS, e il 3% ha ricevuto SMS. 170 00:11:03,770 --> 00:11:07,730 2% registrato l'audio. 171 00:11:07,730 --> 00:11:11,210 1% elaborato le chiamate in uscita. 172 00:11:11,210 --> 00:11:13,140 Non lo so. 173 00:11:13,140 --> 00:11:17,520 Non credo che il 4% delle applicazioni in App Store ha realmente bisogno di inviare messaggi di testo SMS, 174 00:11:17,520 --> 00:11:21,410 quindi penso che sia un indizio che qualcosa di spiacevole sta succedendo. 175 00:11:21,410 --> 00:11:24,350 8% delle applicazioni bisogno di leggere l'elenco dei contatti. 176 00:11:24,350 --> 00:11:26,510 Probabilmente non è necessario. 177 00:11:26,510 --> 00:11:30,990 Una delle altre cose interessanti su autorizzazioni è 178 00:11:30,990 --> 00:11:36,740 se si collega in librerie condivise nella vostra applicazione 179 00:11:36,740 --> 00:11:39,780 quelli che ereditano le autorizzazioni della domanda, 180 00:11:39,780 --> 00:11:46,570 quindi se la vostra applicazione ha bisogno l'elenco dei contatti o ha bisogno la posizione GPS di funzionare 181 00:11:46,570 --> 00:11:49,940 e si collega in una libreria di pubblicità, per esempio, 182 00:11:49,940 --> 00:11:53,170 tale libreria annuncio sarà anche in grado di accedere ai contatti 183 00:11:53,170 --> 00:11:57,630 e anche essere in grado di accedere alla posizione GPS, 184 00:11:57,630 --> 00:12:01,990 e lo sviluppatore dell'app non sa nulla del codice che si sta svolgendo in biblioteca annuncio. 185 00:12:01,990 --> 00:12:05,370 Stanno solo il collegamento che perché vogliono monetizzare le loro app. 186 00:12:05,370 --> 00:12:09,820 >> Questo è dove e vi parlerò di alcuni esempi di questo con 187 00:12:09,820 --> 00:12:13,930 un'applicazione chiamata Pandora, dove uno sviluppatore di applicazioni 188 00:12:13,930 --> 00:12:18,910 potrebbero involontariamente essere fuga di informazioni 189 00:12:18,910 --> 00:12:24,580 dai loro utenti a causa delle biblioteche hanno legati dentro 190 00:12:24,580 --> 00:12:30,110 Esaminando il paesaggio là fuori, guardando a tutte le diverse applicazioni 191 00:12:30,110 --> 00:12:34,310 che sono stati riportati nelle notizie come utenti malintenzionati o fare qualcosa non volevano 192 00:12:34,310 --> 00:12:39,360 e quindi ispezionare un sacco di applicazioni, facciamo un sacco di analisi binario statico su applicazioni mobili, 193 00:12:39,360 --> 00:12:42,010 così li abbiamo ispezionati e guardato il codice stesso- 194 00:12:42,010 --> 00:12:49,640 siamo arrivati ​​a quello che noi chiamiamo la nostra top 10 dei comportamenti a rischio nelle applicazioni. 195 00:12:49,640 --> 00:12:54,180 Ed è suddiviso in 2 sezioni, codice dannoso, 196 00:12:54,180 --> 00:12:57,600 quindi queste sono cose cattive che le applicazioni potrebbero essere facendo che 197 00:12:57,600 --> 00:13:06,520 sono suscettibili di essere qualcosa che un utente non autorizzato 198 00:13:06,520 --> 00:13:10,060 ha in particolare messo nella domanda, ma è un po 'sfocata. 199 00:13:10,060 --> 00:13:13,300 Potrebbe essere qualcosa che uno sviluppatore pensa è bene, 200 00:13:13,300 --> 00:13:16,350 ma finisce per essere pensato come dannoso da parte dell'utente. 201 00:13:16,350 --> 00:13:19,830 >> E poi la seconda sezione è quello che chiamiamo codifica vulnerabilità, 202 00:13:19,830 --> 00:13:24,600 e queste sono le cose in cui lo sviluppatore fondamentalmente sta facendo errori 203 00:13:24,600 --> 00:13:27,200 o semplicemente non capisce come scrivere l'applicazione in modo sicuro, 204 00:13:27,200 --> 00:13:30,260  e che sta mettendo l'utente app a rischio. 205 00:13:30,260 --> 00:13:34,060 Ho intenzione di passare attraverso questi nel dettaglio e fornire alcuni esempi. 206 00:13:34,060 --> 00:13:39,620 Per riferimento, ho voluto mettere l'OWASP cellulare top 10. 207 00:13:39,620 --> 00:13:43,590 Questi sono i 10 temi che un gruppo in OWASP, 208 00:13:43,590 --> 00:13:48,900 Progetto Open Web Application Security, hanno un gruppo di lavoro 209 00:13:48,900 --> 00:13:50,620 lavorando su un cellulare top 10. 210 00:13:50,620 --> 00:13:54,600 Hanno una molto famosa lista web top 10, che sono i primi 10 211 00:13:54,600 --> 00:13:57,180 le cose più rischiose si può avere in una applicazione web. 212 00:13:57,180 --> 00:13:59,090 Stanno facendo la stessa cosa per il mobile, 213 00:13:59,090 --> 00:14:01,750 e la loro lista è un po 'diversa dalla nostra. 214 00:14:01,750 --> 00:14:03,670 6 dei 10 sono uguali. 215 00:14:03,670 --> 00:14:06,020 Hanno 4 che sono diversi. 216 00:14:06,020 --> 00:14:10,550 Credo che abbiano un po 'di un approccio diverso su 217 00:14:10,550 --> 00:14:14,490 rischio nelle applicazioni mobili dove un sacco di loro problemi 218 00:14:14,490 --> 00:14:20,490 sono davvero come l'applicazione comunica con un server back-end 219 00:14:20,490 --> 00:14:23,100 o quello che sta succedendo sul server back-end, 220 00:14:23,100 --> 00:14:29,220 apps non tanto che hanno comportamenti a rischio che sono applicazioni client solo semplici. 221 00:14:29,220 --> 00:14:36,640 >> Quelli in rosso qui sono le differenze tra le due liste. 222 00:14:36,640 --> 00:14:40,740 E alcuni del mio team di ricerca ha in realtà contribuito a questo progetto, 223 00:14:40,740 --> 00:14:44,570 quindi vedremo cosa succede nel corso del tempo, ma credo che il takeaway ecco 224 00:14:44,570 --> 00:14:47,550 noi non sappiamo quale sia la top 10 è in applicazioni mobili, perché 225 00:14:47,550 --> 00:14:50,510 hanno davvero stati solo in giro per 2 o 3 anni, 226 00:14:50,510 --> 00:14:57,750 e non c'è stato abbastanza tempo per la ricerca davvero i sistemi operativi 227 00:14:57,750 --> 00:15:00,450 e cosa sono capaci, e non c'è stato abbastanza tempo 228 00:15:00,450 --> 00:15:06,870 per la comunità dannoso, se si vuole, di aver trascorso abbastanza tempo 229 00:15:06,870 --> 00:15:12,910 cercando di attaccare gli utenti attraverso applicazioni mobili, quindi mi aspetto che queste liste per cambiare un po '. 230 00:15:12,910 --> 00:15:18,720 Ma per ora, queste sono le prime 10 cose di cui preoccuparsi. 231 00:15:18,720 --> 00:15:24,150 Si potrebbe chiedere sul lato mobile in cui funziona il codice dannoso cellulare 232 00:15:24,150 --> 00:15:28,880 come si ottiene al dispositivo? 233 00:15:28,880 --> 00:15:35,210 North Carolina State ha un progetto chiamato Progetto Genoma mobile malware 234 00:15:35,210 --> 00:15:39,520 dove si stanno raccogliendo quanto il malware mobile come possono e analizzarla, 235 00:15:39,520 --> 00:15:45,270 e hanno ripartiti i vettori di iniezione che il malware mobile utilizza, 236 00:15:45,270 --> 00:15:51,490 e il 86% utilizza una tecnica chiamata riconfezionamento, 237 00:15:51,490 --> 00:15:54,160 e questo è solo sulla piattaforma Android 238 00:15:54,160 --> 00:15:56,720 si può davvero fare questo riconfezionamento. 239 00:15:56,720 --> 00:16:03,100 >> Il motivo è codice di Android è costruito con 240 00:16:03,100 --> 00:16:08,130 un byte code Java chiamata Dalvik che è facilmente riconvertibile. 241 00:16:08,130 --> 00:16:12,460 Che il cattivo può fare è 242 00:16:12,460 --> 00:16:16,590 prendere un'applicazione Android, decompilare, 243 00:16:16,590 --> 00:16:20,120 inserire il loro codice maligno, ricompilare, 244 00:16:20,120 --> 00:16:28,070 e poi metterlo in App Store che si presenta una nuova versione di tale domanda, 245 00:16:28,070 --> 00:16:30,330 o forse solo cambiando il nome dell'applicazione. 246 00:16:30,330 --> 00:16:35,140 Se era una specie di gioco, cambiare leggermente il nome, 247 00:16:35,140 --> 00:16:42,860 e quindi questo riconfezionamento è come l'86% del malware mobile viene distribuita. 248 00:16:42,860 --> 00:16:45,810 C'è un'altra tecnica chiamata aggiornamento che è 249 00:16:45,810 --> 00:16:50,030 molto simile al riconfezionamento, ma in realtà non mettere il codice maligno dentro 250 00:16:50,030 --> 00:16:52,870 Quello che fai è mettere in un piccolo meccanismo di aggiornamento. 251 00:16:52,870 --> 00:16:56,660 Si decompilare, si mette in un meccanismo di aggiornamento, e si ricompila esso, 252 00:16:56,660 --> 00:17:02,360 e poi quando l'applicazione è in esecuzione lo tira giù il malware sul dispositivo. 253 00:17:02,360 --> 00:17:06,300 >> La stragrande maggioranza sono quei due tecniche. 254 00:17:06,300 --> 00:17:12,710 Non c'è davvero molto di download località di passaggio o download drive-by sui cellulari, 255 00:17:12,710 --> 00:17:15,890 che potrebbe essere come un attacco di phishing. 256 00:17:15,890 --> 00:17:18,200 Hey, controlla questo sito davvero cool, 257 00:17:18,200 --> 00:17:21,020 o avete bisogno di andare a questo sito e compilare questo modulo 258 00:17:21,020 --> 00:17:24,420 per mantenere continuare a fare qualcosa. 259 00:17:24,420 --> 00:17:26,230 Quelli sono gli attacchi di phishing. 260 00:17:26,230 --> 00:17:28,160 La stessa cosa può accadere sulla piattaforma mobile dove 261 00:17:28,160 --> 00:17:33,830 puntare a una applicazione mobile per scaricare, dire "Salve, questo è Bank of America." 262 00:17:33,830 --> 00:17:36,070 "Vediamo che si sta utilizzando questa applicazione." 263 00:17:36,070 --> 00:17:38,540 "Dovresti scaricare altre applicazioni." 264 00:17:38,540 --> 00:17:41,170 Teoricamente, che potrebbe funzionare. 265 00:17:41,170 --> 00:17:48,610 Forse semplicemente non viene utilizzato sufficiente per determinare se ha successo oppure no, 266 00:17:48,610 --> 00:17:51,680 ma hanno trovato che è utilizzato meno dell'1% delle volte quella tecnica. 267 00:17:51,680 --> 00:17:56,130 La maggior parte del tempo è davvero un codice riconfezionato. 268 00:17:56,130 --> 00:17:58,710 >> C'è un'altra categoria chiamata standalone 269 00:17:58,710 --> 00:18:01,420 dove qualcuno solo costruisce un nuovissimo applicativo. 270 00:18:01,420 --> 00:18:04,020 Costruiscono una domanda che pretende di essere qualcosa. 271 00:18:04,020 --> 00:18:07,360 Non è un riconfezionamento di qualcos'altro, e che ha il codice dannoso. 272 00:18:07,360 --> 00:18:11,230 Che viene utilizzato il 14% del tempo. 273 00:18:11,230 --> 00:18:17,880 Ora voglio parlare di quello che sta facendo il codice dannoso? 274 00:18:17,880 --> 00:18:23,070 Uno dei primi malware in circolazione 275 00:18:23,070 --> 00:18:25,490 si potrebbe considerare uno spyware. 276 00:18:25,490 --> 00:18:27,620 Si spia fondamentalmente l'utente. 277 00:18:27,620 --> 00:18:30,470 Raccoglie e-mail, messaggi SMS. 278 00:18:30,470 --> 00:18:32,340 Si accende il microfono. 279 00:18:32,340 --> 00:18:37,330 Si raccoglie il libro di contatto, e lo invia via a qualcun altro. 280 00:18:37,330 --> 00:18:40,870 Questo tipo di spyware presente sul PC, 281 00:18:40,870 --> 00:18:46,200 quindi ha senso perfetto per le persone a cercare di fare questo su dispositivi mobili. 282 00:18:46,200 --> 00:18:53,230 >> Uno dei primi esempi di questo era un programma chiamato Secret SMS Replicator. 283 00:18:53,230 --> 00:18:56,250 E 'stato nel Marketplace di Android un paio di anni fa, 284 00:18:56,250 --> 00:18:59,960 e l'idea era, se si ha avuto accesso al telefono Android di qualcuno 285 00:18:59,960 --> 00:19:03,450 che si voleva spiare, quindi forse è il vostro coniuge 286 00:19:03,450 --> 00:19:07,600 o il vostro altro significativo e si vuole spiare i loro messaggi di testo, 287 00:19:07,600 --> 00:19:11,200 è possibile scaricare questa applicazione e installarlo e configurarlo 288 00:19:11,200 --> 00:19:16,540 per inviare un messaggio SMS a voi con una copia 289 00:19:16,540 --> 00:19:21,710 di ogni messaggio SMS hanno ottenuto. 290 00:19:21,710 --> 00:19:27,220 Questo è ovviamente in violazioni dei termini app store di servizio, 291 00:19:27,220 --> 00:19:32,040 e questo è stato rimosso dal Marketplace di Android entro 18 ore dalla essere lì, 292 00:19:32,040 --> 00:19:36,760 così un numero molto piccolo di persone erano a rischio a causa di questo. 293 00:19:36,760 --> 00:19:42,510 Ora, penso che se il programma è stato chiamato qualcosa forse un po 'meno provocatorio 294 00:19:42,510 --> 00:19:48,690 come Segreto SMS Replicator probabilmente avrebbe funzionato molto meglio. 295 00:19:48,690 --> 00:19:52,870 Ma era abbastanza ovvio. 296 00:19:52,870 --> 00:19:58,680 >> Una delle cose che possiamo fare per determinare se le applicazioni hanno questo comportamento che non vogliamo 297 00:19:58,680 --> 00:20:01,410 è per ispezionare il codice. 298 00:20:01,410 --> 00:20:06,250 Questo è in realtà molto facile da fare su Android perché possiamo decompilare le applicazioni. 299 00:20:06,250 --> 00:20:11,050 Su iOS è possibile utilizzare un disassembler come IDA Pro 300 00:20:11,050 --> 00:20:17,190 di guardare a ciò che le API app chiama e cosa sta facendo. 301 00:20:17,190 --> 00:20:20,680 Abbiamo scritto il nostro analizzatore statico binario per il nostro codice 302 00:20:20,680 --> 00:20:24,940 e lo facciamo, e quindi ciò che si potrebbe fare è che si possa dire 303 00:20:24,940 --> 00:20:30,490 fa il dispositivo fare qualcosa che è fondamentalmente spiando me o inseguimento? 304 00:20:30,490 --> 00:20:33,360 E ho alcuni esempi qui su iPhone. 305 00:20:33,360 --> 00:20:41,440 Questo primo esempio è come accedere al UUID al telefono. 306 00:20:41,440 --> 00:20:47,060 Questo è in realtà qualcosa che Apple ha appena bandito per le nuove applicazioni, 307 00:20:47,060 --> 00:20:52,540 ma le vecchie applicazioni che si potrebbe avere in esecuzione sul vostro telefono può ancora farlo, 308 00:20:52,540 --> 00:20:56,500 e in modo che identificatore unico può essere usato per rintracciare 309 00:20:56,500 --> 00:21:00,440 in molte applicazioni diverse. 310 00:21:00,440 --> 00:21:07,180 >> Sulla Android, ho un esempio qui di ottenere la posizione del dispositivo. 311 00:21:07,180 --> 00:21:10,310 Si può vedere che se quella chiamata API è lì che app sta rintracciando, 312 00:21:10,310 --> 00:21:15,000 e si può vedere se si sta facendo bella posizione o luogo grossolani. 313 00:21:15,000 --> 00:21:18,860 E poi sul fondo qui, ho un esempio di come il BlackBerry 314 00:21:18,860 --> 00:21:25,130 un'applicazione può accedere ai messaggi e-mail nella tua casella di posta. 315 00:21:25,130 --> 00:21:27,660 Questi sono il genere di cose che si possono esaminare a vedere 316 00:21:27,660 --> 00:21:32,360 se l'applicazione sta facendo queste cose. 317 00:21:32,360 --> 00:21:38,320 La seconda grande categoria di comportamenti dannosi, e questo è probabilmente il più grande categoria ora, 318 00:21:38,320 --> 00:21:43,950 è telefonate non autorizzate, premium non autorizzato di messaggi di testo SMS 319 00:21:43,950 --> 00:21:46,080 o di pagamenti non autorizzati. 320 00:21:46,080 --> 00:21:48,930 Un'altra cosa che è unica per il telefono 321 00:21:48,930 --> 00:21:52,700 è il dispositivo è collegato a un account di fatturazione, 322 00:21:52,700 --> 00:21:55,960 e ove avvengono al telefono 323 00:21:55,960 --> 00:21:58,510 può creare oneri. 324 00:21:58,510 --> 00:22:00,700 È possibile acquistare le cose per telefono, 325 00:22:00,700 --> 00:22:04,390 e quando si invia un messaggio di testo SMS premium si sta effettivamente dando soldi 326 00:22:04,390 --> 00:22:11,590 al titolare del conto del numero telefonico sull'altro lato. 327 00:22:11,590 --> 00:22:17,420 Questi sono stati istituiti per ottenere le quotazioni di borsa o il tuo oroscopo del giorno o l'altro, 328 00:22:17,420 --> 00:22:21,680 ma possono essere impostati per ordinare un prodotto inviando un SMS. 329 00:22:21,680 --> 00:22:26,970 La gente dà i soldi alla Croce Rossa con l'invio di un messaggio di testo. 330 00:22:26,970 --> 00:22:30,650 Si può dare 10 dollari in quel modo. 331 00:22:30,650 --> 00:22:34,190 >> Gli aggressori, quello che hanno fatto è hanno istituito 332 00:22:34,190 --> 00:22:38,750 conti in paesi stranieri, e incorporare nel malware 333 00:22:38,750 --> 00:22:42,840 che il telefono invierà un messaggio di testo SMS premium, 334 00:22:42,840 --> 00:22:47,700 dire, un paio di volte al giorno, e alla fine del mese ti accorgi di aver speso 335 00:22:47,700 --> 00:22:52,090 decine o forse anche centinaia di dollari, e se ne vanno con i soldi. 336 00:22:52,090 --> 00:22:57,280 Questo peggiorò a tal punto che questa era la prima cosa che Android 337 00:22:57,280 --> 00:23:00,760 Marketplace oppure Google luogo, è stato il Marketplace di Android, al momento, 338 00:23:00,760 --> 00:23:04,430 ed è ora Google Play-la prima cosa che Google ha iniziato controllando. 339 00:23:04,430 --> 00:23:08,700 Quando Google ha iniziato la distribuzione di applicazioni Android nella loro app store 340 00:23:08,700 --> 00:23:11,350 hanno detto che non stavano andando per verificare nulla. 341 00:23:11,350 --> 00:23:15,630 Ci tiriamo le applicazioni una volta siamo stati notificati hanno rotto i nostri termini di servizio, 342 00:23:15,630 --> 00:23:17,520 ma non stiamo andando a controllare nulla. 343 00:23:17,520 --> 00:23:24,350 Ebbene, circa un anno fa ha ottenuto così male con questo premio SMS messaggi di testo di malware 344 00:23:24,350 --> 00:23:28,030 che questa è la prima cosa hanno iniziato controllando. 345 00:23:28,030 --> 00:23:31,770 Se un'applicazione in grado di inviare messaggi di testo SMS 346 00:23:31,770 --> 00:23:34,750 si esaminano inoltre manualmente l'applicazione. 347 00:23:34,750 --> 00:23:38,770 Cercano le API che chiamano questo, 348 00:23:38,770 --> 00:23:40,580 e ora da allora Google ha ampliato, 349 00:23:40,580 --> 00:23:46,900 ma questa è stata la prima cosa che hanno iniziato cercando. 350 00:23:46,900 --> 00:23:50,690 >> Alcune altre applicazioni che hanno fatto alcuni messaggi di testo SMS, 351 00:23:50,690 --> 00:23:56,980 questo Qicsomos Android, credo che si chiama. 352 00:23:56,980 --> 00:24:02,670 C'era questo evento corrente sul cellulare in cui questa CarrierIQ è venuto fuori 353 00:24:02,670 --> 00:24:07,720 come spyware mettere sul dispositivo dai vettori, 354 00:24:07,720 --> 00:24:10,820 così la gente voleva sapere se il loro telefono era vulnerabile a questo, 355 00:24:10,820 --> 00:24:13,890 e questo era un applicazione gratuita che ha testato questo. 356 00:24:13,890 --> 00:24:17,520 Beh, naturalmente, quello che questa applicazione ha fatto era inviato premium messaggi di testo SMS, 357 00:24:17,520 --> 00:24:20,090 così da test per vedere se sei stato infettato da spyware 358 00:24:20,090 --> 00:24:24,930 aver caricato il malware sul dispositivo. 359 00:24:24,930 --> 00:24:27,310 Abbiamo visto la stessa cosa accada all'ultimo Super Bowl. 360 00:24:27,310 --> 00:24:33,180 C'era una versione falsa della partita di calcio Madden 361 00:24:33,180 --> 00:24:38,320 che ha inviato premium messaggi di testo SMS. 362 00:24:38,320 --> 00:24:45,750 In realtà ha cercato di creare una rete bot troppo sul dispositivo. 363 00:24:45,750 --> 00:24:48,090 Qui ho alcuni esempi. 364 00:24:48,090 --> 00:24:52,640 È interessante notare che Apple è stata abbastanza intelligente, 365 00:24:52,640 --> 00:24:58,470 e non consentono alle applicazioni di inviare messaggi di testo SMS a tutti. 366 00:24:58,470 --> 00:25:00,350 Nessuna applicazione può farlo. 367 00:25:00,350 --> 00:25:03,530 Questo è un ottimo modo per sbarazzarsi di una intera classe di vulnerabilità, 368 00:25:03,530 --> 00:25:09,040 ma su Android si può fare, e, naturalmente, il BlackBerry si può fare troppo. 369 00:25:09,040 --> 00:25:13,060 E 'interessante che il BlackBerry è sufficiente disporre di autorizzazioni Internet 370 00:25:13,060 --> 00:25:18,370 per inviare un messaggio di testo SMS. 371 00:25:18,370 --> 00:25:21,580 >> L'altra cosa davvero che cerchiamo 372 00:25:21,580 --> 00:25:24,780 quando stiamo cercando di vedere se qualcosa è dannoso è solo qualsiasi tipo di 373 00:25:24,780 --> 00:25:28,100 attività di rete non autorizzate, come cerca nella attività di rete 374 00:25:28,100 --> 00:25:31,570 l'applicazione si suppone di avere la sua funzionalità, 375 00:25:31,570 --> 00:25:35,380 e guardare a questa altre attività di rete. 376 00:25:35,380 --> 00:25:43,380 Forse un app, di lavorare, deve ottenere i dati su HTTP, 377 00:25:43,380 --> 00:25:47,500 ma se si tratta di fare le cose tramite e-mail o SMS o Bluetooth o qualcosa del genere 378 00:25:47,500 --> 00:25:52,890 ora che app potrebbe potenzialmente essere dannoso, quindi questa è un'altra cosa che si può verificare la presenza. 379 00:25:52,890 --> 00:26:00,430 E su questa diapositiva qui ho alcuni esempi. 380 00:26:00,430 --> 00:26:05,950 Un'altra cosa interessante che abbiamo visto con il malware è accaduto nel 2009, 381 00:26:05,950 --> 00:26:07,600 ed è successo in una grande strada. 382 00:26:07,600 --> 00:26:11,390 Non so se è successo così tanto da allora, ma era un app 383 00:26:11,390 --> 00:26:15,140 che impersona un'altra applicazione. 384 00:26:15,140 --> 00:26:21,700 Ci fu una serie di applicazioni, ed è stato soprannominato l'attacco 09Droid, 385 00:26:21,700 --> 00:26:29,770 e qualcuno ha deciso che c'erano un sacco di piccole, regionali, le banche medie 386 00:26:29,770 --> 00:26:32,260 che non avere applicazioni di online banking, 387 00:26:32,260 --> 00:26:36,870 così quello che hanno fatto è stato hanno costruito circa 50 applicazioni di online banking 388 00:26:36,870 --> 00:26:39,410 che tutti hanno fatto è stato prendere il nome utente e la password 389 00:26:39,410 --> 00:26:42,190 e reindirizzare l'utente verso il sito web. 390 00:26:42,190 --> 00:26:47,470 E così hanno messo tutti questi nel Marketplace di Google, 391 00:26:47,470 --> 00:26:51,530 nel Marketplace di Android, e quando qualcuno ricerche per vedere se la loro banca 392 00:26:51,530 --> 00:26:56,000 avuto un'applicazione che avrebbero trovato l'applicazione fasulla, 393 00:26:56,000 --> 00:27:01,230 che ha raccolto le loro credenziali e poi reindirizzati al loro sito web. 394 00:27:01,230 --> 00:27:06,640 Il modo in cui questa realtà è diventato-apps erano lì per un paio di settimane, 395 00:27:06,640 --> 00:27:09,050 e c'erano migliaia e migliaia di download. 396 00:27:09,050 --> 00:27:12,910 >> Il modo in cui è venuto alla luce era qualcuno stava avendo un problema 397 00:27:12,910 --> 00:27:15,740 con una delle applicazioni, e hanno chiamato la loro banca, 398 00:27:15,740 --> 00:27:18,390 e hanno chiamato la linea di assistenza clienti della propria banca e disse, 399 00:27:18,390 --> 00:27:21,180 "Sto avendo un problema con l'applicazione di mobile banking". 400 00:27:21,180 --> 00:27:23,460 "Mi puoi aiutare?" 401 00:27:23,460 --> 00:27:26,540 Ed essi risposero: "Noi non abbiamo una applicazione di mobile banking". 402 00:27:26,540 --> 00:27:28,120 Che ha avviato l'inchiesta. 403 00:27:28,120 --> 00:27:31,200 Tale banca chiama Google, e quindi Google guardò e disse: 404 00:27:31,200 --> 00:27:37,220 "Wow, lo stesso autore ha scritto 50 applicazioni bancarie", e li ha giù. 405 00:27:37,220 --> 00:27:43,410 Ma certamente questo potrebbe accadere di nuovo. 406 00:27:43,410 --> 00:27:51,790 C'è l'elenco di tutte le diverse banche qui 407 00:27:51,790 --> 00:27:55,870 che facevano parte di questa truffa. 408 00:27:55,870 --> 00:28:02,050 L'altra cosa un app può fare è presente l'interfaccia utente di un'altra applicazione. 409 00:28:02,050 --> 00:28:06,430 Mentre è in esecuzione potrebbe apparire l'interfaccia utente di Facebook. 410 00:28:06,430 --> 00:28:09,540 Si dice che bisogna mettere il tuo nome utente e password per continuare 411 00:28:09,540 --> 00:28:15,090 o mettere qualsiasi nome utente e la password utente per un sito web 412 00:28:15,090 --> 00:28:18,420 che forse l'utente utilizza solo per cercare di ingannare l'utente 413 00:28:18,420 --> 00:28:21,340 nel mettere le loro credenziali dentro 414 00:28:21,340 --> 00:28:25,590 Questo è davvero un parallelo diritto degli attacchi e-mail di phishing 415 00:28:25,590 --> 00:28:28,210 dove qualcuno ti invia un messaggio di posta elettronica 416 00:28:28,210 --> 00:28:33,050 e ti dà fondamentalmente un utente falso per un sito web 417 00:28:33,050 --> 00:28:37,320 che si ha accesso. 418 00:28:37,320 --> 00:28:41,590 >> L'altra cosa che cerchiamo in codice maligno è la modifica del sistema. 419 00:28:41,590 --> 00:28:48,160 Potete cercare per tutte le chiamate API che richiedono i privilegi di root 420 00:28:48,160 --> 00:28:50,870 per eseguire correttamente. 421 00:28:50,870 --> 00:28:56,160 Cambiare proxy Web del dispositivo sarebbe qualcosa che un'applicazione 422 00:28:56,160 --> 00:28:59,530 non dovrebbe essere in grado di fare. 423 00:28:59,530 --> 00:29:03,030 Ma se l'applicazione dispone di codice in là per farlo 424 00:29:03,030 --> 00:29:05,960 si sa che è probabilmente una un'applicazione dannosa 425 00:29:05,960 --> 00:29:09,620 o altamente probabile che sia un'applicazione dannosa, 426 00:29:09,620 --> 00:29:13,910 e così che cosa accadrebbe è che app avrebbe qualche modo di escalation di privilegi. 427 00:29:13,910 --> 00:29:17,200 Si avrebbe qualche escalation di privilegi exploit 428 00:29:17,200 --> 00:29:20,730 nella domanda, e poi una volta che l'escalation dei privilegi 429 00:29:20,730 --> 00:29:23,800 sarebbe fare queste modifiche del sistema. 430 00:29:23,800 --> 00:29:28,010 Potete trovare malware che ha scalata di privilegi 431 00:29:28,010 --> 00:29:32,550 in esso anche senza sapere come l'escalation di privilegi 432 00:29:32,550 --> 00:29:37,960 sfruttare sta per accadere, e questo è un bel modo semplice 433 00:29:37,960 --> 00:29:41,220 alla ricerca di malware. 434 00:29:41,220 --> 00:29:46,030 DroidDream è stato probabilmente il più famoso pezzo di malware Android. 435 00:29:46,030 --> 00:29:50,530 Penso che risente circa 250.000 utenti in pochi giorni 436 00:29:50,530 --> 00:29:52,810 prima che fosse trovato. 437 00:29:52,810 --> 00:29:56,890 Essi riconfezionati 50 applicazioni fasulle, 438 00:29:56,890 --> 00:30:00,370 metterli nel negozio Android app, 439 00:30:00,370 --> 00:30:10,940 ed essenzialmente ha usato il codice jailbreak Android per acquisire privilegi 440 00:30:10,940 --> 00:30:16,380 e poi installare un comando e controllo e girare tutte le vittime 441 00:30:16,380 --> 00:30:20,690 in una rete bot, ma si potrebbe avere individuato questo 442 00:30:20,690 --> 00:30:24,170 se tu fossi la scansione l'applicazione e solo in cerca di 443 00:30:24,170 --> 00:30:32,230 API chiede che i permessi di root necessari per eseguire correttamente. 444 00:30:32,230 --> 00:30:40,150 >> E c'è un esempio qui ho che sta cambiando il proxy, 445 00:30:40,150 --> 00:30:46,380 e questo in realtà è disponibile solo su Android. 446 00:30:46,380 --> 00:30:49,070 Potete vedere sto dando un sacco di esempi su Android 447 00:30:49,070 --> 00:30:53,990 perché questo è dove l'ecosistema malware più attiva è 448 00:30:53,990 --> 00:30:58,690 perché è davvero facile per un utente malintenzionato di ottenere il codice dannoso 449 00:30:58,690 --> 00:31:01,470 nel Marketplace di Android. 450 00:31:01,470 --> 00:31:06,480 Non è così facile da fare che in Apple App Store 451 00:31:06,480 --> 00:31:10,250 perché Apple impone agli sviluppatori di identificarsi 452 00:31:10,250 --> 00:31:12,790 e firmare il codice. 453 00:31:12,790 --> 00:31:20,340 In realtà controllano chi sei, e Apple è in realtà scrutano le applicazioni. 454 00:31:20,340 --> 00:31:27,450 Noi non vediamo un sacco di vera minaccia in cui il dispositivo è sempre compromessa. 455 00:31:27,450 --> 00:31:32,250 Parlerò di alcuni esempi dove è davvero la privacy che è sempre compromessa, 456 00:31:32,250 --> 00:31:38,460 e questo è ciò che sta realmente accadendo sul dispositivo di Apple. 457 00:31:38,460 --> 00:31:44,090 Un'altra cosa da cercare il codice dannoso, il codice rischioso in dispositivi 458 00:31:44,090 --> 00:31:50,300 è logica o di tempo bombe e bombe a orologeria sono probabilmente 459 00:31:50,300 --> 00:31:53,370 molto più facile per cercare di bombe logiche. 460 00:31:53,370 --> 00:31:57,030 Ma con bombe a tempo, cosa si può fare è che si può cercare 461 00:31:57,030 --> 00:32:04,760 punti del codice in cui viene testato il tempo o un tempo assoluto è cercato 462 00:32:04,760 --> 00:32:08,190 prima di alcune funzionalità in app accade. 463 00:32:08,190 --> 00:32:14,200 E questo potrebbe essere fatto per nascondere tale attività da parte dell'utente, 464 00:32:14,200 --> 00:32:17,510 così sta accadendo a tarda notte. 465 00:32:17,510 --> 00:32:24,350 DroidDream ha fatto tutta la sua attività 11:00-08:00 ora locale 466 00:32:24,350 --> 00:32:30,650 per cercare di farlo mentre l'utente non potrebbe utilizzare il proprio dispositivo. 467 00:32:30,650 --> 00:32:38,680 >> Un altro motivo per fare questo è che se la gente sta usando l'analisi del comportamento di un'applicazione, 468 00:32:38,680 --> 00:32:43,430 in esecuzione l'applicazione in una sandbox per vedere che cosa il comportamento della domanda è, 469 00:32:43,430 --> 00:32:51,090 possono utilizzare la logica basata sul tempo a svolgere l'attività 470 00:32:51,090 --> 00:32:54,640 quando l'applicazione non si trova nella sandbox. 471 00:32:54,640 --> 00:33:01,520 Ad esempio, un app store come Apple 472 00:33:01,520 --> 00:33:07,940 esegue l'applicazione, ma probabilmente non girano tutte le applicazioni per, diciamo, 30 giorni 473 00:33:07,940 --> 00:33:10,550 prima di approvarla, in modo da poter mettere 474 00:33:10,550 --> 00:33:14,120 la logica dell'applicazione che ha detto, va bene, solo fare la cosa brutta 475 00:33:14,120 --> 00:33:20,490 dopo 30 giorni è passato o dopo 30 giorni dalla data di pubblicazione della domanda, 476 00:33:20,490 --> 00:33:27,020 e che può aiutare a nascondere il codice dannoso da persone ispettive per esso. 477 00:33:27,020 --> 00:33:30,050 Se le aziende anti-virus sono in esecuzione le cose in sandbox 478 00:33:30,050 --> 00:33:36,370 o le app negozi stessi sono questo può aiutare 479 00:33:36,370 --> 00:33:39,260 nascondere che da quel controllo. 480 00:33:39,260 --> 00:33:43,020 Ora, il rovescio della medaglia è che è facile da trovare con l'analisi statica, 481 00:33:43,020 --> 00:33:46,170 quindi in realtà ispezionare il codice è possibile cercare tutti i posti 482 00:33:46,170 --> 00:33:54,010 in cui l'applicazione verifica il tempo e controllare in questo modo. 483 00:33:54,010 --> 00:33:58,850 E qui ho alcuni esempi su queste tre piattaforme diverse 484 00:33:58,850 --> 00:34:05,640 come il tempo può essere controllato dal creatore app 485 00:34:05,640 --> 00:34:10,520 in modo da sapere cosa cercare, se si sta controllando l'applicazione staticamente. 486 00:34:10,520 --> 00:34:14,570 >> Ho appena passato attraverso un sacco di diverse attività dannose 487 00:34:14,570 --> 00:34:18,969 che abbiamo visto in natura, ma quali sono i più diffusi? 488 00:34:18,969 --> 00:34:23,940 Lo stesso studio della North Carolina State mobile Genome Project 489 00:34:23,940 --> 00:34:28,560 pubblicato alcuni dati, e ci sono stati fondamentalmente quattro aree 490 00:34:28,560 --> 00:34:32,850 che videro dove c'era un sacco di attività. 491 00:34:32,850 --> 00:34:35,370 37% delle applicazioni ha fatto escalation dei privilegi, 492 00:34:35,370 --> 00:34:38,429 così hanno avuto qualche tipo di codice jailbreak in là 493 00:34:38,429 --> 00:34:42,070 dove hanno cercato di acquisire privilegi in modo che potessero 494 00:34:42,070 --> 00:34:48,360 non comandi API esecuzione come sistema operativo. 495 00:34:48,360 --> 00:34:52,520 Il 45% delle applicazioni là fuori ha fatto SMS premium, 496 00:34:52,520 --> 00:34:57,260 così che è una percentuale enorme che sta cercando di monetizzare direttamente. 497 00:34:57,260 --> 00:35:02,640 Il 93% ha fatto telecomando, in modo hanno cercato di creare una rete di bot, una rete bot mobile. 498 00:35:02,640 --> 00:35:08,990 E il 45% raccolto informazioni di identificazione 499 00:35:08,990 --> 00:35:16,230 come numeri di telefono, UUID, posizione GPS, account utente, 500 00:35:16,230 --> 00:35:22,870 e questo aggiunge fino a più di 100 perché la maggior parte del malware tenta di fare alcune di queste cose. 501 00:35:22,870 --> 00:35:27,070 >> Ho intenzione di passare alla seconda metà e parlare delle vulnerabilità del codice. 502 00:35:27,070 --> 00:35:29,480 Questa è la seconda metà dell'attività rischiosa. 503 00:35:29,480 --> 00:35:33,450 Questo è dove essenzialmente lo sviluppatore sta facendo errori. 504 00:35:33,450 --> 00:35:37,210 Un valido sviluppatore la scrittura di un app legittima 505 00:35:37,210 --> 00:35:41,830 sta facendo errori o è ignorante dei rischi della piattaforma mobile. 506 00:35:41,830 --> 00:35:44,780 Essi semplicemente non sanno come fare un app mobile sicura, 507 00:35:44,780 --> 00:35:47,700 o, talvolta, lo sviluppatore non si preoccupa di mettere l'utente al rischio. 508 00:35:47,700 --> 00:35:50,850 A volte parte del loro modello di business potrebbe essere 509 00:35:50,850 --> 00:35:54,610 la raccolta delle informazioni personali dell'utente. 510 00:35:54,610 --> 00:35:58,090 Questo è una sorta di altra categoria, e per questo motivo alcune di queste maligno 511 00:35:58,090 --> 00:36:03,200 contro inizia legittimi a sanguinare oltre perché non c'è differenza di opinioni 512 00:36:03,200 --> 00:36:10,440 tra ciò che l'utente vuole e ciò che l'utente considera rischiosa 513 00:36:10,440 --> 00:36:13,050 e ciò che lo sviluppatore dell'applicazione considera rischioso. 514 00:36:13,050 --> 00:36:18,380 Naturalmente, non è dati dello sviluppatore dell'applicazione nella maggioranza dei casi. 515 00:36:18,380 --> 00:36:22,030 >> E poi, infine, un altro modo in cui questo accade è uno sviluppatore potrebbe collegare in 516 00:36:22,030 --> 00:36:28,600 una libreria condivisa che ha vulnerabilità o questo comportamento rischioso in esso 517 00:36:28,600 --> 00:36:32,480 a loro insaputa. 518 00:36:32,480 --> 00:36:37,060 La prima categoria è la perdita di dati sensibili, 519 00:36:37,060 --> 00:36:40,030 e questo è quando l'applicazione raccoglie informazioni 520 00:36:40,030 --> 00:36:44,980 come posizione, le informazioni della rubrica, informazioni proprietario 521 00:36:44,980 --> 00:36:48,000 e invia che spegne il dispositivo. 522 00:36:48,000 --> 00:36:53,050 Ed una volta che è spegnere il dispositivo, non sappiamo cosa sta accadendo con queste informazioni. 523 00:36:53,050 --> 00:36:57,170 Potrebbe essere memorizzato insicuro dallo sviluppatore dell'applicazione. 524 00:36:57,170 --> 00:37:02,070 Abbiamo visto gli sviluppatori di applicazioni vengono compromessi, 525 00:37:02,070 --> 00:37:05,820 ei dati che stanno memorizzazione viene scattata. 526 00:37:05,820 --> 00:37:10,970 Questo è accaduto un paio di mesi fa per uno sviluppatore in Florida 527 00:37:10,970 --> 00:37:21,660 dove un numero enorme di-era iPad UUID e nomi di dispositivo 528 00:37:21,660 --> 00:37:25,270 erano trapelate perché qualcuno, credo che fosse anonimo, 529 00:37:25,270 --> 00:37:29,460 ha affermato di fare questo, hanno fatto irruzione nella server di questo sviluppatore 530 00:37:29,460 --> 00:37:34,920 e ha rubato milioni di iPad UUID 531 00:37:34,920 --> 00:37:37,390 e nomi di computer. 532 00:37:37,390 --> 00:37:40,260 Non le informazioni più rischioso, 533 00:37:40,260 --> 00:37:46,820 ma se quella era la memorizzazione di nomi utente e password 534 00:37:46,820 --> 00:37:48,170 e indirizzi di casa? 535 00:37:48,170 --> 00:37:51,100 Ci sono un sacco di applicazioni che archiviano questo tipo di informazioni. 536 00:37:51,100 --> 00:37:53,230 Il rischio c'è. 537 00:37:53,230 --> 00:37:56,620 >> L'altra cosa che può accadere è che se lo sviluppatore non prende cura 538 00:37:56,620 --> 00:38:01,370 per fissare il canale dati, e questo è un altro grande vulnerabilità ho intenzione di parlare, 539 00:38:01,370 --> 00:38:05,160 che i dati vengono inviati in chiaro. 540 00:38:05,160 --> 00:38:09,040 Se l'utente si trova su una rete Wi-Fi pubblico 541 00:38:09,040 --> 00:38:12,330 o qualcuno sta fiutando internet da qualche parte 542 00:38:12,330 --> 00:38:19,260 lungo il percorso che i dati vengono esposti. 543 00:38:19,260 --> 00:38:23,790 Un caso molto famoso di questa fuga di informazioni è successo con Pandora, 544 00:38:23,790 --> 00:38:27,250 e questo è qualcosa che abbiamo ricercato in VeraCode. 545 00:38:27,250 --> 00:38:33,200 Abbiamo sentito che c'era un credo che sia stato un Federal Trade Commission 546 00:38:33,200 --> 00:38:35,310 indagine in corso con Pandora. 547 00:38:35,310 --> 00:38:39,830 Abbiamo detto: "Che cosa sta succedendo lì? Cominciamo a scavare dentro l'applicazione Pandora." 548 00:38:39,830 --> 00:38:46,690 E quello che abbiamo determinato è stata l'applicazione Pandora raccolta 549 00:38:46,690 --> 00:38:51,270 il sesso e la tua età, 550 00:38:51,270 --> 00:38:56,660 ed è inoltre possibile accedere alla vostra posizione GPS, e l'applicazione Pandora 551 00:38:56,660 --> 00:39:00,200 fatto questo per quello che hanno detto erano motivi legittimi. 552 00:39:00,200 --> 00:39:05,360 La musica che stavano giocando, Pandora è un app-musica in streaming 553 00:39:05,360 --> 00:39:07,530 la musica che stavano giocando è stato autorizzato solo negli Stati Uniti, 554 00:39:07,530 --> 00:39:13,020 così hanno dovuto controllare per rispettare gli accordi di licenza che avevano 555 00:39:13,020 --> 00:39:17,240 per la musica che l'utente è stato negli Stati Uniti. 556 00:39:17,240 --> 00:39:25,070 Volevano anche di rispettare il Parental Advisory 557 00:39:25,070 --> 00:39:33,790 intorno linguaggio adulto nella musica, 558 00:39:33,790 --> 00:39:37,500 e quindi è un programma volontario, ma hanno voluto rispettare tale 559 00:39:37,500 --> 00:39:43,010 e non riprodurre testi espliciti ai bambini di 13 e sotto. 560 00:39:43,010 --> 00:39:46,280 >> Avevano motivi legittimi per la raccolta di questi dati. 561 00:39:46,280 --> 00:39:49,160 La loro applicazione ha i permessi per farlo. 562 00:39:49,160 --> 00:39:52,000 Utenti pensato che questo era legittimo. Ma cosa è successo? 563 00:39:52,000 --> 00:39:55,810 Sono legati in 3 o 4 diverse biblioteche annunci. 564 00:39:55,810 --> 00:39:59,140 Ora, tutto ad un tratto tutte queste librerie di annunci 565 00:39:59,140 --> 00:40:02,970 sono ottenere l'accesso a queste stesse informazioni. 566 00:40:02,970 --> 00:40:05,830 Le librerie di annunci, se si guarda il codice nelle librerie di annunci 567 00:40:05,830 --> 00:40:08,430 quello che fanno è ogni biblioteca annuncio dice 568 00:40:08,430 --> 00:40:11,340 "La mia applicazione ha permesso di ottenere la posizione GPS?" 569 00:40:11,340 --> 00:40:14,890 "Oh, lo fa? Va bene, dimmi la posizione GPS." 570 00:40:14,890 --> 00:40:16,620 Ogni singola biblioteca annuncio lo fa, 571 00:40:16,620 --> 00:40:19,740 e se l'applicazione non dispone dell'autorizzazione GPS 572 00:40:19,740 --> 00:40:23,460 non sarà in grado di farlo, ma se lo fa, lo otterrà. 573 00:40:23,460 --> 00:40:26,240 Questo è dove il modello di business delle librerie di annunci 574 00:40:26,240 --> 00:40:31,160 si oppone alla privacy dell'utente. 575 00:40:31,160 --> 00:40:34,980 E ci sono stati studi là fuori che dirà se si conosce l'età 576 00:40:34,980 --> 00:40:38,430 di una persona e si sa la loro posizione 577 00:40:38,430 --> 00:40:42,530 dove dormire la notte, perché avete le coordinate GPS 578 00:40:42,530 --> 00:40:46,030 mentre forse dormono, si sa esattamente chi è quella persona 579 00:40:46,030 --> 00:40:50,230 perché è possibile determinare quale membro di quella famiglia è quella persona. 580 00:40:50,230 --> 00:40:54,780 Davvero questo è l'identificazione per gli inserzionisti 581 00:40:54,780 --> 00:40:59,530 esattamente chi sei, e sembra come se fosse legittimo. 582 00:40:59,530 --> 00:41:02,800 Voglio solo la mia musica in streaming, e questo è l'unico modo per farlo. 583 00:41:02,800 --> 00:41:05,370 >> Beh, abbiamo esposto questo. 584 00:41:05,370 --> 00:41:08,030 Abbiamo scritto questo in molti post del blog, 585 00:41:08,030 --> 00:41:13,280 e si è scoperto che qualcuno dalla rivista Rolling Stone 586 00:41:13,280 --> 00:41:18,810 leggere uno dei nostri post sul blog e ha scritto il proprio blog su Rolling Stone su di esso, 587 00:41:18,810 --> 00:41:22,120 e il giorno dopo Pandora pensato che fosse una buona idea 588 00:41:22,120 --> 00:41:27,600 per rimuovere le librerie di annunci dalla loro applicazione. 589 00:41:27,600 --> 00:41:31,270 Per quanto ne so sono l'unico, che dovrebbero essere lodati. 590 00:41:31,270 --> 00:41:35,770 Penso che siano l'unico tipo freemium di app che ha fatto questo. 591 00:41:35,770 --> 00:41:38,660 Tutte le altre applicazioni freemium hanno questo stesso comportamento, 592 00:41:38,660 --> 00:41:41,780 quindi hai avuto modo di pensare a che tipo di dati si sta dando 593 00:41:41,780 --> 00:41:48,330 queste applicazioni freemium perché sta andando tutto per gli inserzionisti. 594 00:41:48,330 --> 00:41:53,390 Praetorian anche fatto uno studio sulle librerie condivise e disse: 595 00:41:53,390 --> 00:41:57,100 "Diamo un'occhiata a cosa librerie condivise sono le librerie condivise migliori", e questo era i dati. 596 00:41:57,100 --> 00:41:59,420 >> Hanno analizzato 53.000 applicazioni, 597 00:41:59,420 --> 00:42:01,900 e il numero 1 libreria condivisa era Admob. 598 00:42:01,900 --> 00:42:06,060 In realtà è stato nel 38% delle applicazioni là fuori, 599 00:42:06,060 --> 00:42:08,800 così il 38% delle applicazioni che stai usando 600 00:42:08,800 --> 00:42:11,250 sono probabilmente la raccolta delle informazioni personali 601 00:42:11,250 --> 00:42:16,650 e l'invio alle reti pubblicitarie. 602 00:42:16,650 --> 00:42:19,350 Apache e Android erano l'8% e il 6%, 603 00:42:19,350 --> 00:42:22,960 e poi questi altri quelli giù in fondo, Google Ads, Flurry, 604 00:42:22,960 --> 00:42:26,600 Mob City e Millennial Media, 605 00:42:26,600 --> 00:42:30,500 queste sono tutte le imprese pubblicitarie, e quindi, abbastanza interessante, 606 00:42:30,500 --> 00:42:33,500 4% legato nella biblioteca Facebook 607 00:42:33,500 --> 00:42:38,870 probabilmente a che fare l'autenticazione tramite Facebook 608 00:42:38,870 --> 00:42:40,810 così l'applicazione potrebbe autenticare il Facebook. 609 00:42:40,810 --> 00:42:44,660 Ma questo significa anche la società Facebook controlla il codice 610 00:42:44,660 --> 00:42:49,010 che è in esecuzione nel 4% delle applicazioni mobili Android là fuori, 611 00:42:49,010 --> 00:42:53,490 e hanno accesso a tutti i dati che tale applicazione ha permesso di arrivare a. 612 00:42:53,490 --> 00:42:57,170 Facebook cerca essenzialmente di vendere spazi pubblicitari. 613 00:42:57,170 --> 00:43:00,120 Questo è il loro modello di business. 614 00:43:00,120 --> 00:43:02,920 >> Se si guarda a questo intero ecosistema con queste autorizzazioni 615 00:43:02,920 --> 00:43:07,740 e librerie condivise si inizia a vedere che 616 00:43:07,740 --> 00:43:13,850 hai un sacco di rischio in un'applicazione apparentemente legittima. 617 00:43:13,850 --> 00:43:19,360 La stessa cosa simile che è accaduto con Pandora 618 00:43:19,360 --> 00:43:22,340 è successo con un'applicazione chiamata Path, 619 00:43:22,340 --> 00:43:27,660 e percorso pensato che venivano voti, sviluppatori amichevoli. 620 00:43:27,660 --> 00:43:32,160 Stavano solo cercando di darvi una grande esperienza utente, 621 00:43:32,160 --> 00:43:37,810 e si è scoperto che, senza chiedere conferma all'utente o raccontare l'utente nulla- 622 00:43:37,810 --> 00:43:40,400 e questo è successo su iPhone e su Android, 623 00:43:40,400 --> 00:43:44,420 Pandora app era su iPhone e Android- 624 00:43:44,420 --> 00:43:48,890 che l'applicazione Path è stato afferrando l'intera rubrica 625 00:43:48,890 --> 00:43:52,830 e caricarlo su Path solo quando si è installato ed eseguito l'applicazione, 626 00:43:52,830 --> 00:43:55,840 e non ti hanno detto su questo. 627 00:43:55,840 --> 00:43:58,750 Hanno pensato che fosse veramente utile per voi 628 00:43:58,750 --> 00:44:04,040 essere in grado di condividere con tutte le persone della vostra rubrica 629 00:44:04,040 --> 00:44:06,920 che si sta utilizzando l'applicazione Path. 630 00:44:06,920 --> 00:44:09,490 >> Beh, ovviamente il percorso pensato che questo era ottimo per la loro azienda. 631 00:44:09,490 --> 00:44:13,510 Non così grande per l'utente. 632 00:44:13,510 --> 00:44:19,020 Dovete pensare che sia una cosa se forse un adolescente 633 00:44:19,020 --> 00:44:23,700 sta usando questa applicazione e le loro decine di amici sono lì, 634 00:44:23,700 --> 00:44:29,360 ma se è l'amministratore delegato di una società che installa Path 635 00:44:29,360 --> 00:44:33,170 e poi tutto ad un tratto tutta la loro rubrica è lassù? 636 00:44:33,170 --> 00:44:38,310 Stai andando a ottenere un sacco di informazioni di contatto potenzialmente preziose 637 00:44:38,310 --> 00:44:40,920 per un sacco di gente. 638 00:44:40,920 --> 00:44:44,500 Un giornalista del New York Times, si potrebbe essere in grado di ottenere il numero di telefono 639 00:44:44,500 --> 00:44:47,380 per gli ex presidenti dal loro rubrica, 640 00:44:47,380 --> 00:44:54,780 quindi ovviamente un sacco di informazioni sensibili viene trasferito con qualcosa di simile. 641 00:44:54,780 --> 00:44:58,090 C'era un grande lembo tale di questo che Path è scusato. 642 00:44:58,090 --> 00:45:01,610 Hanno cambiato la loro applicazione, e ancora influenzato Apple. 643 00:45:01,610 --> 00:45:06,950 Apple ha detto, "Stiamo andando a costringere i fornitori di app per richiedere agli utenti 644 00:45:06,950 --> 00:45:12,650 se andranno a raccogliere tutta la loro rubrica. " 645 00:45:12,650 --> 00:45:15,360 >> Sembra che quello che sta succedendo qui è 646 00:45:15,360 --> 00:45:19,430 quando c'è una grande violazione della privacy e rende la stampa 647 00:45:19,430 --> 00:45:21,680 vediamo un cambiamento là fuori. 648 00:45:21,680 --> 00:45:23,230 Ma, naturalmente, ci sono altre cose là fuori. 649 00:45:23,230 --> 00:45:27,440 L'applicazione LinkedIn raccoglie le voci di calendario, 650 00:45:27,440 --> 00:45:34,530 ma Apple non rende l'utente viene invitato a tale proposito. 651 00:45:34,530 --> 00:45:38,030 Le voci del calendario possono avere informazioni sensibili anche in loro. 652 00:45:38,030 --> 00:45:40,000 Dove si sta andando a disegnare la linea? 653 00:45:40,000 --> 00:45:43,960 Questa è davvero una specie di luogo in evoluzione 654 00:45:43,960 --> 00:45:47,640 dove non c'è davvero nessun buon livello là fuori 655 00:45:47,640 --> 00:45:51,990 per gli utenti di capire quando le loro informazioni sta per essere a rischio 656 00:45:51,990 --> 00:45:57,820 e quando andranno a sapere che è in fase di presa. 657 00:45:57,820 --> 00:46:03,040 Abbiamo scritto un app a VeraCode chiamato Adios, 658 00:46:03,040 --> 00:46:08,350 ed essenzialmente ha permesso di puntare l'applicazione alla vostra directory di iTunes 659 00:46:08,350 --> 00:46:12,550 e guardare tutte le applicazioni che sono state la raccolta di tua rubrica completo. 660 00:46:12,550 --> 00:46:19,760 E come si può vedere in questa lista qui, Angry Birds, 661 00:46:19,760 --> 00:46:21,590 AIM, AroundMe. 662 00:46:21,590 --> 00:46:24,050 Perché la Angry Birds devono tua rubrica? 663 00:46:24,050 --> 00:46:29,160 Non lo so, ma lo fa in qualche modo. 664 00:46:29,160 --> 00:46:32,310 >> Questo è qualcosa che molte, molte applicazioni fanno. 665 00:46:32,310 --> 00:46:34,780 È possibile esaminare il codice per questo. 666 00:46:34,780 --> 00:46:38,660 C'è API ben definite per iPhone, Android e BlackBerry 667 00:46:38,660 --> 00:46:42,120 per arrivare alla rubrica. 668 00:46:42,120 --> 00:46:48,520 Si può davvero facilmente ispezionare per questo, e questo è quello che abbiamo fatto nella nostra applicazione Adios. 669 00:46:48,520 --> 00:46:52,320 La categoria successiva, Unsafe Sensitive Data Storage, 670 00:46:52,320 --> 00:46:55,670 è qualcosa di cui gli sviluppatori prendono qualcosa come uno spillo o un numero di conto 671 00:46:55,670 --> 00:46:58,530 o una password e conservarla in chiaro sul dispositivo. 672 00:46:58,530 --> 00:47:02,310 Ancora peggio, potrebbero conservarlo in un'area al telefono 673 00:47:02,310 --> 00:47:06,820 che è accessibile a livello globale, come la scheda SD. 674 00:47:06,820 --> 00:47:11,320 Si vede più spesso su Android, perché Android permette una scheda SD. 675 00:47:11,320 --> 00:47:13,200 Dispositivi iPhone non lo fanno. 676 00:47:13,200 --> 00:47:17,900 Ma abbiamo anche visto che questo accada in una domanda di Citigroup. 677 00:47:17,900 --> 00:47:25,450 La loro applicazione online banking memorizzato i numeri di conto insicuro, 678 00:47:25,450 --> 00:47:28,120 solo in chiaro, quindi se avete perso il vostro dispositivo, 679 00:47:28,120 --> 00:47:30,670 in sostanza hai perso il tuo conto in banca. 680 00:47:30,670 --> 00:47:36,000 Questo è il motivo per cui io personalmente non faccio bancario sul mio iPhone. 681 00:47:36,000 --> 00:47:43,710 Penso che sia troppo rischioso in questo momento per fare questo tipo di attività. 682 00:47:43,710 --> 00:47:45,950 >> Skype ha fatto la stessa cosa. 683 00:47:45,950 --> 00:47:49,870 Skype, ovviamente, ha un saldo del conto, un nome utente e una password 684 00:47:49,870 --> 00:47:51,030 che accedere a tale equilibrio. 685 00:47:51,030 --> 00:48:00,080 Erano l'archiviazione di tutte le informazioni in chiaro sul dispositivo mobile. 686 00:48:00,080 --> 00:48:05,760 Ho alcuni esempi qui di creazione di file 687 00:48:05,760 --> 00:48:10,310 che non hanno i permessi giusti o la scrittura su disco 688 00:48:10,310 --> 00:48:17,260 e non avendo avviene alcuna crittografia per questo. 689 00:48:17,260 --> 00:48:20,190 Questa zona successiva, Unsafe sensibili trasmissione di dati, 690 00:48:20,190 --> 00:48:24,450 Ho accennato a questo un paio di volte, ed a causa di Wi-Fi pubblico 691 00:48:24,450 --> 00:48:27,770 questo è qualcosa che apps assolutamente bisogno di fare, 692 00:48:27,770 --> 00:48:31,250 e questo è probabilmente ciò che vediamo sbagliare più. 693 00:48:31,250 --> 00:48:34,920 Direi, anzi, penso di avere i dati effettivi, 694 00:48:34,920 --> 00:48:38,120 ma è quasi la metà delle applicazioni mobili 695 00:48:38,120 --> 00:48:41,780 avvitare facendo SSL. 696 00:48:41,780 --> 00:48:43,910 Semplicemente non utilizzano le API correttamente. 697 00:48:43,910 --> 00:48:47,970 Voglio dire, tutto quello che devi fare è seguire le istruzioni e utilizzare le API, 698 00:48:47,970 --> 00:48:54,720 ma essi le cose come non verificare se vi sia un certificato non valido all'altra estremità, 699 00:48:54,720 --> 00:49:02,120 Non controllare se l'altra estremità sta cercando di fare un attacco protocollo downgrade. 700 00:49:02,120 --> 00:49:07,200 >> Gli sviluppatori, vogliono ottenere la loro casella, giusto? 701 00:49:07,200 --> 00:49:11,910 La loro esigenza è quella di utilizzare questo per vendere. Hanno usato questo per vendere. 702 00:49:11,910 --> 00:49:14,800 Il requisito è di non usare questo per vendere in modo sicuro, 703 00:49:14,800 --> 00:49:19,680 e quindi questo è il motivo per cui tutte le applicazioni che utilizzano SSL per proteggere i dati 704 00:49:19,680 --> 00:49:23,470 mentre viene trasmesso spegnere il dispositivo davvero bisogno di essere ispezionato 705 00:49:23,470 --> 00:49:28,950 per assicurarsi che è stato attuato correttamente. 706 00:49:28,950 --> 00:49:32,850 E qui ho alcuni esempi dove è possibile vedere un'applicazione 707 00:49:32,850 --> 00:49:37,400 potrebbe essere utilizzando HTTP invece di HTTPS. 708 00:49:37,400 --> 00:49:40,510 In alcuni casi, applicazioni saranno ricadere HTTP 709 00:49:40,510 --> 00:49:44,250 se l'HTTPS non funziona. 710 00:49:44,250 --> 00:49:49,070 Ho un'altra chiamata qui su Android dove hanno disabilitato il controllo certificato, 711 00:49:49,070 --> 00:49:51,700 quindi un attacco di tipo man-in-the-middle può succedere. 712 00:49:51,700 --> 00:49:56,370 Sarà accettato un certificato non valido. 713 00:49:56,370 --> 00:50:01,920 Questi sono tutti i casi in cui gli attaccanti stanno per essere in grado di ottenere il 714 00:50:01,920 --> 00:50:07,150 la stessa connessione Wi-Fi come utente e accedere a tutti i dati 715 00:50:07,150 --> 00:50:11,650 che viene trasmesso su Internet. 716 00:50:11,650 --> 00:50:15,970 >> E, infine, l'ultima categoria che ho qui è password hardcoded e le chiavi. 717 00:50:15,970 --> 00:50:21,470 Noi in realtà vediamo un sacco di sviluppatori utilizzano lo stesso stile di codifica 718 00:50:21,470 --> 00:50:25,900 che hanno fatto quando stavano costruendo applicazioni server web, 719 00:50:25,900 --> 00:50:29,700 così stanno costruendo un'applicazione server Java, e stanno hardcoding la chiave. 720 00:50:29,700 --> 00:50:31,940 Beh, quando si sta costruendo un'applicazione server, sì, 721 00:50:31,940 --> 00:50:34,240 hardcoding la chiave non è una buona idea. 722 00:50:34,240 --> 00:50:36,290 Essa rende difficile cambiare. 723 00:50:36,290 --> 00:50:40,700 Ma non è così male sul lato server perché chi ha accesso al lato server? 724 00:50:40,700 --> 00:50:43,140 Solo gli amministratori. 725 00:50:43,140 --> 00:50:48,100 Ma se si prende lo stesso codice e si versa sopra a una applicazione mobile 726 00:50:48,100 --> 00:50:52,550 ora tutti coloro che hanno tale applicazione mobile ha accesso a quella chiave hardcoded, 727 00:50:52,550 --> 00:50:56,380 e abbiamo effettivamente vedere questo un sacco di volte, e ho alcune statistiche 728 00:50:56,380 --> 00:51:00,920 come spesso vediamo che questo accada. 729 00:51:00,920 --> 00:51:04,940 In realtà era in esempio di codice che MasterCard ha pubblicato 730 00:51:04,940 --> 00:51:06,850 su come utilizzare il loro servizio. 731 00:51:06,850 --> 00:51:11,860 Il codice di esempio ha fatto vedere come si sarebbe solo prendere la password 732 00:51:11,860 --> 00:51:14,850 e metterlo in una stringa hardcoded proprio lì, 733 00:51:14,850 --> 00:51:19,380 e sappiamo come gli sviluppatori amano copiare e incollare frammenti di codice 734 00:51:19,380 --> 00:51:22,360 quando stanno cercando di fare qualcosa, in modo da copiare e incollare il frammento di codice 735 00:51:22,360 --> 00:51:28,450 che hanno dato come esempio di codice, e si dispone di un'applicazione insicuro. 736 00:51:28,450 --> 00:51:31,490 >> E qui abbiamo alcuni esempi. 737 00:51:31,490 --> 00:51:35,840 Questo primo è uno vediamo un sacco dove hardcode 738 00:51:35,840 --> 00:51:40,510 il diritto di dati in un URL che viene inviato. 739 00:51:40,510 --> 00:51:45,120 A volte vediamo stringa password = la password. 740 00:51:45,120 --> 00:51:49,060 Questo è abbastanza facile da rilevare, o la password stringa su BlackBerry e Android. 741 00:51:49,060 --> 00:51:53,680 In realtà è abbastanza facile da controllare perché quasi sempre 742 00:51:53,680 --> 00:51:57,030 i nomi sviluppatore la variabile che sta tenendo la password 743 00:51:57,030 --> 00:52:02,290 qualche variazione di password. 744 00:52:02,290 --> 00:52:05,200 Ho detto che noi facciamo analisi statica a VeraCode, 745 00:52:05,200 --> 00:52:11,790 così abbiamo analizzato diverse centinaia di applicazioni Android e iOS. 746 00:52:11,790 --> 00:52:15,160 Abbiamo costruito modelli completi di loro, e siamo in grado di eseguire la scansione di loro 747 00:52:15,160 --> 00:52:19,280 per le diverse vulnerabilità, in particolare le vulnerabilità di cui parlavo, 748 00:52:19,280 --> 00:52:21,050 e ho alcuni dati qui. 749 00:52:21,050 --> 00:52:24,320 68,5% delle applicazioni Android abbiamo guardato 750 00:52:24,320 --> 00:52:28,590 si era rotto il codice crittografico, 751 00:52:28,590 --> 00:52:33,240 che per noi, non possiamo rilevare se hai fatto una propria routine di crittografia, 752 00:52:33,240 --> 00:52:38,980 non che sia una buona idea, ma questo è in realtà utilizza le API pubblicate 753 00:52:38,980 --> 00:52:42,530 che sono sulla piattaforma ma loro facendo in modo 754 00:52:42,530 --> 00:52:46,680 che la crypto sarebbe vulnerabile, 68.5. 755 00:52:46,680 --> 00:52:49,870 E questo è per le persone che ci stanno inviando le loro domande in realtà perché 756 00:52:49,870 --> 00:52:53,730 pensano che sia una buona idea per fare test di sicurezza. 757 00:52:53,730 --> 00:52:56,960 Queste sono già persone che stanno probabilmente pensando in modo sicuro, 758 00:52:56,960 --> 00:52:59,540 quindi è probabilmente anche peggio. 759 00:52:59,540 --> 00:53:02,690 >> Io non parlo di linea di controllo dell'iniezione di alimentazione. 760 00:53:02,690 --> 00:53:07,640 E 'qualcosa che controlliamo per, ma non è così rischioso un problema. 761 00:53:07,640 --> 00:53:15,390 Perdita di informazioni, questo è dove vengono inviati i dati sensibili spegnere il dispositivo. 762 00:53:15,390 --> 00:53:19,270 Abbiamo trovato che nel 40% delle applicazioni. 763 00:53:19,270 --> 00:53:23,540 Il tempo e lo stato, questi sono problemi razziali condizione di tipo, in genere piuttosto difficile da sfruttare, 764 00:53:23,540 --> 00:53:26,170 quindi non ho parlato di questo, ma abbiamo guardato. 765 00:53:26,170 --> 00:53:28,750 Il 23% ha avuto problemi di SQL injection. 766 00:53:28,750 --> 00:53:32,020 Un sacco di gente non sa che un sacco di applicazioni 767 00:53:32,020 --> 00:53:35,880 utilizzare un piccolo piccolo database SQL sul back-end per memorizzare i dati. 768 00:53:35,880 --> 00:53:40,430 Beh, se i dati che si sta prendendo in rete 769 00:53:40,430 --> 00:53:43,800 ha stringhe SQL injection in esso 770 00:53:43,800 --> 00:53:45,970 qualcuno può compromettere il dispositivo mediante la, 771 00:53:45,970 --> 00:53:49,800 e quindi penso che trovare circa il 40% delle applicazioni web hanno questo problema, 772 00:53:49,800 --> 00:53:52,840 che è un problema enorme epidemia. 773 00:53:52,840 --> 00:53:55,740 Troviamo il 23% del tempo in applicazioni mobili 774 00:53:55,740 --> 00:54:02,030 e questo è probabilmente perché molte altre applicazioni web utilizzano SQL che mobile. 775 00:54:02,030 --> 00:54:05,580 >> E poi vediamo ancora qualche cross-site scripting, problemi di autorizzazione, 776 00:54:05,580 --> 00:54:09,400 e poi gestione delle credenziali, è lì che hai la tua password hardcoded. 777 00:54:09,400 --> 00:54:14,540 In 5% delle applicazioni vediamo che. 778 00:54:14,540 --> 00:54:17,970 E poi abbiamo alcuni dati relativi iOS. 779 00:54:17,970 --> 00:54:20,180 81% ha avuto problemi di gestione degli errori. 780 00:54:20,180 --> 00:54:23,130 Questo è più di un problema di qualità del codice, 781 00:54:23,130 --> 00:54:28,010 ma il 67% ha avuto problemi di crittografia, quindi non è così male come Android. 782 00:54:28,010 --> 00:54:32,440 Forse le API sono un po 'più facile, i codici di esempio un po' meglio su iOS. 783 00:54:32,440 --> 00:54:35,420 Ma ancora una percentuale molto alta. 784 00:54:35,420 --> 00:54:39,040 Abbiamo avuto il 54% di perdita di informazioni, 785 00:54:39,040 --> 00:54:42,080 circa il 30% con errori di gestione di buffer. 786 00:54:42,080 --> 00:54:45,930 Ecco i luoghi dove ci potrebbe potenzialmente essere un problema di corruzione della memoria. 787 00:54:45,930 --> 00:54:50,350 Si scopre che non è tanto di un problema di sfruttamento 788 00:54:50,350 --> 00:54:56,450 su iOS perché tutto il codice deve essere firmato, 789 00:54:56,450 --> 00:55:02,210 quindi è difficile per un utente malintenzionato di eseguire codice arbitrario su iOS. 790 00:55:02,210 --> 00:55:07,880 Qualità del codice, directory traversal, ma poi la gestione delle credenziali qui al 14,6%, 791 00:55:07,880 --> 00:55:09,250 così peggio che su Android. 792 00:55:09,250 --> 00:55:13,240 Abbiamo gente non la corretta password. 793 00:55:13,240 --> 00:55:15,790 E poi gli errori numerici e buffer overflow, 794 00:55:15,790 --> 00:55:22,680 quelli sono più andando essere problemi di qualità del codice di iOS. 795 00:55:22,680 --> 00:55:26,110 >> Questo è tutto per la mia presentazione. Non so se siamo fuori tempo o no. 796 00:55:26,110 --> 00:55:29,540 Non so se ci sono domande. 797 00:55:29,540 --> 00:55:33,220 [Maschio] Una domanda veloce intorno frammentazione e il mercato Android. 798 00:55:33,220 --> 00:55:36,240 Apple ha almeno possiede patch. 799 00:55:36,240 --> 00:55:40,780 Fanno un buon lavoro di ottenere là fuori che meno nello spazio Android. 800 00:55:40,780 --> 00:55:44,280 È quasi bisogno di jailbreak il telefono per rimanere aggiornati 801 00:55:44,280 --> 00:55:46,660 con la versione corrente di Android. 802 00:55:46,660 --> 00:55:50,960 Sì, è un problema enorme e quindi se ci pensate- 803 00:55:50,960 --> 00:55:52,280 [Maschio] Perché non hai ripetere? 804 00:55:52,280 --> 00:55:55,610 >> Oh, giusto, quindi la domanda è per quanto riguarda la frammentazione 805 00:55:55,610 --> 00:56:00,410 del sistema operativo sulla piattaforma Android? 806 00:56:00,410 --> 00:56:05,890 In che modo questo influisce sulla rischiosità di questi dispositivi? 807 00:56:05,890 --> 00:56:09,700 Ed in realtà è un problema enorme, perché ciò che accade è 808 00:56:09,700 --> 00:56:15,110 i dispositivi più vecchi, quando qualcuno esce con un jailbreak per quel dispositivo, 809 00:56:15,110 --> 00:56:19,960 in sostanza, che è scalata di privilegi, e fino a che il sistema operativo sia aggiornato 810 00:56:19,960 --> 00:56:25,350 qualsiasi malware può quindi utilizzare tale vulnerabilità per compromettere completamente il dispositivo, 811 00:56:25,350 --> 00:56:30,200 e quello che stiamo vedendo in Android è al fine di ottenere un nuovo sistema operativo 812 00:56:30,200 --> 00:56:34,690 Google deve mettere il sistema operativo, e quindi il produttore dell'hardware 813 00:56:34,690 --> 00:56:39,390 ha da personalizzare, e quindi il vettore deve personalizzare e consegnarla. 814 00:56:39,390 --> 00:56:43,070 Che, fondamentalmente, tre parti in movimento qui, 815 00:56:43,070 --> 00:56:47,210 e si sta rivelando che i vettori non importa, 816 00:56:47,210 --> 00:56:50,400 ed i produttori di hardware non interessa, e Google non è pungolo abbastanza 817 00:56:50,400 --> 00:56:54,430 di fare qualcosa, così essenzialmente oltre la metà dei dispositivi là fuori 818 00:56:54,430 --> 00:57:00,590 disporre di sistemi operativi che hanno queste vulnerabilità escalation di privilegi in loro, 819 00:57:00,590 --> 00:57:08,440 e quindi se si ottiene malware sul vostro dispositivo Android è molto più di un problema. 820 00:57:08,440 --> 00:57:10,350 >> Ok, vi ringrazio molto. 821 00:57:10,350 --> 00:57:12,310 [Applausi] 822 00:57:12,310 --> 00:57:14,310 [CS50.TV]