Blog

은행을 위협하는 맬웨어 URSNIF의 새로운 변종 'LDR4'를 만든 이는 누구? 'RM3' 변종을 만든 이를 지목한 합리적 의심!

Sandor Nemes, Sulian Lebegue, Jessa Valdez
Oct 19, 2022
14 min read
|   Last updated: Apr 05, 2023
Malware

2022년 6월에 관찰한 URSNIF 맬웨어 변종인 RM3의 뒤를 잇는 새로운 변종이 등장하였습니다. LDR4라고 부르는 이 변종은 은행 공격에 특화된 이전과 달리 일반적인 백도어와 유사합니다. 특히 SAIGON 변종과 유사합니다. URSNIF는 은행(Banking Fraud)을 타깃으로 한 맬웨어 제품군입니다. 이를 고려할 때 이번 변종은 원래 목적에서 크게 벗어나는 것처럼 보이지만 거시적인 측면에서 보면 위협 환경이 일치합니다. 맨디언트는 URSNIF의 RM3 변종을 만든 위협 행위자를 LDR4의 배후로 보고 있습니다. RM3를 이용한 위협이 이전에 성공했던 것 그리고 맬웨어의 정교함을 감안할 때 LDR4 역시 매우 위험한 변종일 수 있습니다. 따라서 면밀한 관찰이 필요합니다.

히스토리

보안 업계 일각에서 Gozi 또는 Gozi/ISFB라 부르는 URSNIF는 가장 오래된 은행 위협용 맬웨어 제품군 중 하나로 오늘날에도 여전히 쓰입니다. 역사가 길다 보니 다른 맬웨어 제품군 및 여러 변종과 관계가 얽혀 있습니다. 이 맬웨어의 소스 코드는 2016년 첫 번째 버전이 나타난 후 최소 두 번 이상 유출되었습니다. 그러다 보니 현재 여러 버전이 있습니다. 이런 이유로 URSNIF는 단일 맬웨어 제품군이 아니라 우리가 변종이라 부르는 여러 형제자매가 있는 가족이라 봅니다. 보안 연구원들은 이 맬웨어 제품군 이름을 Gozi라고 표준화하였지만 맨디언트 외에 여러 연구 조직과 보안 솔루션 업체는 여러 변종을 포괄해 URSNIF로 봅니다. 본 포스팅에서는 변종을 포함한 이 맬웨어 제품군을 URSNIF로 통칭하겠습니다.

최근 몇 년 동안 ISFB를 기반으로 하는 URSNIF의 여러 변종이 위협 현장에서 발견되었습니다.

  • Dreambot: 가장 성공적인 변종 중 하나입니다.
  • IAP: CUTWAIL에서 이탈리아를 대상으로 한 맬웨어 캠페인에 쓰인 ISFB 변종입니다.
  • RM2: GoziAT로 알려져 있으며, 수년 전에 Hancitor라고도 부르는 Chanitor 맬웨어로 활동을 시작했습니다.
  • RM3: 사용자 지정 실행 파일 형식의 가장 정교한 버전입니다. 2017년부터 오세아니아와 영국에 영향을 끼쳤습니다.

맨디언트의 연구에 따르면 ISFB가 URSNIF의 첫 출발점이라 할 수 있습니다. 지난 3년 동안 이 맬웨어에 몇 가지 흥미로운 변화가 있었습니다.

URSNIF

Genealogy of different URSNIF branches and variants
그림 1. URSNIF 변종 계보

맬웨어 개발자 측면에서 볼 때 너무 많은 프로젝트에 대한 대한 업데이트 제공은 복잡한 작업인 동시에 필연적으로 실수로 이어지게 됩니다. 맨디언트는 IAP 2.0및 RM2가 버전 2.50.000을 기반으로 빌드 되었고, RM3는 버전 3.00.700을 기반으로 빌드 된 것으로 보고 있습니다. 주목할 만한 변경은 다음과 같습니다.

  • RSA 공개 키는 내장형 복호화 키로 암호화되었습니다. 그리고 이는 점진적으로 모든 변종에 적용되었습니다.
  • Serpent를 AES 암호화로 대체하였습니다.
  • 비콘 요청의 필드 병합 및 단순화가 이루어졌습니다.

