왜 BIOS를 업데이트 해야만 했나

지금 나의 데스크탑은 2012년에 만들어진 아주 오래된 부품이다. 저렴하다는 이유로 두달 정도 그럭저럭 사용하고 있었고, Intellij IDEA를 실행하면서 가끔 멈춰버리긴 했지만 그래도 컴퓨터 부품을 바꿔버릴 정도는 아니라고 생각했다. 이 컴퓨터로 개발하는 건 나름 만족하면서 사용하긴 했지만 자꾸 내 신경을 거슬리게 하는 것이 있었는데, 바로 유튜브를 보면서 1080p 고화질로 바꿀 때 화면이 아주 잠깐 깨지는 현상이었다. 그동안 나는 아이패드 에어로 아주 쾌적하게 멀티미디어를 즐겼던 나는 0.1초 정도의 지연은 도저히 참을 수가 없는 수준이었다.

CPU를 업그레이드 하기 전

더 좋은 컴퓨터를 원하는 건 맞지만 그렇다고 큰 돈을 쓰기는 싫었다. 그래서 CPU 부품하나만 바꾸는 방향으로 찾아보았고, 현재 메인보드에 알맞게 들어가는 부품 중에서 i5 3460을 선택했다. 당근마켓에서 4~5만원 정도에 구하려고 찾아보던 중 BIOS를 업데이트 해야 한다는 것을 알게 되었다. 그 이유는 내 메인보드는 2012년 제조로, 새로 장착하려는 부품은 2013년 출시라 그 이후의 펌웨어를 설치해야 정상적으로 작동한다는 것이었다. 그래서 나는 부품을 찾아보기 전에 BIOS 업데이트 하는 방법을 먼저 찾아보았다.

삼성 완제품 BIOS 업데이트 방법

지금 내가 가진 메인보드는 DM300S1A 제품군으로, 삼성 데스크탑 3세대에 해당한다. 작년에 군대에 있을 때 이런 디자인의 본체를 불용처리 한 기억이 있고, 찾아보니 지금은 데스크탑 7세대를 판매하고 있으니 정말 오래된 제품임을 실감했다. 가뜩이나 독립적으로 판매되는 게 아닌, PC 완제품 중 하나의 부품이라 업데이트가 어려울 것 같은데, 오래되기 까지 한 건 삼성이 순순히 업데이트를 시켜줄 지 의문이 들었다. 그래도 제조사에서 제공하는 업데이트를 최대한 시도해보고자 삼성전자 서비스센터 홈페이지부터 업데이트 파일을 찾아보았다.

가장 일반적인 방식

역시 대기업 전자제품이라 그런지 A/S도 친절히 소개해주고 있었다. 간단한 방법으로는 윈도우 store에 들어가서 Samsung Update를 설치하면 해당 모델의 모든 지원 가능한 펌웨어를 다운로드 받을 수 있었다. 설치하고 나서 다운로드 가능한 여러 펌웨어들을 찾아보았지만, BIOS를 위한 파일은 찾을 수 없었다. 역시나 순순히 업데이트 파일을 내놓지 않을 것 같은 내 생각이 맞았다.

모델명으로 찾기

이번에는 해당 데스크탑 모델을 검색해 보았다. 펌웨어 다운로드 목록에는 하나의 항목 밖에 없었는데, Update System라는 이름이 왠지 방금 시도했던 종합 업데이트 프로그램처럼 생겨서 다를게 없을 것 같다는 생각이 들었다. 그래도 한번 열어보기나 해보자 하고 실행했는데, 이게 왠 일인가. 대놓고 BIOS 업데이트라고 써있는 게 아닌가! 이 Update System라고 적힌게 BIOS 업데이트란 것을 알게 된 나는 최신버전의 펌웨어를 찾기 위해 이 모델과 비슷하게 생긴 모든 파일들을 열어보았다. 근데 모든 파일의 용량이 같은 걸 보니 모두 같은 파일임을 알 수 있었다.

content_01
'Update Software'라는 펌웨어가 BIOS 업데이트 하는 역할인지 알기가 어렵다.

미끼를 물어버렸다

BIOS 업데이트 프로그램을 실행했을 때 하라는 대로 하니 손쉽게 업데이트를 할 수 있었다. 다른 블로그 글들을 보면 롬 라이터가 필요하다니, USB를 만들어 부팅을 해야하니 겁을 주었지만, 프로그램 실행 후 재부팅 만으로 손쉽게 업데이트를 할 수 있어 다행이라는 생각이 들었다. 하지만 내가 업데이트 한 버전인 04VS에 대해 찾아보니 장착하기로 한 CPU를 지원하지 않는다는 글을 보게 되었다. 그래서 04VS에서 다시 업데이트 프로그램을 열었는데 지금에 가장 최신 버전이라고 한다. 삼성이 공식적으로 지원하는 업데이트는 거기까지였다.

펌웨어는 어디서 나오는가?

구글에 삼성 BIOS 업데이트 하는 방법에 대해 다시 찾아보던 중, 블로그와 유튜브 영상을 발견하게 되었다. 블로그에서는 P07KTS로 업데이트 하니 정상적으로 CPU를 인식했다는 글이었고, 유튜브는 마찬가지로 P07KTS로 업데이트 하는 영상이었다. 해당 메인보드도 나랑 비슷하게 보여서 P07KTS 펌웨어 파일을 설치하면 되리라 생각했다. 그래서 열심히 구글링을 했지만 무료로 구할 수 있는 파일은 나오지 않았고, 나는 04VS만 앵무새처럼 보여주는 Update System에 눈길이 갔다.

