크립토마이너 해부: 마이닝 봇넷 차단
목차
서론
크립토마이너 해부 블로그 시리즈의 마지막 편에 오신 것을 환영합니다.
첫 번째 게시물에서는 암호화폐의 일반적인 특징과 다양한 속성, 그리고 특정 암호화폐가 공격자에게 더 매력적으로 보이는 이유를 살펴보았습니다.
두 번째 게시물에서는 다양한 마이닝 토폴로지를 악용하는 크립토마이닝 샘플을 분석했습니다.
이번 시리즈의 세 번째이자 마지막 글에서는 크립토마이너를 무력화하는 데 사용할 수 있는 두 가지 새로운 선제적 대응 기법을 소개합니다.
또한, 이 블로그 시리즈와 함께 Akamai의 리포지토리에는 여러 분석 도구도 함께 공개되어 있습니다.
모두가 알다시피, 최선의 방어는 공격입니다. 크립토마이닝 캠페인은 분산된 특성 때문에 방해하기가 매우 어렵습니다.
이 블로그 게시물에서는 일반적인 마이닝 토폴로지의 설계 구조를 역이용해 마이닝 프로세스를 효과적으로 차단하는 방법을 보여드립니다. 이번에 소개하는 기법은 Monero 크립토마이너를 대상으로 적용되었지만, 동일한 원리는 다른 암호화폐에도 충분히 활용될 수 있습니다.
크립토마이너 운영 차단
악성 크립토마이너 운영이 탐지되면 현재 두 가지 방법으로 차단을 시도할 수 있습니다.
풀 서비스 제공업체에 공격자 계정 차단을 요청하는 방법
공격자의 인프라 내 다른 서비스를 중단시켜 캠페인을 방해하는 방법
하지만 이 두 방법은 써드파티에 의존하기 때문에 절차가 복잡하고 시간이 오래 걸릴 수 있다는 문제가 있습니다.
Akamai는 더 나은 방법을 찾아냈습니다.
마이닝 토폴로지와 풀 정책을 활용해 두 가지 기법을 개발했습니다. 이는 크립토마이너 봇넷의 효율을 현저히 떨어뜨려 완전히 차단할 수 있으므로, 공격자는 인프라를 근본적으로 수정하거나 캠페인을 포기해야 할 수도 있습니다.
이 두 기법은 stratum 통신 방식을 악용해 프록시나 지갑 등 크립토마이닝 작업 계정과 관련된 핵심 구성요소를 차단할 수 있도록 설계되었습니다.
330만에서 0으로
Akamai는 6년간 활동해 온 악성 크립토마이너 운영을 표적으로 삼았습니다. 마이닝 토폴로지에서 핵심 취약점인 공격자의 마이닝 프록시를 차단함으로써, 해시레이트를 초당 330만 해시에서 0까지 떨어뜨릴 수 있었습니다(그림 1).
공격자가 손쉽게 수익을 올리던 것처럼 Akamai는 단 몇 초 만에 공격자의 잠재적인 연간 수익을 차단했습니다. 간단히 노트북만으로 해시레이트를 급감시키자, 해당 크립토마이너 운영자는 연간 2만 6천 달러에 달하는 수익원을 잃게 되었습니다.
그림 2의 영상은 Akamai가 "배드 셰어(Bad Shares)"라고 명명한 기법을 시연한 것입니다. 악성 크립토마이닝 프록시에 연결된 피해자 시스템이 등장하며, Akamai는 이 "배드 셰어"를 실행해 마이닝 프록시를 네트워크에서 차단하고, 마이닝 운영을 중단했으며, 피해자의 CPU 사용률을 100%에서 0%로 떨어뜨릴 수 있었습니다.
그림 2: 실험 환경에서 배드 셰어 기법 적용
이길 수 없다면 차단하라
풀을 통한 크립토마이닝은 유효한 해시 계산 결과, 즉 셰어를 제출하는 방식으로 이루어집니다. 크립토마이너가 수익을 얻으려면 마이닝 풀에 셰어를 지속적으로 제출해야 합니다. 마이닝 풀은 제출된 셰어를 받아 해시 결과와 난이도를 검증합니다.
이 검증 작업은 풀 서버가 수행해야 하는 작업 중 가장 부담이 큰 작업 중 하나이며, 특히 유효하지 않은 셰어가 많을 경우 그 부담이 더욱 큽니다. 삶에서 일어나는 많은 일들처럼 실수가 발생할 수 있습니다. 예를 들어 하드웨어 고장으로 인해 유효하지 않은 셰어가 풀에 제출될 수 있습니다.
무효한 셰어 처리는 많은 리소스를 소모하며, 대량으로 제출될 경우 서버에 과부하가 걸릴 수 있습니다. 따라서 마이닝 풀은 이러한 상황을 방지할 수 있는 보호 장치를 마련해야 합니다. 이에 따라 제출된 셰어가 서버 검증에 통과하지 못하면 대부분의 풀은 크립토마이너에게 일반적으로 일시 차단 형태로 적용되는 패널티를 부과합니다.
이러한 상호작용은 악성 마이닝 운영을 차단하려 할 때 매우 유용하게 활용될 수 있습니다. 백엔드 노드나 풀이 공격자 크립토마이너 즉, 피해자를 차단하게 만들면, 크립토마이너의 리소스 악용을 중단하고 피해자를 해방시킬 수 있습니다.
다음 섹션에서는 이전에 살펴본 두 개의 마이닝 캠페인을 대상으로 이 개념을 시연합니다. 각 캠페인은 서로 다른 마이닝 토폴로지, 즉 크립토마이닝 프록시와 퍼블릭 풀에 직접 연결된 방식을 대표합니다.
배드 셰어로 공격자의 마이닝 프록시 차단
악성 크립토마이너가 가장 자주 사용하는 마이닝 토폴로지 중 하나는 마이닝 프록시입니다(그림 3). 이 설정은 공격자의 백엔드와 지갑 주소를 숨겨 신원을 보호하고 네트워크 내 추적 가능성을 줄여 프라이버시를 강화합니다.
마이닝 프록시는 일반적으로 네트워크 검사를 통해 탐지할 수 있는 크립토마이너가 연결되는 표적 풀을 "숨기기" 때문에 네트워크 기반 탐지를 어렵게 만듭니다. 또한 지갑 주소도 감추기 때문에 크립토마이너의 탐지 가능한 흔적을 더욱 줄입니다. 하지만 Akamai는 마이닝 프록시가 크립토마이너의 아킬레스건이 될 수 있다는 점을 발견했습니다.
프록시를 사용하는 경우 모든 피해자가 하나의 서버에 연결되기 때문에, 프록시에 간섭하는 것만으로 전체 마이닝 운영을 중단시킬 수 있습니다. Akamai는 이를 실현할 수 있는 기법을 개발했습니다.
아이디어는 간단합니다. 크립토마이너로 위장하여 악성 프록시에 접속한 뒤, 무효한 마이닝 작업 결과인 배드 셰어를 제출하면, 이는 프록시의 검증을 우회하여 마이닝 풀에 전달됩니다. 이러한 배드 셰어가 연속적으로 제출되면, 결국 프록시가 마이닝 풀에서 차단되어 전체 크립토마이닝 봇넷의 운영이 효과적으로 중단됩니다.
프록시와의 통신
크립토마이너는 먼저 Stratum 로그인 방법을 사용해 프록시에 연결해야 합니다. 별도로 설정하지 않은 경우, XMRig 프록시 서버에서는 기본적으로 마이너를 x로 식별합니다(그림 4).
연결이 성공했다는 것은 프록시 측에 리스너가 활성화되어 있음을 의미합니다. 응답을 구문 분석해 실제로 마이닝 프록시인지 확인할 수 있습니다. 유효한 응답은 Stratum 프로토콜을 따르는 JSON 문서 형식이며, 그 결과로는 작업(job)이 반환됩니다.
전체 마이닝 프로세스는 복잡하지만(Zero to Monero에 설명됨), 맞춤형 셰어를 만드는 것은 비교적 간단합니다. 프록시 응답에서 worker id, job id, nicehash nonce의 세 가지 값을 추출하면 됩니다. 이 세 가지 값은 특정 마이닝 작업을 식별하는 데 필요하며, 프록시가 우리가 보내는 배드 셰어를 받아들이도록 하려면 해당 필드를 정확하게 입력해야 합니다(그림 5).
프록시는 크립토마이너로부터 셰어를 수신하면 거의 그대로 풀로 전달하지만, 셰어가 공격자의 지갑 주소로 제출된다는 한 가지 중요한 차이가 있습니다. 이 때문에 크립토마이너 샘플만으로는 공격자의 지갑 주소나 계정 정보, 혹은 어떤 풀을 사용하는지 파악할 수 없습니다.
XMRogue
크립토마이너 봇넷에 피해자로 위장해 침투하는 것은 어렵지 않습니다. 대개 별도의 권한 확인 절차가 없으며, 많은 경우 일반적인 마이닝 애플리케이션인 XMRig(마이너)와 XMRig-proxy(마이닝 프록시)를 사용합니다.
이러한 특성 덕분에 XMRogue를 개발할 수 있었습니다. XMRogue는 크립토마이너로 위장해 마이닝 프록시에 연결하고 연속적인 배드 셰어를 제출한 후 최종적으로 마이닝 프록시를 풀에서 차단하는 툴입니다(그림 6).
중요한 고려 사항 중 하나는 프록시 수준에서의 셰어 검증입니다. Akamai의 배드 셰어는 프록시를 통해 풀로 전달되므로, 프록시는 이를 식별해 걸러낼 수 있는 기회를 갖습니다.
예를 들어, 널리 사용되는 XMRig-proxy는 작업과 함께 제공되는 nicehash nonce와 해시 결과의 난이도를 검증합니다. nonce나 난이도 값 중 하나라도 올바르지 않으면 해당 배드 셰어는 백엔드 풀로 전달되지 않습니다. 그림 7에서 코드 내 검증 과정을 보면, 난이도 해시가 낮거나 nicehash 값이 잘못된 셰어는 폐기됩니다.
이러한 검증을 우회하려면, 작업 요청을 분석하고 프록시 입장에서는 유효해 보이지만 실제로는 잘못된 작업 결과를 정교하게 구성해 제출해야 합니다. 이렇게 하면 프록시가 해당 셰어를 풀로 전달하게 만들 수 있습니다.
이론 검증
Akamai는 이 기법을 테스트하기 위해 본 시리즈 2부에서 파악한 마이닝 캠페인 중 하나를 표적으로 선택했습니다. 선택한 캠페인에서 사용된 모든 마이닝 프록시의 주소를 추출해 실험에 활용할 수 있는 상당한 정보를 확보했습니다. 예를 들어, 중앙 공격자의 프록시는 "proxy"라는 단순한 이름으로 지정되어 있으며, Nanopool에서 최고 등급을 받아 장기간 사용되어 왔음을 보여줍니다(그림 8).
이 프록시는 초당 300만 해시를 생성하며, 이는 시간당 약 3달러, 연간 약 2만 6000달러의 수익에 해당합니다. Akamai는 이 프록시를 XMRogue로 표적화해 풀에서 빠르게 차단했고, 이에 따라 해당 프록시에 연결된 모든 피해자의 마이닝이 중단되었습니다. 프록시의 해시레이트를 확인한 결과, 완전히 0으로 급감한 것을 볼 수 있었습니다(그림 9).
XMRogue가 공격자의 전체 캠페인에 미친 영향을 고려하면 수익성이 크게 감소했음을 확인할 수 있습니다. 처음 이 캠페인을 분석했을 당시 연간 수익은 약 5만 달러였지만, Akamai가 캠페인을 방해하고 균형을 깨뜨리자 연간 매출은 76% 감소하여 1만 2000달러 수준으로 떨어졌습니다. 여기에 추가 프록시까지 차단한다면 수익은 0까지 떨어질 수 있었을 것입니다. 이러한 영향이 발생하면 공격자는 캠페인을 완전히 포기하거나, 변경 사항이 추적되는 리스크를 감수하고 인프라를 다시 구축해야 할 수 있습니다.
기타 마이닝 풀 정책 활용
모든 공격자가 마이닝 프록시를 사용하는 것은 아닙니다. 많은 경우 피해자는 풀에 직접 연결되기 때문에, 앞서 소개한 기법은 적용되지 않습니다. 이 경우 배드 셰어를 제출하면 Akamai의 IP만 풀에서 차단될 뿐, 마이닝 운영에는 영향을 주지 못합니다.
Akamai는 마이닝 풀의 소스 코드를 분석하던 중 또 다른 가능성을 발견했습니다. 바로 지갑 주소를 표적으로 삼는 것입니다. 앞선 기법이 마이너의 IP를 대상으로 했다면, 이번에는 지갑 주소에 적용되는 정책을 활용합니다. 풀에서는 1000개 이상의 워커가 연결된 지갑 주소에 대해 해당 지갑을 1시간 동안 차단하는 정책을 운영하고 있습니다.
프록시 마이닝을 사용할 경우, 공격자는 프록시 서버에만 지갑 주소를 설정하여 위장을 시도할 수 있습니다. 하지만 직접 마이닝 방식에서는 지갑 주소가 피해자의 시스템에 저장되므로, Akamai가 이를 추출해 사용할 수 있습니다.
공격자의 지갑 주소로 1000개 이상의 로그인 요청을 동시에 전송하면, 해당 풀에서 자동으로 해당 지갑을 차단하게 됩니다. 이 기법은 XMRogue의 운영 모드 중 하나로 추가되었습니다.
Akamai는 이 아이디어를 설명하기 위해 퍼블릭 풀인 MoneroOcean을 사용하는 또 다른 캠페인을 대상으로 실험했습니다. 해당 캠페인의 초기 해시레이트는 22kH/s였습니다(그림 11). 이 캠페인은 앞서 다룬 캠페인보다 규모가 작지만, 이 기법은 더 다양한 형태의 마이닝 캠페인에 적용할 수 있다는 점에서 중요한 의미를 가집니다.
Akamai가 수천 개의 로그인 요청을 즉시 전송하는 스크립트를 실행한 결과, 해시레이트는 급감했고 결국 완전히 마이닝이 중단되었습니다(그림 12).
범위는 넓게, 포획은 얕게
이 기법은 마이닝 운영을 더 많이 방해할 수 있지만 영구적인 해결책은 아닙니다. 다중 로그인 연결을 중단하자 캠페인의 해시레이트가 회복되었습니다(그림 13).
요약
위에서 소개한 기법들은 보안팀 직원이 풀의 정책을 활용해 정상적인 풀 운영을 방해하지 않으면서도 악성 크립토마이너 캠페인을 효과적으로 중단시킬 수 있는 방법을 보여줍니다. 정상적인 마이너는 IP나 지갑 주소를 로컬에서 손쉽게 변경할 수 있기 때문에 이러한 방어 기법에서 빠르게 회복할 수 있습니다.
반면 악성 크립토마이너는 전체 봇넷을 수정해야 하므로 훨씬 더 복잡한 작업이 요구됩니다. 특히 정교하지 않은 마이너의 경우, 이 방어 기법만으로도 봇넷을 완전히 무력화할 수 있습니다.
시리즈를 마치며
이번 게시물을 끝으로 크립토마이너 해부 시리즈를 마무리합니다. Akamai는 시리즈 전반에 걸쳐 크립토마이닝의 기본 개념을 설명하고, 다양한 마이닝 토폴로지를 활용한 실제 캠페인을 추적하며 공격자의 사고방식을 분석했습니다.
크립토마이닝 위협은 앞으로도 계속해서 증가할 것으로 보입니다. 그러나 이제 Akamai는 공격자의 운영을 방해하고, 크립토마이닝을 통해 수익을 창출하는 것을 훨씬 어렵게 만들 수 있는 방안을 갖추게 되었습니다.