Daily CS) Firmware

goldenGlow_21·2025년 1월 20일
0

Daily CS

목록 보기
37/50

Firmware

software that provides low-level control of computing device hardware

오늘의 주제는 펌웨어 이다. 사실 순서로 따지면 JTAG나 UART보다 이걸 먼저 했어야 하지만, 당장 하드웨어 분석 방법론을 조사하다 보니 후순위로 밀리게 되었다. 그럼 차근차근 조사해 보자.


1. Firmware의 개요

1.1 Firmware의 정의와 역할

Firmware는 하드웨어를 제어하고 하드웨어와 소프트웨어 간의 상호작용을 가능하게 하는 저수준 소프트웨어이다. 일반적으로 하드웨어 내부에 저장되며, 하드웨어 초기화 및 제어, 그리고 특정 작업 수행에 필요한 명령을 포함한다. 펌웨어는 특정 디바이스를 위한 맞춤형 소프트웨어로, 하드웨어 장치가 제대로 작동하도록 설정한다.

역할

  • 하드웨어 제어: 펌웨어는 장치의 물리적 작동을 관리한다. 예를 들어, 프린터에서 펌웨어는 잉크를 배분하고 용지를 이동시키는 명령을 수행한다.
  • 소프트웨어와 하드웨어 간의 다리 역할: 상위 소프트웨어와 하드웨어 간 통신을 위한 인터페이스를 제공한다.
  • 장치 초기화: 부팅 과정에서 하드웨어를 초기화하고 필요한 환경을 설정하는 역할을 한다.
  • 기능 정의: 하드웨어 기능이 펌웨어에 의해 구체적으로 결정되며, 특정 디바이스에 최적화된 작업을 수행한다.

1.2 Firmware와 소프트웨어 및 하드웨어의 관계

Firmware는 하드웨어와 소프트웨어를 연결하는 중간 계층 역할을 한다. 이 관계를 이해하려면 다음 세 가지 요소를 명확히 구분할 필요가 있다.

1. 하드웨어

  • 물리적 장치와 부품으로 이루어진 시스템. CPU, 메모리, 센서 등이 해당
  • 하드웨어 자체는 펌웨어 없이는 데이터를 처리하거나 장치를 제어할 수 없다.

2. 펌웨어

  • 하드웨어의 기능을 제어하기 위해 저장된 소프트웨어.
  • 보통 ROM(Read-Only Memory) 또는 Flash Memory에 저장되며, 하드웨어 작동에 필수적인 명령을 제공

3. 소프트웨어

  • 운영체제나 애플리케이션으로, 사용자가 디바이스를 활용하도록 돕는 고수준의 프로그램
  • 펌웨어를 통해 하드웨어와 상호작용하며, 사용자 요청에 따라 작업을 실행한다.
구분하드웨어펌웨어소프트웨어
역할물리적 장치하드웨어 제어 및 소프트웨어와의 인터페이스 제공사용자 요청 처리 및 작업 수행
저장 위치디바이스 내부ROM, Flash MemoryHDD, SSD 등 저장 장치
수정 여부하드웨어 변경 시 교체 필요업데이트 가능유연하게 업데이트 가능

1.3 Firmware의 유형 (임베디드, 업그레이드 가능한 펌웨어 등)

1. 임베디드 펌웨어(Embedded Firmware)

  • 디바이스와 밀접하게 통합된 펌웨어로, 특정 하드웨어를 제어하기 위해 설계됨.
  • 일반적으로 마이크로컨트롤러(MCU)에 저장되며, IoT 기기, 가전제품, 의료기기 등에서 사용된다.

2. 업그레이드 가능한 펌웨어(Upgradeable Firmware)

  • 디바이스의 성능 향상 또는 보안 취약점 해결을 위해 업데이트 가능한 펌웨어.
  • 특징: 네트워크를 통한 OTA(Over-The-Air) 업데이트 지원

3. ROM 펌웨어

  • 초기 하드웨어 설계에 통합되어 변경이 불가능한 형태.
  • 비교적 오래된 디바이스에서 사용되며, 수정이 불가능해 유지보수가 어려움

4. 하이브리드 펌웨어

  • 일부는 수정 가능하고 일부는 고정된 형태로 설계된 펌웨어.
  • 하드웨어 제어는 고정되고, 상위 소프트웨어와의 통신은 유연하게 설계

예시 비교

