[Threat Analysis] POS 시스템의 보안 문제, 그리고 최근 사고
POS 시스템을 노리는 악성코드 (1)
POS(Point of Sales, 판매시점관리) 시스템, 이른바 ‘포스’의 보안 문제가 최근 언론을 통해 자주 언급되고 있다. 사실 보안 전문가들은 이미 오래 전부터 POS 시스템의 보안 위험성을 경고해왔다. 그러나 ‘보안’이라는 것이 늘 그렇듯, 지난 해 12월 비슷한 시기에 국내외에서 대규모 POS 시스템 해킹 사건이 발생하면서 POS 시스템 보안이 주목받기 시작했다. 한편 최근 윈도(Windows) XP 지원이 종료된 가운데 여전히 국내 대다수의 POS 시스템이 해당 OS를 사용하고 있어 POS 시스템 보안이 사회적인 문제로 발전될 우려를 낳고 있다. 이처럼 최근 POS 시스템을 노리는 악성코드가 지속적으로 발견되고 있는 가운데, POS 시스템과 관련된 보안 문제와 악성코드 공격 기법에 대해 알아본다. .
<연재 목차>
1부_POS 시스템 보안 문제, 그리고 최근 사고 (이번 호)
2부_국내외 POS 시스템 해킹 악성코드 분석
POS(Point of Sales) 시스템은 ‘판매와 관련된 데이터를 일괄적으로 관리하고 고객정보를 수집하여 부가가치를 향상시키는 시스템’으로 정의된다. 포스 시스템, POS 단말기, 또는 판매시점정보관리 시스템 등으로 불린다.
대부분의 POS 시스템은 256 MB ~ 1 GB 정도의 메모리에 불과한 저사양 장비에서 운영된다. 또한 현재 국내 POS 시스템 대부분에는 윈도 운영체제, 그 중에서도 윈도 XP가 설치되어 있다. 최근 상위 버전의 OS로 교체되고 있지만 여전히 윈도 XP가 가장 널리 이용되고 있다.

[그림 1] POS 시스템
[그림 2] POS 시스템의 단말기 사양 예시
POS 시스템 관련 보안 침해 사고 사례
최근 국내외에서 POS 시스템을 해킹해 신용카드 정보를 탈취하는 사건이 다수 발생하고 있다. 이에 각국 정부는 마그네틱에 담겨 있는 정보를 손쉽게 탈취할 수 있는 기존 카드 대신 IC카드가 내장된 칩앤핀(Chip-and-PIN) 방식의 신용카드를 보급하고 있다. 그러나 IC카드를 인식하는 카드 리더기의 보급이 부족한 관계로 유럽 지역을 제외한 한국과 미국에서는 대부분 기존 방식을 사용하고 있다. 미국 정부는 PCI-DSS 등의 보안 규약을 마련했지만 이것만으로는 POS 시스템을 보호하기는 어렵다고 알려져 있다.
1. 국내 사례
그러나 최근, 지난 해 12월 커피전문점과 식당 등에 설치된 POS 단말기를 해킹해 신용카드 정보를 빼돌린 일당이 검거됐다. 언론 보도에 따르면, 범인들은 당시 전국 85곳의 가맹점 POS 단말기에 있던 20만 5,000 건의 카드 거래 정보를 빼내 위조카드를 만들어 국내외 자동인출기(ATM)에서 1억 2,000 여만원을 인출했다.

[그림 3] 2013년 12월 발생한 POS 시스템 해킹 (*출처: 동아경제)
2. 해외 사례
가장 유명한 사례는 지난 해 말에 발생한 미국의 유명 대형 할인점인 타겟(Target)사의 신용카드 및 개인정보 유출 사건이다. 이 사건은 미국 최대 명절인 추수감사절 시즌에 발생한 것으로, 2013년 11월 27일부터 12월 15일 사이에 오프라인 매장의 POS 시스템을 통해 7,000만 건의 신용카드 정보가 유출됐다.

[그림 4] 2002-2009 해외 신용카드 사기 사례 (*출처: HP 블로그, ‘Credit card fraud scene’)

[그림 5] 2010-2013 해외 신용카드 사기 사례 (*출처: HP 블로그, ‘Credit card fraud scene’)
한편 2014년 5월 말 현재, 전 세계 1,500 대의 POS 시스템을 감염시킨 네만자(Nemanja) 봇넷이 발견되었다는 소식이 알려졌다.
POS 시스템의 구성 및 결제 과정
POS 시스템은 크게 본체, 카드 입력기, 영수증 프린터로 구성된다. 이 중 ‘카드 입력기’는 최근 IC 카드를 읽는 단말기도 있지만 대부분 마그네틱 카드를 읽는 역할을 하기 때문에 MSR(Magnetic Stripe Reader)로도 불린다. 이와 함께 마그네틱 카드의 복제가 쉬운 점 등을 이용해 범죄자들은 비교적 보안이 허술하고 대량의 신용카드 정보를 얻을 수 있는 POS 시스템을 노리기 시작한 것이다.

