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”

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

인증이 미흡한 상태로 노출된 Redis 서버
redis_cli [target_ip]로 활성화 된 Redis 서비스에 접근 시, 인증 장치가 갖춰진 곳이라면 다음과 같은 문구가 출력 된다.
“[ERROR] NOAUTH Authentication required”
!["[ERROR] NOAUTH Authentication required" 문구가 출력되는 안전한 Redis 서버](https://i0.wp.com/blog.criminalip.io/wp-content/uploads/2022/11/노출된-Redis-서버_3.png?resize=367%2C182&ssl=1)
그러나 인증 장치가 설정되지 않은 경우, 아래 그림과 같이 별도 인증 과정이 없어 바로 접속이 되며, “keys *”를 통해 노출되는 데이터를 확인할 수 있다.

모네로 코인 채굴 악성코드에 감염된 노출된 Redis 서버
해당 서버의 특정 데이터에 접근해보니 다음과 같이 “cleanfda”로 이어지는 수상한 패턴이 공통적으로 발견 되었다.

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


해당 URL에 접속하여 이 bash shell 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)
관련 글 :
댓글 남기기