2022년 신뢰할 수 있는 배포가 줄고 여러 백엔드가 무너지면서 RM3 변종은 성공적이지 못했습니다. 더욱이 이 변종은 TRICKBOT 및 EMOTET 붕괴로 인기를 얻을 기회를 놓쳤습니다. 맬웨어 시장에서 점유율을 높이며 인기를 끈 승자 중 하나는 ICEDID 제품군입니다. URSNIF의 ISFB 변종이 2020년 6월 이후 업데이트가 없었던 것은 극히 이례적인 일입니다. 일부 연구자들은 이 맬웨어가 맬웨어 시장에 다시 돌아오려면 코드를 대대적으로 바꾸어야 할 것으로 보고 있습니다. 기술적 측면에서 볼 때 이 맬웨어는 죽었다고 말할 수 있습니다. 2022년 6월 인터넷 익스플로러가 마이크로소프트 윈도우 운영체제에서 완전히 빠졌는데, RM3 변종은 인터넷 익스플로러를 주요 커뮤니케이션 수단으로 활용합니다.

배포

맨디언트는 2021년 4월 보고된 RM3 배포 관련해 관찰한 피해자를 속이는 미끼와 비슷한 것을 2022년 6월 23일 발견하였습니다. 이때가 LDR4를 처음 관찰한 시점입니다. 이메일에는 합법적인 회사로 가장한 도메인으로 리다이렉션되는 손상된 웹 사이트 링크가 포함되어 있습니다(그림 3). CAPTCHA 챌린지는 이메일 미끼와 관련된 정보를 포함한 것으로 알려진 엑셀 문서를 다운로드하도록 유도합니다(그림 4, 5). 그럼 다음 이 문서는 LDR4 페이로드를 다운로드하고 실행합니다. LDR4로 이어지는 유사한 체인이 나중에 관찰되었는데, 그림 6과 같이 회계 소프트웨어 관련 내용을 미끼로 사용하였습니다.

인사/채용 외에 페이로드를 다운로드하도록 엑셀 문서 첨부 파일에 XML 4.0 매크로를 활용하는 일반적인 지불/인보이스 미끼도 RM3 관련해 관찰할 수 있었습니다. 2020년 4월 MOTEISLAND 문서의 다운로드 페이로드를 마지막으로 관찰하였습니다. 맨디언트는 합법적인 이메일에 대한 회신을 가장한 제목을 사용하는 캠페인에서 악성 마이크로소프트 워드 문서를 첨부 파일로 사용하는 위협 클러스터로 UNC2420을 추적하고 있습니다.

Email lure for URSNIF (RM3) in April 2021
그림 2: 2021년 4월 URSNIF(RM3)의 이메일 미끼
Email lure for URSNIF (LDR4) on June 23, 2022
그림 3: 2022년 6월 23일 URSNIF(LDR4)용 이메일 미끼
June 2022, CAPTCHA page for the Excel document download
그림 4: 2022년 6월, 엑셀 문서 다운로드를 위한 CAPTCHA 페이지
Excel document downloader for URSNIF (LDR4) on June 24, 2022
그림 5: 2022년 6월 24일 자 URSNIF(LDR4)용 엑셀 문서 다운로더
Email lure for URSNIF (LDR4) on June 24, 2022
그림 6: 2022년 6월 24일의 URSNIF(LDR4)용 이메일 미끼

정적 분석

LDR4 변종은 감염된 컴퓨터에서 DIIRegisterServer 기능을 통해 호출되는 DLL 모듈로 나타나지만 샌드박스를 혼동시키기 위해 내보내는 무작위로 명명된 다른 미끼 기능이 있는 경우가 많습니다. 일부 바이너리는 유효한 코드 서명 인증서를 사용하고 있었습니다(예: NAILS UNLIMITED LIMITED 및 ANGOSTONE GROUP LTD LIMITED)

URSNIF). 바이너리는 32비트 또는 64비트 아키텍처이며 다양한 PE 암호로 채워져 있습니다. 맨디언트가 SPELLBOOK으로 추적하는 암호 해독기 중 하나는 "|SPL|" 서명을 남기는 흥미로운 속성을 갖고 있습니다. 맬웨어는 압축을 푼 후 메모리에 저장됩니다. 맨디언트는 URSNIF LDR4와 SNOWCONE.GZIPLOADER(ICEDID의 로더 구성 요소) 사이에서 이 암호기의 사용을 확인하였습니다. 분석한 URSNIF LDR4 샘플의 압축을 푼 코어의 내부 이름은 LOADER.dll입니다. URSNIF LDR4 샘플을 통해 코드 리팩토링, 회귀 및 흥미로운 단순화 전략을 확인할 수 있었습니다.

