Дешифрование микросхемы STM8S105K6: передовые методы восстановления устаревших систем

Содержание

В качестве ведущего инженера-реверс-инженера в Well Done Technology я недавно возглавил миссию по дешифрованию микроконтроллеров STM8S105K6, встроенных в датчики критически важной инфраструктуры. В этом примере из практики описывается наш технический подход к обходу функций безопасности с сохранением целостности системы.

Введение

STM8S105K6 (32 КБ флэш-памяти, 8-разрядное ядро с тактовой частотой 16 МГц) является рабочей лошадкой в устаревших промышленных системах. Однако сочетание защиты от чтения (уровень 2) и настраиваемого шифрования создало значительные препятствия, когда наш клиент столкнулся с незапланированным устареванием своей сенсорной сети. В этом документе подробно описана наша успешная методология дешифрования.

Характеристики чипа и функции безопасности

Ключевые параметры

ParameterValue
ArchitectureSTM8S (8 - bit)
Memory32KB Flash / 2KB SRAM
ADC Resolution10 - bit
Security LevelsRead Protection (Level 2)
EncryptionProprietary XOR Scheme

Критические штыри для атаки

Pin LocationPin Details
Left Side (Pins 1 - 20)1 - PC7 • 2 - PC8 • 3 - PC9 • 4 - PC10 • 5 - PC11
6 - BOOT1 • 7 - PH3 • 8 - PH2 • 9 - VDD • 10 - VSS
11 - PA0 • 12 - PA1 • 13 - PA2 • 14 - PC3 • 15 - PC2
16 - PC1 • 17 - PC0 • 18 - NRST • 19 - PH1 • 20 - PH0

Анализ безопасности

Механизмы защиты

Защита от чтения:
				
					// Protection configuration
FLASH->CR2 |= FLASH_CR2_LP; // Level 2 protection
FLASH->OPTR |= FLASH_OPTR_RDP; // Read protection enable
				
			
Пользовательское шифрование:
				
					void encrypt_data(uint8_t *data, uint16_t len) {
    uint8_t key = get_hardware_id();
    for(int i = 0; i < len; i++) {
        data[i] ^= key;
    }
}
				
			

Стратегия дешифрования

Обратное проектирование программного обеспечения

Анализ дампа памяти:

				
					# Python script for XOR key detection
def find_xor_key(encrypted_data):
    for key_candidate in range(256):
        decrypted = bytes([b ^ key_candidate for b in encrypted_data])
        if b'INIT' in decrypted:
            return key_candidate
    return None
				
			

Настройка аппаратной атаки

Параметры глюков напряжения:

				
					// Glitch generation code
void apply_glitch() {
    DAC->DHR12R1 = 0x0000; // Initial voltage
    delay_us(100);
    DAC->DHR12R1 = 0x03FF; // Glitch voltage
    delay_us(50);
    DAC->DHR12R1 = 0x0000;
}
				
			

Пример из практики: восстановление сенсорной сети

Вызов

  • Система: более 500 датчиков окружающей среды с STM8S105K6
  • Проблема: Производитель — заблокированная прошивка, препятствующая обновлению безопасности
  • Цель: восстановление алгоритмов калибровки датчиков

Техническое исполнение

Основные этапы восстановления ключа:

Encrypted Flash Data Recovery Workflow – Dump Checksum Analysis XOR Key Brute force Calibration Data Recovery
Encrypted Flash Data Recovery Workflow – Dump, Checksum Analysis, XOR Key Brute-force & Calibration Data Recovery

Скрипт проверки:

				
					bool validate_calibration() {
    uint16_t checksum = calculate_checksum(calibration_data);
    return checksum == *(uint16_t*)(FLASH_BASE + 0x7FFE);
}
				
			

Стратегии смягчения последствий

Повышенная безопасность

				
					// Dual - key implementation
void secure_keygen() {
    uint8_t temp = ADC1->DR;
    uint16_t rtc = RTC->CNTH << 16 | RTC->CNTL;
    session_key = crc16((uint8_t*)&rtc, sizeof(rtc)) ^ temp;
}
				
			

Улучшение процессов

  1. Двухфакторная аутентификация для обновления прошивки
  2. Скремблирование памяти во время работы
  3. Динамическая ротация ключей каждые 24 часа

Заключение

Этот проект демонстрирует, что целевые атаки, сочетающие анализ программного обеспечения и сбои в работе оборудования, могут преодолеть даже сложную 8-битную систему безопасности микроконтроллера. Восстановленная прошивка позволила нашему клиенту модернизировать свою сеть датчиков и внедрить современные протоколы безопасности.
 
Для получения услуг по дешифрованию на корпоративном уровне обращайтесь:
Billy Zheng Principal Engineer of Well Done PCB Technology

Главный инженер:
д-р Билли Чжэн
Well Done PCB Technology
billy@reversepcb.com
Экстренная поддержка: +86-157-9847-6858

Подписаться

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

Об авторе

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Поделиться

Рекомендуемый пост

Tags

Нужна помощь?

Прокрутить вверх

Instant Quote