유형장점단점사용 사례
임베디드 펌웨어하드웨어 최적화, 안정적 동작업데이트 어려움IoT 기기, 가전제품
업그레이드 가능유지보수 용이, 기능 확장 가능업데이트 실패 시 장애 발생 가능스마트폰, 네트워크 장비
ROM 펌웨어설계 간결, 생산 비용 절감수정 불가능초기 전자기기, 레거시 시스템
하이브리드 펌웨어유연성과 안정성 제공설계 복잡자동차 ECU, 스마트 가전

2. Firmware의 구조와 동작 원리

2.1 Firmware의 내부 구성 요소 (Bootloader, Kernel 등)

Firmware는 하드웨어를 초기화하고 제어하기 위해 설계된 여러 구성 요소로 이루어져 있다. 이 구성 요소들은 각각 고유의 역할을 하며, 하드웨어와 소프트웨어 간의 효율적인 통신을 가능하게 한다.

주요 구성 요소

  1. Bootloader
  • 펌웨어의 핵심 구성 요소 중 하나로, 시스템 시작 시 가장 먼저 실행된다.

  • 하드웨어 초기화를 수행하며, 운영체제(OS) 또는 메인 애플리케이션을 로드하는 역할을 한다.

  • 주요 기능:

    • CPU 레지스터 및 메모리 초기화
    • 주변 장치 초기화(Timer, GPIO 등)
    • 운영체제 또는 사용자 프로그램 로드
  • Bootloader 동작 과정:

    1. CPU가 전원을 인가받으면 Bootloader 실행 시작
    2. 하드웨어 상태를 검사(전원 상태, 클럭 설정 등)
    3. 펌웨어 또는 OS 로드 후 실행
  • 예시 코드 (간단한 Bootloader 초기화):

void Bootloader_Init(void) {
    // 하드웨어 초기화
    Init_Clock();
    Init_Memory();
    Init_Peripherals();
    
    // 운영체제 로드
    Load_OperatingSystem();
}
  1. Kernel
  • 펌웨어의 또 다른 중요한 구성 요소로, 하드웨어와 애플리케이션 간의 인터페이스를 제공한다.
  • 운영체제의 핵심 기능(스케줄링, 메모리 관리, 장치 드라이버 등)을 담당
  • 펌웨어의 경우 간소화된 Real-Time Operating System(RTOS) 또는 전용 커널을 사용하는 경우가 많다.
  • 예시 RTOS: FreeRTOS, Zephyr
  1. Hardware Abstraction Layer (HAL)
  • 펌웨어와 하드웨어 간의 중간 계층으로, 하드웨어 독립성을 제공

  • 다양한 하드웨어 플랫폼에서 동일한 펌웨어 코드를 재사용 가능하게 함

  • 주요 기능:

    • 하드웨어 레지스터와의 인터페이스 제공
    • 상위 소프트웨어에서 하드웨어 세부사항을 추상화

2.2 Flash 메모리와 Firmware 저장 구조

Flash 메모리는 펌웨어를 저장하는 기본 저장소로 사용된다. Flash 메모리는 데이터를 영구적으로 저장할 수 있으면서도, 필요한 경우 데이터를 지우고 새로 기록할 수 있는 장점을 제공한다.

Flash 메모리의 주요 특성

  1. 비휘발성: 전원이 꺼져도 데이터가 유지된다.
  2. 재기록 가능: 데이터 블록 단위로 삭제 및 재기록 가능.
  3. 내구성: 보통 수십만 번의 쓰기/삭제 사이클을 지원.

Flash 메모리와 펌웨어의 저장 구조

Flash 메모리는 여러 섹터(또는 페이지)로 나뉘며, 펌웨어의 각 부분이 특정 영역에 할당된다.

  • Bootloader 영역: 시스템 부팅에 필요한 코드 저장
  • Application 영역: 사용자 애플리케이션 코드와 데이터를 저장
  • Configuration 영역: 사용자 설정 값 및 디바이스 구성 데이터 저장
구성 요소Flash 메모리 섹터내용
Bootloader0x00000000 ~ 0x0000FFF부팅 코드와 초기화 코드
Application Code0x00001000 ~ 0x000FFFF애플리케이션 실행 코드
Configuration Data0x00100000 ~ 0x0010FFF설정 값 (Wi-Fi SSID, API Key 등)