IAP/RM3/LDR4 payload structures
그림 7: IAP/RM3/LDR4 페이로드 구조

맨디언트가 샘플을 통해 관찰한 내용은 다음과 같습니다.

  1. PX 시대는 끝났습니다.

    LDR4 변형은 RM3 변형에서 처음 도입된 사용자 지정 PX 실행 형식을 더 이상 사용하지 않습니다. 맨디언트는 이 선택이 소프트웨어 문제 해결을 지나치게 복잡하게 만드는 것을 피하기 위함이라고 봅니다. 개발자 측면에서 보면 겉으로 드러나는 문제에 더 많은 시간을 할애하고 요청 기능을 구현하는 데 집중하는 것이 맬웨어 시장에서 평판을 유지하는 데 더 유리합니다. 분석가 시각에서 볼 때 PX 형식이 악명이 높고 이를 AV/EDR이 대응하고 있어 이 맬웨어는 끝을 향해 가고 있습니다. 공격자 측면에서 탐지 가능한 것에 리소스를 투입하는 것은 효율적이지 않습니다. 따라서 고전적인 PE 형식으로 돌아가는 게 어찌 보면 더 합리적이라 할 수 있습니다.
  2. FJ.exe가 사라졌거나? 재작업되었다?

    FJ(File Joiner)라는 스테가노그래피 도구는 단일 페이로드에 여러 파일을 숨기는 데 사용합니다. 이것은 ISFB의 고유 요소가 아니라 CARBERP라는 또 다른 악명 높은 맬웨어에서 파생된 것입니다. 코드를 비교하면 두 맬웨어에서 FJ가 사용되었다는 것을 알 수 있습니다. FJ.exe는 변형을 기반으로 하는 URSNIF 페이로드에서 JJ, J1, J2 또는 WD 필드 생성을 담당하는 도구입니다. 그러나 LDR4에서는 이러한 매직 비트가 누락되었으며 일반적으로 페이로드 끝에 하드코딩된 숨겨진 파일이 사라졌습니다.

ISFB FJ.exe overlapping code with CARBERP FJ.cpp
그림 8: ISFB FJ.exe가 CARBERP FJ.cpp와 중복되는 코드
 

맬웨어 패밀리

PDB 경로/프로젝트 경로

Carberp

bootkit.old/FJ/

ISFB

d:\work\projects\bk2\bin\release\i386\FJ.pdb (The bk2 project name in the file path stands for “Bootkit v2”)

  • LDR4는 백도어입니다.
    URSNIF는 EMOTET 및 TRICKBOT이 이전에 했던 것과 같은 경로를 따라 새로운 공격 전략에 집중하고 있는 은행을 목표로 하는 최신 맬웨어입니다. LDR4는 은행을 목표로 삼는 다른 맬웨어가 갖고 있는 기능과 모듈을 제거하고, VNC 및 원격 쉘을 손상된 시스템으로 가져오는 데만 집중합니다.

난독화

맬웨어를 만들 때 보안 전문가의 분석을 방해하기 위해 코드 또는 API 호출에 난독화를 적용하는 것이 일반적인 관행입니다. URSNIF는 역사적으로 난독화를 적용하지 않았습니다. 단, AV 회피를 위해 일부에 암호화를 적용합니다. 반면에 LDR4 변종은 윈도우 API 호출에 난독화를 적용하였습니다. 맬웨어가 사용하는 윈도우 모듈(kernel32, ntdll, crypt32, advapi32, ws2_32)의 내보내기 이름과 주소를 통해 해시 조회 테이블이 빌드 되고, CRC32 알고리즘을 수정한 JAMCRC32 체크섬 함수 이름이 메모리 가상 주소로 매핑됩니다. 코드 뒷부분에는 윈도우 API 함수 주소를 빠르게 검색하기 위해 테이블의 체크섬 값을 조회하는 기능이 구현되었습니다. 컴파일된 바이너리는 난독화가 적용되어 있지 않아 리버스 엔지니어링이 상대적으로 쉽습니다.

행동

분석 과정에 눈에 띈 부분 중 하나는 맬웨어 개발자가 코드를 단순하게 정리했다는 것입니다. 다른 변종과 비교할 때 두드러진 특징은 은행을 타깃으로 하는 기능을 제거했다는 것입니다.

