화이트리스팅과 블랙리스팅 통해 공격 성공률 낮출 수 있어
▲ 숨어! 10년 동안은 찾지 못하게!
[보안뉴스 문가용] 보안 담당자로서 혹은 보안 전문가로서 고객의 컴퓨터에서 지불카드 정보를 빼가는 멀웨어를 발견했다면? 그런데 그 멀웨어가 이미 10년도 넘게 악명을 떨치고 있던 것이었고, 그럼에도 보통의 AV 엔진으로는 잡아내지 못하고 있다면? 무슨 생각이 들까? 무슨 행동을 취할 것인가?
너무 극단적인 경우를 예로 들었다고 생각한다면, 다시 한 번 생각해보길 권한다. 최근 이런 종류의 멀웨어 변종이 굉장히 자주 발견되고 있다. 그중 하나가 로우POS(RawPOS)다. 로우POS는 변하는 환경에 적응하기 위해 변화해왔고, 동시에 사회보장번호나 전화번호, 이메일 주소 등 민감한 정보들을 조금씩 흘려보내기도 한다. 정확히 어떤 원리로 작동하는지 알아내기 위해 리버스 엔지니어링을 시도했다. 그 결과를 공유하고자 한다.
먼저, 로우POS는 윈도우에 기반을 둔 멀웨어의 한 종류로 지불카드 정보를 주로 노린다. 처음 발견된 건 2008년으로, 이미 당시에도 소매업계나 숙박업계에서 꽤나 활동을 벌인 후였다. 그럼에도 이 로우POS가 아직도 현역으로서 발견되는 건 왜일까. 어떻게 해서 시스템에 수년 씩이나 잠복해 있는 게 가능한가? 이런 식으로 정보보안 테크놀로지를 비웃는 멀웨어가 로POS 만이 아니라는 점은 이런 질문들을 공포에 어리게 만들기까지 한다.
작동 원리는 무엇인가?
로우POS는 세 가지 코드를 콤보로 사용해 평범한 탐지 기법들 통과한다. 마찬가지로 감염도 세 가지 단계로 진행되는데, 1) 지속 메커니즘, 2) 메모리 스크래퍼, 3) 암호화가 바로 그것이다. 로우POS는 RAM을 스크랩 해 정규 표현을 스크래핑하면서 Track 1과 Track 2 지불카드 정보를 확보하고, 그 정보를 덤프 파일에 집어넣고 밖으로 빼낸다. 초기 버전에는 1)번과 2)번 기능만 있었으나 후에 덤프 파일의 암호화를 위해 3)번 기능이 추가되었다. 이 세 가지에 대해 따로 알아보자.
지속 메커니즘 : 이 기능 덕분에 로우POS는 시스템이 리부트 되어도 지워지지 않는다. 그리고 윈도우 서비스처럼 계속해서 시스템 백그라운드에서 조용히 돌아간다. MSFSVC.exe, rdasrv.exe, sppt32.exe 따위와 같은 이름을 가지고 있는데, 이번에 리버스 엔지니어링이 진행된 버전은 MSFSVC.exe였다.
이번에 분석한 멀웨어의 경우 생성된 서비스의 이름은 Microsoft File Manager Services였다. 이 이름은 멀웨어 제작자가 임의로 붙일 수 있다. 해당 서비스의 상세 설명은 “S/MIME이나 SSL과 같은 애플리케이션에 사용되는 파일을 만들고, 업데이트하고, 관리하고, 삭제한다”고 나온다. 또한 “이 서비스를 중단하거나 비활성화할 경우 관련된 모든 기능이 제대로 작동하지 않는다”는 문구도 있다. 현재 바이러스토탈(VirusTotal)에 등록된 백신 엔진 55개 중 이 지속 메커니즘을 ‘위험하다’고 분류할 줄 아는 건 25개에 불과했다.
메모리 스크래퍼 : 저장된 데이터이든 전송되고 있는 데이터이든, 데이터를 보호하기 위한 여러 보안 장치들을 우회할 수 있도록 해주는 기능이라고 볼 수 있다. PCI 데이터를 알아내기 위해 네트워크를 스니핑 하거나 탐지되지 않고 파일을 훔쳐내는 것이 너무나 어려워지자 공격자들은 메모리에서 금방 지워질 상태에 있는 데이터를 노리기 시작했다. 보통의 경우 Track 1과 Track 2의 지불카드 데이터를 처리하는 과정에서 암호화도 되지 않은 채 메모리에 잠깐 저장되는데, 이 점에 착안한 것이다.
메모리 스크래퍼는 당연히 메모리를 항상 주시하고 있다. 그러다가 특정 정규 표현이 나타나면 Memdump라는 폴더를 만들고, 해당 정규 표현을 그리로 엑스포트 하기 시작한다. 최신 버전은 .dmp 파일을 사용하고 암호화와 타임 스탬프도 찍는다. 이 정보를 밖으로 빼돌리는 과정 또한 암호화되어 있다.
암호화 : 멀웨어가 카드 관련 데이터를 찾아내고 스크래핑까지 해두었다. 이제 이걸 밖으로 빼돌리는 일만 남았다. 이번에 리버스 엔지니어링을 한 멀웨어는 이 단계에서 msiert.exe를 실행했는데, 이는 정식 윈도우 프로세스 파일인 msiexec.exe와 매우 비슷하다. 또 다른 버전에서 이 파일은 sqlmgmt.exe라는 이름을 가졌었는데 이는 SQL과 관련이 있어 보여 사용자가 섣불리 건드리지 못하게 하는 효과가 있다.
이 실행파일들이 Perl2Exe라는 프로그램을 활용한다는 게 매우 특이하다. Perl2Exe는 펄 스크립트를 윈도우 실행파일로 변환시켜주는 프로그램이다. 이는 보안 담당자들에게 있어 좋은 소식이다. Perl2Exe는 매우 ‘시끄럽고’, 따라서 시스템에서 돌아가기 시작하면 보안 담당자가 못 알아채기가 더 힘들기 때문이다. 게다가 펠 소스 코드를 통해 복호화 암호를 알아내는 것도 가능하다. 실제로 소스 코드를 들여다보니 코멘트가 굉장히 많았는데, 이는 환경 변화에 따라 멀웨어가 끊임없는 업데이트를 받아왔다는 뜻이다. 물론 그러다보니 코드가 깔끔하다는 느낌은 없다. 그러나 기능은 멀쩡하게 실행된다.
그렇다면 이 로우POS는 어떻게 탐지하고 막아낼 것인가가 문제다. 애초에 리버스 엔지니어링을 한 것도 이 문제에 대한 해결책을 찾고자 함이었다. 결론부터 말하자면 로우POS의 완벽한 대항마는 아직까지 존재하지 않는다. 다만 로우POS의 공격 성공률을 낮출 수는 있다.
1) 실행되는 프로그램들을 화이트리스팅 하는 편이 좋은 방법이다. 즉 사내 네트워크에서는 특정 프로그램만 실행되도록 설정하라는 뜻이다.
2) 위 방법이 ‘지나치다’고 생각한다면 Perl2Exe를 블랙리스팅하는 것도 괜찮은 방법이다. 또한 PsExec 등 공격자들이 주로 사용하는 툴들 역시 블랙리스팅 하면 효과가 더 좋아진다.
3) 엔드포인트에 대한 가시성을 확보해야 한다. 그래서 비정상적인 프로세스가 실행되고 있다면 바로 조치를 취해야 한다.
글 : 멜리아 켈리(Melia Kelley)
Copyrighted 2015. UBM-Tech. 117153:0515BC
[국제부 문가용 기자(globoan@boannews.com)]
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>
- 국내 최대 규모의 개인정보보호 컨퍼런스 PIS FAIR 2016 - 6월 9일(목)~10일(금) 개최- 공공·금융·민간 CPO, 개인정보처리자, 보안담당자 등 4,000여명 참석
- 공무원상시학습, CPPG, CISSP, CISA, ISMS등 관련 교육이수(최대 16시간) 인정
- CPO, 개인정보처리자, 보안담당자 등 사전 무료 참관등록(www.pisfair.org/2016/)