Go 언어로 제작된 백도어 악성코드… 윈도 및 리눅스 환경에서 작동해

[보안뉴스 김영명 기자] 블루셸(BlueShell)은 고(Go) 언어로 개발된 백도어 악성코드로서 깃허브에 공개됐으며, 마이크로소프트 윈도(Windows), 리눅스(Linux), 애플 맥(Mac) 운영체제를 지원한다. 현재 원본 깃허브 저장소는 삭제된 것으로 추정되지만, 다른 저장소에서는 블루셸의 소스코드를 확보할 수 있다. ReadMe 파일을 열면 중국어로 설명이 담겨 제작자가 중국어 사용자일 가능성이 높다는 분석이다.

[보안뉴스 / 9.14.] 블루셸 악성코드, 국내 기업 및 태국 방송사 타깃으로 연이어 APT 공격

▲깃허브에 공개돼 있는 BlueShell[자료=안랩 ASEC 분석팀]

안랩 ASEC 분석팀(이하 ASEC)에 따르면, 블루셸이 공격에 사용된 것으로 알려진 사례는 다른 악성코드들과 달리 많지 않다. 하지만 실제 국내 공격 사례들을 확인하면 다양한 공격자들이 블루셸을 꾸준히 사용하고 있는 것이 눈에 띈다. 안랩 ASEC 분석팀이 확인한 공격 사례는 국내 기업의 윈도 시스템을 대상으로 한 사례들이다. 하지만 리눅스 시스템을 대상으로 한 공격 중에는 국내 및 태국 방송사를 대상으로 추정되는 사례도 확인된다.

블루셸의 대표적인 특징 가운데 하나는 고 언어로 제작됐다는 점이다. 고 언어는 개발 난도가 낮고, 크로스 플랫폼을 지원하는 등 장점이 많아 악성코드 제작에 많이 사용되고 있다. 북한 김수키(Kimsuky) 해킹조직은 미터프리터(Meterpreter) 다운로더 악성코드를, 레드아이즈(RedEyes, APT37) 위협그룹은 실시간 메시징 서비스인 에이블리(Ably) 서비스를 악용하는 백도어를, 안다리엘(Andariel) 위협그룹에서는 1th Troy 리버스 셸, Black RAT 등 악성코드들을 각각 고 언어로 개발했다.

기능상으로 보면 단순한 형태의 백도어인 블루셸은 C&C 서버와의 통신에 TLS 암호화를 지원해 네트워크 탐지를 우회한다. 공격자 명령으로 수행할 수 있는 기능들로는 원격 명령 실행, 파일 업로드 및 다운로드, Socks5 프록시 등이 있다.

[보안뉴스 / 9.14.] 블루셸 악성코드, 국내 기업 및 태국 방송사 타깃으로 연이어 APT 공격

▲공격에 사용된 JSP 웹셸들[자료=안랩 ASEC 분석팀]

먼저, ‘윈도(Windows) 버전’에서는 달빗 위협 그룹 공격 사례가 있다. 달빗 그룹은 중국 기반 위협 그룹으로서 주로 취약한 서버들을 대상으로 공격, 기업 내부 자료 등 정보를 탈취하거나 시스템을 암호화해 금전을 요구한다. 공격 대상은 부적절하게 관리되거나 최신 버전으로 패치되지 않은 윈도 웹 서버, 메일 서버나 MS-SQL 데이터베이스 서버 등이 확인된다. 달빗 그룹은 초기 침투 단계부터 목적을 달성할 때까지 모두 공개된 도구들을 공격에 사용한다.

공격자가 이번 공격에서 블루셸을 사용했는지는 확인되지 않지만, 공격 과정에서 원본 소스코드의 기본 C&C 서버 주소로 설정된 블루셸 악성코드가 수집됐다. 수집된 파일은 x86, x64 아키텍처이며, 해당 파일들이 공격 도구모음에 포함됐을 것으로 추정된다. 달빗 공격 그룹은 웹 서버 대상 공격에서 주로 웹로직(WebLogic) 취약점이나 파일 업로드 취약점을 공격해 웹셸을 업로드하는 방식을 사용한다. 달빗 그룹은 프록시 도구로 FRP(Fast Reverse Proxy)를 사용하는 것이 가장 큰 특징이다. 공격 과정에서는 Frpc(Fast Reverse Proxy Client) 도구와 설정 파일, 또 다른 프록시 도구인 Venom이 사용됐다.