맬웨어는 먼저 실행 파일에서 .bss 섹션을 찾아 간단한 XOR 기반 알고리즘을 사용해 암호를 해독합니다. 이는 PE 타임스탬프와 섹션의 PointerToRawData 및 SizeOfRawData 필드로 구성된 키로 수행됩니다. 암호 해독이 성공되었는지 확인하기 위해 복호화 된 데이터의 일부에 대한 체크섬을 계산합니다. 이 체크섬은 UTF-16으로 인코딩된 문자열 "All rights reserved"의 체크섬과 일치해야 합니다. 이 체크섬은 이후 작업에서 XOR 키로 사용됩니다.

다음으로 레지스트리 키 HKLM\SYSTEM\CurrentControlSet\Control 아래의 하위 키를 열거해 시스템 서비스 목록을 수집하고 두 개의 개별 ID인 pagefile.sys, hiberfil 의 생성 날짜에서 파생된 시스템 ID를 생성합니다.

한 번에 하나의 맬웨어 인스턴스만 활성화되도록 하기 위해 임의의 이름을 가진 뮤텍스를 생성합니다. 여기서 이전 단계에서 생성된 시스템 ID는 임의의 시드 값을 사용합니다. 그런 다음 .bss 섹션의 복호화 된 구성을 확인해 필요한 봇 구성과 C2(Command & Control) 서버의 데이터 암호 해독에서 사용하는 RSA 공개 키가 모두 포함되어 있는지 확인합니다. 그런 다음 QueueUserAPC() 함수를 통해 기본 통신 스레드를 시작합니다.

기본 통신 루프는 임베디드 봇 구성에서 C2 서버 정보를 검색합니다.

  • IdleTime 옵션이 구성에 있는 경우 코드는 서버와 통신을 시작하기 전에 설정 시간 동안 대기합니다.
  • RunCommand 옵션이 있는 경우 해당 값은 명령 출력이 임시 파일로 리다이렉션되는 별도의 스레드에서 실행됩니다. 맨디언트가 확인한 모든 바이너리에는 "echo Commands"와 "dir"이라는 두 개의 임베디드 명령이 포함되어 있습니다.

C2 서버는 수행할 명령 목록이 포함된 TASK.BIN 파일을 다운로드하려고 하나씩 접속합니다. 잠재적인 명력 목록은 본 포스팅의 기능 부문을 참조 바랍니다.

네트워크 통신

LDR4에서 사용하는 통신 프로토콜은 이전 RM3 변종에서 사용하는 것과 크게 다르지 않습니다. / index.html 로 끝나는 비콘 URL과 함께 HTTPS를 통한 POST 요청을 사용합니다. 사용자 에이전트 문자열은 윈도우 버전 및 아키텍처에 따라 다릅니다.

Mozilla/5.0 (Windows NT %d.%d; %s) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36

사용자 에이전트 문자열에서 오래된 크롬 버전을 사용하면 프록시 서버가 아웃바운드 HTTP/HTTPS 연결을 감독하고 사용자 에이전트 문자열을 기반으로 차단하거나 경고할 수 있는 환경에서 좋은 탐지 기회를 제공합니다. 비콘 요청의 쿼리 문자열은 다음 형식을 사용하는 데 이 역시 RM3의 비콘 형식과 거의 같습니다.

version=%u&user=%s&group=%u&system=%s&file=%08x&arc=%u&crc=%08x&size=%u

매개변수에 대한 설명은 다음 표를 참조 바랍니다.

매개변수

설명

version

봇 버전, 예: "100123"(1.00.123)

user

유저 ID

group

봇넷 ID

system

시스템 ID

file

파일 ID(JAMCRC323 체크섬)

arc

파일 아키텍처(0-x86, 1-x64)

crc

파일 체크섬(다운로드한 경우, 그렇지 않으면 0)

size

파일 사이즈(다운로드한 경우, 그렇지 않으면 0)

임의의 이름과 값으로 구성된 가짜 매개변수가 앞서 언급한 쿼리 문자열 앞에 추가되고 요청이 만들어질 때마다 전체 요청 문자열이 포함된 키와 함께 CBC 모드에서 AES-256을 사용해 암호화됩니다. 16개의 "0" 문자로 구성된 초기화 벡터(IV)가 Base64를 사용해 인코딩된 다음 POST 요청의 페이로드로 전송됩니다.

초기 비컨의 쿼리 문자열 예(파일 ID 0x8fd8a91e 는 파일 이름 TASK.BIN 에 해당)

