상세 컨텐츠

본문 제목

비트코인(Bitcoin)... '채굴'에 환장한 악성코드 주의

전문가 기고

by 알약(Alyac) 2014. 5. 27. 09:33

본문

'비트코인'이라는 단어... 요즘 한번쯤은 들어보셨을 겁니다. 

도대체 이 '비트코인'이라는 녀석의 정체는 뭐고 도대체 뭐가 다른걸까요? 


인터넷상에서 이루어지는 전자거래에서, '상대방이 보내는 전자화폐가 유효한지 아닌지를, '누가', '어디서' 증명해주는가?'는 매우 중요한 기준입니다. 


거의 모든 공식적인 통화들은 현금 등 실물을 은행에 예치하거나 신용거래 한도를 설정한 후, 은행, 카드사 같은 금융기관이 주관해 전문 인증기관들과 연계하여 화폐의 이동을 처리하는 전자거래 방식을 이용하고 있습니다. 

 

'사이버머니'를 예로 들어봅시다. 어떤 게임내에서 사용되는 아이템이나 게임머니를 생각해보면 이해가 쉬우실 텐데요. '게임'에서 '게임 유저'들이 사이버머니를 사용합니다. 사이버머니는 '게임제작자'가 발행주체로써 만들죠. 그리고 규모가 커지면 거래가 활발해집니다. (예전에 싸이월드에서는 '도토리'가 갑이었죠^^;)



거래 알고리즘 측면에서, '비트코인'과 다른 공식적인 전자통화들의 가장 큰 차이는 여기에 있습니다.


‘사토시’라는 정체 불명의 프로그래머가 고안해낸 인터넷 상의 가상화폐, ‘비트코인’에는 거래를 주관하는 기관이 없습니다. 사람들은 언제부턴가 비트코인을 만드는 과정을 광산업에 빗대어 캔다’(mining)라고 표현하고 있는데요. 오직 ‘채굴’(mining)만이 있을 뿐입니다.  



비트코인... 그 특별함에 대하여