파일 안에서?

exe 파일 안에 펌웨어가 있을 것 같다는 생각이 들었다. 그래서 .NET은 잘 모르지만 리버싱 툴을 이용해서 까보았다. 정상적인건지 아닌건지 잘 모르겠지만 뒤져보니 프로그램 실행 때 보았던 이미지 파일들도 보이기도 해서 일단은 분해에 성공한 듯 싶었다. 하지만 아무리 파일들을 뒤져봐도 펌웨어만한 용량의 파일은 발견하지 못 했다.

인터넷에서?

펌웨어를 오프라인에서 저장하고 있는게 아니라면 온라인으로 파일을 받는 거라는 의심을 해 볼 수 있다. 일단 컴퓨터 네트워크를 잠시 비활성화 시켜두고, 업데이트 프로그램을 실행시켜보았다. 그러니 네트워크가 원활하지 않다고 메시지가 나왔고, 그 말이 의미하는 건 펌웨어 업데이트를 할 때 온라인에서 파일을 다운로드 받는다는 것이었다!

업데이트 실행파일 추궁하기

어떻게 이 프로그램이 04VS 펌웨어를 다운로드 받는지 파악할 수 있을까 고민하던 중 이 업데이트 프로그램과 서버가 통신하는 그 과정을 스니핑하면 어떨까라는 생각이 들었다. 몇 번 써보았던 패킷 분석기인 WireShark 를 설치하고 나서 record를 시작하고 업데이트 프로그램을 실행했다. 그랬더니 삼성 홈페이지와 통신하는 패킷들이 떡하니 잡히는 것이 아닌가? 그렇게 Request URL과 Response를 손에 쥘 수 있었다.

패킷 분석기 : 네트워크에서 전달되는 트래픽을 가로채거나 기록할 수 있는 프로그램. 이를 사용하여 통신내용을 몰래 도청하는 행위를 스니핑(sniffing) 이라고 한다. 출처 : 위키백과

content_02
지금 업데이트 프로그램은 최신 펌웨어 버전을 찾는 중이다.

요청 URL 분석

파라미터는 2개를 보낸다. PlatformID와 PartNumber인데, 둘 중 하나라도 안 보내면 친절하게도 둘 다 보내라는 응답이 돌아왔다. 일단 04VS를 부르는 파라미터 조합은 알았다 치고, 이걸 바탕으로 P07KTS를 불러내는 주문은 무엇인가 궁리해보았다. 다양하게 시도한 끝에 KTS, AAAA 조합임을 알아냈고, Response에서 업데이트 파일 URL도 캐낼 수 있었다.

content_03
ItemNo만 찾으면 BIOS 업데이트 파일을 다운로드 받을 수 있다.

업데이트 작동과정 분석

그렇게 손에 넣은 프로그램을 실행시켰는데, partNumber가 다르다는 이유로 업데이트를 거부했다. 술술 풀릴 줄 알았다가 막혀버리는 바람에 살짝 당황했지만, 일단 partNumber를 확인하는 logic을 건너 뛰는 방법을 찾아보기로 했다. 아까 그 유튜브 영상에는 정상적으로 업데이트를 진행하는 화면이 나왔는데, 거기에 써진 파일 경로를 보니 내부적으로 처음보는 exe에서 실행한다는 것을 볼 수 있었다. 그래서 그 경로를 더 파고드니 이 업데이트 파일은 임시파일이 있는 공간 속에 압축해제를 한 뒤 실질적으로 업데이트를 실행한다는 것을 알 수 있었다.

content_04
BIOS 업데이트 영상. 창 제목에 실제 실행되는 프로그램의 경로가 보인다. / 출처 : Youtube

펌웨어 추출

임시파일 공간에서 펌웨어로 추정되는 P07KTS.cap 파일과 함께 실질적으로 업데이트를 수행하는 AMIWINS.exe 프로그램을 건질 수 있었다. 찾아보니 BIOS 펌웨어는 cap 속에서 UEFI Tool 로 추출하면 되고, 이를 AMIWINS로 실행하면 된다고 하니 그대로 실행해보았다. 하지만 업데이트 프로그램은 뭐가 자꾸 맞지 않는다면서 업데이트를 거부했다. 사용 가능한 파라미터들을 찾아보니 검증도 건너뒤고 그냥 덮어씌우는 기능이 있어 강제로 업데이트를 실행하였고, 업데이트가 끝난 뒤 컴퓨터를 재부팅하였다.

content_05
P07KTS.cap 파일 안에 BIOS를 업데이트하는 rom이 있다.
content_06
업데이트 프로그램이 뱉어내는 경고를 무시하며 업데이트를 강행했다.

결론은 망했어요

그게 마지막 데스크탑의 모습이었다. 전원을 켜면 본체에 있는 쿨링팬만 돌아가지, 나머지는 전혀 작동하지 않았다. 그렇게 메인보드가 벽돌이 되었음을 직감한 나에게 현자타임이 찾아왔다. 꿀팁이 될 뻔한 글은 다음과 같은 교훈만 남기게 되었다.

잘 모르는데 잘 되는 것 같다면, 거기서 멈춰야 한다.