clypnrkl=wsktexbmn&version=100123&user=f2472a25a2e15c3d&group=202208152&system=18245c7ff14d7902&file=8fd8a91e&arc=0&crc=00000000&size=0

후속 비콘에 대한 쿼리 문자열의 예(기존 TASK.BIN 크기는 320바이트이고 내용의 체크섬은 0x3e3edc47임)

chjm=kckhu&version=100123&user=f2472a25a2e15c3d&group=202208152&system=18245c7ff14d7902file=8fd8a91e&arc=0&crc=3e3edc47&size=320

네트워크 신호 예(AES로 암호화되고 Base64로 인코딩된 요청 문자열 포함)

POST /index.html

Host: logotep[.]xyz

Cache-Control: no-cache

Connection: Keep-Alive

Pragma: no-cache

Content-Type: multipart/form-data; boundary=9808fdecfe274c1d

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36

Content-Length: 285

 

--9808fdecfe274c1d

Content-Disposition: form-data; name="rcgmbh"

QgrHabeBs9/vsorhqEP2jV88dSwmgvyxepEZczkNSFXt89yV2nH9/7A5QYcIslSIoimlOmGG53oykoFVIfc
rge6eCwchr62tLGsho13OHolmwJBYFYH0+sxqa1AH8qV4CEjKX+UwyioMNnv0QlW9pagvAc6JMo1JoTHjrq
aci07r/dByQSndma/MhZU1aIrI
--9808fdecfe274c1d--

맨디언트가 식별한 모든 C2 서버는 5-10자로 구성된 도메인 이름을 사용하고 .xyz, .cyou, .com 최상위 도메인에 등록되었으면 Let's Encrypt TLS 인증서를 사용했습니다. 도메인 이름 Namecheap에 등록되어 있으며 2022년 2월 영국의 Stark Industries Solutions라는 회사에서 호스팅 되며 Ivan Neculiti라는 이름의 몰도바 사람과 연결되어 있습니다. 이 사람은 호스팅 서비스를 제공하는 러시아의 PQ Hosting이라 부르는 Perfect Quality Hosting 회사의 배후에 있는 이와 동일인으로 보입니다.

구성

앞서 언급한 바와 같이 URSNIF의 LDR4 변종은 구성 저장소 관련해 재작업이 이루어졌습니다. 이전 변종은 바이너리에 포함된 추가 파일을 찾기 위해 매직 마커를 사용했습니다. 참고로 변종 유형에 따라 사용한 매직 마커도 다양합니다. 새로운 LDR4 변종은 결합된 파일을 저장하기 위해 새로운 데이터 구조를 적용했으며, 암호화된 .bss 섹션의 문자열과 병합됩니다.

LDR4 decrypted .bss section structure
그림 9: LDR4 해독된 .bss 섹션 구조

데이터 구조에는 8비트 헤더가 있으며 다음과 같은 필드가 있습니다.

데이터 크기

필드 이름

설명

2비트

NextOffset

연결 목록의 다음 요소에 대한 오프셋입니다. 0이면 더 이상 요소가 없습니다.

2비트

ItemSize

ItemValue 필드의 데이터 크기입니다.

4비트

ItemID

항목을 고유하게 식별하는 값입니다. 일반적으로 항목 이름의 JAMCRC32 해시입니다.

ItemSize 비트

ItemValue

현재 항목의 값입니다.

항상 존재해야 하는 두 개의 결합된 파일이 있습니다. 이것이 없으면 맬웨어가 동작하지 않습니다. 봇 구성과 C2 서버의 응답을 확인하는 데 사용하는 RSA 공개 키입니다. 다른 변종과 마찬가지로 구성 옵션은 대문자 이름의 JAMCRC32 체크섬인 16진수로 식별됩니다. 옵션 이름은 바이너리 또는 구성의 어느 곳에서도 참조되지 않으며 체크섬을 무차별 대입하여 찾을 수 있습니다. 현재 알려진 구성 옵션은 다음과 같습니다.

옵션 ID

옵션 이름

설명

0xb892845a

Controller

통신에 사용되는 C2 URL 목록(공백으로 분리)

0x656b798a

Group

봇넷 ID

0x4fa8693e

ServerKey

C2와 통신하는 데 사용되는 AES 키

0x8c871ff9

IdleTime

C2에 대한 초기 요청 전에 대기하는 시간(초)

0x9d29ade4

RequestTime

