Is Your Firmware Real or Re-Hosted?
A case study in re-hosting VxWorks control system firmware
0. Abstract
ํ์จ์ด ๋ฆฌํธ์คํ
์ ์ทจ์ฝ์ ๋ถ์์ ์์ด์ ์ ์ ๋ ํ์์ ์ผ๋ก ์ฌ๊ฒจ์ง๊ณ ์์ต๋๋ค. ๋ณธ ๋
ผ๋ฌธ์ HALucinator๋ฅผ ํ์ฅํ์ฌ VxWorks RTOS๋ฅผ ์ฌ์ฉํ๋ ์์คํ
์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์ค๋ช
ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ์ฐ๊ตฌํ์ Schneider Electric SCADAPack 350, Schneider Electric Modicon 340, ๊ทธ๋ฆฌ๊ณ Hughes 9201 BGAN์ด ๊ตฌ๋ ๋ฐ ๋ฆฌํธ์คํ
์ ํ๋๋ฐ ํ์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ฆฌํธ์คํ
support layer(์ ์ ๋ฐ ๊ตฌํ)์ ์ค๋ช
ํฉ๋๋ค. ๋ํ ๋ณธ ์ฐ๊ตฌํ์ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก 3๊ฐ์ ์ค์ ์ฅ์น์ ๋ํด case-study๋ฅผ ์งํํ์์ต๋๋ค.
1. Background Information
Vocabulary
Firmware Re-Hosting
์๋ ์๋๋์๋ ํ๋์จ์ด๊ฐ ์๋ ํ๋ซํผ์์ ํ์จ์ด๋ฅผ ์คํํ๋ ๊ฒ
Emulation vs. Re-Hosting
ํต์์ ์ผ๋ก emulation๊ณผ re-hosting์ ์๋ก ๋น์ทํ ๊ฐ๋
์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ณดํต ํผ์ฉํด์ ์ฌ์ฉํฉ๋๋ค. ๋ณธ ๋
ผ๋ฌธ์์๋ ์์คํ
์ ์๋ฎฌ๋ ์ดํ
ํ๋ ๊ฒ์ ํ์จ์ด๋ฅผ ๋ฆฌํธ์คํ
ํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ๊ฐ์ฃผํฉ๋๋ค. ์ฆ, ํน์ ๋ชฉ์ ์ ์ํด ์์คํ
์ ์๋ฎฌ๋ ์ดํ
ํ๋ ๊ฒ์ด ๋ชฉํ์ด๋ฉฐ, ์ด๋ฅผ ์ํด ํ์จ์ด ๋ฆฌํธ์คํ
์ ์๋จ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
์ด๋ ๊ฒ ์ ์๋ฅผ ํ ์ด์ ๋ ๋ฆฌํธ์คํ
ํ๋ ๊ณผ์ ์์ ํ๋จ์ ๊ทผ๊ฑฐ๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์๋ฅผ ๋ค์ด ๋ฆฌํธ์คํ
์ ํ ๋ ์ ์ ๊ด๋ฆฌ์ ๋ํด ๋์ ๊ตฌํ๋๋ฅผ ์ ๊ณตํด์ผ ํ๋์ง์ ๋ํด์ ๊ณ ๋ฏผํด๋ด
์๋ค. ์ ์ ๊ด๋ฆฌ๋ฅผ ์ํด์ ํ
์คํธ ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ผ๋ฉด ํ์ํ๊ฒ ์ง๋ง, ์ฃผ์ํ ๋ถ๋ถ์ด ์๋๋ผ๋ฉด ๋ฆฌํธ์คํ
์ ๊ณ ๋ คํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
Re-hosting Support Layer(RSL)
๋ฆฌํธ์คํ
์ ์ํด ๋์ฒด๋๋ ํ์จ์ด์ ๊ธฐ๋ฅ์
๋๋ค. HALucinator์ ๋ณธ ๋
ผ๋ฌธ์ ๋งฅ๋ฝ์์, Re-hosting Support Layer๋ HALucinator๊ฐ ํ์จ์ด๋ฅผ ๋ฆฌํธ์คํ
ํ ์ ์๋๋ก ํ๋ ํธ๋ค๋ฌ์ ๋ชจ๋ธ์ ์งํฉ์
๋๋ค.
VxWorks vs. Device Code
RSL์ ๊ฐ๋ฐํ ๋, ๋์ฒด๋๋ ๊ธฐ๋ฅ์ด ์ด๋ค ์ญํ ์ ํ๋์ง, ์ด๋ค ์ถ์ฒ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง๋ฅผ ๊ตฌ๋ณํ๋ ๊ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค. VxWorks ์์ฒด์ ๊ธฐ๋ฅ์ ๋์ฒดํ ๊ฒฝ์ฐ ๋ฆฌํธ์คํ
์ง์ ๊ณ์ธต์ ๊ด๋ฒ์ํ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์ Device Code๋ฅผ ๋์ฒดํ ๊ฒฝ์ฐ ์์์ ์ฅ์น์์๋ง ์ง์ํ ์ ์๋ ๋ฐ๋ฉด์ ์๋ฎฌ๋ ์ด์
๋ ์์คํ
์์ฒด์ ์ ํ๋๋ ๋์ผ ์ ์์ต๋๋ค. ๋ณธ ๋
ผ๋ฌธ์์๋ VxWorks์ ์ฝ๋ ๋ถ๋ถ์ VxWorks ์ฝ๋๋ก, ๋๋จธ์ง ๋ถ๋ถ์ ๋ชจ๋ Device Code๋ก ๊ฐ์ฃผํ์์ต๋๋ค.
Emulation Utility Scale
์๋ฎฌ๋ ์ดํ
์ด ๋ ์์คํ
์ ์ ์ฉ์ฑ์ ํ๊ฐํ๊ธฐ ์ํด ์ด์ ๋ํ ์ฒ๋๋ฅผ ์์ฑํ์์ต๋๋ค. ๊ฐ ๋ ๋ฒจ์ ์์ค์ ๋ฆฌํธ์คํ
์ ์ด์ ์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋๋ค. ํด๋น ์ฒ๋๋ ์์จ ์ฃผํ์ ํ๋จ ์ฒ๋์์ ์ํฅ์ ๋ฐ์์ผ๋ฉฐ ๋ด์ฉ์ Figure 1๊ณผ ๊ฐ์ต๋๋ค.
Figure 1๊ณผ ๊ฐ์ด, ๋ณธ scale์ ์ด 6๊ฐ์ ๋จ๊ณ๋ก ๋๋์ด์ ธ ์์ต๋๋ค. ๊ฐ๊ฐ์ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
โข
Level 0: ์๋ฎฌ๋ ์ดํฐ์์ ์ ์ด๋ ํ๋์ ๋ช
๋ น์ด ์คํ๋จ (ISA๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ณ๋๋ฉฐ, ํ์จ์ด๊ฐ ์ฌ๋ฐ๋ฅธ ์ฃผ์๋ก ๋ก๋๋์์). ๊ทธ๋ฌ๋ ์ ์์ ์ธ ์คํ์ ๋์ง ์์ ์ ์์
โข
Level 1: ์ฌ๋ฐ๋ฅธ entry point์์ ์คํ์ด ๋๋ฉฐ ์์คํ
initialization์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ํ๋จ. ๋จ, ํ๋์จ์ด ์๊ตฌ ์ฌํญ์ด ๋๋ฝ๋์ด ์ด๊ธฐํ๊ฐ ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ ์ ์์
โข
Level 2: ์ ์ด๋ ํ๋ ์ด์์ ์๋ฐฉํฅ ์ธํฐํ์ด์ค๊ฐ ์๋๋จ.(ex. ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ, ๋คํธ์ํน, ์ง๋ ฌ ํฌํธ, interactive shell ๋ฑ)
โข
Level 3: ํ์ผ ์์คํ
, ์์
์ค์ผ์ค๋ง, ๋คํธ์ํน ๋ฑ ํต์ฌ์ ์ธ OS ๊ธฐ๋ฅ์ด ์๋.
โข
Level 4: ์ ์ด๋ ํ๋์ ์ฅ์น๋ณ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ ์์ ์ผ๋ก ์๋ํจ.(๋ฌผ๋ฆฌ์ ์์คํ
๊ณผ ์ ์ฌํ๊ฒ ๋์)
โข
Level 5: ๋ชจ๋ OS์ ๊ธฐ๋ฅ๊ณผ ์ฅ์น๋ณ ์ดํ๋ฆฌ์ผ์ด์
์ด ์๋ํ๋ ๊ฒฝ์ฐ. ์ด ๊ฒฝ์ฐ black-box ๊ด์ ์์๋ ์ค์ ์์คํ
์ ๊ตฌ๋ํ๋ ๊ฒ๊ณผ ์ฐจ์ด๊ฐ ์์ด์ผ ํจ
๋ณธ ์ฐ๊ตฌ์์๋ ๊ฐ scale ๋จ๊ณ์์ ๋ค์ ๋จ๊ณ๋ก ์ด๋ํ๊ธฐ ์ํด ํ์ํ ์ธํฐํ์ด์ค ๋ฐ ์ํํธ์จ์ด ๊ณ์ธต์ ์ด์ ์ ๋ง์ถ๊ณ , ๊ฐ ์๋ฎฌ๋ ์ด์
๋ ์์คํ
์ ์ ์ฉ์ฑ์ ์ต๋ํ ๋์ด์ฌ๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ์ฐ๊ตฌ๋ฅผ ์งํํ์์ต๋๋ค.
HALucinator
HALucinator ๋ถ๋ถ ๋ค์ ์ ๋ฆฌ ํ์
HALucinator๋ ๋ฒ ์ด ๋ฉํ ํ์จ์ด๋ฅผ ์ํ HLE(High Level Emulation)๋ฅผ ์ํํ๋ ํ๋ ์์ํฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ ํ์จ์ด ์ถ์ํ๋ฅผ ํตํด ๋ฎ์ ์์ค์ ํ๋์จ์ด ์์
์ ๋์ ์์ค์ API๋ก ์ถ์ํํ์ฌ ๊ฐ๋ฐ์ ๋จ์ํํฉ๋๋ค. ํด๋น ๋
ผ๋ฌธ์ ๋ํ ์ ๋ฆฌ๋ ์ด๋ฏธ ๋ง์ด ๋์ด์๊ธฐ ๋๋ฌธ์ ๋ณธ ๋
ผ๋ฌธ์์ ๊ฐ์กฐํ ๋ถ๋ถ๋ง ์ ๋ฆฌํ์์ต๋๋ค. (์ฐธ๊ณ : )
HALucinator๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ ๊ทน๋ํํ๊ธฐ ์ํด ํธ๋ค๋ฌ, ์ฃผ๋ณ ๋ชจ๋ธ(peripheral models), ๊ทธ๋ฆฌ๊ณ ์ธ๋ถ ์ฅ์น๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ํธ๋ค๋ฌ๋ฅผ ํตํด์๋ ์๋ฎฌ๋ ์ดํฐ์ ์ํ(๋ ์ง์คํฐ ๋ฐ ๋ฉ๋ชจ๋ฆฌ)๊ฐ ์ง์ ์ ์ผ๋ก ์ํธ์์ฉํ์ฌ ์์คํ
์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ ๋๋ฌธ์ ํธ๋ค๋ฌ๋ฅผ ํตํด ํ์จ์ด์ API์ ์ฃผ๋ณ์ฅ์น๋ฅผ ๋งคํํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ฃผ๋ณ ๋ชจ๋ธ์ ๊ฒฝ์ฐ ๋ค์ํ ์ฅ์น๋ค๋ก๋ถํฐ ์
์ถ๋ ฅ์ ํ๊ธฐ ์ํด HALucinator์ IO server๋ฅผ ํ์ฉํฉ๋๋ค. ์ด ์์
์์ ์ฐ๋ฆฌ๋ ํ์จ์ด ํด๋์ค๋ฅผ Re-hosting Support Layer(RSL)๋ก ๋ณํํ๋ ๋ฐ ํ์ํ ํธ๋ค๋ฌ ๋ฐ ๋ชจ๋ธ ์ธํธ๋ฅผ ์ฐธ์กฐํฉ๋๋ค.
๋ณธ ๋
ผ๋ฌธ์์๋ ์ถ๊ฐ์ ์ผ๋ก VxWorks์ ํ์ํ Re-hosting Support Layer๋ฅผ ๊ฐ๋ฐํ์ฌ VxWorks์ ํ์จ์ด๋ ๋ฆฌํธ์คํ
์ด ๊ฐ๋ฅํ๊ฒ ํ์์ต๋๋ค.
VxWorks
VxWorks๋ VRTX๋ฅผ ๋์ฒดํ ์์ฒด ์ปค๋์ ๊ฐ๋ฐํ๋ ๊ฒ ๋ถํฐ ์์ํ์ฌ, RTOS๋ก ๋ฐ์ ํ์์ต๋๋ค. VxWorks๋ ํ์ฌ 32๋นํธ ๋ฐ 64๋นํธ ARM, Inter ๋ฐ Power ์ํคํ
์ฒ๋ฅผ ์ง์ํฉ๋๋ค. VxWorks์ ์ฃผ์ ํน์ง ์ค ํ๋๋ OS ์ปค๋์ด ์์ฉ ํ๋ก๊ทธ๋จ, ๋ณด๋ ์ง์ ํจํค์ง, ๋ฏธ๋ค์จ์ด ๋ฐ ๊ธฐํ ํจํค์ง์ ๋ถ๋ฆฌ๋์ด ์๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณ๊ฒฝํ ํ์ ์์ด OS ๋ฐ ๊ตฌ์ฑ ์์๋ฅผ ์
๋ฐ์ดํธํ ์ ์๊ณ , ์ด๋ฌํ ์ถ์ํ๋ HLE๋ฅผ ์ฌ์ฉํ์ฌ ํ์จ์ด๋ฅผ ์ฌํธ์คํ
ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ณธ ์ฐ๊ตฌ์์๋ VxWorks5.5์ 6.4 Firmware๋ฅผ ์ฌ์ฉํ์๊ณ , ์ด์ ๋ํ layer๋ฅผ ์กฐ์ฌํ์์ต๋๋ค. ์ด์ ๋ํ ๋์์ Figure 2์ ๊ฐ์ต๋๋ค.
2. ๋ ผ๋ฌธ ๋ด์ฉ
VxWorks Re-hosting Support Layer
๊ฐ์ฅ ๋จผ์ ์ฐ๊ตฌํ์ด ์ ํ ๊ฒ์ RSL(Re-hosting Support Layer)์ ์ ์ ํ๋ ๊ฒ์ด์์ต๋๋ค. ์ฐ๊ตฌํ์ ๋ฆฌํธ์คํ
์ ์์ด ํ์ํ ์์๋ค์ ๋ํด์ ์กฐ์ฌํ๊ณ , ๊ทธ ๋ค์ ๊ฐ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ผ๋ก ์ฐ๊ตฌํ์ utility scale์ 3๋จ๊ณ๊น์ง ๋์ด์ฌ๋ ธ์ต๋๋ค. ๋ฆฌํธ์คํ
์ ํตํด ๋ฉํฐ์ฐ๋ ๋ ์คํ, interrupt triggering, serial communication, DOS ํ์ผ์์คํ
์๋, ์ด๋๋ท ํต์ ์ ํ ์ ์์ต๋๋ค.
Serial Port in VxWorks
HALucinator์์ ์ถ๊ฐ๋ ๋ด์ฉ
โข
ARM ๊ธฐ๊ธฐ ์ ์ฉ์ IRQ ํธ๋ค๋ฌ
โข
๋ก๊น
๊ธฐ๋ฅ ์ถ๊ฐ
โข
๋ช๋ช ํ๋ก์ธ์ ์ถ๊ฐ
โข
memory allocation
Firmware Analysis
HQ Tracer
โข
Halucinator์ QEMU์์ ์ฐพ์ execution trace๋ฅผ Ghidra์์ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ด ์์
โข
์ด๋ฅผ ํตํด ๋ ์์ํ ๋ถ์์ด ๊ฐ๋ฅ
3. Conclusion
๋ณธ ์ฐ๊ตฌํ์ ์ถ๊ฐ์ ์ผ๋ก RSL์ ๊ตฌ์ถํ๋ฉด์ SCADAPack 350, Modicon 340 ๊ทธ๋ฆฌ๊ณ Hughes 9201 BGAN ๋ชจ๋ธ์ ๋ํ ๋ฆฌํธ์คํ
์ ์ฑ๊ณตํ์์ต๋๋ค. ์ด๋ฅผ ํตํด VxWorks RTOS๋ฅผ ์ฌ์ฉํ๋ ํ์จ์ด๋ค์ ๋ฆฌํธ์คํ
๊ณผ์ ์ ๋จ์ํํ์์ต๋๋ค. ๋ฆฌํธ์คํ
์ดํ๋ก๋ ์ทจ์ฝ์ ๋ถ์ ๋ฐ ๊ธฐํ ์์คํ
๋ถ์์ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ฐ๊ตฌํ๋ค๋ HALucinator ํธ๋ค๋ฌ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ๋ฆฌํธ์คํ
์ ๋ฒ์๋ฅผ ๋ ๋ํ๋๊ฐ ์ ์์ ๊ฒ์ด๋ค.
Reference
๋ฐํ ์์: https://www.youtube.com/watch?v=3R7GEt7dTvk