2019.10.21

'인터넷 노출' 도커 컨테이너 노린다··· 악성코드 뿌리는 크립토재킹 웜 발견

Lucian Constantin | CSO
해커들이 인증 없이 인터넷에 노출된 도커 엔진을 악용하는 수법으로 서버에 크립토재킹 악성코드를 설치, 실행하고 있다. 이러한 신형 크립토재킹 봇넷은 자가 확산 기능을 갖춰 지금까지 2,000개가 넘는 도커 배포판이 감염된 것으로 나타났다.
 
ⓒ Getty Images Bank

팔로알토네트웍스 연구진이 최근 공개한 보고서를 보면, 크립토재킹 악성코드가 웜으로 확산하는 사건은 전례가 있었지만 이번처럼 도커 엔진(커뮤니티 에디션)의 컨테이너를 사용해 확산하는 크립토재킹 웜은 최초다. 대부분의 전통적인 엔드투엔드 보호 소프트웨어는 컨테이너 내부의 데이터와 활동을 검사하지 않으므로 이러한 종류의 악성 활동은 탐지하기 어렵다고 연구진은 경고했다.

행동이 특이한 봇넷
그랩보이드(Graboid)라고 명명된 이번 신형 웜은 도커 컨테이너 이미지의 공용 저장소인 도커 허브에서 퍼져나갔다. 해커는 실행 시 안전하지 않은 다른 서버로 악성코드를 배치하는 악성 스크립트를 이용해 도커 허브로 이미지를 업로드했다. 연구진은 이번 공격으로 다양한 단계로 감염된 컨테이너 이미지를 여러 개 발견했다. 감염된 이미지는 도커 허브 관리자에게 통보해 제거됐다.

이들 중 한 이미지는 센트OS를 기반으로 한 것으로서 미리 정한 명령 통제(C2) 서버에 연결해 4개의 셸 스크립트를 다운로드해 실행하도록 만들어졌다. 이 이미지 속에는 노출된 도커 데몬으로 명령을 전송하는 도커 클라이언트가 포함돼 있었다. C2 서버가 전달한 4개 스크립트를 자세히 보면, 먼저 이용 가능한 CPU 숫자 등 감염시킨 환경에 대한 상세 정보를 수집해 해커에게 보내는 것이 있었다. 두 번째는 안전하지 않은 도커 API 엔드포인트에 해당하는 2,000개가 넘는 IP 주소 목록을 다운로드해 그중 무작위로 하나를 골라 도커 클라이언트로 연결한 후 도커 허브로부터 똑같은 악성 컨테이너를 배치해 자가 전파를 하는 스크립트였다.

세 번째로는, 목록상에 취약한 도커 호스트 중 하나에 무작위로 연결한 후 nginx 웹 서버 또는 마이SQL 데이터베이스 서버로 위장한 Xmrig 바이너리가 들어 있는 두 번째 이미지를 도커 허브로부터 배치하는 스크립트였다. Xmrig는 CPU를 이용해 암호 화폐를 채굴하는 오픈소스 애플리케이션이다. 그랩보이드의 경우 모네로(Monero)를 채굴하도록 구성됐다. 마지막 네 번째는 타이머로 실행돼 역시 무작위로 목록상 IP 주소 가운데 하나로 연결한 후 Xmirg 채굴 컨테이너를 중단시키는 스크립트였다. 이때, 봇넷이 직접 배치한 Xmrig 채굴 컨테이너도 중단시킨다. 즉, 각 서버상의 채굴 활동이 연속적이지 않았으며 봇넷은 호스트를 재감염 시켜 채굴 컨테이너를 시작하고 중단하는 일을 끊임없이 하고 있었다.

연구진은 “기본적으로, 감염된 모든 호스트 상의 채굴자는 감염된 다른 모든 호스트에 의해 무작위적으로 통제된다. 이러한 무작위적인 설계의 동기가 무엇인지는 불분명하다. 잘못된 설계일 수도 있고 (별로 효과적이지는 않은) 회피 기법일 수도 있으며 자가 유지 시스템 또는 다른 목적일 수도 있다”라고 설명했다. 연구진이 자체적으로 추정한 바에 따르면, 감염된 모든 호스트 상의 채굴 활동은 평균 250초 간격으로 발생했으며 각 채굴자의 활동 시간은 전체 시간 중 65%에 불과해 그다지 효율적이지 않았다.

한편, 이번 웜의 전파에 사용된 악성 이미지는 1만 회 이상 다운로드됐다. Xmrig 바이너리 관련 이미지는 6,500회 이상 다운로드됐다. 웜의 표적 목록에 있는 IP 주소를 기준으로 보면 피해를 본 도커 배포판의 호스트 지역은 60% 가까이가 중국이며 13%가 미국, 나머지가 기타 국가였다.

도커 배포판 안전하게 보호하기
연구진은 “이번 크립토재킹 웜은 정교한 전술이나 기술 또는 프로세스를 사용하지 않지만 C2로부터 새로운 스크립트를 주기적으로 빼내 올 수 있다. 따라서 랜섬웨어나 기타 악성코드로 쉽게 변신해 호스트에 피해를 줄 수 있으므로 무시해서는 안 된다. 만일 이와 비슷한 침투 방식을 사용하는 더 강력한 웜이 만들어진다면 훨씬 더 큰 피해를 야기할 수 있으므로, 기업은 반드시 도커 호스트를 보호해야 한다”라고 지적했다.