C2에 대한 비컨 요청 사이의 시간(초)

0xf76f421a

HostKeepTime

통신 실패 시 다음 C2 서버 연결을 시도하기 전에 대기하는 시간(분)

0x08b2f0fb

HostShiftTime

통신 성공 시 다음 C2 서버로 전환하기까지 대기하는 시간(분)

0x89a5deaa

RunCommand

시작 시 실행할 초기 명령 목록

0x303378c6

알려지지 않음

알 수 없는 시간 초과 매개변수, 아마도 현재는 사용되지 않는 것으로 추정합니다.

기능

맬웨어에는 다음 명령이 구현되어 있습니다.

명령 ID

명령 이름

설명

0xf880e2be

LOAD_DLL

현재 프로세스에 DLL 모듈 로드

0xfee861f1

SHELL_STATE

cmd.exe 리버스 쉘의 상태 검색

0xc202e685

SHELL_START

cmd.exe 리버스 쉘 시작

0xa5946e4a

SHELL_STOP

cmd.exe 리버스 쉘 중지

0xa04d6355

SHELL_RESTART

cmd.exe 리버스 쉘 다시 시작

0x5d2295b5

RUN_COMMAND

임의의 명령 실행

0x5d639645

EXIT

마침

맨디언트가 관찰한 일반적인 두 가지 명령은 새로운 피해자에게 전송된 네트워크 정찰과 관련이 있습니다.

  • RUN_COMMAND=net group "domain computers" /domain
  • RUN_COMMAND=net session

과거 URSNIF의 RM3 변종에서도 동일한 두 명령이 관찰되었는데, 이는 두 변종 간 연결을 증명하는 또 다른 특성입니다.

명령 쉘

내장된 명령 쉘 기능은 원격 IP 주소에 연결하는 리버스 쉘을 제공하고 공격자에게 cmd.exe 프로그램을 통해 시스템 명령을 실행할 수 있는 기능을 제공합니다. 이 기능은 RM3 변종이 별도의 cmdshell.dll 플러그인을 통해 제공한 것과 동일합니다. 연결할 원격 IP 주소와 포트 번호는 런타임에 SHELL_START 명령에 대한 인수로 제공됩니다. 이 기능으로 위협 행위자는 공격을 하고, 추가 호스트 및 네트워크 정찰을 수행하고, 측면 이동을 할 수 있습니다.

플러그인

이전에 관찰한 변종은 LOAD_PLUGIN 명령을 통해 로드된 다양한 플러그인으로 맬웨어 기능을 확장할 수 있었습니다. 이 기능은 맨디언트가 분석한 LDR4 변종의 바이너리에서는 찾을 수 없었습니다. 그러나 VNC 모듈이 LOAD_DLL 명령을 통해 다운로드된 경우를 한 번 이상 관찰할 수 있었습니다. 따라서 LOAD_DLL 명령은 임의의 DLL 모듈을 통해 맬웨어의 기능을 확장하여 플러그인과 유사한 기능을 제공하는 더 간단하고 일반적인 방법을 허용합니다. 흥미롭게도 VNC 모듈은 여전히 내장된 구성을 저장하는 오래된 방법을 사용합니다(J1 매직 바이트). 따라서 원래 다른 변종용으로 컴파일되었을 수 있습니다.

VNC 모듈

파일 이름

vnc64_1.dll

내부 이름

VncDLL.dll

MD5 해시

bd4a92d4577ddedeb462a71cdf2fa934

PE 타임스탬프

Tue Sep 14 19:32:19 2021

임베디드 VNC C2

141[.]98.169.6:80

속성

일부 LDR4 C2 서버는 오류 메시지와 파일 경로를 누출하도록 구성되어 있으며, 파일 경로는 봇 패널이 www_loader_ldl 디렉토리 이름으로 사용자 expro의 홈 디렉토리에 설치되어 있음을 나타냅니다. 이는 expro가 RM3 및 LDR4 변종 모두에 대한 봇 패널을 담당하는 웹 개발자의 별명이라는 현재의 분석 내용을 뒷받침합니다.

404 Not Found
림 10: expro 홈 디렉토리를 나타내는 C2 서버의 오류 메시지

시사점 및 감사의 말