Flash 메모리 관리 기법

  • Wear Leveling: 특정 메모리 셀이 과도하게 사용되지 않도록 데이터를 고르게 분산
  • Error Correction Code (ECC): Flash 메모리의 데이터 무결성을 보장
  • Garbage Collection: 사용하지 않는 데이터를 제거하여 저장 공간 최적화

2.3 하드웨어와의 통신 및 인터페이스

펌웨어는 하드웨어와 직접 통신하며, 하드웨어를 제어하거나 데이터를 교환한다. 이러한 통신은 다음의 주요 인터페이스와 프로토콜을 통해 이루어진다.

주요 인터페이스

  1. GPIO (General Purpose Input/Output)
  • 하드웨어 핀과 직접 연결되며, 디지털 신호를 통해 외부 장치를 제어

  • 예시: LED 점멸, 버튼 입력 처리

  • GPIO 초기화 코드 예제

void GPIO_Init(void) {
    // GPIO 핀을 출력 모드로 설정
    GPIO_PORT->DIR |= (1 << LED_PIN);
    GPIO_PORT->OUT &= ~(1 << LED_PIN); // 초기 상태: OFF
}
  1. UART (Universal Asynchronous Receiver Transmitter)
  • 직렬 통신을 통해 하드웨어 디바이스 간 데이터 교환
  • 활용 사례: 디버깅 로그 전송, 센서 데이터 수집
  1. I2C/SPI
  • I2C: 다중 장치와의 통신을 지원하는 직렬 프로토콜
  • SPI: 높은 속도의 동기식 직렬 통신 프로토콜
  • 활용 사례: 온도 센서, 메모리 칩, 디스플레이 제어

통신 프로토콜의 역할

  • 데이터 동기화: 하드웨어 간 정확한 데이터 교환을 보장
  • 에러 처리: 패리티 비트, 체크섬 등을 통해 데이터 무결성 확인

하드웨어-펌웨어 인터페이스 설계의 중요성

  • 잘 설계된 인터페이스는 디바이스의 성능과 신뢰성을 향상시킨다.
  • 하드웨어 종속성을 최소화하고, 다양한 플랫폼에서 펌웨어를 재사용할 수 있도록 한다.

3. Firmware 개발 및 배포 과정

3.1 Firmware 개발 도구와 언어

펌웨어 개발에는 하드웨어와의 밀접한 통합이 요구되므로, 이를 지원하는 특정 도구와 언어가 필수적이다. 일반적으로 저수준 프로그래밍 언어와 하드웨어 전용 개발 환경을 활용한다.

주요 개발 도구

  1. IDE(Integrated Development Environment)
  • Keil µVision: ARM Cortex-M 기반 마이크로컨트롤러 개발에 널리 사용되는 IDE. 디버깅 도구와 RTOS 통합 지원!
  • Eclipse 기반 IDE: 다양한 MCU를 지원하는 확장 가능한 오픈소스 IDE
  • Microchip MPLAB X: PIC 마이크로컨트롤러와 관련된 펌웨어 개발에 특화된 환경.
  1. 컴파일러
  • GCC(GNU Compiler Collection): 다양한 아키텍처를 지원하며, 펌웨어 개발에 자주 사용되는 오픈소스 컴파일러.
  • ARM Compiler: ARM Cortex 시리즈의 최적화된 펌웨어 개발을 지원
  1. 디버깅 도구
  • JTAG 디버거: 하드웨어 수준에서 실행 상태를 분석하고 중단점을 설정할 수 있음.
  • Segger J-Link: 실시간 디버깅 및 고속 데이터 전송을 지원

주요 프로그래밍 언어

  1. C 언어
  • 메모리 제어와 하드웨어 접근에 적합하여 대부분의 펌웨어 개발에서 표준으로 사용됨.
  • 저수준 명령어와 하드웨어 레지스터 접근을 위한 라이브러리를 제공
  1. C++
  • 객체지향 프로그래밍을 통해 복잡한 시스템의 모듈화를 가능하게 함.
  • 일부 RTOS와 하드웨어 추상화 계층에 활용
  1. 어셈블리 언어
  • 하드웨어 동작을 세밀하게 제어해야 할 경우 사용되며, 특정 아키텍처에 밀접하게 맞춤화 가능

3.2 Firmware 컴파일 및 빌드 과정

Firmware는 하드웨어에서 실행 가능한 바이너리 형태로 변환되기 위해 컴파일 및 빌드 과정을 거친다. 이 과정은 개발 코드에서 시작하여 최종적으로 하드웨어에 적합한 형태로 출력되는 단계를 포함한다.