[그림 6] POS 시스템을 통한 신용카드 결제 과정
POS 시스템을 통한 신용카드 결제 과정은 일반적으로 [그림 6]과 같다. 구매자가 판매처에서 신용카드로 결제하면 POS 시스템의 카드 입력기(카드 리더기)를 통해 카드 종류, 카드 번호, 유효 기간 등의 정보를 읽은 후 부가가치통신망사업자(VAN)로 전달된다. 부가가치통신망사업자는 이렇게 수집한 정보를 토대로 해당 카드사나 은행에서 승인이 가능한 카드인지 조회한다. 카드사 전산망에서 카드 한도, 거래 정지 유무 등을 조회하여 이상이 없으면 카드를 승인하고 승인 내용이 POS 시스템으로 전달되면 카드거래 명세서가 출력되고 구매자의 서명을 받아 결제가 완료된다.
이 같은 과정에서 은행과 카드사는 전용망을 사용하고 있을 뿐만 아니라 상대적으로 보안 시스템이 잘 갖추어져 있기 때문에 공격자가 이를 통해 신용카드 정보를 탈취하기는 쉽지 않다. 반면 POS 시스템은 별다른 보안이 갖추어져 있지 않은 경우가 대부분이고 윈도를 운영체제로 사용한다는 점에서 일반 컴퓨터와 크게 다르지 않다. 이를 뚫고 들어갈 악성코드 제작도 쉽게 할 수 있다.
POS 시스템 관련 위협 요소
POS 시스템과 관련된 보안 사고는 대부분 ▲POS 시스템 ▲통신 ▲POS 시스템 관리 업체 등에서 발생한다.
1. POS 시스템
우선 사용자가 신용카드를 사용하는 지점인 카드 입력기, 즉 카드 리더기에서부터 정보가 유출될 수 있다. 대부분의 카드 리더기는 키보드와 동일하다고 볼 수 있다. 카드 리더기로 신용카드를 읽으면 POS 프로그램에 해당 정보가 입력된다. 이때 메모장을 열어두면 [그림 7]과 같이 카드 번호와 관련 정보가 텍스트로 입력 되는 것을 볼 수 있다. 즉, 키 입력 내용을 가로챌 수 있는 키로거(keylogger)를 이용해 신용카드 정보를 탈취할 수도 있다는 것이다.

[그림 7] 카드 입력기가 읽어낸 마그네틱 카드 정보
또한 카드 리더기에서 신용카드를 읽을 때 POS 시스템 관리 프로그램이나 메모리 등에 데이터가 저장된다. 따라서 POS 시스템의 메모리를 검색하면 신용카드 정보를 확인할 수 있다.
한편 일부 POS 시스템에서는 카드를 읽는 순간부터 데이터를 암호화한다. 그러나 신용카드 전표를 출력하기 위해 복호화된 데이터를 메모리 상에 갖고 있기 때문에 여전히 신용카드 정보가 노출될 가능성이 있다.

[그림 8] 포스 시스템 관리 프로그램 메모리에서 찾은 신용카드 정보
신용카드 정보에 대해 카드사의 승인을 받는 동안 해당 정보가 POS 시스템에 보관되기도 한다. 이때 신용카드 정보가 제대로 암호화되지 않은 채 보관될 경우, 관련 파일만 알면 쉽게 신용카드 정보를 확보할 수 있다.
공격자는 신용카드 정보를 탈취하기 위해 ▲탭핑(tapping) ▲취약점 ▲악성코드 등을 이용할 수 있다.
탭핑(tapping)이란 도선(導線)을 통해 전송되는 정보를 물리적으로 탈취하는 방식이다. 물리적으로 시스템에 접근해야 하기 때문에 공격자의 입장에서는 내부자와 공모해야 하는 어려움, 또는 현장에서 적발될 위험을 감수해야 한다.
상대적으로 공격자가 쉽게 정보를 탈취할 수 있는 방법은 운영체제나 POS 시스템 관리 프로그램의 취약점을 이용해 시스템을 훔쳐보거나 장악하는 것이다. 대부분의 POS 시스템은 윈도 보안 업데이트를 적용하지 않는 경우가 허다하다. 한편 다수의 POS 시스템 관리 프로그램들은 가맹점의 POS 시스템 관리를 위한 원격제어 기능을 포함하고 있기 때문에 외부에서 접속이 가능하다. 문제는 [그림 9]와 같이 대다수의 가맹점의 시스템 로그인 암호가 ‘1234’와 같은 단순한 숫자이거나 매장 전화번호와 동일한 경우가 많아 공격자가 유추하기 쉽다는 점이다.

