Redis는 Remote Dictionary Server의 약자로 key-Value 구조의 비정형 데이터를 저장하고 관리하기 위한 비관계형 데이터베이스 관리 시스템이다. 여기서 비정형 데이터란 고정된 구성 원칙이 없는 필터링 되지 않은 원시 데이터(raw data)이며, 웹 로그, XML, JSON, 이미지, 텍스트 문서, 오디오 및 비디오 파일 등 다양한 형식을 포함한다.

Redis는 비동기식 복제를 지원하여, 여러 서버에 동일한 데이터의 복사본을 유지할 수 있는 장점을 가지고 있다. 따라서 주 서버에 장애가 발생하는 경우, 요청이 여러 서버로 분산 되어 향상된 읽기와 빠른 복구가 가능하므로 많은 사용자들이 이용하고 있는 시스템이다.

해킹된 Redis 서버, 코인 채굴 악성코드 유포 중

본 글에서는 공격자가 인증 설정이 미흡한 Redis 서비스가 실행되고 있는 서버에 접근하여 서버를 Bitcoin Miner로 감염 시킨 사례에 대해 설명한다.

우선 외부로부터 노출된 Redis Product를 확인하기 위해, 다음과 같이 Criminal IP의 Asset Search에서 “product: redis” 키워드를 검색하면 총 26,373개의 노출된 Redis 서버에 대한 정보를 얻을 수 있다.

Search Query: “product: redis”

Criminal IP에 "product: redis" 키워드로 검색한 결과, 26,373개의 노출된 Redis 서버가 검색된다
Criminal IP에 “product: redis” 키워드로 검색한 결과, 26,373개의 노출된 Redis 서버가 검색된다

국가별로 살펴보면, 중국이 노출된 Redis 시스템을 가장 많이 사용하는 것으로 나타났으며, 한국도 다섯번째로 많은 수의 노출된 Redis 시스템을 사용하고 있는 것으로 나타났다. 

노출된 Redis 서버의 국가 통계, 중국이 노출된 Redis 서버를 가장 많이 보유하고 있다
노출된 Redis 서버의 국가 통계, 중국이 노출된 Redis 서버를 가장 많이 보유하고 있다

인증이 미흡한 상태로 노출된 Redis 서버

redis_cli [target_ip]로 활성화 된 Redis 서비스에 접근 시, 인증 장치가 갖춰진 곳이라면 다음과 같은 문구가 출력 된다.

“[ERROR] NOAUTH Authentication required”

"[ERROR] NOAUTH Authentication required" 문구가 출력되는 안전한 Redis 서버
“[ERROR] NOAUTH Authentication required” 문구가 출력되는 안전한 Redis 서버

그러나 인증 장치가 설정되지 않은 경우, 아래 그림과 같이 별도 인증 과정이 없어 바로 접속이 되며, “keys *”를 통해 노출되는 데이터를 확인할 수 있다.

인증이 미흡한 Redis 서버에 접속한 화면, "keys *" 를 통해 데이터가 노출된다
인증이 미흡한 Redis 서버에 접속한 화면, “keys *” 를 통해 데이터가 노출된다

모네로 코인 채굴 악성코드에 감염된 노출된 Redis 서버

해당 서버의 특정 데이터에 접근해보니 다음과 같이 “cleanfda”로 이어지는 수상한 패턴이 공통적으로 발견 되었다. 

노출된 Redis 서버에 특정 데이터에 접근한 화면, 수상한 패턴이 발견되었다
노출된 Redis 서버에 특정 데이터에 접근한 화면, 수상한 패턴이 발견되었다

Criminal IP Domain Search에서 위에서 노출된 Domain의 세부 정보를 검색해본 결과, 해당 도메인에 bash shell script로 짜여진 script가 있는 것이 확인되었다.

Criminal IP Domain Search에 노출된 Redis 서버에서 발견된 수상한 URL을 검색한 결과, bash shell script로 짜여져 있다
Criminal IP Domain Search에 노출된 Redis 서버에서 발견된 수상한 URL을 검색한 결과, bash shell script로 짜여져 있다
Criminal IP Domain Search에 노출된 Redis 서버에서 발견된 수상한 URL을 검색한 결과, bash shell script로 짜여져 있다
Criminal IP Domain Search에 노출된 Redis 서버에서 발견된 수상한 URL을 검색한 결과, bash shell script로 짜여져 있다

해당 URL에 접속하여 이 bash shell script를 더 자세히 들여다보면, 이 서버에서 모네로 코인 채굴 스크립트가 실행되고 있는 점을 확인할 수 있다.

노출된 Redis 서버에서 발견한 수상한 Domain 의 Script 분석 결과 모네로 코인 채쿨 스크립트가 실행되고 있다
노출된 Redis 서버에서 발견한 수상한 Domain 의 Script 분석 결과 모네로 코인 채쿨 스크립트가 실행되고 있다

Redis 서버 해킹 예방 체크리스트

운영하고 있는 Redis 서버가 코인 채굴에 악용되는 것을 방지 하기 위해, 보안 담당자들은 다음과 같이 보안 설정을 해야 한다.

  • Docker에서 Redis 서비스를 바인딩 시 Default IP 사용 금지(0.0.0.0이 아닌 127.0.0.1)
  • 방화벽 설정을 확인하여, 비정상적인 접근 IP는 차단 및 인증된 사용자가 화이트 리스트 IP가 되어 있는지 점검 
  • Criminal IP를 통해 보유하고 Redis 서버가 노출되어 있지 않은 지와 인증 장치가 누락되지 않았는 지를 정기적으로 점검

관련하여 노출된 Redis Commander를 탐지하는 Search tip 글암호화폐 채굴 악성코드에 대한 분석 글을 참고하면 좋다.


데이터 출처 : Criminal IP(https://www.criminalip.io/ko)

관련 글 :