컴파일 과정

  1. 소스 코드 작성
  • C 또는 C++ 언어로 펌웨어 기능을 구현
  • e.g. GPIO 초기화 코드
void Init_GPIO(void) {
    GPIO_PORT->DIR |= (1 << PIN);
}
  1. 컴파일
  • 소스 코드를 목적 파일(Object File)로 변환
  • GCC 또는 ARM 컴파일러를 활용하여 하드웨어 아키텍처에 맞는 명령어 집합 생성
  1. 링킹(Linking)
  • 여러 개의 목적 파일을 하나의 실행 파일로 결합
  • 하드웨어 초기화 코드와 사용자 애플리케이션 코드를 통합
  1. 로더 생성
  • 바이너리 이미지 생성
  • 이진 파일 형식은 .hex, .bin 또는 .elf로 저장된다.

빌드 관리 도구

  • CMake: 크로스 플랫폼 빌드 시스템으로 다양한 아키텍처를 지원
  • Makefile: GNU Make를 사용하여 소스 코드의 컴파일 및 링크를 자동화

3.3 Firmware 배포 및 업데이트 (OTA, USB 등)

펌웨어는 개발이 완료된 후 하드웨어 디바이스로 배포되며, 이후에는 주기적인 업데이트를 통해 유지보수된다. 이 과정은 안정성과 보안을 보장하기 위해 신중하게 관리되어야 한다.

펌웨어 배포 방식

  1. USB 또는 직렬 포트
  • 디바이스와 직접 연결하여 펌웨어를 업로드
  • 장점: 초기 프로그래밍 또는 디버깅 과정에서 사용하기 편리
  • 단점: 대규모 배포에는 비효율적
  1. OTA(Over-The-Air) 업데이트
  • 네트워크를 통해 펌웨어를 원격으로 업데이트
  • 장점: IoT 장치와 같은 분산 환경에서 효율적
  • 단점: 보안 취약점이 발생할 수 있음
  1. SD 카드 또는 외부 메모리

    • SD 카드에 펌웨어 이미지를 저장한 후, 디바이스에서 이를 읽어 업데이트
    • 장점: 독립적인 업데이트 가능!
    • 단점: 수동 작업 필요.

업데이트 시 고려 사항

  1. Secure Boot
  • 부팅 과정에서 펌웨어 무결성을 확인
  • 암호화된 서명을 통해 악성코드 삽입 방지
  1. Rollback 지원
  • 업데이트 실패 시 이전 버전으로 복구 가능하도록 설계
  1. 네트워크 보안
  • OTA 업데이트 시 TLS 또는 DTLS를 사용하여 데이터 전송을 암호화

4. Firmware 보안

4.1 Firmware 공격 기법 (악성코드 삽입, Reverse Engineering 등)

펌웨어는 하드웨어와 소프트웨어의 중간 계층으로, 시스템 전체의 보안에 큰 영향을 미친다. 따라서 펌웨어는 다양한 공격 기법의 대상이 된다.

주요 공격 기법

  1. 악성코드 삽입
  • 공격자가 펌웨어 이미지에 악성 코드를 삽입한 후, 이를 디바이스에 업로드하여 시스템을 제어한다.
  • 예시: 공격자가 펌웨어 업데이트 서버를 해킹하여 악성코드가 포함된 펌웨어 이미지를 배포.
  • 결과: 디바이스의 완전한 제어권 탈취, 데이터 유출, 서비스 거부(Denial of Service)
  1. Reverse Engineering
  • 펌웨어 바이너리를 역분석하여 소스 코드 수준의 정보를 추출
  • 목적:
    • 보안 메커니즘 분석 및 우회
    • 지적 재산권 침해
  • 사용 도구:
    • IDA Pro: 바이너리 분석을 위한 디컴파일 도구
      - Ghidra: 오픈소스 리버스 엔지니어링 도구
  1. 펌웨어 덤핑(Firmware Dumping)
  • 공격자가 JTAG, UART와 같은 디버깅 인터페이스를 통해 펌웨어 이미지를 추출.
  • 취약점:
    • 디버깅 포트가 비활성화되지 않은 경우 발생
  • 결과: 펌웨어의 민감 정보(키, 인증서 등) 노출
  1. 악성 펌웨어 업데이트
  • 공격자가 OTA(Over-The-Air) 업데이트 프로세스를 가로채어 악성 펌웨어를 배포.
  • 해결책: 디지털 서명 검증 및 인증된 서버와의 안전한 통신

