북한 정부를 배후로 둔 해커조직 라자루스(Lazarus)가 애플의 맥OS(MacOS) 환경을 공격하려 한 정황이 처음으로 포착됐다. 라자루스는 이제까지 마이크로소프트(MS)의 윈도 환경만을 공격해 온 것으로 알려졌다. 새롭게 공격 표적이 된 맥OS 이용자들의 주의가 요구된다.
보안연구자들의 분석 결과, 라자루스는 윈도와 맥OS 환경을 모두 공격 대상으로 삼는 악성코드와 이를 '셀라스트레이드프로(Celas Trade Pro)'라는 정상적인 암호화폐 거래 프로그램으로 위장한 소프트웨어(SW)의 설치파일을 만들어 상반기부터 배포했다. 암호화폐 거래소 인프라에 관여하는 인물들과 서비스 이용자를 노린 것으로 추정됐다. 연구자들은 이 활동을 '애플제우스 작전(AppleJeus Operation)'이라고 명명했다.
러시아 사이버보안업체 카스퍼스키랩은 지난주 이런 내용을 담은 애플제우스 작전 분석 보고서를 공개했다. 그 주된 내용은 북한 배후 해커조직 라자루스가 3년전부터 활용했던 악성코드 '폴칠'과 그 명령제어서버를 재활용해 아시아 지역내 암호화폐거래소를 이용하거나 인프라에 관여하는 윈도 및 맥OS 컴퓨터를 감염시켰다는 사실과 그 단서가 되는 악성코드의 기술적 특성 분석 결과다. 카스퍼스키랩 측은 실제 감염 피해를 입은 이용자 현황이나 침해당한 암호화폐거래소 등의 명세를 공개하지는 않았다.
■ 해커조직 라자루스, 아시아 지역 암호화폐거래소 이용자 공격…'애플제우스 작전'
27일 현재 카스퍼스키랩이 배포 중인 보고서에 따르면 라자루스의 애플제우스 작전은 현재 진행 중인 암호화폐거래소 공격 사례 조사 과정에서 파악됐다. 보고서는 "피해자를 감염시킨 트로이목마화한 암호화폐 거래 애플리케이션은 이메일을 통해 그 회사(암호화폐거래소)에 권장된 것이었다"며 "무고한 회사 직원이 의심 없이 (추천받은대로) 멀쩡해 보이는 웹사이트에서 외부 애플리케이션을 내려받았고 그 컴퓨터가 '폴칠(Fallchill)'이라 알려진 악성코드에 감염된 것으로 드러났다"고 설명했다.
카스퍼스키랩의 연구자들에 따르면 폴칠은 라자루스가 과거 제작해 사용했던 오래된 공격툴이었다. 애플제우스 작전을 통해 라자루스가 다시 폴칠을 사용하기 시작했다는 게 확인됐다. 또 폴칠 악성코드를 품고 정상적인 암호화폐 거래 SW로 위장한 프로그램의 설치파일은 윈도와 맥OS, 각각의 운영체제(OS) 환경에 맞는 2가지 버전으로 배포됐다. 맥OS를 노리는 공격은 그간 추적된 지능형지속위협(APT) 활동 사례 중 최초로 추정됐다. 이 설치파일 배포 웹페이지에선 조만간 리눅스 OS 버전용 설치파일도 내놓을 것으로 예고됐다.
연구자들은 "지난 몇달간 라자루스는 일부 은행, 다수의 글로벌 암호화폐거래소 및 핀테크 업체 환경에 성공적으로 침입했다"고 표현했다. 카스퍼스키랩의 공식 보도자료에 따르면 공격자들이 침입에 성공한 곳은 '아시아'권의 암호화폐거래소였고, 이들의 목표는 악성코드로 감염시킨 시스템에서 암호화폐를 탈취하는 것이었다.
연구자들은 또 "라자루스 그룹이 타깃 OS 목록을 확장했다는 사실은 비(非) 윈도 플랫폼 이용자들에게도 경각심을 불러일으키는 일이 될 것"이라고 지적했다. 라자루스는 그간 윈도 플랫폼만을 겨냥한 공격 활동을 수행했다. 맥OS를 위협 대상에 포함시킨 이유는 뭘까. 윈도 못지 않게 맥OS 사용 비중이 늘어 그만큼 공격할 가치가 커졌기 때문으로 풀이된다.
카스퍼스키랩 보고서는 결론에 "일반 이용자, 특히 IT기업 환경에서 맥OS에 관심이 늘고 있다"며 "여러 개발자와 엔지니어가 맥OS를 사용하는 환경으로 전환하고 있다"고 지적했다. 이어 "숙련된 사용자, 공급망에 속한 SW개발자, 일부 고가치표적을 위협하는 공격자들이 맥OS 악성코드 툴을 보유하게 됐다"고 덧붙였다. 또 "향후 라자루스는 (자신들의 악성코드가) SW개발자들이 기본 플랫폼으로 사용하는 모든 플랫폼을 지원하도록 만들 것"이라며 "개발자들을 공략하면 여러 문(공격통로)을 한 번에 열 수 있기 때문"이라고 내다봤다.
■ 윈도-맥OS용 정상 암호화폐 거래용 프로그램에 포함된 업데이트 모듈로 위장
연구자들은 셀라스유한회사(Celas Limited)라는 업체에서 개발한 암호화폐 거래 SW '셀라스트레이드프로'의 설치파일에서 감염된 시스템의 정보를 수집하고 추가 공격을 유도하는 악성코드를 발견했다. 윈도 및 맥OS 모두 노린 악성코드가 각 환경에 맞는 설치파일에 숨겨졌고, 비슷한 악성 동작을 수행하는 것으로 파악됐다. 두 플랫폼용 악성코드는 크로스플랫폼 개발도구인 'QT' 프레임워크를 통해 구현됐다.
셀라스트레이드프로는 일종의 올인원스타일 프로그램으로 그 자체는 악성 동작을 수행하지 않았다. 배포처의 홈페이지에 따르면 출시 시점은 2018년 4월 29일이다. 악성코드가 발견된 윈도용 설치파일은 2018년 6월 29일 생성됐다. 카스퍼스키랩 연구자들이 조사를 시작할 시점에 그 설치파일을 셀라스 홈페이지에서 누구나 내려받을 수 있었다. 연구자들은 프로그램에 포함된 업데이트 모듈(Updater.exe)에서 의심스러운 점을 발견했다.
업데이트 모듈은 프로그램 설치파일이 실행될 때 즉시 구동됐다. 원래 프로그램과 동일하게 개발업체의 유효한 전자서명을 포함하고 있었다. 코드 작성자는 이 모듈 개발 프로젝트에 '제우스(jeus)'라는 코드명을 썼다. 이는 프로그램의 디버그 정보 파일(PDB) 내 업데이트 모듈의 경로에 포함돼 있었고 고유 HTTP 메시지데이터 분리 문자열에 사용됐다. 업데이트 모듈의 생성 시점은 2018년 6월 15일이었다.
악성코드는 감염된 피해자의 시스템 정보를 수집해 서버로 보내는 역할을 했다. 실행될 때 감염 시스템의 고유 식별자로 쓸 난수값을 생성했다. 그리고 '시스템프로세스'를 제외한 프로세스 목록, 레지스트리의 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' 키에 포함된 특정 OS 버전 값을 수집했다. 이 값은 윈도10에만 존재하기 때문에, 악성코드 제작 환경도 윈도10로 추정된다.
악성코드는 감염 시스템에서 수집한 값을 악성코드에 삽입된 XOR 연산 암호화키로 암호화한 뒤 서버에 HTTP 통신으로 업로드한다. HTTP 통신을 수행하는 웹서버 경로는 'www.celasllc.com/checkupdate.php'다. 이곳이 거래 프로그램 개발업체에서 관리하는 정상 웹사이트가 감염된 것인지, 처음부터 개발업체 것처럼 위장해 만들어졌는지는 불분명하다. HTTP 통신으로 데이터를 업로드한 감염 시스템의 악성코드는 서버의 응답을 확인한다. 악성코드는 특정한 응답에 반응해 base64 및 RC4 방식으로 복호화한 추가 악성코드 실행파일을 만든다.
연구자들은 윈도용 셀라스트레이드프로 설치파일에서 업데이트 모듈 형태로 발견한 2018년 6월 15일자 악성코드와 유사한 파일을 더 찾아냈다고 밝혔다. 기존 업데이트 모듈을 안정화한 2018년 7월 2일 만든 버전에서 2018년 8월 3일과 11일에 각각 만들어진 악성코드 2종을 찾아냈다는 설명이다.
맥OS용 악성코드 역시 셀라스라는 업체가 홈페이지에서 배포한 셀라스트레이드프로의 맥OS용 버전에서 발견됐다. 맥OS용 프로그램 설치파일에는 'autoupdater'라는 업데이트 모듈이 숨어 있었다. 이 모듈은 프로그램이 설치된 시스템이 재부팅한 직후 백그라운드 동작을 시작하는 악성코드다. 악성코드는 명령제어서버와 통신을 수행해 서버에서 추가 실행파일을 내려받아 구동한다.
보고서는 "악성코드와 서버간 통신은 윈도용 업데이트 모듈의 방식을 따르고, 암호화된 데이터는 전달되는 동안 이미지 파일로 위장해 업로드 및 다운로드된다"고 설명했다. 윈도용과 비슷하게 감염 시스템의 고유 식별자로 쓸 난수값을 생성하고, 맥OS의 호스트명, OS 유형 및 버전, 시스템아키텍처, OS 커널 유형 및 버전을 수집한다. 수집 데이터를 암호화하고 전송하는 과정은 윈도 버전과 동일했다.
맥OS 컴퓨터에 셀라스트레이드프로 SW가 한 번 설치되면 악성 동작을 수행하는 업데이트 모듈은 시스템에 '.com.celastradepro.plist'라는 파일명으로 실행된다. 파일명의 맨 앞자리가 마침표 문자(.)로 시작하는 게 특징으로 꼽힌다. 마침표 문자로 시작하는 애플리케이션은 맥OS 의 파인더(Finder) 또는 기본 터미널 디렉토리 목록에서 표시되지 않는다.
■ 2015~2017년 등장한 백도어 '폴칠' 변종으로 확인…라자루스 소행 추정
카스퍼스키랩 보고서는 악성코드의 윈도 버전 특성을 상세 분석한 결과를 함께 담았다. 셀라스트레이드프로의 업데이트 모듈은 자신이 감염시킨 시스템의 정보를 수집한 뒤 명령제어서버를 통해 2차 악성코드 설치를 유도한다. 이 때 추가 설치되는 2차 악성코드는 최종적으로 과거 라자루스그룹이 제작, 활용했던 백도어 악성코드 '폴칠'을 시스템에 심어넣는 역할을 한다.
2차 악성코드의 윈도 버전은 2018년 4월 19일 생성된 윈도용 이동식실행파일(PE) 형태로 msn.exe라는 이름을 쓴다. 파일 크기가 약 100메가바이트(MB)에 달한다는 점이 눈길을 끈다. 비정상적으로 큰 파일 크기는 인터넷을 통해 쉽게 전송될 수 없게 하려는 공격자의 의도에 따라 불필요한 데이터를 끼워넣은 결과일 것으로 추정됐다. 이 악성코드가 실행되면 윈도 레지스트리에 악성동작을 수행하는 서비스를 등록한다. 악성코드는 16바이트 암호화 키를 포함한 파일(msndll.log), 암호화된 환경설정 데이터 파일(msncf.dat), 암호화된 3차 악성코드 파일(msndll.tmp), 암호화된 4차 악성코드(msndll.dat)를 포함한다.
4차 악성코드가 바로 연구자들이 과거 라자루스그룹에서 사용했고 최근 재사용했다고 판단하는 백도어 악성코드 '폴칠'이다. 폴칠 백도어를 실행하는 과정은 '폴칠 로더'에 해당하는 3차 악성코드, 난수값, 16바이트 키, 폴칠의 경로 등을 조합해 암호화된 4차 악성코드, 즉 폴칠 백도어를 복호화하는 것으로 시작한다. 복호화된 폴칠은 다시 폴칠 로더를 통해 실행된 후 시스템의 메모리에 올라간다.
폴칠 백도어는 다양한 기능을 감염된 컴퓨터를 완전히 통제할 수 있다. 명령제어서버를 통해 전달된 다양한 명령을 수행할 수 있다. 감염 시스템의 ▲레지스트리 키에 현재시각 및 환경설정 데이터 쓰기 ▲환경설정 데이터 보내기 ▲레지스트리 값 고치기가 가능하다. ▲윈도 명령어 실행 ▲임시파일 저장 및 명령제어서버에 파일 업로드 ▲작업 디렉토리 표시와 변경 ▲프로세스 정보 수집 ▲프로세스 종료와 시작 ▲사용자권한 보안 프로세스 생성 ▲특정 호스트 및 포트 연결 ▲드라이브 정보 확인 ▲디렉토리 목록 표시 ▲파일 탐색도 할 수 있다. ▲특정 파일에 데이터 쓰기 ▲명령제어서버에 특정 파일 내용 읽고 업로드 ▲여러 파일 압축 후 명령제어서버에 업로드 ▲특정 파일 소거 ▲파일의 타임스탬프 다른 파일에 복사 ▲악성 서비스 종료 및 자가 삭제 ▲명령제어서버에 유니코드문자 'Not Service' 보내기도 된다.
카스퍼스키랩 측은 이번 공격 이전에도 여러 폴칠 악성코드 구버전을 발견했다. 보고서를 통해 구버전 폴칠 13종의 MD5 해시값과 악성코드 제작 시기의 단서가 되는 파일의 타임스탬프 값을 제시했다. 폴칠 구버전 13종의 타임스탬프 값은 2015년 1월부터 2017년 11월에 걸쳐 있었다.
연구자들은 기존 13종의 악성코드 제작 관련 활동을 라자루스의 소행으로 추정했다. 이는 다른 미국 사이버보안업체 포티넷과 미국 국토안보부 산하 침해사고대응팀(US-CERT)을 통해서도 확인된 사항이라고 강조했다. 그 근거로 여러 폴칠 악성코드에서 명령제어서버와의 통신에 사용된 동일한 RC4 암호화 알고리즘 및 16바이트 키를 확인했다고 설명했다.
관련기사
- "북한 배후 해커그룹 안다리엘, 잠재 공격 대상 확대"2018.08.27
- 북한 배후 해커그룹 '안다리엘' 10년 추적기2018.08.27
- "한국·아시아서 APT·신종 보안위협 급증"2018.08.27
- 평창동계올림픽 해킹, 어떻게 시작됐나2018.08.27
연구자들은 그리고 이번 공격도 역시 라자루스의 소행일 거라 추정했다. 기존 악성코드와 새로운 악성코드가 동일한 RC4 알고리즘과 키를 사용하고 있었다는 점, 새로운 악성코드가 공격을 위해 통신을 수행한 명령제어서버의 IP주소가 기존 악성코드 버전과 동일했다는 점을 근거로 제시했다. 공격자는 과거 제작했던 폴칠 백도어의 코드와 그 명령제어서버 인프라를 재사용했다는 설명이다.
카스퍼스키랩은 폴칠의 새로운 버전에서 악성코드가 북한과 연관성을 직접 드러낸 특징도 발견했다. 악성코드는 명령제어서버와 통신할 때 사용하는 HTTP 헤더 정보를 포함했다. HTTP 헤더 정보에 포함된 항목 중 'Accept-Language'가 있었다. 웹서버가 콘텐츠를 어떤 언어로 제공하는 것이 상대 컴퓨터(클라이언트) 환경에 적절할지 추정하는 단서다. 이 항목의 값으로 'ko-kp'라는 문자열에 해당하는 언어가 가장 높은 가중치를 갖고 제시됐다. 앞의 'ko' 문자는 한국어(Korean)라는 언어를 의미하고 뒤의 'kp' 문자는 '조선민주주의인민공화국(Democratic People's Republic of Korea)', 즉 북한의 공식 국가명을 지칭한다.