Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
23
Добавлен:
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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Узлу не нужны DevEUI, AppEUI или AppKey; он может начать пря-

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

мую отправку сообщений с данными в сеть. Шлюз , как обычноdf,-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

пересылает сообщения на сетевой сервер, не обращая внимания на их содержимое.Сетевой сервер уже предварительно настроен с по­ мощью DevAddr,NwkSKeyи AppSKey,поэтому он может проверять и рас- шифровывать сообщения, отправленные узлом, а затем шифровать и отправлять сообщения обратно на него.

Атаки на LoRaWAN

Злоумышленник может использовать множество возможных век- торов для взлома LoRaWAN, в зависимости от конфигурации сети и развертывания устройств. В этом разделе мы обсудим следующие векторы: слабые места генерации ключей и управления ими, атаки повторного воспроизведения, атаки с переключением битов, спу- финг ACK и уязвимости приложений. Мы покажем пример реализа- ции атаки с заменой битов, а все прочее оставим вам для самостоя- тельной практики. Чтобы проработать некоторые другие атаки, вам, возможно,потребуется приобрести шлюз LoRaWAN и настроить свою собственную сеть и сервер приложений, обсуждение которых выхо- дит за рамки этой главы.

Атаки с заменой битов

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

Два основных сценария могут позволить этой атаке быть ус­ пешной.

zzСеть и сервер приложений являются разными объектами и вза- имодействуют через незащищенный канал. LoRaWAN не ука- зывает, как два сервера должны соединяться. Это означает, что целостность сообщения проверяется только на сетевом серве- ре (с помощью NwkSKey). Злоумышленник может изменить за- шифрованный текст между двумя серверами. Поскольку сервер приложений имеет только AppSKey, а не NwkSKey, нет никакого способа проверитьцелостностьпакета,поэтому сервер не может узнать, получил ли он злонамеренно измененный пакет.

zzЕсли сеть и сервер приложений являются одним и тем же объек- том, атака возможна, если сервер воздействует на FRMPayload,

Радио дальнего действия: LPWAN  377

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

проверит MIC.

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Мы продемонстрируем, как эта атака будет работать, эмулируя ее с помощью­ утилиты lora-packet библиотеки Node.js, которая также должна пролитьсветнато,как пакетLoRaWAN выглядитна практике. Библиотека Node.js– это среда выполнения JavaScript с открытым ис- ходным кодом, которая позволяет выполнять код JavaScript вне брау- зера. Перед началом убедитесь, что вы установили Node.js.Установка npm через apt-get также приведет к установке Node.js.

Установите менеджер пакетов npm, который можно использовать для установки библиотеки lora-packet. В Kali можно использовать следующую команду:

# apt-get install npm

Затем загрузите lora-packet с GitHub https://github.com/anthonykirby/ lora-packet/ или установите ее напрямую с помощью­ npm:

# npm install lora-packet

Затем вы можете запустить код из листинга 13.4, как любой испол- няемый скрипт. Скопируйте его в файл, измените его разрешения на выполнение с помощью­ команды chmod a+x <имя_скрипта>.js и запус­ тите ее в терминале. Сценарий создает пакет LoRaWAN и имитирует атаку с переключением битов, изменяя определенную его часть без предварительного ее дешифрования.

Листинг 13.4. Демонстрация атаки на полезную нагрузку LoRaWAN с заменой битов с использованием библиотеки lora-packet

#!/usr/bin/env node

var lora_packet = require('lora-packet');

var AppSKey = new Buffer('ec925802ae430ca77fd3dd73cb2cc588', 'hex'); var packet = lora_packet.fromFields({

MType: 'Unconfirmed Data Up',

DevAddr: new Buffer('01020304', 'hex'), // обратный порядок байтов

FCtrl: {

ADR: false, ACK: true,

ADRACKReq: false, FPending: false

},

payload: 'RH:60',

}

,AppSKey

,new Buffer("44024241ed4ce9a68c6a8bc055233fd3", 'hex') // NwkSKey

);

378  Глава 13

 

 

 

 

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

 

 

 

 

console.log("original packet: \n" + packet);

var packet_bytes = packet.getPHYPayload().toString('hex'); console.log("hex: " + packet_bytes);

console.log("payload: " + lora_packet.decrypt(packet, AppSKey, null).toString());

 

 

 

 

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

 

 

 

 

var target = packet_bytes; var index = 24;

target = target.substr(0, index) + '1' + target.substr(index + 1);