4.2 Secure Boot와 암호화된 Firmware

펌웨어 보안을 강화하기 위한 핵심 기술로 Secure Boot암호화가 사용된다.

Secure Boot의 개념과 동작

  1. Secure Boot란?
  • 부팅 과정에서 실행되는 모든 코드(부트로더, 커널 등)의 무결성을 검증하는 보안 메커니즘.
  • 신뢰할 수 있는 디지털 서명을 통해 펌웨어의 원본성을 보장
  1. Secure Boot 동작 원리
  • 신뢰 루트(Root of Trust): 하드웨어에 내장된 신뢰할 수 있는 공개 키로 서명을 검증.
  • 단계적 검증:
    • 부트로더 실행 전 서명 검증
    • 운영체제 및 애플리케이션 로드 시 추가 검증

암호화된 Firmware?

  • 펌웨어 암호화:
    • 공격자가 펌웨어를 역분석하거나 악성코드를 삽입하지 못하도록 암호화를 적용.
  • AES(Advanced Encryption Standard):
    • 펌웨어 데이터 암호화에 널리 사용되는 대칭 키 암호화 알고리즘
  • 암호화 과정:
    • 개발 단계에서 펌웨어 이미지를 암호화!
    • 디바이스 내부에서 복호화 후 실행

Secure Boot와 암호화의 결합

  • 암호화된 펌웨어를 Secure Boot를 통해 검증함으로써 이중 보안을 제공

4.3 Firmware 업데이트의 보안 위험과 해결책

펌웨어 업데이트는 시스템 성능 개선과 취약점 해결에 필수적이지만, 동시에 보안 위험도 동반한다.

보안 위험

  1. 중간자 공격(MITM):
  • 공격자가 OTA 업데이트 프로세스를 가로채 악성 펌웨어를 설치
  • 사례: 인증되지 않은 네트워크에서의 업데이트 수행
  1. 업데이트 파일 변조:
  • 공격자가 업데이트 파일을 변경하여 악성코드를 삽입
  • 결과: 디바이스의 오작동 및 데이터 유출
  1. 업데이트 지연:
  • 관리 소홀로 인해 업데이트가 지연되거나 적용되지 않아 취약점이 방치
  • 사례: WannaCry 랜섬웨어의 확산은 오래된 SMB 취약점 패치 미적용으로 발생

해결책

  1. 디지털 서명과 무결성 검증:
  • 업데이트 파일에 디지털 서명을 적용하여, 파일 변경 여부를 검증.
  • RSA 또는 ECC와 같은 비대칭 암호화를 활용
  1. TLS/DTLS를 통한 안전한 전송:
  • OTA 업데이트 시 TLS(전송 계층 보안) 또는 DTLS(데이터그램 전송 계층 보안)를 사용하여 데이터 전송을 암호화
  1. Rollback Protection:
  • 공격자가 이전 버전의 취약한 펌웨어를 다시 설치하지 못하도록 방지.
  1. 주기적 보안 점검:
  • 펌웨어 업데이트 프로세스를 정기적으로 점검하여 보안성을 강화

5. Firmware 분석과 디버깅

5.1 펌웨어 추출 및 역공학 기법

펌웨어 분석은 하드웨어 및 소프트웨어 취약점을 식별하기 위해 펌웨어 이미지를 추출하고 역공학하는 과정을 포함한다. 이 과정은 디바이스의 보안을 강화하거나 악성 펌웨어를 탐지하기 위한 중요한 작업이다.

펌웨어 추출 방법

  1. 하드웨어 인터페이스를 통한 추출
  • JTAG: 디바이스의 JTAG 포트를 통해 펌웨어 이미지를 읽어들인다.
  • UART: 직렬 인터페이스를 활용하여 부트로더 접근 및 펌웨어 다운로드
  • SPI Flash Memory:
    • 플래시 메모리를 분리한 후, SPI 리더기로 데이터를 읽어냄
    • 도구: Flashrom, CH341A 프로그래머
  • I2C/SPI 통신 분석:
    • 펌웨어 데이터를 실시간으로 캡처하기 위해 프로토콜 분석기 사용
  1. 소프트웨어 기반 추출
  • 펌웨어 업데이트 파일 분석:
    • OTA(Over-The-Air) 업데이트 서버에서 다운로드한 펌웨어 파일을 해제
  • 펌웨어 덤핑:
    • 런타임 메모리에서 직접 펌웨어를 추출
    • 도구: Binwalk, dd