도커 허브는 자원봉사자에 의해 유지되는 커뮤니티 프로젝트이므로 감시하기가 쉽지 않다. 뒷문으로 들어온 컨테이너 이미지가 저장소에 업로드된 사례는 과거에도 있었는데 이런 이미지를 발견해 제거하기까지 몇 개월이 걸렸다. 2018년 크롬테크(Kromtech) 연구진은 도커 허브에 약 1년간 저장돼 있던 17개의 악성 도커 이미지를 발견했다. 그중에는 리버스 셸, 악성 SSH 접근키 및 크립토마이너를 배치하는 스크립트가 포함된 것도 있었다.

팔로알토 연구진은 적절한 인증 없이 도커 데몬을 인터넷에 직접 노출해서는 절대로 안 된다고 기업에 권고했다. 사실, 도커 엔진은 기본적으로 인터넷에 노출되지 않는다. 즉, 이번 웜에 의해 악용된 안전하지 않은 배포판은 공개적인 접근이 가능하도록 직접 구성된 것이다.

도커가 인터넷에 직접 노출되지 않는 경우에도 컨테이너 오케스트레이션 및 API 관리 시스템은 인터넷에 직접 노출될 수 있으며 이럴 경우 심각한 위험을 야기한다. 지난해 클라우드 보안 회사 레이스워크(Lacework)의 조사에서 공개적으로 노출된 컨테이너 관리 대시보드가 2만 2,000개 넘게 발견되었는데 그중에는 쿠버네티스, 도커 스웜, 스웨거, 메소스 마라톤, 레드햇 오픈시프트 등이 포함돼 있었다.

팔로알토 연구진은 도커 데몬에 원격으로 연결해야 하는 기업에 강력한 인증의 SSH를 사용하라고 권고했다. 오직 신뢰할 수 있는 IP 주소에만 그러한 연결을 허용하는 방화벽 규칙도 설정해야 한다. 또한, 관리자는 신뢰할 수 없는 사용자가 도커 허브에 업로드한 도커 컨테이너 이미지를 절대로 사내에 설치해서는 안 되며 알 수 없는 컨테이너나 이미지가 없는지 도커 배포판을 자주 확인해야 한다고 연구진은 지적했다. ciokr@idg.co.kr


2019.10.21

'인터넷 노출' 도커 컨테이너 노린다··· 악성코드 뿌리는 크립토재킹 웜 발견

Lucian Constantin | CSO
해커들이 인증 없이 인터넷에 노출된 도커 엔진을 악용하는 수법으로 서버에 크립토재킹 악성코드를 설치, 실행하고 있다. 이러한 신형 크립토재킹 봇넷은 자가 확산 기능을 갖춰 지금까지 2,000개가 넘는 도커 배포판이 감염된 것으로 나타났다.
 
ⓒ Getty Images Bank

팔로알토네트웍스 연구진이 최근 공개한 보고서를 보면, 크립토재킹 악성코드가 웜으로 확산하는 사건은 전례가 있었지만 이번처럼 도커 엔진(커뮤니티 에디션)의 컨테이너를 사용해 확산하는 크립토재킹 웜은 최초다. 대부분의 전통적인 엔드투엔드 보호 소프트웨어는 컨테이너 내부의 데이터와 활동을 검사하지 않으므로 이러한 종류의 악성 활동은 탐지하기 어렵다고 연구진은 경고했다.

행동이 특이한 봇넷
그랩보이드(Graboid)라고 명명된 이번 신형 웜은 도커 컨테이너 이미지의 공용 저장소인 도커 허브에서 퍼져나갔다. 해커는 실행 시 안전하지 않은 다른 서버로 악성코드를 배치하는 악성 스크립트를 이용해 도커 허브로 이미지를 업로드했다. 연구진은 이번 공격으로 다양한 단계로 감염된 컨테이너 이미지를 여러 개 발견했다. 감염된 이미지는 도커 허브 관리자에게 통보해 제거됐다.

이들 중 한 이미지는 센트OS를 기반으로 한 것으로서 미리 정한 명령 통제(C2) 서버에 연결해 4개의 셸 스크립트를 다운로드해 실행하도록 만들어졌다. 이 이미지 속에는 노출된 도커 데몬으로 명령을 전송하는 도커 클라이언트가 포함돼 있었다. C2 서버가 전달한 4개 스크립트를 자세히 보면, 먼저 이용 가능한 CPU 숫자 등 감염시킨 환경에 대한 상세 정보를 수집해 해커에게 보내는 것이 있었다. 두 번째는 안전하지 않은 도커 API 엔드포인트에 해당하는 2,000개가 넘는 IP 주소 목록을 다운로드해 그중 무작위로 하나를 골라 도커 클라이언트로 연결한 후 도커 허브로부터 똑같은 악성 컨테이너를 배치해 자가 전파를 하는 스크립트였다.

