{
	"id": "44c50517-17ab-4c47-a30f-331a990e1c2b",
	"created_at": "2026-05-05T02:45:57.417708Z",
	"updated_at": "2026-05-05T02:46:36.982441Z",
	"deleted_at": null,
	"sha1_hash": "86e496f986f55f6c0b0191ce30111a6769ca7696",
	"title": "Matryoshka : Variant of ROKRAT, APT37 (Scarcruft)",
	"llm_title": "",
	"authors": "",
	"file_creation_date": "0001-01-01T00:00:00Z",
	"file_modification_date": "0001-01-01T00:00:00Z",
	"file_size": 1557561,
	"plain_text": "Matryoshka : Variant of ROKRAT, APT37 (Scarcruft)\r\nBy S2W\r\nPublished: 2021-07-13 · Archived: 2026-05-05 02:14:44 UTC\r\n14 min read\r\nJul 13, 2021\r\nAuthor: @ Talon\r\nExecutive Summary\r\n2020년 12월, 특정 웹사이트가 워터링홀 공격에 악용된 사례가 발견되었으며, 업무 특성상 해당 사\r\n이트에 주기적으로 방문하는 사용자들을 포함하여 취약한 버전의 IE 브라우저로 해당 웹사이트에\r\n방문한 사용자는 공격 대상이 되었음\r\n워터링홀 공격으로 다운로드 및 실행되는 악성코드 유형으로 Ruby 실행 파일 및 Ruby 스크립트, PE\r\n파일이 포함된 Multi-Staging Shellcode (KEY : 0x78AEEA97)가 확인되었음\r\n최종 실행되는 악성코드는 과거 ROKRAT으로 알려진 악성코드의 발전된 버전\r\n- 공격 대상의 정보 탈취 및 탈취한 정보를 클라우드 서비스로 전송\r\n공격 방식 및 대상, 악성코드 등을 포함한 TTP 분석 결과, Scarcruft 위협 그룹과 관련된 공격으로 판\r\n단\r\n- Scarcruft(a.k.a APT37, Group123)는 북한 배후로 알려진 위협그룹으로 2012년부터 현재까지 지속\r\n적인 공격 활동이 포착되고 있음\r\nOverview\r\nPress enter or click to view image in full size\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 1 of 9\n\nInitial Vector\r\n특정 웹사이트가 워터링홀 페이지로 악용되었음.\r\n해당 페이지 내에 삽입되어 있는 악성 스크립트 유포지\r\n(mobile-analytics-d0558.web[.]app, 151.101[.]1.195) 접근 시\r\nInternet Explorer 취약점(추정)으로 인한 Powershell 스크립트 동작\r\n악성 스크립트 유포지에서 추가 파일 다운로드\r\n(파일명: mobile.analytics6.min)\r\nPress enter or click to view image in full size\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 2 of 9\n\n추가 악성코드 다운로드 스크립트\r\n추가 다운로드 된 파일에 대한 XOR 디코딩 수행 후 스레드 생성\r\n- OneDrive 에서 추가 파일 다운로드: 루비 실행 파일, 악성 루비 스크립트, 인코딩 된 쉘코드\r\nDetailed Analysis\r\nSTAGE01 : 루비(Ruby) 스크립트를 통한 악성코드 실행\r\n다운로드 된 파일들의 디렉토리명과 파일명은 정상 드라이버(Driver)\r\n관련 이름으로 위장하고 있음. 다운로드 경로는 %PROGRAMDATA% 이며,\r\n디렉토리명은 ReadyBoost Driver , Microsoft Filesystem Filter Manager , Link-Layer Topology\r\nResponder Driver for NDIS 6 등 정상 드라이브 이름으로 위장하고 있음\r\n최초 실행 시, 루비 실행파일이 경로에 있는 ini 파일을 통하여 루비 스크립트를 실행함\r\n- 루비 실행 파일 경로 : %APPDATA%\\Local\\Microsoft\\Ruby27-x64\r\n- INI 파일명: Link-Layer Topology Responder Driver for NDIS 6.ini\r\nPress enter or click to view image in full size\r\nini 파일 내 command\r\nhistory.mo.urls (6117403d7668593be80a0ef1ad72ba5b, Ruby Script)는 드라이버 업데이트 및\r\nupdate.microsoft.com 과 같은 정상 도메인 정보를 포함하고 있는 것으로 보이나, 해당 스크립트 동작\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 3 of 9\n\n시 url 문자열의 일부분을 역순 + Base64 디코딩하여 인코딩 된 쉘코드를 실행\r\nPress enter or click to view image in full size\r\nhistory.mo.urls (6117403d7668593be80a0ef1ad72ba5b)\r\nPress enter or click to view image in full size\r\nDecoded Ruby Script\r\nSTAGE02 : 인코딩 된 쉘코드 + PE 파일\r\n파일명 : Shortcut_5B3C.info (888ed5eb170d48cf12f8716db899ec85)\r\n루비 스크립트에 의해 디코딩 되는 쉘코드 (XOR KEY : 0x58)\r\nkey = buf[1+buf[0]];\r\nfiroffset = buf[0]+6;\r\nfor i in firoffset..scupd.size do\r\n buf[i-firoffset] = buf[i] ^ key;\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 4 of 9\n\nend== Decoded Shellcode ==0x48 = 0x10 ^ 0x58\r\n0x89 = 0xd1 ^ 0x58\r\n0x5c = 0x4 ^ 0x58\r\n0x24 = 0x7c ^ 0x58\r\n0x8 = 0x50 ^ 0x58\r\n...\r\n디코딩 된 쉘코드는 XOR 디코딩 루틴을 거쳐 내부에 인코딩 된 PE파일을 디코딩 하게 됨. 그리고,\r\n디코딩 된 PE 파일은 메모리 상에서 실행함\r\n(XOR KEY: 0x78AEEA97)\r\nSTAGE03 : PE Loader\r\nMD5: 4DF1C60BAD360E3C0C5EBF8D2DE998E0 (Dumped binary)\r\nCompilation time: Thu Nov 19 00:24:48 2020\r\nROL3 을 이용한 디코딩 후 라이브러리 및 API를 호출하고, 컴퓨터 내 안티바이러스(AV) 프로그램\r\n을 확인함.\r\n- 윈도우 보안 센터(SecurityCenter)에 등록된 안티 바이러스 프로그램 정보를 WMI 쿼리로 확인\r\n주요 복호화 알고리즘 : AES-128-CBC + XOR\r\n- 로딩된 추가 페이로드에 있는 암호화 된 파일의 경로 및 파일명을 복호화\r\n- AES를 통해 복호화하며, IV 값은 0x323112233445566778899AAB0CBDCEDF\r\n- AES KEY 생성 시, 공격 대상의 컴퓨터 이름에 대한 MD5 해시값을 이용함\r\n1) IV: 32 31 12 23 34 45 56 67 78 89 9A AB 0C BD CE DF2) AES KEY: MD5(ComputerName) ^ 하드코딩 된 HEX\r\n - 하드코딩 된 HEX값 : 2B 7E A5 16 28 AE D2 A6 AB F7 15 88 09 CF 4F 3C2.1) KEY 생성에 사용되는 MD5 해\r\n - 생성된 해시값 : C8 CF 55 19 37 3D FB F5 0B 5B 82 34 04 96 67 2B3) 생성된 해시값을 UTF-8로 인식시켜\r\n - 1차 XOR : C8 CF 55 19 37 3D FB F5\r\n - 2차 XOR : 0B 5B 82 34 04 96 67 2B복호화 결과 : %ProgamData%\\ReadyBoost Driver\\782232C8\\WinSDK_214\r\n스레드 생성 후 XOR 디코딩 루틴을 통해 디코딩된 쉘코드를 실행함\r\n(쉘코드의 구성은 Stage02와 동일, XOR KEY: 0x78AEEA97)\r\nSTAGE04 : 인코딩 된 쉘코드 + PE 파일\r\n파일명 : WinSDK_214F.info (6634C216FDB0067920F911A6FD1D60DE)\r\nXOR 디코딩 루틴을 통하여 내부에 인코딩 된 PE파일을 디코딩 하게 됨\r\n(XOR KEY: 0x78AEEA97)\r\n최종 악성코드 : Variant of ROKRAT\r\nMD5: 5AFB61FD9C0BDF9468045291CC9C4E4F (Dumped binary)\r\nCompilation time: Fri Dec 11 22:56:38 2020\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 5 of 9\n\nScarcruft(APT37, Group123) 위협그룹과 관련된 ROKRAT(정보 탈취형 악성코드)의 발전된 버전이\r\n며, 기존과 다르게 MD5(타겟의 컴퓨터명)와 커스텀 알고리즘을 이용하여 문자열을 디코딩\r\n주요 복호화 알고리즘: AES-128-CBC + XOR (Stage03과 동일)\r\n- 악성행위에 필요한 문자열 복호화\r\n주요 파일 작업 경로: %APPDATA%\\Roaming\\Microsoft\\WER%08X\\%08X%02d\r\nC:\\Users\\USER\\AppData\\Roaming\\Microsoft\\WER[4BYTE HEX]\\[4BYTE HEX]15\r\nC:\\Users\\USER\\AppData\\Roaming\\Microsoft\\WER[4BYTE HEX]\\[4BYTE HEX]141) USER: 공격자가 지정한 유저명\r\n2) [4BYTE HEX] : 악성코드 내에 하드코딩 된 4바이트 HEX값\r\n3) [4BYTE HEX]15 : 암호화 된 파일 (주요 복호화 알고리즘으로 복호화 가능)* 암호화 된 파일을 복호화하여\r\nPress enter or click to view image in full size\r\n[4BYTE HEX]15 : 파일 복호화 결과\r\n동작하는 안티바이러스 확인 (Stage03과 동일)\r\n탈취 대상 정보\r\n1) 컴퓨터 정보 : 운영체제 버전, 동작하는 프로세스 등\r\n2) 파일 목록\r\n doc mdb xls ppt txt amr 3gp csv vcf\r\n hwp pdf eml msg m4a rtf url key der\r\n3) 클립보드\r\n4) USB 사용 정보\r\n5) 브라우저 정보 탈취 : 저장된 비밀번호, 쿠키정보\r\n - 브라우저 목록 : 크롬, 파이어폭스, IE, 엣지, 오페라, 네이버 웨일\r\n6) 메일 클라이언트 정보 탈취 : MS 아웃룩, Thunderbird\r\n7) WiFi 관련 정보\r\n8) 파일 전송 클라이언트 정보 : WinSCP, FileZilla\r\n9) 설치 프로그램 목록 : L“Software\\Classes\\Installer\\Products”\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 6 of 9\n\n지속성 유지를 위한 매커니즘SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 등록\r\n명령을 통하여 특정 프로세스에 코드 인젝션 수행\r\n화면 캡쳐 및 키로깅 수행\r\n정상 클라우드 서비스를 C\u0026C 통신에 악용\r\n1) 악성코드에 명시된 클라우드 서비스 API 목록 : PCLOUD, YANDEX, BOX, DROPBOX,\r\nBLACKBLAZE* (실제 악성코드 동작 시 2개 클라우드 서비스 활용)\r\n2) 파일 업로드 / 다운로드로 명령 제어 및 정보 유출\r\n* 과거 ROKRAT 계열과 다르게 추가된 신규 클라우드 서비스 : Blackblaze → B2 클라우드 스토리지\r\n(applicationKey로 인증)\r\nConclusion\r\n대북 관련 사이트를 통해 워터링홀 공격이 이루어지고 있으며 업무 특성상 대북 관련 사이트에 주\r\n기적으로 방문하는 경우, 관련 사이트 접속 시 IE 외 최신 버전의 브라우저 이용을 추천\r\n공격 방식 및 대상, 악성코드 등을 포함한 TTP 분석 결과, Scarcruft(APT37, Group123) 위협 그룹과\r\n관련된 공격으로 판단됨\r\nAppendix\r\nAppendix 1: IOC\r\npcloud token : J0ycZ53OfwT3cURkZSVUDa7ZgrE2Kb72JlJntinTe1eN6LP3d1wy (revoked)\r\n등록된 계정정보 : w4lters.jamie@yandex.com\r\nGet S2W’s stories in your inbox\r\nJoin Medium for free to get updates from this writer.\r\nRemember me for faster sign in\r\nyandex token : AQAAAAAzHYxcAAWUROxzKJdWc0DBjRwRIB3dlVE (Unauthorized Error)\r\nAppendix 2: Yararule\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 7 of 9\n\nrule Scarcruft_Reverse_BS64_Loader\r\n{\r\n meta:\r\n author = \"S2WLAB_TALON_JACK2\"\r\n type = \"APT\"\r\n version = \"0.1\"\r\n date = \"2021-03-09\"\r\n strings:\r\n $require_base64 = {72657175697265202762617365363427}\r\n $require_fiddle_import = {726571756972652027666964646c652f696d706f727427}\r\n $bs64_decode64 = {4261736536342e6465636f64653634}\r\n $reverse = {2e72657665727365}\r\n condition:\r\n all of them\r\n }\r\n rule Scarcruft_RUBY_Shellcode_XOR_Routine\r\n {\r\n meta:\r\n author = \"S2WLAB_TALON_JACK2\"\r\n type = \"APT\"\r\n version = \"0.1\"\r\n date = \"2021-05-20\"\r\n strings:\r\n /*\r\n 8B 4C 18 08 mov ecx, [eax+ebx+8]\r\n C1 C7 0D rol edi, 0Dh\r\n 40 inc eax\r\n F6 C7 01 test bh, 1\r\n 74 06 jz short loc_D0\r\n 81 F7 97 EA AE 78 xor edi, 78AEEA97h\r\n */\r\n $hex1 = {C1 C7 0D 40 F6 C7 01 74 ?? 81 F7}\r\n /*\r\n 41 C1 C2 0D rol r10d, 0Dh\r\n 41 8B C2 mov eax, r10d\r\n 44 8B CA mov r9d, edx\r\n 41 8B CA mov ecx, r10d\r\n 41 81 F2 97 EA AE 78 xor r10d, 78AEEA97h\r\n */\r\n $hex2 = {41 C1 C2 0D 41 8B C2 44 8B CA 41 8B CA 41 81 F2}\r\n condition:\r\n 1 of them\r\n }\r\nrule Scarcruft_evolved_ROKRAT\r\n{\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 8 of 9\n\nmeta:\r\n author = \"S2WLAB_TALON_JACK2\"\r\n type = \"APT\"\r\n version = \"0.1\"\r\n date = \"2021-07-09\"\r\n strings:\r\n/*\r\n0x140130f25 C744242032311223 mov dword ptr [rsp + 0x20], 0x23123132\r\n0x140130f2d C744242434455667 mov dword ptr [rsp + 0x24], 0x67564534\r\n0x140130f35 C744242878899AAB mov dword ptr [rsp + 0x28], 0xab9a8978\r\n0x140130f3d C744242C0CBDCEDF mov dword ptr [rsp + 0x2c], 0xdfcebd0c\r\n0x140130f45 C745F02B7EA516 mov dword ptr [rbp - 0x10], 0x16a57e2b\r\n0x140130f4c C745F428AED2A6 mov dword ptr [rbp - 0xc], 0xa6d2ae28\r\n0x140130f53 C745F8ABF71588 mov dword ptr [rbp - 8], 0x8815f7ab\r\n0x140130f5a C745FC09CF4F3C mov dword ptr [rbp - 4], 0x3c4fcf09\r\n*/\r\n $AES_IV_KEY = {\r\n C7 44 24 ?? 32 31 12 23\r\n C7 44 24 ?? 34 45 56 67\r\n C7 44 24 ?? 78 89 9A AB\r\n C7 44 24 ?? 0C BD CE DF\r\n C7 45 ?? 2B 7E A5 16\r\n C7 45 ?? 28 AE D2 A6\r\n C7 45 ?? AB F7 15 88\r\n C7 45 ?? 09 CF 4F 3C\r\n }/*\r\n0x14012b637 80E90F sub cl, 0xf\r\n0x14012b63a 80F1C8 xor cl, 0xc8\r\n0x14012b63d 8848FF mov byte ptr [rax - 1], cl\r\n0x14012b640 4883EA01 sub rdx, 1\r\n*/\r\n $url_deocde = {\r\n 80 E9 0F\r\n 80 F1 C8\r\n 88 48 ??\r\n 48 83 EA 01 }\r\n condition:\r\n uint16(0) == 0x5A4D and\r\n any of them\r\n}\r\nSource: https://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nhttps://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48\r\nPage 9 of 9",
	"extraction_quality": 1,
	"language": "KO",
	"sources": [
		"Malpedia"
	],
	"origins": [
		"web"
	],
	"references": [
		"https://medium.com/s2wlab/matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48"
	],
	"report_names": [
		"matryoshka-variant-of-rokrat-apt37-scarcruft-69774ea7bf48"
	],
	"threat_actors": [],
	"ts_created_at": 1777949157,
	"ts_updated_at": 1777949196,
	"ts_creation_date": 0,
	"ts_modification_date": 0,
	"files": {
		"pdf": "https://archive.orkl.eu/86e496f986f55f6c0b0191ce30111a6769ca7696.pdf",
		"text": "https://archive.orkl.eu/86e496f986f55f6c0b0191ce30111a6769ca7696.txt",
		"img": "https://archive.orkl.eu/86e496f986f55f6c0b0191ce30111a6769ca7696.jpg"
	}
}