역공학(Reversing) 기법

  1. 바이너리 분석
  • Binwalk: 펌웨어 파일을 분석하여 포함된 파일 시스템과 데이터 구조를 식별
  • Ghidra: 펌웨어 코드의 디컴파일 및 디스어셈블리 지원
  • IDA Pro: ARM, MIPS 등 다양한 아키텍처의 펌웨어 역공학에 적합
  1. 펌웨어 구조 분석
  • 파일 시스템:
    • SquashFS, CramFS 등 펌웨어 내 임베디드 파일 시스템을 추출
  • 구성 요소:
    • Bootloader, Kernel, Application 영역 분석
  1. 취약점 탐지
  • Hardcoded Credentials: 펌웨어 내부의 하드코딩된 인증 정보 탐지
  • 코드 취약점:
    • Buffer Overflow, Format String 등의 취약점 분석

5.2 디버깅 도구와 기법 (JTAG, Ghidra 등)

펌웨어 디버깅은 소프트웨어 실행 흐름을 분석하고 문제를 해결하기 위한 작업이다. 디버깅은 주로 하드웨어 인터페이스와 소프트웨어 도구를 결합하여 이루어진다.

주요 디버깅 도구

  1. JTAG 디버거
  • 역할: 실시간 디버깅 및 메모리 접근
  • 설정 방법:
    • 디바이스의 JTAG 핀(TDI, TDO, TCK, TMS)을 디버거에 연결
    • OpenOCD 또는 Segger J-Link와 같은 도구를 사용
  1. Ghidra
  • 기능: 펌웨어 바이너리를 디스어셈블하고 함수 호출 흐름을 시각화.
  • 사용법:
    • 펌웨어 이미지를 로드하여 함수, 변수 및 메모리 맵을 분석
    • 자동화 스크립트를 통해 반복 작업을 효율화
  1. Serial Debugging
  • UART 또는 직렬 포트를 사용하여 런타임 정보를 수집
  • 도구: PuTTY, Minicom

디버깅 기법

  1. 중단점 설정(Breakpoint)
  • 특정 코드 실행을 중단하여 변수 값과 상태를 확인
  • JTAG 또는 소프트웨어 디버거에서 지원
  1. 메모리 모니터링
  • 메모리 할당 및 접근을 추적하여 취약점을 탐지.
  1. 실시간 로그 분석
  • 펌웨어가 출력하는 런타임 로그를 분석하여 디버깅
  • UART 로그를 캡처하여 오류를 추적.

5.3 Firmware에서 취약점 분석 및 보안 테스트

펌웨어 취약점 분석은 보안 테스트 과정에서 가장 중요한 단계 중 하나다. 이 단계는 펌웨어의 약점을 찾아내고 보안성을 강화하기 위해 설계되었다.

취약점 분석 프로세스

  1. 정적 분석(Static Analysis)
  • 소스 코드 또는 바이너리를 기반으로 취약점을 분석.
  • 분석 도구: Binwalk, IDA Pro, Ghidra.
  • 탐지 대상:
    • 하드코딩된 키
    • 취약한 암호화 알고리즘
  1. 동적 분석(Dynamic Analysis)
  • 런타임 환경에서 펌웨어 동작을 분석
  • 도구: QEMU, JTAG 디버거
  • 테스트 대상:
    • 명령어 주입(Command Injection)
    • 메모리 누수 및 불안정성.
  1. 퍼징(Fuzzing)
  • 랜덤 또는 변형된 데이터를 입력하여 예기치 못한 동작을 유발
  • 도구: AFL, Peach Fuzzer

보안 테스트 적용

  1. 공격 시뮬레이션
  • 실제 공격 시나리오를 재현하여 취약점 탐지.
  • 예: 펌웨어 업데이트 과정에서 MITM 공격 시뮬레이션
  1. 보안 강화 제안
  • 분석 결과를 기반으로 하드코딩된 인증 정보 제거, 암호화 알고리즘 개선 등의 대안을 제시.

6. 마무리

대부분의 내용을 최종 기획안과 취약점 분석 방법론에서 가져와 채우다 보니, 보안 측면에서의 펌웨어 분석 내용이 주가 되어버렸다... 그래도 복습은 언제나 옳지!

profile
안드로이드는 리눅스의 꿈을 꾸는가

0개의 댓글