분석 정보/리눅스 분석 정보

소스코드가 공개된 EnemyBot 악성코드

TACHYON & ISARC 2022. 11. 4. 15:44

과거 “Mirai”, “Qbot” 과 같은 봇넷 악성코드의 소스코드가 공개된 바 있다. 이러한 이유로 해당 악성코드들의 소스코드를 사용한 변종 악성코드들이 현재까지 지속적으로 발견되고 있다.
올해 상반기에도 “EnemyBot” 라는 악성코드가 발견 되었는데, 살펴 본 결과 해당 악성코드 또한 기존 소스코드를 사용한 것으로 확인되고 있다. 그래서 “EnemyBot” 을 비롯한 변종 악성코드들은 “Mirai”, “Qbot” 악성코드와 많은 공통점을 가지며, 실행 시 취약한 기기를 감염시켜 DDoS 공격을 수행한다.

 

공개된 소스코드

“EnemyBot” 악성코드는 소스코드와 함께 발견 되었는데, 게시자는 스스로를 “Kek Security” 소속의 악성코드 개발자라고 밝히고 있다.

 

[그림 1] 공개된 EnemyBot 소스코드 정보

 

“Kek Security” 는 “KekSec” 로도 불리는 해커 그룹으로 다양한 봇넷 악성코드를 사용하여 DDoS 공격을 수행하는 것으로 알려졌다.

 

[그림 2] 게시자 정보

 

게시한 정보를 살펴보면 “Mirai”, “Qbot” 및 “Zbot” 등 과거 소스코드가 공개되었던 악성코드의 기능을 재사용하였다고 주장하고 있다.

그래서 “EnemyBot” 과 해당 악성코드들의 소스코드를 비교한 결과 아래 [그림 3]과 [그림 4]와 같이 데이터 암호화, 일부 코드의 수정이 존재하지만 기능 상으로는 동일한 것이 확인된다.

 

[그림 3] 다른 장비 감염 관련 코드 (좌 : EnemyBot / 우 : Mirai)

 

[그림 4] DDoS 관련 코드 일부 (좌 : EnemyBot / 우 : Qbot)

 

이렇게 소스코드가 공개되어 있어 공격자는 상황에 맞춰 기능을 추가하거나 변경하여 악성코드를 유포하고 있다. 예를 들어, 이번 보고서에서 분석한 샘플의 경우 기존의 코드와 달리 리버스 쉘을 생성하는 “RSHELL” 이라는 명령이 추가된 것이 확인된다.

 

[그림 5] 추가된 RSHELL 명령어 (좌 : 분석 샘플 / 우 : 공개된 소스코드)

 

따라서 발견된 샘플마다 약간의 차이점을 보일 수 있지만 다른 장비를 추가로 감염하고 DDoS 공격을 수행하려는 목적은 동일하다. 아래의 내용을 통해 “EnemyBot” 악성코드의 주요 악성행위를 알아보고자 한다.

 

Analysis

“EnemyBot” 악성코드 실행 시 Watchdog 무력화, 자동 실행 설정 및 프로세스 조작 등 원활한 악성 행위를 위한 동작을 수행한다. 이후 공격자의 서버로 연결한 뒤, 명령을 전달받아 추가 악성행위를 수행한다.

 

1. Watchdog 무력화

IoT 와 리눅스 서버 등의 장비에서는 의도하지 않은 오작동을 탐지하고 복구하기 위해 Watchdog 이 사용된다. Watchdog 은 문제 해결을 위해 재부팅을 시도하기 때문에 “EnemyBot” 은 Watchdog 을 비활성화하여 재부팅을 방지한다. 

 

[그림 6] Watchdog 무력화

 

2. 자동 실행 설정

악성코드가 자동 실행되도록 예약 작업과 자동실행 관련 파일인 ‘/etc/crontab’, ‘/etc/rc.local’ 의 데이터를 삭제하고, 아래 [그림 7]과 같이 설정한다.

 

[그림 7] 자동 실행 설정 (위 : 설정 전 / 아래 : 설정 후)

 

3. 프로세스 조작

탐지를 방해하기 위해 프로세스에 대한 상태 확인 및 제어 관련 함수인 prctl 을 이용하여, 프로세스 명을 ‘임의의 12자리 문자열’로 변경한다. 

 