세 번째로는, 목록상에 취약한 도커 호스트 중 하나에 무작위로 연결한 후 nginx 웹 서버 또는 마이SQL 데이터베이스 서버로 위장한 Xmrig 바이너리가 들어 있는 두 번째 이미지를 도커 허브로부터 배치하는 스크립트였다. Xmrig는 CPU를 이용해 암호 화폐를 채굴하는 오픈소스 애플리케이션이다. 그랩보이드의 경우 모네로(Monero)를 채굴하도록 구성됐다. 마지막 네 번째는 타이머로 실행돼 역시 무작위로 목록상 IP 주소 가운데 하나로 연결한 후 Xmirg 채굴 컨테이너를 중단시키는 스크립트였다. 이때, 봇넷이 직접 배치한 Xmrig 채굴 컨테이너도 중단시킨다. 즉, 각 서버상의 채굴 활동이 연속적이지 않았으며 봇넷은 호스트를 재감염 시켜 채굴 컨테이너를 시작하고 중단하는 일을 끊임없이 하고 있었다.

연구진은 “기본적으로, 감염된 모든 호스트 상의 채굴자는 감염된 다른 모든 호스트에 의해 무작위적으로 통제된다. 이러한 무작위적인 설계의 동기가 무엇인지는 불분명하다. 잘못된 설계일 수도 있고 (별로 효과적이지는 않은) 회피 기법일 수도 있으며 자가 유지 시스템 또는 다른 목적일 수도 있다”라고 설명했다. 연구진이 자체적으로 추정한 바에 따르면, 감염된 모든 호스트 상의 채굴 활동은 평균 250초 간격으로 발생했으며 각 채굴자의 활동 시간은 전체 시간 중 65%에 불과해 그다지 효율적이지 않았다.

한편, 이번 웜의 전파에 사용된 악성 이미지는 1만 회 이상 다운로드됐다. Xmrig 바이너리 관련 이미지는 6,500회 이상 다운로드됐다. 웜의 표적 목록에 있는 IP 주소를 기준으로 보면 피해를 본 도커 배포판의 호스트 지역은 60% 가까이가 중국이며 13%가 미국, 나머지가 기타 국가였다.

도커 배포판 안전하게 보호하기
연구진은 “이번 크립토재킹 웜은 정교한 전술이나 기술 또는 프로세스를 사용하지 않지만 C2로부터 새로운 스크립트를 주기적으로 빼내 올 수 있다. 따라서 랜섬웨어나 기타 악성코드로 쉽게 변신해 호스트에 피해를 줄 수 있으므로 무시해서는 안 된다. 만일 이와 비슷한 침투 방식을 사용하는 더 강력한 웜이 만들어진다면 훨씬 더 큰 피해를 야기할 수 있으므로, 기업은 반드시 도커 호스트를 보호해야 한다”라고 지적했다.

도커 허브는 자원봉사자에 의해 유지되는 커뮤니티 프로젝트이므로 감시하기가 쉽지 않다. 뒷문으로 들어온 컨테이너 이미지가 저장소에 업로드된 사례는 과거에도 있었는데 이런 이미지를 발견해 제거하기까지 몇 개월이 걸렸다. 2018년 크롬테크(Kromtech) 연구진은 도커 허브에 약 1년간 저장돼 있던 17개의 악성 도커 이미지를 발견했다. 그중에는 리버스 셸, 악성 SSH 접근키 및 크립토마이너를 배치하는 스크립트가 포함된 것도 있었다.

팔로알토 연구진은 적절한 인증 없이 도커 데몬을 인터넷에 직접 노출해서는 절대로 안 된다고 기업에 권고했다. 사실, 도커 엔진은 기본적으로 인터넷에 노출되지 않는다. 즉, 이번 웜에 의해 악용된 안전하지 않은 배포판은 공개적인 접근이 가능하도록 직접 구성된 것이다.

도커가 인터넷에 직접 노출되지 않는 경우에도 컨테이너 오케스트레이션 및 API 관리 시스템은 인터넷에 직접 노출될 수 있으며 이럴 경우 심각한 위험을 야기한다. 지난해 클라우드 보안 회사 레이스워크(Lacework)의 조사에서 공개적으로 노출된 컨테이너 관리 대시보드가 2만 2,000개 넘게 발견되었는데 그중에는 쿠버네티스, 도커 스웜, 스웨거, 메소스 마라톤, 레드햇 오픈시프트 등이 포함돼 있었다.

팔로알토 연구진은 도커 데몬에 원격으로 연결해야 하는 기업에 강력한 인증의 SSH를 사용하라고 권고했다. 오직 신뢰할 수 있는 IP 주소에만 그러한 연결을 허용하는 방화벽 규칙도 설정해야 한다. 또한, 관리자는 신뢰할 수 없는 사용자가 도커 허브에 업로드한 도커 컨테이너 이미지를 절대로 사내에 설치해서는 안 되며 알 수 없는 컨테이너나 이미지가 없는지 도커 배포판을 자주 확인해야 한다고 연구진은 지적했다. ciokr@idg.co.kr


X