올 초 RM3 변종을 소멸하기로 한 것과 은행을 타깃으로 한 기능을 제거해 코드를 크게 단순화하기로 한 개발자의 결정으로 인해 새로운 변종은 이전에 관찰한 URSNIF 관련 변종과 전략, 전술, 절차(TTP)에서 큰 차이를 보입니다. 이런 변화는 위협 행위자가 향후 랜섬웨어 작업에 참여하거나, 다른 위협 행위자가 이 맬웨어를 활용해 랜섬웨어 공격을 할 수 있도록 하는데 중점을 두고 있다는 것을 잘 보여 줍니다. 이런 평가의 배경에는 맨디언트가 새로운 랜섬웨어 및 최소한 2022년 초부터 LDR4 변종과 유사한 RM3 변종을 배포할 파트너를 찾고 있는 언더그라운드 커뮤니티에서 활동하는 위협 행위자를 식별한 사실이 자리하고 있습니다. 끝으로 LDR4 변종 관련해 맬웨어 IOC를 제공한 Benoit Ancel과 초기 맬웨어 샘플을 찾아준 Cian Lynch에 감사의 말을 전합니다.

부록 A: 최근 활성화된 URSNIF 변종 비교

 

IAP 2.0

RM3 

LDR4 

지속성 유지 

파워쉘을 사용하여 레지스트리 키에 저장된 코드를 실행하는 예약된 작업

파워쉘을 사용하여 레지스트리 키에 저장된 코드를 실행하는 예약된 작업

지속성 유지 기능 없음

구성 스토리지

보안 PE 디렉토리는 'JJ' 매직 비트로 시작하는 바이너리 데이터를 가리킴

보안 PE 디렉토리는 'WD' 매직 비트로 시작하는 바이너리 데이터를 가리킴

암호화된 .bss 섹션에 숨김

PRNG 알고리즘

여러 개

xorshift64*

여러 개

체크섬 알고리즘

JAMCRC

JAMCRC

JAMCRC

데이터 압축

aPLib

aPLib

압축 없음

암호화/복호화

구 버전: Serpent CBC, 신 버전: AES-256 CBC

구 버전: Serpent CBC, 신 버전: AES-256 CBC

AES-256 CBC

데이터 무결성 검증

RSA 시그니처

RSA 시그니처

RSA 시그니처

통신 방식

HTTP GET/POST 요청

HTTP GET/POST 요청;

HTTP POST 요청

페이로드 인코딩

패딩되지 않은 Base64('+' 및 '/'는 각각 '_2B' 및 '_2F'로 대체됨), 임의의 슬래시 추가됨