두 번째로, 국내 기업 공격사례를 보면, 최초 유입 경로나 달빗 그룹과 동일한 공격자인지는 확인은 안 되지만 블루셸과 Frpc가 공격에 함께 사용된 점이 특징이다. 공격 과정에서는 2개의 블루셸이 확인됐는데 모두 같은 C&C 서버와 통신하지만 하나는 난독화됐다. 공격에 사용된 Frpc도 난독화됐으며, 공격자가 직접 커스터마이징한 형태다. 공격에 사용된 Frpc는 암호화된 설정 데이터를 실행 중 메모리 상에 복호화해 사용한다.

[보안뉴스 / 9.14.] 블루셸 악성코드, 국내 기업 및 태국 방송사 타깃으로 연이어 APT 공격

▲바이너리에 포함돼 있는 Frpc 설정 데이터[자료=안랩 ASEC 분석팀]

‘리눅스(Linux) 버전’에서 국내와 태국 대상 추정 공격 사례를 보면, 블루셸은 크로스 플랫폼을 지원하며 윈도와 리눅스 환경 어디에서나 동작할 수 있다. 해당 악성코드들이 대한민국과 태국에서 바이러스토탈에 업로드됐던 것을 보면 두 곳이 공격 대상이었던 것으로 추정된다.

공격자는 먼저 드로퍼(Dropper) 악성코드를 제작하고, 블루셸을 설치했다. 드로퍼는 일반적인 드로퍼처럼 블루셸을 생성하고 실행하지만, 실행 시 ‘lgdt’라는 이름의 환경 변수를 설정하고 실행하는 점이 다르다. 생성된 블루셸은 lgdt 환경 변수를 구해 복호화한 후, C&C 서버 주소로 사용한다. 따라서 블루셸 단독으로는 C&C 서버의 주소를 확인할 수 없다. 블루셸 악성코드를 실행한 이후에는 삭제해 블루셸은 메모리 상에서만 동작한다. 드로퍼는 이외에도 블루셸을 실행할 때 특수 인자를 전달해 실행 중인 프로세스의 이름으로 위장하며, 생성한 블루셸을 실행할 때 환경 변수 ‘lgdt’를 설정하고 실행하는 것이 특징이다.

[보안뉴스 / 9.14.] 블루셸 악성코드, 국내 기업 및 태국 방송사 타깃으로 연이어 APT 공격

▲변경된 프로세스 이름[자료=안랩 ASEC 분석팀]

‘리눅스(Linux) 버전’에서 커스터마이징된 블루셸을 분석했을 때 공격에 사용된 블루셸은 기본 기능은 같지만 몇 가지 특징이 있다. C&C 서버 주소나 포트 번호 등 설정 데이터가 바이너리에 존재하는 대신 특정 환경 변수를 읽어 복호화해 구한다. 드로퍼 악성코드는 환경 변수 ‘lgdt’를 설정하고 블루셸을 실행했으며, 이에 따라 환경 변수가 상속됐다. 블루셸은 환경 변수 ‘lgdt’를 Base64로 복호화한 후 이를 설정 데이터로 사용한다. 국내 공격 사례에서는 Base64 복호화 이후 △C&C 서버의 주소 △포트 번호 △대기 시간 등 3개 변수가 확인된다.

태국에서 업로드된 블루셸은 특정 경로에 생성되며 환경 변수를 복호화하면 4개의 데이터가 확인된다. 세 번째까지의 설정 데이터는 같으며, 네 번째는 감염 시스템 구분에 사용된다. 복호화된 문자열의 호스트 이름은 태국 방송사의 이름과 같은 것으로 보아 해당 공격 그룹은 태국에 APT 공격을 수행한 것으로 추정된다. 참고로 국내·태국 공격에 사용된 블루셸은 모두 1.18.4 버전의 고 언어 환경으로 빌드됐으며, 2022년 9월부터 공격을 진행했을 것으로 보인다.

[보안뉴스 / 9.14.] 블루셸 악성코드, 국내 기업 및 태국 방송사 타깃으로 연이어 APT 공격

▲환경 변수를 복호화해 설정 데이터로 사용하는 루틴[자료=안랩 ASEC 분석팀]

안랩 ASEC 분석팀 관계자는 “블루셸은 백도어 악성코드로 감염 시스템에서 공격자의 명령을 받아 명령 실행, 파일 다운로드·업로드, Socks5 프록시 등의 기능을 수행할 수 있다. Go 언어로 개발돼 윈도 및 리눅스 환경도 공격 대상이 될 수 있다. 또한, 깃허브에 오픈소스로 공개돼 다양한 공격자들이 사용한다”고 말했다. 이어 “보안 강화를 위해서는 취약한 환경 설정을 검사하고, 관련 시스템들을 항상 최신 버전으로 업데이트해 공격으로부터 보호해야 한다. 또한, V3 등 백신을 최신 버전으로 업데이트해 악성코드의 감염을 사전에 차단해야 한다”고 강조했다.
[김영명 기자(boan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>