- 스마트폰을사용하지않거나충전중일때만악성행위 - 2014. 5 코드분석팀송지훤 jihwonsong@kisa.or.kr 본보고서의전부나일부를인용시, 반드시 [ 자료 : 한국인터넷진흥원 (KISA)] 를명시하여주시기바랍니다.
[ 목차 ] 1. 개요 2 2. 악성앱배포방식 2 3. 채굴악성앱유형분석 3 3-1. 정상앱을리패키징하여채굴기능포함후재배포 3 3-2. 앱개발시의도적으로채굴기능포함 9 4. 스마트폰악성앱감염예방방법및대처 11 5. 참고문헌 12 [ 붙임 ] 13
1. 개요 가상화폐에대한관심과스마트폰의하드웨어성능이향상됨에따라 PC에만국한되어있던가상화폐채굴악성코드가스마트폰을대상으로하는악성앱으로도출현하고있어사용자의주의가필요하다. 가상화폐채굴동작은지속적으로과도한연산을하여기기를혹사시키고수명을단축시킬수있으며많은양의전력을소모한다. 이때문에공격자들은자신의기기대신에다수의희생자스마트폰을사용하여돈을벌고있는것으로보인다. 이번에발견된악성앱은정상적인앱의기능을갖고있고, 사용자가스마트폰을이용하지않거나충전중일때에만채굴동작을하도록하여감염사실을교묘히숨겼다. 이로인해피해자들스스로가자신의스마트폰이공격자에게이용당하고있다는사실을인식하기쉽지않아피해가커질수있다. 2. 악성앱배포방식 악성앱은안드로이드인기유료앱 (Business Calendar Pro 등 ) 에채굴악성코드를주입후리패키징 (Repackaging) 하여블랙마켓등에서무료로배포하거나정상앱개발시의도적으로채굴악성코드를일부포함하여배포한것으로보인다. 이악성코드를포함한앱들이지속적으로발견되고있고, 특히후자의경우는구글공식스토어에등록된앱의사례도발견되었기에다수의스마트폰이감염되었을것으로추측할수있다. 실제로악성앱을설치하여사용해보면정상적인기능을하는것처럼보인다. 그러나사용자몰래백그라운드에서악성행위를하고있으며사용자가스마트폰을사용하지않는등의상황에서만채굴을하기때문에악성앱의감염을알아채기도어렵다. - 2 -
< 구글플레이의정상앱 > < 악성앱실행화면 > < 설치된리패키징악성앱 > 앱리패키징 (Application repackaging) : 정상적인앱에악성코드를삽입하여다시 제작하는행위 3. 채굴악성앱유형분석 3-1. 정상앱을리패키징하여채굴기능포함후재배포 이가상화폐채굴악성앱은악성앱임을발견하기어렵게하기위하여악성행위의소스코드패키지이름을 com.google.ads 라는구글광고모듈의이름으로위장해삽입했다. 정상앱들중에도광고수익을목적으로동일한이름의모듈을포함한앱들이많기때문에일차적인의심을피할수있었다. 또한 com.stericson.roottools 라는오픈소스 (Open source) 프로젝트의루팅 (Rooting) 활용모듈을함께포함하고있었다. 이모듈은루팅된폰에서관리자권한으로채굴명령을실행시키기위해쓰였다. 오픈소스 (Open source) : 프로그램의소스코드를공개하고배포하여누구나사용할수있게함 루팅 (Rooting) : 안드로이드플랫폼모바일기기에서관리자권한을획득하는것 - 3 -
< 리패키징된악성모듈구조 > <RootTools 오픈소스프로젝트홈페이지 > 이악성앱은사용자가스마트폰의이상동작을느끼지못하도록하는부분에신경써서만들어졌다. 우선사용자가스마트폰을이용할경우, 즉스마트폰의화면을깨워서작동시킬경우자신의악성행위를중지시키고생성했던파일들도삭제한다. 이후일정시간주기로상태를체크하다가스마트폰을사용하지않는상태일때다시채굴을시작한다. 특히 Wifi 연결설정을하지않은상태일때에도, 20시 ~7시사이의야간이면스스로 Wifi 를활성화시키고채굴을시도한다. 이는사용자가잠을자는시간동안스마트폰을이용해채굴행위를하기위함으로보인다. < 사용자가폰사용시악성행위를숨기는코드일부 > < 야간 (20 시 ~7 시 ) 에활동하도록하는 코드일부 > - 4 -
악성앱은설치후, 부팅시부터동작하여 30 분마다주기적으로채굴가능한 상태인지를확인한다. < 부팅시악성행위를시작하게하는코드일부 > <30 분주기로상태를체크하는코드일부 > 악성앱은동작중에스마트폰이대기모드에들어가서채굴동작이멈추지않도록웨이크락 (Wake lock) 과와이파이락 (Wifi lock) 을설정해두고있다. 이를통해악성앱이장시간스마트폰의자원을극한으로사용하는악성행위를지속함으로써스마트폰의수명을단축시킬수있다. 웨이크락 (Wake lock) 과와이파이락 (Wifi lock) : 전력소모를줄이기위해서일정시간동안사용자의동작이없을경우프로세서를대기상태로바꾸거나 Wifi 연결을해제하여스마트폰이쉴수있도록하는데, 이기능을잠금으로써계속적으로깨어있거나연결상태를유지하는기능 악성앱이실행되면채굴활동을하기위한라이브러리파일을웹에서다운받아 생성하고, 이파일이실제로가상사이버화폐를채굴하는동작을하게된다. - 5 -
< 다운로드함수호출 > < 웹에서다운로드받아파일생성 > 다운로드경로등의중요정보는인코딩되어있어서악성앱내부의변환함수를 거쳐확인가능하다. 다운로드받는파일은비트코인과라이트코인을채굴할수있는오픈소스프로젝트인 Cpuminer 소스를빌드한라이브러리파일이다. 이라이브러리소스코드는누구나다운받아자신의 OS 환경에맞게빌드하여다양한기기에서가상화폐를채굴하는데사용할수있다. 이악성앱은관리자자격으로파일권한을 744(-rwxr--r--, 다른사용자들에게는읽기권한만주고소유자에게는파일을읽고쓰고실행시킬권리를줌 ) 로변경하고채굴행위를실행한다. - 6 -
<RootTools 를사용하여루트자격으로파일권한변경, 실행하는코드일부 > < 다운로드받은파일내부에포함된 Cpuminer 버전명 > <Cpuminer 오픈소스프로젝트홈페이지 > 이앱에서는라이트코인을채굴하며, 옵션에서 --algo=scrypt가라이트코인의알고리즘인스크립트방식을사용하겠다는의미이다. 반면비트코인은 SHA-256 알고리즘을사용한다. -o 부분은서버주소를나타내고 -O는일꾼의이름과비밀번호를나타낸다. -r은네트워크가불안정할때재시도횟수를나타내고, -t는 thread( 쓰레드 ) 개수, -B는백그라운드실행, -q는쓰레드당해쉬미터출력을비활성화한다는옵션이다. 그밖에도옵션의추가를통해프록시설정이나디버그모드활성화등을할수있다. < 옵션을설정하는코드일부 > 이악성앱은 3개의프로세스로채굴을진행하며, 감염된스마트폰의프로세서가 ARM의멀티미디어및신호처리응용프로그램의성능을향상시키기위한기술인 NEON(ARM Advanced SIMD) 의적용여부에따라서로다른라이브러리를사용하고있다. 이는하드웨어의성능을최대로활용하기위함으로보인다. - 7 -
채굴을할때단독으로할수도있지만, 개인이가지고있는시스템자원의한계때문에 pool( 생산자연합 ) 에속해서로협력하는것이일반적이다. 이앱도스마트폰이 PC에비해낮은사양이라는점을감안해서인지 pool에참여하여채굴을진행한다. 이경우가상화폐가채굴되면기여도에따라서이윤이배분된다. 라이트코인은 pool에가입할때사용자계정아이디와비밀번호를만들고, 그계정에속한일꾼들의아이디와비밀번호정보를별도로만든다. 일꾼들의아이디와비밀번호를이용하여채굴활동을하면일꾼을생성한계정이수익을얻는구조이다. 따라서악성앱에포함되어있는일꾼정보는공개되어도무방하며, 오히려이정보가많은채굴활동에활용될수록사용자에게는더많은수익이생긴다. 사용자는 pool 사이트에서그동안일꾼들이채굴활동을통해모아놓은화폐를자신의가상화폐지갑에보낼수있다. 따라서악성앱으로수익을얻는실제사용자정보를알기위해서는일꾼정보가아닌사용자계정정보가필요하지만, 채굴활동에는일꾼정보만필요하기때문에악성앱분석만으로는공격자정보를얻기어렵다. 그리고이악성앱은서버와주기적으로통신하여정보를주고받으며, 다운로드받을주소등을갱신하는동작을한다. < 서버와통신하는코드일부 > < 다운로드주소등을변경하는코드일부 > - 8 -
3-2. 앱개발시의도적으로채굴기능포함 이악성앱은포인트적립앱으로위장하여게임의설치나쇼핑을통해서 포인트를쌓을수있는것처럼보인다. < 포인트적립앱으로위장한악성앱 > < 악성앱실행화면 > 그러나백그라운드에서는충전중인지를확인하여채굴활동을하는악성기능을포함하고있다. 채굴활동을하면많은연산을하기때문에배터리가급속히소모되는데, 이를통해사용자가악성앱의감염을의심하지않도록하기위해충전상태일때만채굴활동을하는것으로보인다. 그리고충전중이더라도온도가높거나충전율이 15% 이하이면채굴을바로시작하지않고 1분간격으로상태를체크하며대기한다. < 충전이벤트브로드캐스트리시버 > < 충전여부와충전율체크하는코드일부 > 이앱도오픈소스프로젝트인 Cpuminer 라이브러리를사용하여스크립트 알고리즘으로도기 (Doge) 코인을채굴하지만라이브러리를웹에서다운받는대신 raw 리소스로앱내부에포함하고있는것이특징이다. 이앱도하드웨어성능을 - 9 -
최대한사용하기위해서프로세서의 NEON 기능여부에따라서로다른라이 브러리를이용하여채굴한다. < 앱내부 raw 리소스로포함되어있는 채굴라이브러리 > <Cpuminer 라이브러리를이용하여 도기코인을채굴하는소스코드일부 > 이악성앱의공격자는일꾼의비밀번호와 pool 계정정보를동일하게사용하고있어서악성앱내부의정보를통해 pool 계정에접근할수있었다. 이를통해 3월이후에는채굴활동이비활성화되었으며, 2주정도기간에약 160 도기코인을채굴하여공격자의지갑으로전송한것을확인했다. < 악성앱공격자계정의도기코인채굴, 전송정보 > 외국보안社 Trend Micro 가 14 년 3 월에발표한바에의하면, 이와같은 앱이구글공식플레이스토어에등록된것을발견하여구글에삭제조치를 요청했다고한다. 해당앱은당시 1 백만건이상다운로드된인기앱이었고, - 10 -
신고이후구글에의해삭제조치되었다. 그러나이사례는구글의공식스토어도 완벽하게믿을수는없음을시사하기에사용자의주의를요하는바이다. 구글플레이의채굴악성앱 구글플레이악성앱다운로드횟수 [ 출처 : Trend Micro 社 Blog] 4. 스마트폰악성앱감염예방방법및대처 한국인터넷진흥원 (KISA) 에서는다양한앱스토어에등록된앱들에대해서악성기능여부에대해지속적으로모니터링하고, 악성앱발견시삭제요청이나백신사공유등을통해피해를최소화하기위하여노력하고있다. 또한스마트폰의보안점검과보안공지사항을안내하는폰키퍼앱을배포하여스마트폰을안전하게사용할수있도록돕고있다. 사용자스스로도악성앱의감염을막기위해서알수없는출처의앱이설치되지않도록설정해두고, 공격자에게관리자권한을줄수있는루팅은자제해야한다. 그리고구글공식스토어이외의마켓에서앱을다운로드받는것은인기앱으로위장한악성앱을설치할가능성이매우높기때문에지양해야한다. 그러나이번사례처럼구글공식스토어에도악성앱이등록되어있을가능성이존재하므로앱을설치할시에과도한권한을요구하지는않는지항상확인해보고, 이따금실행중인앱을확인하여불필요하게실행되고있는앱이있으면삭제조치해야한다. 그리고기기의성능을주기적으로체크하는것도중요하다. 평소와다르게배터리수명이지나치게짧아졌다거나충전시간이오래걸리거나데이터사용량이늘어났을경우, Wifi가자동으로켜져있는경우는악성앱이설치되었 - 11 -
다고단정지을수는없지만감염을의심해보는것이좋다. 스마트폰에백신소프트웨어와폰키퍼를설치하고항상최신으로업데이트하는것도필요하다. 악성행위를하는앱을발견하면 118 센터등에신고하도록한다. 5. 참고문헌 -Trend Micro : http://blog.trendmicro.com/trendlabs-security-intelligence/mobile-malwaremines-dogecoins-and-litecoins-for-bitcoin-payout/ -Cpuminer : https://bitcointalk.org/index.php?topic=55038.0 -ARM : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205ik/babdjecb.html - 12 -
[ 붙임 ] 1. 알수없는출처앱설치제한설정 1 설정 일반탭 보안 2 디바이스관리 알수없는출처 체크가되어있지않도록설정 ( 체크가되어있으면알수없는출처앱의설치를허용한다는의미 ) 2. 폰키퍼사용점검방법 1 구글플레이스토어에서 폰키퍼설치 2 폰키퍼실행 정밀점검선택 3 악성앱발견시 삭제및신고 - 13 -