딩되지 않은 Base64('+' 및 '/'는 각각 '_2B' 및 '_2F'로 대체

딩되지 않은 Base64('+' 및 '/'는 각각 '_2B' 및 '_2F'로 대체

URL 경로 모방 사용

No

Yes

No

Uses PX file format? 

No

Yes

No

PX 파일 형식 사용

No

Yes

No

바이너리에 포함된 명령

Yes

No

Yes

부록 B: IOC

맬웨어 샘플 해시

  • 360417f75090c962adb8021dbb478f67 [VT]
  • 3e0f28bcaf35af2802f45b58f49481be
  • 590d96a7be55240ad868ebec78ce38f2
  • 8c658b9b02814927124351484c42a272 [VT]
  • 9f68d1a4b33e3ace6215040dc9fc73e8 [VT]
  • b4610d340a9bff58616543b10e961cd3
  • baa784967fd0558715f4011a72eb872e [VT]
  • bd4a92d4577ddedeb462a71cdf2fa934
  • bea60bab50d47f239132890a343ae84c [VT]
  • d38f6f01bb926df07d34de0649f608f6 [VT]
  • d6ef4778f7dc9c31a0a2a989ef42d2fd [VT]
  • d94657449f8d8c165ef88fd93e463134 [VT]
  • eee617806c18710e8635615de6297834 [VT]
  • f4b0a6ab164f7c58cccce651606caede [VT]

맬웨어 샘플 해시(압축 해제)

  • 00b981b4d3f47bcbd32dfa37f3b947e5 [VT]
  • 09bc2a1aefbafd3e7577bc3c352c82ad [VT]
  • 1b0ec09ca4cb7dcf5d59cea53e1b9c93
  • 3c5f002b46ef11700caca540dcc7c519
  • 498d5e8551802e02fe4fa6cd0425c608
  • 58169007c2e7a0d022bc383f9b9476fe [VT]
  • 7808d22a4343b2617ceef63fd0d43651
  • 7eea48e592c4bccbfa3929b1b35a7c0b
  • 89b4dd18bea842fddd021aa74d109ec3
  • a3539bc682f39406c050e5233058c930 [VT]
  • ac39f1a22538f0211204037cce30431d
  • c1989d25287cd9044b4d936e73962e35
  • c7facfffad15a9c84239b495770183bb
  • cde05576e7c48ca89d2f21c283a4a018 [VT]

도메인

  • astope[.]xyz
  • binchfog[.]xyz
  • damnater[.]com
  • daydayvin[.]xyz
  • dodsman[.]com
  • dodstep[.]cyou
  • fineg[.]xyz
  • fingerpin[.]cyou
  • fishenddog[.]xyz
  • giantos[.]xyz
  • gigeram[.]com
  • gigiman[.]xyz
  • gigimas[.]xyz
  • higmon[.]cyou
  • isteros[.]com
  • kidup[.]xyz
  • lionnik[.]xyz
  • logotep[.]xyz
  • mainwog[.]xyz
  • mamount[.]cyou
  • minotos[.]xyz
  • pinki[.]cyou
  • pipap[.]xyz
  • prises[.]cyou
  • reaso[.]xyz
  • rorfog[.]com
  • tornton[.]xyz
  • vavilgo[.]xyz

IP 주소

  • 5[.]182.36.248 (CH) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 5[.]182.37.136 (RU) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 5[.]182.38.43 (HU) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 5[.]182.38.68 (HU) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 5[.]252.23.238 (SK) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]8.147.179 (SE) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]8.147.215 (SE) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]67.34.75 (RO) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]67.34.172 (RO) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]67.34.245 (RO) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]67.229.39 (MD) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]89.54.122 (SK) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]89.54.152 (SK) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]95.11.62 (SK) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]140.146.241 (MD) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]142.212.87 (MD) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 45[.]150.67.4 (MD) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 77[.]75.230.62 (CZ) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 77[.]91.72.15 (HU) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 94[.]131.100.71 (FI) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 94[.]131.100.209 (FI) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 94[.]131.106.8 (NL) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 94[.]131.106.16 (NL) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 94[.]131.107.13 (NL) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 94[.]131.107.132 (NL) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 94[.]131.107.252 (NL) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 141[.]98.169.6 (FI) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 185[.]250.148.35 (MD) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 188[.]119.112.104 (NL) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)
  • 193[.]38.54.157 (NL) – ISP: STARK INDUSTRIES SOLUTIONS LTD (GB)

유저 에이전트 문자열

  • Mozilla/5.0 (Windows NT <os_version>; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36
  • Mozilla/5.0 (Windows NT <os_version>; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36

부록 C: YARA 탐지 룰

rule URSNIF_LDR4 {

 

    strings:

        $str1 = "LOADER.dll" fullword

        $str2 = "DllRegisterServer" fullword

        $str3 = ".bss" fullword

 

        $x64_code1 = { 3D 2E 62 73 73 74 0A 48 83 C7 28 }

        $x64_code2 = { 8B 17 48 83 C7 04 8B CA 8b C2 23 CB 0B C3 F7 D1 23 C8 41 2B CA 44 8B D2 41 89 08 41 8B CB 49 83 C0 04 83 E1 07 FF C1 41 D3 C2 41 83 EB 04 79 }

        $x64_code3 = { 41 0F B6 01 49 FF C1 8B C8 8B D0 83 E1 03 C1 E1 03 D3 E2 44 03 C2 41 83 C2 FF 75 }

        $x64_code4 = { 45 8D 45 08 48 8D 8C 24 [4] BA 30 00 FE 7F E8 }

        $x64_code5 = { 48 8D 8C 24 [4] BA 30 00 FE 7F 41 B8 08 00 00 00 E8 }

 

        $x86_code1 = { 81 F9 2E 62 73 73 74 09 83 C6 28 }

        $x86_code2 = { 8B 06 8B D0 23 55 0C 8B D8 0B 5D 0C F7 D2 23 D3 2B D1 8A 4D 08 80 E1 07 83 C6 04 89 17 83 C7 04 FE C1 D3 C0 83 6D 08 04 8B C8 79 }

        $x86_code3 = { 8A 0E 0F B6 D1 8B CA 83 E1 03 C1 E1 03 D3 E2 46 03 C2 4F 75 }

        $x86_code4 = { 6A 08 8D 45 F8 68 30 00 FE 7F 50 E8 }

 

    condition:

        5 of them

 

}