'나카모토 사토시'라는 사람이 컴퓨터로 수학 문제를 풀면 비트코인을 발굴하고, 누구도 소유하지 않는 돈을 만들어낼 생각을 발표(출처: http://bitcoin.org/bitcoin.pdf)했다고 합니다. 그러나 이에 대해서도 사실인지 아닌지에 대한 논란이 끊이지 않고 있습니다. 비트코인은 철저히 익명성이 보장된 전자화폐 시스템이므로 ‘나카모토 사토시’ 역시 실명/가명인지, 개인인지/단체인지, 국적이 어느 곳인지 정확하게는 전혀 알려지지 않고 있습니다.

 

비트코인은 가상화폐이자, 화폐가 작동하는 방식입니다. 그러나 우리가 쓰는 돈처럼 손에 쥘 수 있는 물건은 아닙니다. 그저 온라인에서 떠도는 코드일 뿐... 몇 개 더 덧붙이자면, 비트코인은 소수점 8자리까지 나눠질 수 있다고 합니다. 100분의 1비트코인은 1센티비트코인. 1천분의 1비트코인은 1밀리비트코인이라고 부릅니다.



비트코인을 얻는 유일한 방법, '채굴'


인터넷 검색 사이트에 ‘비트코인 채굴’이라는 단어를 검색해 보면, 금광을 캐듯 비트코인을 마구 캐낼 수 있다는 글과 어떻게 하면 '비트코인'을 더 빠르게 채굴할 수 있는지에 대한 팁들이 쏟아집니다. 전체 발행량이 2100만 비트코인으로 한정되어있다는 것, 중국이 비트코인 거래를 금지했다는 것 등 다양한 정보가 있지만 정작 비트코인이 어떻게 발행되고, 어떤 원리로 있지도 않은 돈이 생겨나 거래되는지에 관한 구체적인 정보는 찾기 어려워 보입니다. (이게 스타크래프트의 SCV처럼 그냥 있다고 막 캐서 가져오는게 아니거든요;;)


'채굴'이란 단순히 ‘채굴 프로그램’을 돌려서 비트코인을 얻는 것에 불과한 것 같지만, 실은 비트코인의 거래시스템을 유지하는 근간입니다. 채굴이 바로 비트코인 거래들의 유효여부를 검증하는 연산작업이기 때문입니다. 채굴자가 얻는 비트코인은 사용된 컴퓨팅 리소스에 대한 인센티브인 셈입니다.


조금 자세하게 설명드리자면...컴퓨터를 이용해 암호화 문제를 풀면 비트코인이 일정량이 생성이 됩니다. 문제를 풀 수록 암호화가 고도화되어 보안성이 높아지지만, 그만큼 문제를 풀기가 어려워집니다. 생성되는 비트코인의 양은 4년마다 반감되고 총량은 2100만 비트코인입니다. 그러다보니 '채굴'을 위해 기업적으로 고사양 시스템을 구동시키기도 합니다. 


비트코인을 얻기 위해 풀어야 하는 수학 문제는 싸인콘젠트코싸인 등의 수학문제보다 훨씬 어렵습니다. 보통의 일반 PC 1대로 5년 정도 걸려야 풀 수 있는 수식이지요...  2009년부터 사람들이 비트코인을 캐기 시작해서 2013 8월까지 약 1200만 비트코인을 캔 것으로 알려지고 있습니다.  



거래를 책임지는 주관사가 없는데, 개인들이 이것을 어떻게 가치로써 증명하는가?


예를 들어보겠습니다. 먼저 비트코인을 거래하려는 ‘B’는 P2P네트워크에 거래하고자 하는 사실을 알립니다.


“B가 C에게 1비트코인을 전송”


널리 검증된 전자서명 알고리즘을 활용해 거래 트랜잭션에 공개키를 첨부, ‘개인키’로 암호화해 알리기 때문에 ‘누가 누구에게 얼마를 준다는 내용’과 ‘보내는 사람(실명이 아닌 비트코인 전자지갑 소유자)이 직접 내용을 외쳤다는 것’은 쉽게 증명이 됩니다. 그렇다면 남은 문제는 ‘B가 1비트코인 이상을 가지고 있는지 또, 보유액 이상의 비트코인을 여러 명에게 동시에 지불하지는 않았는지’입니다. 이 점만 확인되면 거래 무결성은 완전히 입증됩니다. 


보유액을 확인하는 방법은 간단합니다. B의 이전 거래를 확인해서 ‘A가 B에게 1비트코인 이상을 전송 했는지’ 확인하면 됩니다. 물론 이 글에서 설명하는 모든 조건을 만족하는 ‘유효한 거래’여야 합니다. 이제 ‘B가 전송하는 1비트코인이 C에게 처음 전송하는 것인지’ 확인하면 유효한 거래로 인정되고, 다음에 발생할 거래에서 본 거래를 참조할 수 있을 것입니다. 이것을 ‘거래블록'이라고 합니다.


비트코인 거래 원리


그런데 이것을 증명하는 방법이 약간 복잡합니다. 누군가(해커겠지요..) ‘가짜 거래’를 만들어 P2P 네트워크에 내민다면 가짜와 진짜를 구별해야 하기 때문이죠.


네트워크가 이 문제를 해결하기 위해서는 ‘동일한 거래가 나타나면 첫 번째 거래만을 유효한 거래로 취급’해야 하므로, 일부러 복잡한 연산을 동반해 해당 거래의 발생시간을 인증합니다. 앞자리가 일정 수 이상의 '0'으로 시작하는 해시 결과가 나올 때까지 난수를 대입, 연산을 반복해 만족하는 값이 나오면 거래시간이 인증되고, 해당 해시결과를 다음 블록의 헤더에 적용합니다. 이런 과정이 반복되면 '거래블록체인'이 되고 연산 조건은 노드들의 평균적인 연산속도가 빨라질수록 난이도가 자동으로 조절되어, 0의 자릿수가 늘어나면서 결과 값을 구하기가 점점 어려워집니다.


물론 가짜 거래블록을 만들어 이러한 연산을 반복, 정상적인 거래로 위장할 수도 있지만, 한 개의 블록처리에도 상당히 많은 컴퓨팅 리소스가 필요하기 때문에 특정 시점에 생성한 가짜 블록이 여러 개의 긴 블록체인으로 발전하는 데에는 한계가 생깁니다. 자발적으로 정상적인 채굴에 매진하는 마이너들이 언제나 더 많기 때문에, 공격자의 가짜 블록체인은 자연스럽게 만들어지는 정상 체인보다 항상 짧을 것이라는 점에 착안해 네트워크는 항상 더 긴 블록체인을 바른 체인으로 인정하도록 설계되어 있습니다. 다수결 방식인 셈입니다.


이렇듯 정상거래라는 것이 증명되려면 ‘이전의 거래’, 또 ‘그 이전의 거래’를 계속 참조해야 하며, 이러한 일련의 거래는 ‘검증의 어려움’, ‘어려운 검증을 마친 블록체인의 길이'에 의해 더 견고해집니다.



비트코인과 해킹, 그리고 '보안'


쌩뚱맞게 알약블로그에 왠 비트코인 이야기를 하느냐? 라고 생각하실지 모르겠습니다만, 비트코인은 '해킹' 그리고 '보안'과 관련이 많습니다.


얼마전 세계 최대 비트코인 환전소인 마운트곡스가 해킹되어 5천억원대의 비트코인을 도둑맞고 파산한 사건이 큰 이슈가 되었습니다. 마운트곡스는 결국 지난달(4월) 공식 파산을 선고 받았습니다. 새로운 가상화폐에 사람들의 관심이 높다는 것을 말해주고 있는데요. 사건 초기에는 ‘정식 통화도 아닌 비트코인이 결국에 망했다’라는 듯한 인식이 퍼졌으나, 얼마 지나지 않아 비트코인의 시세가 회복기 시작했습니다. 이유는 비트코인에 대한 기술적인 배경을 잘 이해하고 있는 사람들 중 일부는 비트코인이 불안한 통화라고 생각하지 않고, 오히려 시세하락을 투자의 기회로 보았기 때문입니다. 최근 블룸버그통신은 비트코인 시세 정보를 제공하기로 했으며, MIT는 캠퍼스 내에서 비트코인을 사용하자는 캠페인을 벌이기도 했습니다.


사실, 마운트곡스 사건은 비트코인의 거래 알고리즘 자체에 문제가 있어 일어난 것이 아니라, 비트코인을 달러나 원화 같은 통화로 바꿔주는 환전소가 해킹을 당해 고객이 예치해둔 비트코인을 도난 당한 것입니다. 실제 통화를 취급하는 은행이나 전자상거래에서 충분히 안전하다고 증명된 암호화 기술들을 사용하므로, 기술 자체의 결함은 아니었습니다. 정식 은행도 보안을 게을리하면 해킹을 당할 수 있는 것과 같습니다. 비트코인 거래가 시작된 지 5년이 넘어 총 발행량의 통화가치가 8조원에 이르고 있는데 아직까지 알고리즘자체의 큰 문제는 발견되지 않아, 비트코인을 안정된 통화로 보는 사람도 많습니다.


정말이지 한 치 앞도 장담할 수 없는 비트코인... 앞으로 비트코인이 해킹에 어떻게 대비할지, 궁금해지네요.



점점 증가하고 있는 '비트코인을 노리는 악성코드'


논란의 비트코인은 문제점으로 지적되는 부분이 많습니다. 

어느 국가의 통제도 받지 않기 때문에 돈세탁, 탈세, 범죄수익 은닉 등에 악용될 여지가 있다는 점, 분실이나 사고 시 책임을 지는 기관이 없다는 점, 한국은행에서는 비트코인을 정식 화폐로 인정하지 않는다는 성명을 냈다는 점 등. 무엇보다 비트코인 같은 방식의 통화가 여러 개 더 있고, 모두 가치(시세)가 안정적이지 않아 투자의 대상으로는 상당히 위험하다는 점은 꼭 기억해둘 필요가 있습니다.


그리고 또 하나, '해커들이 비트코인을 얻기 위해 악의적으로 공격할 수 있다는 점'입니다.

최근 비트코인을 노리는 악성코드가 그 인기만큼이나 지속적으로 증가하고 있는데요.


관련 기사 :

비트코인 훔치는 악성코드 확산

출처 : 아이뉴스24 http://news.inews24.com/php/news_view.php?g_serial=805126&g_menu=020600&rrf=nv

 
랜섬웨어, 비트코인 좀비PC로 목적 확대



알약에서도 '비트코인 채굴 악성코드'에 대해 분석해 보았습니다.

비트코인 채굴에 있어서 가장 중요한 것은 PC의 성능이 충분히 뒷받침되어야 한다는 것입니다. 그래서 악의적인 공격자들은 '비트코인을 자동으로 채굴해주는 프로그램'을 만들어, 일반 사용자 PC에 몰래 이를 감염시킵니다. 최대한 많은 PC에 악성코드를 유포시키고, 감염시켜야 최대한 많은 양을 얻어낼 수 있기 때문이지요. 이를 통해 부당하게 금전적인 이득을 취하려고 시도하는 것입니다.. 바로 이것이 비트코인 채굴 악성코드가 등장하게 된 계기가 아닐까 합니다.

그러면, 알약에서 분석한 내용을 살펴보겠습니다.

1. 악성파일 분석(S*U10***.exe)
파일정보

Detection Name

File Name 

MD5 

Size(Byte) 

Trojan.KillAV.58368

S*U10***.exe 

B39B8E0*****8E120F17****314FF7E

289,440


악성코드 'SD*10***.exe'는 프로세스 시작 시 지정된 Anti-Virus 제품에 대한 종료를 하기 위해, 프로세스 목록에서 알약과 같은 백신 관련 프로세스를 검사합니다. 백신이 실행 중인 것을 확인하면, 프로세스 정보를 얻어온 후에 'taskkill' 명령어를 이용하여 해당 프로세스를 종료시킵니다. 알약 자체 분석 결과, 국외 제품 이외에 국내 백신 제품들에 대해서는 프로세스 종료와 더불어, 백신 자체의 삭제를 수행하고 있는 것으로 확인했습니다.



2. 악성파일 분석(svch***.exe)

파일정보

Detection Name

File Name 

MD5 

Size(Byte) 

Trojan.KillAV.58368

 svch***.exe

 F981A10*****F77A6ADB****CE32C

 58,368


악성코드의 첫 시작 부분을 살펴보면, 인자를 통해 install이 전달 되느냐, remove가 전달 되느냐에 따라 악성코드 서비스가 설치 또는 제거됩니다. 악성코드 서비스가 설치되는 부분을 살펴보면, 그럴듯해 보이는 서비스명과 설명을 사용해서 마치 시스템 서비스인 것처럼 위장하고 있습니다. 최종적으로 생성되는 서비스 정보는 아래와 같습니다. 윈도우가 시작될 때마다 자동으로 실행되는 것을 확인했습니다.


생성된 악성코드 서비스


*원격서버 통신 및 2차 악성파일 다운로드 시도

이는 2차 악성파일을 내려 받기 전에 2차 악성코드의 존재여부를 확인합니다. 만약 존재하지 않는다면, 특정 URL에 접속하여 관련 파일을 내려 받습니다. 악성파일을 내려받은 후에는 악성코드 버전을 체크하고, 추가적인 악성코드 다운로드 시도 등의 행위를 수행합니다.



3. 악성파일 분석(im****ase1**81.exe)

파일정보

Detection Name

File Name 

MD5 

Size(Byte) 

Misc.Riskware.BitCoinMiner

im****ase1**81.exe 

 36FDC110*****4E8B3C2F1****58E3D2

 103,548


해당 악성파일은 자가 복제를 수행하여, 원본이 삭제되어도 실행될 수 있도록 합니다. 무시무시하군요. 파일 이름은 무작위로 생성되는데, 생성되는 경로 및 형식은 아래와 같습니다.


[Windows 경로]\setup[Random].exe



그리고 자가 복제한 파일을 레지스트리에 등록해, 윈도 운영체제 시작 시 자동으로 실행되게 합니다. 특이한 것은, 해당 악성코드를 실행하기 전, 같은 행위를 하는 프로세스의 이름을 확인합니다. 만약 실행 중이라면, 해당 프로세스를 종료시킵니다.



*BitCoinMiner 드랍

드디어 본격적이네요. 해당 악성코드는 비트코인을 채굴하는 BitCoinMiner 채굴기를 드랍합니다. BitCoinMiner 실행파일은 악성코드의 리소스로 되어 있어, 리소스에서 파일을 추출해 생성하게 됩니다. 아래는 BitCoinMiner가 드랍되는 경로를 나타낸 것입니다.


[Windows 경로]\notepades.exe



그리고 드랍한 BitCoinMiner 프로그램에 적절한 인자를 주어 실행시킵니다. 공격자는 본인이 접속할 수 있는 계정 정보로 접속을 시도하도록 조치를 미리 취했습니다. 채굴이 시작되면, 시스템의 자원을 사용하게 되어 악성코드가 심겨진 사용자 PC의 성능이 저하됩니다.


비트코인 채굴 악성코드가 계정에 접속하여 채굴하는 화면


BitCoinMiner가 실행되고 나면, CPU 점유율과 메모리 사용량이 급격하게 증가하여, PC의 성능이 두드러지게 저하됩니다. 해당 악성코드는 '자가삭제' 기능까지 탑재하여, 악성파일을 삭제하기 위한 배치파일을 생성하고, 실행시켜 악성코드 자기 자신을 삭제시키는 치밀함도 보이고 있습니다. 



해당 악성코드는 단순한 유포가 아닌, 웹사이트 해킹등을 통해 조직적, 체계적으로 악의적인 행위를 저지르고 있는 것으로 보입니다. 따라서 이미 공격자는 우리 예상보다 많은 비트코인 채굴 봇을 보유하고 있을 가능성이 높습니다. 비트코인의 가치가 높아진다면 향후 DDoS공격을 위한 Botnet이 아닌, 비트코인 채굴을 위한 Botnet이 더 성행할 가능성도 배제할 수는 없을 것 같습니다.


비트코인 관련 이미지 출처 
비트코인 거래 원리 : http://bitcoin.org/bitcoin.pdf
비트디펜더 공식 블로그 Hot for Security
* 해당 블로그 이미지는 공식적으로 인용 허가를 받았습니다.

관련글 더보기

댓글 영역