[그림 8] 변경된 프로세스 명

 

또한, 현재 실행중인 프로세스를 자가복제하여 데몬 프로세스로 실행시키고, 자식 프로세스와 터미널 종료 시 발생하는 신호를 무시하도록 설정한다.

이외에도 감염 환경이 다른 악성코드에 감염되어 있을 경우를 고려하여 현재 실행 중인 모든 프로세스의 정보를 조회한다. 그리고 프로세스 명이 “mirai”, “tsunami”, “zolland”, “osiris” 등 기존에 유포되었던 봇넷 악성코드와 일치한다면 해당 프로세스를 강제 종료한다.

 

[그림 9] 프로세스 조작 관련 코드

 

4. 명령 수행

데몬 프로세스로 실행된 “EnemyBot” 악성코드는 C&C 서버로 연결한 뒤, 공격자의 명령을 전달받아 쉘 명령 실행, 패킷 탈취, 다른장비 감염 및 DDoS 공격 등의 악성 행위를 수행한다. 

 

4.1 쉘 명령 실행

wget, busybox, curl 을 통해 C&C 서버로부터 ‘update.sh’ 파일을 다운로드 받아 실행한다. 
(분석 시점에서는 C&C 서버로 연결되지 않아 update.sh 의 정확한 역할은 파악되지 않는다.)

 

[그림 10] 쉘 명령 실행

 

[그림 11] 실행할 쉘 명령

 

4.2 패킷 탈취

감염 환경의 네트워크를 감시하여 HTTP, FTP, SMTP 등 지정된 포트로 송수신 받은 패킷을 탈취한다.

 

[그림 12] 패킷 탈취 코드

 

4.3 리버스 쉘 생성

공격자가 감염 환경으로 연결하여 추가 악성행위를 수행하기 위해 리버스 쉘을 생성한다.

 

[그림 13] 리버스 쉘 생성

 

4.4 전파

DDoS 공격을 위해서는 다수의 봇이 필요하기 때문에 취약한 장비를 탐색해 “EnemyBot” 으로 감염시킨다. 전파 방법은 다음과 같다.

처음으로 사용되는 방법은 사전 대입 공격으로 임의의 IP를 생성하고 Telnet 과 SSH 포트로 연결한다. 그리고 악성코드 내에 저장된 아이디와 패스워드 목록을 사용해 로그인을 시도한다. 만약 로그인된다면 “EnemyBot” 악성코드로 감염시킨다.

 

[그림 14] 임의의 IP로 연결 시도

 

[그림 15] 아이디 및 패스워드 목록 일부

 

두번째는 취약점을 이용한 방법으로 Log4j 혹은 네트워크 장비의 취약점들을 익스플로잇하여, 악성 쉘스크립트를 이용해 “EnemyBot” 을 설치한 뒤 실행한다.

 

[그림 16] Log4j 취약점 익스플로잇

 

이외에도 Andorid 기기를 감염시키기 위해 Android 장치와 통신하는 데 사용되는 도구인 ADB 의 포트를 스캔한다. 만약 연결된다면 쉘 명령어를 전달해 감염시킨다.

 

4.5 DDoS 공격

공격자로부터 공격 대상의 아이피와 포트 등의 정보를 전달받아 UDP, TCP, DNS 및 TLS 등 여러 방식으로 대량의 패킷을 전송하며 DDoS 공격을 수행한다.

아래 [그림 17]는 공격 대상의 IP와 포트 번호를 임의로 조작하여 “EnemyBot” 의 DDoS 공격 중 하나인 UDP Flooding Attack 을 테스트 한 결과이며, 대량의 패킷이 전송되는 것이 확인된다.

 

[그림 17] UDP Flooding 패킷

 

최근 “EnemyBot” 악성코드와 같이 공개된 악성코드의 소스코드를 이용한 변종 악성코드가 다수 등장하고 있다. 또한, 봇넷 악성코드의 주요 목적은 DDoS 공격이지만 감염된 장비에 다른 악성코드를 설치하여 추가적인 악성 행위를 할 수 있어 주의가 필요하다. 따라서, 패스워드를 주기적으로 변경하고 보안 제품이나 OS 를 항상 최신 버전으로 유지할 것을 권고한다.