ATM을 타겟으로하는 Ploutus.B 악성코드 분석 2014. 7 코드분석팀 김세령 srkim@kisa.or.kr 본 보고서의 전부나 일부를 인용 시, 반드시 [자료:한국인터넷진흥원(KISA)]를 명시하여 주시기 바랍니다.
[ 목 차 ] 1. 개요 2 2. Ploutus.B의 동작 개요 3 3. 공격 코드 상세 5 4. ATM 공격 악성코드를 어떻게 대응할 것인가? 11 5. [붙임1] Ploutus와 Ploutus.B 비교 12 6. [붙임2] Confuser로 난독화된.NET코드 해제하기 13 7. [붙임3] 주요 참고 자료 16
1. 개 요 2010년 해킹 컨퍼런스인 Black Hat USA 2010에서 ATM기기 두 대를 이용 하여 원하는 대로 돈을 인출하는 PoC(Proof-Of-Concept) 1) 가 공개되었다. PoC라고는 하지만 실제로 돈이 인출되는 모습이 시연되어 상당한 이목을 끌었다. 당시 이 PoC를 공개했던 뉴질랜드의 해커 버나비 잭(Barnaby Jac k) 2) 은 본인의 방식 외에 휴대전화를 연결하여 공격을 실행할 수 있음을 시 사 하기도 했다. 2013년 9월 멕시코에서 ATM을 타겟으로 하는 Ploutus 3) 악 성코드가 발견되면서 그의 발언은 현실이 되었고 올해 초 발견된, 더 발전된 형태의 Ploutus.B는 윈도우 XP의 기술지원 서비스 종료 이슈와 맞물려 단숨 에 업계의 화두로 떠올랐다. Ploutus.B 악성코드는 원격에서 공격자가 입력한 인자 값과 날짜 값을 이용 해 ATM을 동작 가능한 상태로 활성화 시킨 후, 원하는 금액을 입력해 돈을 인출한다. Ploutus.B는 최조 등장했던 Ploutus보다 더 모듈화된 형태를 갖추 고 있으며 키패드뿐만 아니라 스마트폰을 이용해서도 명령어를 전송하는 것 이 가능하였다. 스페인어로 되어 있었던 기존의 Ploutus와 다르게 영어를 사 용한 점은 영어권 국가를 타겟으로 하고 있음을 짐작케 한다. 본 문서에서는 Ploutus.B 악성코드를 중심으로, 해당 악성코드에 대한 분석 내용과 특징점, 최초 등장했던 Ploutus와의 차이점등을 다루었다. 1) Proof-Of-Concept : 개념 증명. 기존에 없던 기술에 대해 해당 기술을 검증하기 위한 목적으로 사용하는 코드 등을 가리킴 2) Barnaby Jack(1977.11.22. ~ 2013.07.25.) : 뉴질랜드 출신의 해커로 IOActive Labs의 연구원으로 활동함 2010년 Black Hat USA 컨퍼런스에서의 ATM 해킹 시연으로 잘 알려져 있으며, 2013년 Black Hat에서 이식형 의료 기기의 해킹 위험에 대하여 발표할 예정이었으나 의문사 3) 일부는 진단명을 Ploutos라고 하기도 함 - 2 -
2. Ploutus.B의 동작 개요 Ploutus.B는 총 3개의 모듈로 구성되어 있다. 감염된 ATM에서 서비스로 동작 하는 모듈(NCRDRVP), 디스패처 모듈(SystemP.dll), 실제 돈을 인출하는 모듈 (Ploutos.exe)이 그것이다. 공격자는 CD-ROM이나 USB를 이용해 위의 모듈들 을 ATM에 설치한다. 휴대전화 메시지 전송을 통한 현금 인출을 위해 스마트 폰 한 대를 ATM에 연결해 두는 것도 공격자의 몫이다. 서비스 모듈은 NCRDRVP 라는 이름으로 동작하는데 SystemP.dll을 로딩하고 외부로부터 받은 명령을 SystemP.dll에 전달한다. 키보드 입력 값을 후킹 (hooking)하는 기능도 가지고 있어 ATM 키패드를 통해 입력된 값을 로깅할 수 도 있다. SystemP.dll은 일종의 소켓 통신 모듈이라고 할 수 있다. 스마트폰이나 ATM 의 키 입력 값을 통해 전달 받은 명령어가 유효한 값인지 체크하고 실제 돈 을 인출하는 모듈인 Ploutos.exe를 실행하기 때문에 디스패처(Dispatcher) 모 듈로 불린다. Ploutos.exe는 실제 돈을 인출하는 모듈로 현재 ATM의 상태 값을 로그로 남기는 기능도 포함한다. [그림 1] Ploutus.B의 구성 - 3 -
Ploutus.B의 ATM 공격 과정 Ploutus.B의 경우 두 가지 방법을 이용하여 현금을 인출할 수 있다. ATM의 키 패드를 이용하는 방법과 스마트폰으로 SMS 메시지를 전송하여 현금을 인출하게 하는 방법이 그것이다. ATM 키패드를 이용하는 방법은 16자리 숫자로 이루어진 명령어를 전송하여 해당 명령어가 가지고 있는 기능을 수행하도록 하는 식이다. 스마트폰을 이용하는 방법의 경우에는 ATM 내부에 미리 연결해 둔 스마트폰에 다른 스마트폰으로 SMS를 전송한다. 이 때 SMS 메시지의 내용은 악성코드를 실 행시키는 명령어와 돈을 인출하기 위한 명령어로 구성된다. ATM 내부에 설치된 스마트 폰에 SMS가 수신되면 해당 내용을 ATM에 전달하게 되고 이 때 디스패 처 모듈에 의해 실행 가능한 명령어로 재조합된다. 뒤이어 Ploutos.exe를 실행 시켜 실제 돈을 인출한다. [그림 2] Ploutus.B의 ATM 공격 과정 분석 당시 디스패처 모듈의 부재, 악성코드의 정상적인 동작 불가로 인하여 실제 공격과정을 눈으로 직접 확인할 수 는 없었다. 그러나 원격지에서 메시지를 전송 해 현금을 인출할 수 있다는 사실은 충분히 충격적이어서 보안관련 업계 종사자들 에게 주변의 모든 IT 기기들이 해킹 가능하다는 당연한 사실을 새삼 일깨운다. - 4 -
3. 공격 코드 상세 NCRDRVP 윈도우 서비스 모듈 NCRDRVP 서비스 모듈은 Ploutus.B를 구성하는 총 3개 모듈의 컨트롤러 역할을 한다. 서비스의 실행과 종료는 물론, ATM 키패드 입력 값의 후킹, SystemP.dll의 실행, 공격자로부터 수신 받은 명령의 전달과 같은 역할을 맡는다. 이 서비스 모듈의 pas 파일 4) 을 확인하면 NCRDRVP 서비스의 시작과 실행에 관련된 코드로 구성되어 있음을 알 수 있다. [그림 3] 서비스 모듈의 유닛(Unit) 코드 폼 정보(dfm)파일에는 실행될 서비스에 대한 정보가 포함되어 있으며, 실제 서 비스가 생성될 때 해당 정보를 토대로 하는 것을 확인 가능하다. [그림 4] 폼 정보 파일의 서비스 생성 정보와 CreateService 부분 4) 델파이로 작성된 프로그램에서 프로젝트를 구성하고 있는 파일 중 하나로 유닛(Unit) 파일을 의미. 유닛 파일은 일종의 선언 라이브러리라고 할 수 있으며 프로그램을 분할하여 각각을 컴파일 할 수 있도록 한다. - 5 -
서비스가 실행되고 나면 디스패처 모듈인 SystemP.dll 파일을 로딩 한다. SystemP.dll 모듈에 대한 자세한 내용은 뒷부분에서 다루기로 한다. 이 외에 키보드 입력 값을 후킹하는 기능도 수행하는데 이는 ATM의 키패드 입력을 이용한 현금 인출에 이용할 목적으로 추정된다. [그림 5] 디스패처 모듈의 로딩과 키보드 입력 값 후킹 SystemP.dll 디스패처 모듈 분석 당시 이 모듈은 존재하지 않아 실제 코드를 확인할 수 는 없었다. 5) 때 문에 SystemP.dll에 대한 내용은 모두 외부 보안 업체들의 분석 내용을 참조하 여 작성된 것임을 미리 밝혀 둔다. SystemP.dll의 코드는 아래와 같이 소켓 통신의 구조를 하고 있다. 6) [그림 6] SystemP.dll 의 코드 일부 5) 구하는 것도 불가능했다. 6) Dr.Web사의 분석 블로그 참조, http://vms.drweb.com/virus/?i=3771316-6 -
이 모듈의 가장 중요한 기능은 NCRDRVP 서비스 모듈에 의해 보내진 16자리 의 숫자 조합의 명령어를 다시 33자리의 명령어로 조합해 Ploutos.exe를 실행 시키는 것이다. 네트워크 모니터링을 통해 패킷에서 5449610000583686 이나 6037428100036810 을 찾아내면 아래와 같이 Ploutos.exe를 실행하기 위한 명 령어를 구성하게 된다. 패킷 내 문자열 SystemP.dll이 생성하는 명령어 조합 5449610000583686 cmd.exe /c Ploutos.exe 5449610000583686=123456789ABCDEFG 6037428100036810 cmd.exe /c start taskkill /f /m Ploutos.exe [표 1] SystemP.dll에 의해 조합되는 명령어 첫 번째 명령어에 의해 Ploutos.exe가 실행되면 = 뒤의 16자리 숫자 중 맨 뒤 두 자리 숫자에 따라 각각 다른 기능을 수행한다. Ploutos.exe, 현금 인출 모듈 Ploutos.exe는.NET으로 개발되었으며 Confuser라는 도구로 난독화 되어있다. 난독화를 해제하지 않은 상태에서 Ploutos.exe의 코드를 확인해 보면 아래와 같이.netmodule이 존재하지 않는다는 메시지를 볼 수 있다. [그림 7] Confuser로 난독화된 Ploutos.exe - 7 -
Confuser 7) 로 난독화된.NET프로그램을 해제하는 방법에 대하여서는 본문에서 언급하지 않고 붙임자료로 대신한다. 처음 등장한 Ploutus와는 달리 Ploutus.B는 공격자의 입력을 받는 GUI 화면이 존재하지 않는다. 대신 SystemP.dll로부터 명령을 전달받으면 = 문자를 기준 으로 뒤에 있는 16자리 숫자 조합을 확인하고 앞서 언급한대로 맨 끝 두 자리 숫자에 따라 다른 역할을 수행하게 된다. (맨 끝 두 자리 숫자가 99 인 경우) Ploutos.exe를 종료한다. 동일 모듈 내에서 는 맨 끝 두 자리 숫자가 99인지 여부를 확인하는 것 외에 Ploutos라는 이름 의 뮤텍스(mutex)를 생성하기도 한다. [그림 8] 맨 끝 두 자리 숫자가 99 인 경우 (맨 끝 두 자리 숫자가 54 인 경우) = 뒤의 16자리 숫자 중에서 8개 숫자를 선택한다.(해당 코드에서는 차례로 3, 13, 1, 9, 0, 5, 11, 7번째 숫자를 선택한 다.) 현재 날짜와 config.ini 파일의 DATAA 항목의 값을 이용해 암호화 인코 딩을 수행한 결과 값을 선택한 8자리 숫자와 비교한다. 7).NET의 프로텍터(Protector)이자 난독화 도구로 최신버전은 1.9이다. 안티 디버깅, 안티 디컴파일러, 코드 암호화, 리소스 암호화, 제어 흐름 난독화 등의 기능을 제공한다. - 8 -
[그림 9] = 뒤의 16자리 숫자에서 8개 숫자를 선택, config.ini 파일에서 DATAA 항목을 읽음(위) 선택한 8자리 숫자를 DATAA 항목의 값과 현재 날짜 값을 이용해 암호화 인코딩 한 값과 비교(아래) 비교 결과 값이 같으면 해당 시간 값을 저장하는데, 이 시간 값은 현금을 인 출하기 위한 일종의 타이머 역할을 하게 된다. Ploutos.exe 모듈의 코드에는 config.ini 파일의 DATAA, DATAB, DATAC 항목 을 읽어오거나 기록하는 부분이 다수 존재한다. 그러나 실제 config.ini 파일이 생성되는 것을 확인할 수 없어 컨텐츠가 어떤 형태로 기록되어 있는지 정확히 알 수는 없었다. 다만 코드를 분석하여 확인한 결과에 의하면 DATAA 항목은 4자리로 이루어진 숫자 값으로 ATM을 활성화 시키는 일종의 ID로 추정된다. DATAB에는 날짜 시간 값이, DATAC에는 = 뒤 16자리 숫자의 해쉬 값이 저 장되는 것으로 확인되었다. (맨 끝 두 자리 숫자가 31 인 경우) 실제로 현금을 인출하거나 ATM의 상태를 출력하는 역할을 한다. [그림 10] 맨 끝 두 자리 숫자가 31 인 경우 - 9 -
(맨 끝 두 자리 숫자가 32 인 경우) config.ini 파일에서 읽어 온 DATAA의 값 과 = 뒤의 16자리 숫자 중 차례로 10, 2, 8, 12번 째 숫자를 선택 한 값이 같으면 프로그램을 종료하고 그렇지 않으면 ATM의 상태를 저장한다. [그림 11] 맨 끝 두 자리 숫자가 32 인 경우 수신된 명령어가 2836957412536985 인 경우에는 맨 끝 두 자리 숫자가 아닌 16자리 숫자 전체를 비교 대상으로 삼는다. 이 경우에는 4자리로 된 임의의 값을 생성하는데(ATM의 ID를 생성하는 것으로 추정됨) 이것을 config.ini 파일 의 DATAA 항목에 기록한다. [그림 12] 수신된 명령어가 2836957412536985 인 경우 - 10 -
4. ATM 공격 악성코드를 어떻게 대응할 것인가? ATM의 경우 대부분 윈도우 XP 운영체제 위에 관련 소프트웨어를 설치하여 동작하는 구조를 가진다. 이것은 ATM 역시 일반 PC와 그 구조가 크게 다르지 않음을 의미한다. 굳이 PC와의 차이를 꼽는다면 폐쇄된 망 내에 존재하고 특 수한 목적으로 사용된다는 점 정도가 될 것이다. 그러나 윈도우 XP에 대한 마 이크로소프트 社 의 서비스가 종말을 고하고 있고 은행의 거래와 관련된 특수한 목적으로 사용되고 있는 만큼 일반 PC들 보다는 좀 더 능동적이고 적극적인 대응이 필요하다. 무엇보다도 운영체제의 업데이트가 가장 시급하다. 빠른 시일 안에 윈도우 7 이나 8으로 업그레이드를 진행할 필요가 있다. 제조사인 마이크로소프트마저 기술지원에서 손을 떼고 나면 윈도우 XP는 그 누구의 보살핌도 받지 못하는 처지에 놓이게 될 것이다. Ploutus 악성코드가 USB나 CD-ROM 같은 물리적 장치를 이용해 설치되므로 인가되지 않은 사용자에 의해 물리 저장장치를 이용한 부팅이 불가능하도록 조치하는 방안도 필요하다. 8) 혹시라도 사고가 발생했을 때를 대비하여 ATM 사용자를 모니터링 가능하도록 CCTV를 설치해 두는 것은 이제 필수 사항이라 하겠다. 다만 CCTV는 사용자가 누구인지 감시하는 목적으로 사용되도록 설치할 필요가 있다. 우리나라의 경 우 거의 모든 ATM에 CCTV가 설치되어 있지만 아이러니 하게도 사용자는 잘 보이지 않고 사용자가 입력하는 비밀번호나 ATM의 화면이 잘 보이도록 되어 있는 경우가 많다. 이 경우 해커가 CCTV를 해킹해 은행 거래 관련 정보를 수 집하는 것과 같은 또 다른 침해사고를 유발할 수 있다. 과거에는 침해사고의 범위가 PC에 한정되어 있었다. 그러나 시간이 지나고 IT 8) 인가되지 않은 사용자의 경우 시스템에 대한 어떠한 권한도 주지 않는 것이 바람직하다. - 11 -
기술이 발전을 거듭할수록 침해사고의 범위는 무의미해 지고 있다. 주변의 IT 기기들에 대하여 설마 이 장비에 해킹이 가능하겠는가 하는 생각대신 만약 해 킹 사고가 발생한다면 어떻게 대응할 것인가를 고민해 보아야 할 시점이다. [붙임1] Ploutus와 Ploutus.B 비교 9) Ploutus Ploutus.B GUI GUI를 제공하지 않음 (존재하는 것으로 추정되나 보이지 않음) ATM에 연결된 키보드를 이용한 입력 가능 키보드 입력 키보드 입력은 지원하지 않음 가용 금액을 모두 보여줌, 인출 금액을 입력하는 특별한 옵션이 없음 현금 인출 인출 금액을 입력 가능 ATM 설정 상태 확인 로그 파일로 저장 USB 프린터가 연결되어 있으면 ATM의 설정 정보를 인쇄 가능 9) Ploutus 샘플을 실제 분석하지는 않았으므로 http://www.symantec.com/connect/blogs/backdoorploutus-reloaded-ploutus-leaves-mexico의 분석내용 을 참조하였음 - 12 -
[붙임2] Confuser로 난독화된.NET 코드 해제하기 1. 도구 준비 여러 가지 도구가 존재하는데 본 문서에서 사용한 것은 아래의 3개 도구임 10) MegaDumper.exe Confuser_Methods_Decryptor ModuleToAssembly.exe 2. MegaDumper MegeDumper.exe를 실행 후, Main DumpingOption Don t restore filename 선택 다시 Main Process manager를 선택 10) http://www.sendspace.com/file/1lt5gp, http://www.4shared.com/rar/e7ac8se-/edcr.html에서 다운 받 아 패스워드에 shockwawe를 입력하여 압축을 푼다 - 13 -
프로세스 창으로 와서 해제 대상 프로세스 선택하고 마우스 오른쪽 버튼 클릭.NET Dump 클릭, 아래 그림과 같이 폴더 및 파일이 생성된 것을 확인 3. Confuser_Methods_Decryptor MegeDumper.exe를 실행하여 생성된 파일 중, rawdump_영숫자.dll 파일의 이름을.netmodule로 변경하고 Confuser_Methods_Decryptor 실행 - 14 -
4. ModuleToAssembler Confuser_Methods_Decryptor에 의해 생성된 파일을 이용하여 최종적으로 난 독화가 해제된 파일을 생성, 난독화 해제된 파일을 다시.NET disassembler로 열어 확인 - 15 -
[붙임3] 주요 참고 자료 1. 디스패처 모듈 분석 내용 SystemP.dll 분석 내용 http://www.symantec.com/connect/blogs/backdoorploutus-reloaded-ploutus-le aves-mexico http://vms.drweb.com/virus/?i=3771316 2. Confuser 난독화 해제 가이드 Confuser 난독화 해제 시연 영상 http://www.youtube.com/watch?v=2fwkefjtqac - 16 -