[그림 9] POS 시스템 로그인 암호 예시
다른 컴퓨팅 시스템과 마찬가지로 정보를 탈취하는 악성코드를 POS 시스템에 감염시켜 신용카드 정보를 유출할 수 있다. 따라서 공격자들은 POS 시스템을 악성코드에 감염시키기 위해 다양한 방법으로 공격을 시도한다.
2. 통신
POS 시스템에서 전송되는 신용카드 정보는 대체로 암호화하지만 POS 시스템 관리 프로그램의 로그인 정보(ID 및 패스워드) 등은 암호화를 하지 않는 경우도 있다. 로그인 정보는 신용카드 정보 유출과 직접 연관은 없다. 그러나 POS 운영프로그램을 웹에서 서비스 하는 경우도 있어, 로그인 정보만 알고 있다면 외부에서 접속 가능해 정보 유출의 위험이 존재한다.

[그림 10] 평문으로 전송되는 POS 시스템 로그인 정보
3. POS 시스템 관리 업체
POS 시스템 관리 업체는 POS 시스템, 즉 단말기를 대여 또는 판매하는 업체다. 소규모 매장을 관리하는 업체 중에는 서버에 고객사 매장의 메뉴, 광고 내용 등을 보관하는 경우도 있다. 또한 관리 업체 서버를 통해 POS 시스템 관리 프로그램의 업데이트가 이뤄지기도 한다. 따라서 관리 업체의 서버가 해킹돼 프로그램이 바뀌거나 변조된 경우 해당 서버와 연결된 POS 시스템은 악성코드에 쉽게 감염될 수 있다.
POS 시스템과 악성코드
1. 감염 경로
대표적인 POS 시스템의 악성코드 감염 원인은 POS 시스템에서의 인터넷 이용이다. 소규모 업체의 경우에는 개인 용도로 사용 중인 노트북 등에 카드 리더기와 용지 출력기를 연결해 카드 결제 시스템으로 이용하는 경우가 많다. 해당 컴퓨터로 웹 서핑이나 게임 등 인터넷을 이용하고 있어 악성코드 감염 가능성이 높다. 또한 최근 유행하고 있는 소셜 커머스를 이용한 고객 대응을 위해서 소셜 커머스 업체의 홈페이지에 접속해야 하는 경우도 있다. 만일 소셜 커머스 업체가 해킹 당한 경우, 이를 통해 POS 시스템이 악성코드에 감염될 수도 있다.
둘째, POS 시스템에 USB 메모리를 연결 시 악성코드에 감염되는 경우다. [그림 11]과 같이 POS 시스템은 일반 컴퓨터와 동일하게 키보드, 마우스 등을 연결할 수 있다. 실제로 매장 재고 관리 등을 위해 관리 업체에서 USB 메모리를 POS 시스템에 연결하는 경우가 많은데, 감염된 USB에 의해 POS 시스템까지 악성코드에 감염될 수 있다.

[그림 11] POS 시스템의 입출력 포트
셋째, POS 시스템 관리 프로그램의 업데이트 과정에서 악성코드에 감염될 가능성도 있다. 대다수의 애플리케이션과 마찬가지로 POS 시스템 관리 프로그램도 인터넷을 통해 업데이트 되고 있다. 이때 업데이트 된 파일이 악성코드를 포함하고 있을 경우 POS 시스템을 부팅하는 것만으로도 악성코드 감염이 발생할 수 있다.
넷째, 상대적으로 드물긴 하지만 POS 시스템 장애 등의 경우 이를 복원하기 위해 관리 업체에서 제작한 하드디스크 이미지에 악성코드가 포함되어 있는 경우도 있다. 악성코드에 감염된 하드디스크 복원 이미지로 시스템을 복구함으로써 악성코드에 감염되는 것이다.
2. 악성코드 공격 기법
카드 입력기를 통해 신용카드를 결제할 때 신용카드 정보가 POS 시스템 관리 프로그램에 입력된다. 공격자가 이 정보를 중간에서 가로채면 신용카드 복제에 필요한 정보를 확보할 수 있다. 주로 국내에서 발견되는 악성코드가 키로깅 기능을 포함하고 있다. 공격자는 키로깅을 위한 악성코드를 직접 제작하는 대신 상용 키로거나 원격 제어 프로그램을 이용하기도 한다.

[그림 12] 키로깅을 통한 신용카드 정보 탈취
미국 등 해외에서는 키로깅 방식보다 메모리 스크래핑 방식이 주로 이용되고 있다. 국내에서는 메모리 해킹으로 알려진 메모리 스크래핑 방식은 POS 시스템이 신용카드 번호를 메모리에 저장할 때 사용하는 특정한 규칙을 노린 방식이다. 이와 관련된내용은 다음 연재를 통해 좀 더 살펴볼 예정이다.

[그림 13] 메모리 스크래핑 기법을 이용하는 악성코드가 찾는 문자열
지금까지 POS 시스템과 관련된 보안 문제, 특히 악성코드를 이용한 공격 기법을 알아봤다. 다음 호에서는 주요 POS 시스템을 노린 악성코드와 국내에서 발생한 실제 POS 시스템 감염 사례에 대해 알아보겠다.@
http://intelcrawler.com/news-18
- AhnLab차민석 분석팀 책임