console.log("\nattacker modified packet");

var changed_packet = lora_packet.fromWire(new Buffer(target, 'hex')); console.log("hex: " + changed_packet.getPHYPayload().toString('hex'));

console.log("payload: " + lora_packet.decrypt(changed_packet, AppSKey, null).toString());

Сначала мы пишем node , чтобы указать, что этот код будет вы- полняться интерпретатором Node.js. Затем импортируем модуль lo- ra-packet с помощью­ директивы require и сохраняем его в объекте lora_packet.ЗначениеAppSKey насамомделенеимеетзначениядля этого упражнения, но оно должно быть ровно 128 бит.

Мы создаем пакет LoRa, который будет служить целью злоумыш- ленника . Вывод нашего скрипта также отображает поля пакета. Поле MType MHDR указывает, что это сообщение данных, поступа- ющее от узлового устройства без ожидания подтверждения от сер- вера. Четырехбайтовый DevAddr является частью FHDR. Полезная информация прикладного уровня–это значение RH:60.RH обозна- чает относительную влажность (relative humidity),указывая нато,что это сообщение исходит от датчика окружающей среды. Эта полезная информация соответствует FRMPayload (показанной в следующих выходных данных), которую мы получили, зашифровав исходную полезную нагрузку (RH:60) с помощью­ AppSKey. Затем мы используем функции библиотеки lora-packet для подробной распечатки полей пакета, его байтов в шестнадцатеричной форме и расшифрованных полезных данных приложения .

Затем выполняем атаку с изменением битов . Копируем байты пакета в целевую переменную, именно так злоумышленник перехва- тит пакет. Далее следует выбрать позицию внутри­ пакета, где нужно внести изменения. Мы выбрали позицию 24, которая соответствует значению RH – целочисленному значению полезной нагрузки после преамбулыRH: (котораяявляетсястроковойчастью).Злоумышленник обычно должен угадать местонахождение данных, которые он хочет изменить, если заранее не знает формат полезной нагрузки.

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

root@kali:~/lora# ./dec.js original packet:

Message Type = Data

PHYPayload = 400403020120010001EC49353984325C0ECB

Радио дальнего действия: LPWAN  379

 

 

 

 

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

 

 

 

 

( PHYPayload

= MHDR[1] | MACPayload[..] | MIC[4] )

MHDR

= 40

MACPayload

= 0403020120010001EC49353984

MIC

= 325C0ECB

 

 

 

 

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

 

 

 

 

( MACPayload

= FHDR | FPort | FRMPayload )

FHDR

= 04030201200100

FPort

= 01

FRMPayload

= EC49353984

( FHDR

= DevAddr[4] | FCtrl[1] | FCnt[2] | FOpts[0..15] )

DevAddr

= 01020304 (Big Endian)

FCtrl

= 20

FCnt

= 0001 (Big Endian)

FOpts

=

Message Type

= Unconfirmed Data Up

Direction

= up

FCnt

= 1

FCtrl.ACK

= true

FCtrl.ADR

= false

hex: 400403020120010001ec49353984325c0ecb payload: RH:60

attacker modified packet

hex: 400403020120010001ec49351984325c0ecb payload: RH:0

Первый выделенный элемент в начальной шестнадцатеричной строке – MHDR (40), а следующий (ec49353984) – полезная нагрузка. После этого идет MIC (325c0ecb).Во второй шестнадцатеричной стро- ке, показывающей измененный пакет атакующего в шестнадцате- ричном формате,мы выделяемту частьполезной информации,кото- рая была изменена.Обратите внимание на то,что MIC не изменился, потому что злоумышленник не знает NwkSKey,чтобы пересчитать его.

Генерация ключей и управление ими

Многие атаки способны извлечь три криптографических ключа LoRaWAN. Одна из причин этого заключается в том, что узлы могут находиться в небезопасных или неконтролируемых физических ме- стах – например, датчики температуры на ферме или датчики влаж- ности на открытом воздухе.Это означает,что злоумышленник может украсть узел, извлечь ключи (либо AppKey из узлов, активированных OTAA, либо жестко запрограммированные NwkSKeyи AppSKey из узлов ABP),а затем перехватитьили подделатьсообщения отлюбогодруго- го узла,который может использоватьте же ключи.Атакующий может также применить методы вроде анализа побочного канала, обнару- живая изменения в потребляемой мощности или электромагнитном излучении во время шифрования AES, чтобы определить значение ключа.

380  Глава 13