AWS 해킹 학습 및 실습:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
GCP 해킹 학습 및 실습: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
펌웨어는 하드웨어 구성 요소와 사용자가 상호 작용하는 소프트웨어 간의 통신을 관리하고 운영 장치가 올바르게 작동할 수 있도록 하는 필수 소프트웨어입니다. 펌웨어는 영구 메모리에 저장되어 있어 장치가 전원을 켤 때부터 중요한 명령에 액세스할 수 있도록 하여 운영 체제를 시작합니다. 펌웨어를 조사하고 수정하는 것은 보안 취약점을 식별하는 중요한 단계입니다.
이를 위해 **오픈 소스 인텔리전스 (OSINT)** 도구와 사용 가능한 오픈 소스 소프트웨어 구성 요소를 수동 및 자동 검토 프로세스를 통해 분석하는 것이 중요합니다. [Coverity Scan](https://scan.coverity.com) 및 [Semmle’s LGTM](https://lgtm.com/#explore)과 같은 도구는 잠재적인 문제를 찾기 위해 활용할 수 있는 무료 정적 분석을 제공합니다.
만약 그 도구들로 많은 것을 찾지 못했다면, 이미지의 **엔트로피**를 `binwalk -E <bin>`로 확인하세요. 낮은 엔트로피라면, 암호화되지 않았을 가능성이 높습니다. 높은 엔트로피라면, 암호화되었을 가능성이 높습니다 (또는 어떤 방식으로 압축되었을 수 있음).
가끔씩, binwalk에는 **시그니처에 파일 시스템의 매직 바이트가 없을 수 있습니다**. 이런 경우에는 binwalk를 사용하여 **파일 시스템의 오프셋을 찾고 바이너리에서 압축된 파일 시스템을 추출**하고, 아래 단계를 따라 파일 시스템을 **수동으로 추출**해야 합니다.
`binwalk -ev <bin>`을 사용하여 파일 시스템을 일반적으로 추출할 수 있으며, 종종 파일 시스템 유형(예: squashfs, ubifs)으로 명명된 디렉토리로 추출됩니다. 그러나 **binwalk**가 마법 바이트가 누락되어 파일 시스템 유형을 인식하지 못할 때 수동 추출이 필요합니다. 이는 `binwalk`를 사용하여 파일 시스템의 오프셋을 찾은 다음 `dd` 명령을 사용하여 파일 시스템을 분리하는 과정을 포함합니다:
- 민감한 정보 검색을 위한 [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) 및 [**Firmwalker**](https://github.com/craigz28/firmwalker)
- 포괄적인 펌웨어 분석을 위한 [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core)
- 정적 및 동적 분석을 위한 [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer), [**ByteSweep**](https://gitlab.com/bytesweep/bytesweep), [**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) 및 [**EMBA**](https://github.com/e-m-b-a/emba)
파일시스템에서 발견된 소스 코드와 컴파일된 이진 파일은 취약점을 조사해야 합니다. Unix 이진 파일에 대한 **checksec.sh** 및 Windows 이진 파일에 대한 **PESecurity**와 같은 도구를 사용하여 악의적으로 이용될 수 있는 보호되지 않은 이진 파일을 식별하는 데 도움이 됩니다.
펌웨어를 에뮬레이션하는 과정은 장치의 작동 또는 개별 프로그램의 **동적 분석**을 가능하게 합니다. 이 접근 방식은 하드웨어 또는 아키텍처 종속성으로 인해 도전을 겪을 수 있지만, 루트 파일시스템이나 특정 이진 파일을 Raspberry Pi와 같은 일치하는 아키텍처 및 엔디안을 가진 장치로 또는 미리 빌드된 가상 머신으로 전송함으로써 추가 테스트를 용이하게 할 수 있습니다.
[Firmadyne](https://github.com/firmadyne/firmadyne), [Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit) 등의 도구들은 전체 펌웨어 에뮬레이션을 용이하게 하며, 프로세스를 자동화하고 동적 분석을 돕습니다.
이 단계에서는 분석을 위해 실제 또는 에뮬레이션된 장치 환경을 사용합니다. OS 및 파일 시스템에 대한 쉘 액세스를 유지하는 것이 중요합니다. 에뮬레이션은 하드웨어 상호작용을 완벽하게 모방하지 못할 수 있으므로 때때로 에뮬레이션을 다시 시작해야 할 수 있습니다. 분석은 파일 시스템을 다시 검토하고 노출된 웹페이지 및 네트워크 서비스를 악용하며 부트로더 취약점을 탐색해야 합니다. 펌웨어 무결성 테스트는 잠재적인 배후 취약점을 식별하는 데 중요합니다.
식별된 취약점에 대한 PoC를 개발하려면 대상 아키텍처에 대한 심층적인 이해와 저수준 언어 프로그래밍 능력이 필요합니다. 내장 시스템의 바이너리 런타임 보호 기능은 드물지만 존재할 경우 Return Oriented Programming (ROP)과 같은 기술이 필요할 수 있습니다.
[AttifyOS](https://github.com/adi0x90/attifyos) 및 [EmbedOS](https://github.com/scriptingxss/EmbedOS)와 같은 운영 체제는 펌웨어 보안 테스트를 위한 사전 구성된 환경을 제공하며 필요한 도구를 갖추고 있습니다.
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOS는 사전 구성된 환경을 제공하여 사물 인터넷(IoT) 장치의 보안 평가 및 침투 테스트를 수행하는 데 도움을 주는 배포판입니다. 필요한 모든 도구가 로드된 사전 구성된 환경으로 많은 시간을 절약할 수 있습니다.
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): Ubuntu 18.04 기반의 내장 보안 테스트 운영 체제로, 펌웨어 보안 테스트 도구가 미리 로드되어 있습니다.
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)