Decrittazione del chip STM8S105K6: Tecniche avanzate per il recupero di sistemi legacy

Indice

In qualità di lead reverse engineer presso Well Done Technology, ho recentemente guidato una missione per decrittare i microcontrollori STM8S105K6 integrati in sensori di infrastrutture critiche. Questo case study delinea il nostro approccio tecnico per aggirare le sue funzionalità di sicurezza mantenendo l’integrità del sistema.

Introduzione

L’STM8S105K6 (32KB Flash, 16MHz 8 – bit core) è un cavallo di battaglia nei sistemi industriali legacy. Tuttavia, la sua combinazione di protezione in lettura (Livello 2) e crittografia personalizzata ha posto ostacoli significativi quando il nostro cliente si è trovato di fronte all’obsolescenza imprevista della sua rete di sensori. Questo documento illustra in dettaglio la nostra metodologia di decrittazione di successo.

Specifiche del chip e funzionalità di sicurezza

Parametri chiave

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

Pin critici per l'attacco

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

Analisi della sicurezza

Meccanismi di protezione

Protezione in lettura:
				
					// Protection configuration
FLASH->CR2 |= FLASH_CR2_LP; // Level 2 protection
FLASH->OPTR |= FLASH_OPTR_RDP; // Read protection enable
				
			
Crittografia personalizzata:
				
					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;
    }
}
				
			

Strategia di decrittazione

Reverse engineering del software

Analisi dello scarico di memoria:

				
					# 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
				
			

Configurazione dell'attacco hardware

Parametri di glitching della tensione:

				
					// 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;
}
				
			

Case Study: Recupero della rete di sensori

Sfida

  • Sistema: 500+ sensori ambientali con STM8S105K6
  • Problema: Firmware bloccato dal produttore che impedisce gli aggiornamenti di sicurezza
  • Obiettivo: Recuperare gli algoritmi di calibrazione dei sensori

Esecuzione tecnica

Flusso di recupero della chiave:

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

Script di convalida:

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

Strategie di mitigazione

Sicurezza avanzata

				
					// 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;
}
				
			

Miglioramenti del processo

  1. Autenticazione a due fattori per gli aggiornamenti del firmware
  2. Scrambling della memoria durante l’esecuzione
  3. Rotazione dinamica della chiave ogni 24 ore

Conclusione

Questo progetto dimostra che attacchi mirati che combinano l’analisi del software e il glitching hardware possono superare anche la sicurezza sofisticata dei microcontrollori a 8 bit. Il firmware recuperato ha permesso al nostro cliente di modernizzare la sua rete di sensori implementando al contempo protocolli di sicurezza all’avanguardia.
 
Per servizi di decrittazione di livello enterprise, contattare:
Billy Zheng Principal Engineer of Well Done PCB Technology

Ingegnere principale:
Dr. Billy Zheng
Well Done PCB Technology
billy@reversepcb.com
Supporto di emergenza: +86-157-9847-6858

Iscriviti

Unisciti alla nostra lista di iscritti per ricevere aggiornamenti mensili sul blog, notizie tecnologiche, casi di studio. Non invieremo mai spam e potrai annullare l’iscrizione in qualsiasi momento.

Informazioni sull'autore

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.

Hai bisogno di aiuto?

Torna in alto

Instant Quote