Go to Top

Go to Top

etherrat 악성코드 컨텐츠 썸네일
etherrat 악성코드 컨텐츠 썸네일
etherrat 악성코드 컨텐츠 썸네일
etherrat 악성코드 컨텐츠 썸네일

위협 인텔리전스

위협 인텔리전스

위협 인텔리전스

Windows EtherRAT

Windows EtherRAT

Windows EtherRAT

엔키화이트햇

엔키화이트햇

2026. 1. 20.

2026. 1. 20.

2026. 1. 20.

Content

Content

Content

요약

  • EtherRAT 악성코드를 분석하던 중 msi 파일로 유포된 EtherRAT 악성코드를 발견하였다.

  • EtherRAT 악성코드가 사용한 스마트 컨트랙트를 분석한 결과 연관된 스마트 컨트랙트 주소를 추가적으로 확보하였다.

  • 스마트 컨트랙트의 트랜잭션 기록을 통해 C&C 서버 주소를 추가적으로 확보하였다.

  • C&C 서버와 스마트 컨트랙트에서 Tsundere Botnet과의 연관성이 확인되었다.

1. 개요

EtherRAT 악성코드는 sysdig의 블로그를 통해 최초로 보고된 자바스크립트 기반 악성코드이다. 해당 악성코드는 React2Shell 취약점(CVE-2025-55182)을 통해 리눅스 환경을 대상으로 유포되었다.

EtherRAT 악성코드를 분석하던 중 EtherRAT 악성코드의 C&C 서버와 통신하는 다수의 msi 파일을 확보하였고, 분석 결과 윈도우 환경을 대상으로 유포된 EtherRAT 악성코드가 존재하는 것을 확인하였다. 특히 일부 파일들은 특정 게임의 모드 설치 파일로 위장해 압축 파일에 포함된 형태인 것이 확인되었다.

본 글은 게임 모드 설치 파일로 위장한 EtherRAT 악성코드에 대한 분석 내용과 EtherRAT 악성코드가 사용하는 스마트 컨트랙트 분석 결과를 다룬다.

2. 공격 분석

공격 개요도

caption - 공격 개요도

2.1. 99 Nights Script.zip

압축 파일에는 "99 Nights Script Installer.msi" 파일과 GTA 온라인의 치트 모드 Ultimate Menu의 구동을 위한 파일들이 포함되어 있다.

caption - 압축 파일 미리보기

"99 Nights Script"는 유명 게임 Roblox의 오픈소스 모드 이름으로, 공격자는 EtherRAT 악성코드를 해당 모드 설치 파일로 위장해 사용자가 악성코드를 실행하도록 유도하였다.

2.2. 99 Nights Script Installer.msi

msi 파일을 실행하면 3 개의 파일이 "%LOCALAPPDATA%\msitemp" 경로에 생성된다. 생성되는 파일 정보는 아래 표 참고 바란다.

| 파일명 | 설명 |
| --- | --- |
| Dt2fWrOyPtRxL28.js | EtherRAT을 복호화하는 난독화된 자바스크립트 파일 |
| IEgrjQr6OI6C3pf | 암호화된 EtherRAT 악성코드 |
| syBKJQiN.cmd | nodejs를 다운로드하여 자바스크립트 파일을 실행하는 배치 스크립트

caption - 생성 파일 목록

파일 생성 이후, msi의 CustomAction 기능에 의해 syBKJQiN.cmd 파일이 실행된다.

msi 파일 CustomAction 테이블

caption - msi 파일 CustomAction 테이블

2.3. syBKJQiN.cmd

배치 파일이 실행되면 먼저 윈도우용 nodejs를 "%LOCALAPPDATA%\6gahPD" 경로에 다운로드한다. 이후 앞서 생성된 "Dt2fWrOyPtRxL28.js", "IEgrjQr6OI6C3pf" 두 파일을 "%LOCALAPPDATA%\6gahPD" 경로에 복사한다. 복사가 완료되면 다운로드한 nodejs를 이용해 "Dt2fWrOyPtRxL28.js"를 실행한다.

syBKJQiN.cmd 코드

caption - syBKJQiN.cmd 코드

2.4. Dt2fWrOyPtRxL28.js

"Dt2fWrOyPtRxL28.js" 파일은 obfuscator.io를 통해 난독화되어 있다. 또한 분석 방해를 목적으로 2가지 보호 기법이 적용되어 있다. 적용된 보호 기법은 아래와 같다.

  • 콘솔 출력 비활성화: 모든 콘솔 출력을 차단해 로그 확인을 어렵게 한다.

  • 포맷팅 감지: 코드가 포맷팅(정렬)되어 있을 경우 더미 코드가 실행되어 에러가 발생한다.

더미 코드가 실행되지 않아야 복호화 루틴이 동작하고, "IEgrjQr6OI6C3pf" 파일을 AES-256-CBC로 복호화해 현재 실행 경로에 "f6gK5600n6.js" 파일로 저장한다.

AES-256-CBC 복호화 루틴

caption - AES-256-CBC 복호화 루틴

이후 "f6gK5600n6.js" 파일을 실행한다. 정상적으로 실행되면 "f6gK5600n6.js" 파일을 실행하는 자바스크립트 코드를 현재 실행 경로에 "areAx6ey.js" 파일로 저장하고 자동 실행 레지스트리 경로에 해당 파일을 실행하는 키를 추가해 지속성을 확보한다.

2.5. f6gK5600n6.js

복호화된 자바스크립트 파일은 EtherRAT 악성코드로, EtherRAT Decryptor과 동일한 방식의 난독화와 보호 기법이 적용되어 있다. EtherRAT 악성코드는 %APPDATA% 경로에 "svchost.log" 파일을 생성하고, 해당 파일에 로그를 작성한다.

로그 작성 루틴

caption - 로그 작성 루틴

예시 로그는 아래와 같다.

[2025-12-31T06:57:30.086Z] Fetching URL from blockchain...
[2025-12-31T06:57:30.086Z]

C&C 서버 주소 설정

EtherRAT 악성코드는 C&C 서버 주소를 하드코딩하지 않고 이더리움 스마트 컨트랙트를 통해 동적으로 받아온다. 이 과정에서 eth_call 메서드를 사용해 하드코딩된 컨트랙트 주소에 쿼리를 전송한다. 이때 전송되는 데이터는 함수 시그니처인 0x7d434425와 컨트랙트 생성자의 지갑 주소로 구성된다.

컨트랙트 쿼리 전송 루틴

caption - 컨트랙트 쿼리 전송 루틴

또한 EtherRAT 악성코드는 단일 RPC 엔드포인트에 요청을 보내는 것이 아니라, 총 9개의 이더리움 RPC 엔드포인트에 동시에 요청을 보낸다. 이후 수신한 응답 중 가장 많이 수신된 URL을 C&C 서버로 사용한다.

  • https://eth.llamarpc.com

  • https://mainnet.gateway.tenderly.co

  • https://rpc.flashbots.net/fast

  • https://rpc.mevblocker.io

  • https://eth-mainnet.public.blastapi.io

  • https://ethereum-rpc.publicnode.com

  • https://rpc.payload.de

  • https://eth.drpc.org

  • https://eth.merkle.io

설정 파일 경로 생성

EtherRAT 악성코드는 설정 파일을 저장할 경로를 생성할 때, 감염 시스템의 고유 정보를 활용한다. 먼저 컴퓨터 이름과 유저 이름을 이어 붙인 문자열에 대한 md5 해시를 생성하고, 해시의 첫 번째 바이트 값을 5로 나눈 나머지를 계산해 폴더 이름으로 사용할 문자열을 선택한다. 나머지 값에 따라 매칭되는 문자열은 아래와 같다.

  • 0: Microsoft

  • 1: Windows

  • 2: Programs

  • 3: Package

  • 4: Google

이후 두 번째 바이트 값을 5로 나눈 나머지를 계산해 하위 폴더 이름으로 사용할 문자열을 선택한다. 나머지 값에 따라 매칭되는 문자열은 아래와 같다.

  • 0: Services

  • 1: Components

  • 2: Assemblies

  • 3: Extensions

  • 4: Modules

"%LOCALAPPDATA%\[폴더 이름]" 경로가 이미 존재할 경우 "%LOCALAPPDATA%\[폴더 이름]\[하위 폴더 이름]\[해시 첫4바이트]"를 설정 파일 경로로 사용한다. "%LOCALAPPDATA%\[폴더 이름]" 경로가 존재하지 않으면 "%LOCALAPPDATA%\[해시 첫 8바이트]"를 설정 파일 경로로 사용한다.

마지막으로 폴더 경로의 해시 6바이트를 설정 파일 이름으로 사용한다.

설정 파일 경로 생성 루틴

caption - 설정 파일 경로 생성 루틴

생성된 설정 파일 내용은 base64 로 인코딩된 json 형태로 저장된다. 인덱스별 설정 파일 내용은 아래와 같다.

  • 0: 고유 ID

  • 1: reobf 엔드포인트 접속 여부

  • 3: reobf 엔드포인트 접속 시간

  • 5: log 파일 작성 여부

ID 생성

EtherRAT 악성코드는 감염된 시스템을 식별하기 위해 고유 ID를 사용한다. 먼저 특정 파일을 탐색해 기존에 발급된 ID가 있는지 확인한다. 첫 번째로 탐색하는 파일은 설정 파일로, 설정 파일에 ID가 저장되어 있다면 설정 파일에서 ID를 읽어와 사용한다. 이때 ID는 설정 파일의 0번 인덱스에 저장되어 있다.

만약 설정 파일에 ID가 저장되어 있지 않으면 두 번째로 ".node_bot_id" 파일을 탐색한다. ".node_bot_id" 파일이 존재하면 해당 파일의 내용을 ID로 사용한다.

.node_bot_id 파일 탐색 루틴

caption - .node_bot_id 파일 탐색 루틴

".node_bot_id" 파일이 존재하지 않으면 세 번째로 파일 이름이 "."으로 시작하고 길이가 11글자인 파일을 탐색한다. 조건을 만족하는 파일을 찾을 경우 해당 파일의 내용을 ID로 사용한다. 그러나 모든 탐색에 실패할 경우 crypto 모듈의 randomUUID 함수로 무작위 ID를 생성하고 설정 파일에 작성한다.

파일 탐색 및 ID 생성 루틴

caption - 파일 탐색 및 ID 생성 루틴

C&C 서버 초기 통신

처음 C&C 서버 통신 시 설정 파일의 1번 인덱스에 값이 존재하고, 3번 인덱스에 값이 존재하지 않는지 확인한다. 해당 조건을 만족할 경우 설정 파일이 저장된 폴더에서 1번 인덱스 값과 이름이 같은 파일을 "[C&C 서버 주소]/api/reobf/[ID]" 엔드포인트에 전송한다.

파일 전송 루틴

caption - 파일 전송 루틴

이후 설정 파일의 3번 인덱스 값을 현재 시간으로 변경하고, C&C 서버에 전송한 파일 데이터를 C&C 서버 응답으로 덮어쓰고 실행한다.

파일 데이터 변경 및 실행 루틴

caption - 파일 데이터 변경 및 실행 루틴

C&C 서버 통신

초기 통신 이후 C&C 서버 통신 전에 위장을 위해 확장자 리스트(png, jpg, gif, css, ico, webp)와 변수명 리스트(id, token, key, b, q, s, v)에서 각각 하나씩 무작위로 선택하고 통신 시 "[C&C 서버 주소]/api/[랜덤16진수]/[ID]/[랜덤16진수].[확장자]?[변수명]=5a15c932-4675-4a53-920d-3f3a7aa2e835"로 POST 요청을 보낸다.

C&C 서버 통신 루틴

caption - C&C 서버 통신 루틴

C&C 서버에서 응답을 수신하지 못하면 약 3초 후에 다시 요청을 전송한다. 응답을 수신하면 응답 내용을 자바스크립트 코드로 실행한다.

응답 실행 루틴

caption - 응답 실행 루틴

분석 당시 C&C 서버가 활성화되어 있었으나 아무런 응답이 오지 않아 추가 분석이 불가하였다.

3. 리눅스, 윈도우 EtherRAT 차이점

본 글에서 분석한 msi 파일 외에 확보한 전체 msi 파일은 아래 표와 같다.

| 파일 해시 | 파일명 |
| --- | --- |
| e76867e7ec438165e2d629a0bfe2ae53f5320831cc1f8115b2a4f869f5240950  | gdasfgsdaf_agadsfasdgsdaf.msi |
| 81c3d0efb9da0dd0cd7b06e1692053fdf5561b916cb2502ccc4c31f997c352f8 | virus.msi |
| b8d9ef87b3a7a2cf2509317296baf127100a14838d03e1c158b0d5f17ec5b41b | __34___________34________4__3___.msi |
| 4508a26a0a42966606cd59c558284e28e9e06b4db89fe0f8b50fd9599f4f73f1 | fdsgsdf_gfsadfasdf.msi

caption - 확보한 msi 파일

3.1. 이더리움 컨트랙트 사용 여부

React2Shell 취약점을 통해 유포된 리눅스 EtherRAT 악성코드와 본 글에서 분석한 EtherRAT는 이더리움 스마트 컨트랙트에 eth_call 메서드를 통해 C&C 서버 주소를 받아온다. 그러나 나머지 윈도우 EtherRAT 악성코드는 하드코딩된 C&C 서버 주소를 사용하는 것이 확인되었다.

0x0으로 설정된 컨트랙트 주소

caption - 0x0으로 설정된 컨트랙트 주소

나머지 윈도우 EtherRAT 악성코드 모두 컨트랙트 주소와 데이터에 사용되는 지갑 주소가 0x0000000000000000000000000000000000000000으로 설정되어 있다. 또한 컨트랙트에서 C&C 서버 주소를 받아오는 함수를 호출하지 않는다. 하드코딩된 C&C 서버 주소는 "hxxp://91.215.85[.]42:3000"이다.

3.2. 지속성 확보

리눅스 EtherRAT 악성코드는 총 5가지 방식을 모두 사용해 지속성을 확보한다. 지속성 확보 방식은 아래와 같다.

  • systemd 유저 서비스 생성

  • XDG autostart 항목 추가

  • Cron 탭 추가

  • .bashrc 파일에 악성코드 실행 스크립트 추가

  • .profile 파일에 악성코드 실행 스크립트 추가

이와 달리 윈도우 EtherRAT 악성코드는 EtherRAT 자체에서 지속성 확보를 하지 않는다. EtherRAT 악성코드를 복호화하는 스크립트(EtherRAT Decryptor)에서 지속성을 확보하도록 설계되었으며, 자동 실행 레지스트리 경로에 키를 등록하는 방식을 사용한다.

윈도우 EtherRAT Decryptor 지속성 확보 루틴

caption - 윈도우 EtherRAT Decryptor 지속성 확보 루틴

3.3. 악성코드 기능 추가

본 글에서 분석한 EtherRAT를 포함해 build 값이 5a15c932-4675-4a53-920d-3f3a7aa2e835인 EtherRAT 악성코드에는 로그 기능이 추가되었다. 그러나 React2Shell 취약점을 통해 유포된 EtherRAT와 나머지 윈도우 EtherRAT를 포함해 build 값이 c6d83cb1-a4de-443d-bd78-da925acc5f8d인 EtherRAT 악성코드에는 로그 기능이 존재하지 않았다.

로그 기능이 존재하지 않는 EtherRAT (build 값 c6d83cb1-a4de-443d-bd78-da925acc5f8d)

caption - 로그 기능이 존재하지 않는 EtherRAT (build 값 c6d83cb1-a4de-443d-bd78-da925acc5f8d)

로그 기능이 추가된 EtherRAT (build 값 5a15c932-4675-4a53-920d-3f3a7aa2e835)

caption - 로그 기능이 추가된 EtherRAT (build 값 5a15c932-4675-4a53-920d-3f3a7aa2e835)

로그 기능뿐만 아니라 이더리움 스마트 컨트랙트 주소와 지갑 주소 또한 변경되었다. 새롭게 확인된 컨트랙트 주소는 0x429929d8fe40D2deCf618C4A87721AC2a820bA78로, 기존 EtherRAT 악성코드에서 사용하던 0x22f96D61cF118efaBC7C5bF3384734FaD2f6eaD4 컨트랙트의 마지막 트랜잭션이 발생한 이후에 생성된 것으로 확인되었다.

이를 통해 공격자가 악성코드를 지속적으로 관리 및 업데이트하고 있으며, build 값을 버전 식별자로 사용한다는 사실을 확인할 수 있었다.

4. 스마트 컨트랙트 분석

4.1. 추가 컨트랙트 및 지갑 주소 확보

현재까지 EtherRAT 악성코드에서 확인된 스마트 컨트랙트 주소는 0x22f96d61cf118efabc7c5bf3384734fad2f6ead4와0x429929d8fe40d2decf618c4a87721ac2a820ba78로 총 2개이며, 두 컨트랙트의 바이트코드는 동일하다.

이를 토대로 etherscan.io의 Similar Contracts Search 기능을 이용해 추가 분석을 진행하였고, 그 결과 동일한 바이트코드가 동일한 10개의 컨트랙트 주소를 추가로 확보할 수 있었다.

EtherRAT 컨트랙트와 같은 바이트 코드를 가진 컨트랙트 목록

caption - EtherRAT 컨트랙트와 같은 바이트 코드를 가진 컨트랙트 목록

확보된 10개의 컨트랙트는 각각 서로 다른 지갑에서 생성된 것이 확인되었다. 이를 통해 공격자가 인프라 구축에 사용한 지갑 주소 10개 또한 추가로 확보할 수 있었다.

4.2. 컨트랙트 및 지갑 분석

확보한 컨트랙트 중 처음 생성된 컨트랙트는 0x6ef160dAC69c68461879c0C3486164aF07533d17로 생성 일자는 11월 29일이다. 이는 공격자가 리눅스 EtherRAT 악성코드 유포에 사용한 CVE-2025-55182 (React2Shell) 취약점의 공개 이전 시점이다. 이를 통해 공격자는 취약점 정보의 공개 이전부터 EtherRAT 악성코드를 사용한 공격을 준비하였음을 알 수 있다.

0x2EB2Ec6026B63158042d27e8004957EC71783287 지갑의 전체 트랜잭션 목록

caption - 0x2EB2Ec6026B63158042d27e8004957EC71783287 지갑의 전체 트랜잭션 목록

공격자가 컨트랙트 생성에 사용한 모든 지갑을 분석한 결과, 트랜잭션 수수료를 위한 자금 입출금, 컨트랙트 생성, 그리고 C&C 서버 정보 저장을 위한 트랜잭션 외에는 어떠한 트랜잭션도 발생하지 않았다.

따라서 트랜잭션 생성을 위한 자금원을 역추적하던 중, 마지막 트랜잭션 발생 이후 66일이 지난 시점에 공격자의 지갑 3곳으로 자금을 입금한 특정 지갑 주소(0x69de85F382B7855c55df3092aE36BBf75eF1f6CD)를 확보할 수 있었다.

공격자 지갑으로 자금을 조달하는 지갑의 트랜잭션

caption - 공격자 지갑으로 자금을 조달하는 지갑의 트랜잭션

확보한 지갑 주소와 연관된 공격은 확인할 수 없었지만 HashDit에서 피싱으로 보고된 기록이 존재하였다.

피싱으로 보고된 지갑 주소

caption - 피싱으로 보고된 지갑 주소

4.3. 트랜잭션 기록 분석

블록체인의 트랜잭션은 한 번 생성된 경우 삭제되지 않기 때문에 현재까지 EtherRAT의 C&C 서버로 사용된 모든 URL을 확인할 수 있었다.

트랜잭션 기록에 남아있는 C&C 서버 URL

caption - 트랜잭션 기록에 남아있는 C&C 서버 URL

실제로 EtherRAT 악성코드에서 사용된 컨트랙트에서 수집한 C&C 서버 IP/도메인은 총 5개이며 아래 표와 같다.

| IP/도메인 | URL | 특징 |
| --- | --- | --- |
| 91.215.85[.]42 | hxxp://91.215.85[.]42:3000/ | 방탄 호스팅으로 유명한 러시아의 호스팅 제공 업체 사용 |
| 173.249.8[.]102 | hxxp://173.249.8[.]102/ | 클라우드 VPS 호스팅 업체 Contabo의 VPS 서버 |
| grabify[.]link | hxxps://grabify[.]link/SEFKGU | 방문자의 IP와 기기 정보를 기록하는 사이트 grabify의 링크 |
| gateway001kir[.]com | hxxps://gateway001kir[.]com/ | CloudFlare의 보호를 받는 도메인 |
| 91.221.190[.]12 | hxxp://91.221.190[.]12/ | VPS 웹 호스팅 업체 BlueVPS의 VPS 서버 |

caption - 컨트랙트 수집 C&C 서버 목록

이 외에도 추가로 확보한 컨트랙트 기록에서 수집된 C&C 서버 IP/도메인은 아래 표와 같다.

| IP/도메인 | URL | 특징 |
| --- | --- | --- |
| api-gateway-prod[.]com | hxxps://api-gateway-prod[.]com/ | VPS 웹 호스팅 업체 BlueVPS의 VPS 서버 |
| localhost | hxxp://localhost:3000 | 테스트 용으로 추정되는 URL |
| jariosos[.]com | hxxps://jariosos[.]com | 2025년 12월 17일에 새로 등록된 도메인 |
| api-gateway-softupdate[.]io | hxxps://api-gateway-softupdate[.]io | 2025년 12월 19일에 새로 등록된 도메인 |

caption - 추가 컨트랙트 수집 C&C 서버 목록

5. Tsundere Botnet과의 연관성

EtherRAT 악성코드를 분석하던 중 인프라, 스마트 컨트랙트에서 Tsundere Botnet과의 연관성을 확인하였다. Tsundere Botnet은 Kaspersky 블로그 글 에서 처음 명명된 악성코드로, 이더리움 스마트 컨트랙트에서 C&C 서버의 주소를 받아와 사용하는 봇넷이다. 일부 Tsundere Botnet 코드에 러시아어로 작성된 주석이 존재하거나 러시아어 문자열이 존재하는 등 제작자가 러시아와 연관된 것으로 알려져 있다.

Tsundere Botnet 러시아어로 작성된 주석

caption - Tsundere Botnet 러시아어로 작성된 주석

5.1. 인프라 연관성

EtherRAT 악성코드의 C&C 서버 주소(91.215.85[.]42)를 조사하던 중, 해당 IP에서 Tsundere Botnet의 제어 패널이 호스팅되고 있는 것을 발견하였다.

91.215[.]85.42에서 발견된 Tsundere Botnet 제어 패널 Tsundere Reborn

caption - 91.215.85[.]42에서 발견된 Tsundere Botnet 제어 패널 Tsundere Reborn

발견된 패널의 타이틀은 Tsundere Reborn 이다. Tsundere Reborn은 Kaspersky 블로그를 통해 보고된 초기 Tsundere Botnet의 제어 패널 Tsundere Netto와 마찬가지로 누구나 계정 등록하고 로그인하여 봇넷 제어 패널에 접근이 할 수 있는 개방형 구조이다.

Tsundere Reborn 로그인 페이지

caption - Tsundere Reborn 로그인 페이지

로그인 후 접근 가능한 제어 패널의 주요 기능은 아래와 같다.

| 이름 | 설명 |
| --- | --- |
| Dashboard | 사용자가 소유한 현황과 전체 현황을 시각화하여 보여주는 페이지 |
| Bots | 사용자가 제어 가능한 봇의 상세 목록을 확인하는 페이지 |
| Builds | msi, Powershell, Linux 선택하여 새로운 봇을 생성하는 페이지 (활성화된 라이선스가 존재할 경우에만 사용 가능)  |
| Workers | 사용자가 제어 가능한 일부의 권한만 위임하여 관리할 있는 Worker 계정을 생성 관리하는 페이지 |
| Scanner | 봇에서 수집한 계정 정보와 시스템 취약점 스캔 결과를 확인하는 페이지 |
| Auto Tasks | 실행 자동으로 실행 자바스크립트 코드를 스케줄링 설정하는 페이지 |
| SOCKS5 Proxies | 봇을 SOCKS5 프록시 서버로 활용할 있도록 설정하는 페이지 |
| Web3 Configuration | C&C 통신에 사용할 스마트 컨트랙트와 생성자 지갑을 관리하는 페이지 |
| Settings | 사용자 계정 관리 페이지

caption - 제어 패널 주요 기능

Tsundere Reborn은 기존 Kaspersky 보고서에 언급된 버전 대비 기능이 대폭 확장되었다. Worker 계정 관리 및 취약점 스캐너 기능이 새롭게 추가되었으며, Builds 기능에도 변화가 생겼다. 기존에는 MSI와 PowerShell 두 가지 방식만 지원했으나, 이번 버전에서는 Linux가 새로운 빌드 옵션으로 추가되었다. 이는 공격자가 윈도우뿐만 아니라 리눅스 환경으로 공격 대상을 넓혔음을 의미한다. 반면, 과거 존재했던 Market 페이지와 같이 일부 기능은 제거된 것으로 확인된다.

추가적으로, 해당 서버에서 Tsundere Botnet 패널 뿐만 아니라 123 Stealer의 C&C 패널도 함께 동작하고 있는 것을 발견하였다. 이는 Kaspersky의 블로그를 통해 보고된 "Tsundere Botnet과 123 Stealer가 인프라를 공유한다"는 기존의 정보와 일치한다.

123 Stealer C&C 패널

caption - 123 Stealer C&C 패널

5.2. 스마트 컨트랙트 연관성

Tsundere Botnet과 EtherRAT에서 사용한 스마트 컨트랙트를 비교 분석한 결과, 두 컨트랙트의 바이트 코드는 서로 다르지만 두 악성코드 모두 동일한 메서드 ID를 가진 함수를 사용하는 것으로 확인되었다.
메서드 ID는 함수 서명을 keccak256으로 해싱한 값의 첫 4바이트를 의미하며, 공통적으로 사용된 함수와 메서드 ID는 아래와 같다.

  • getString(address) : 0x7d434425

  • setString(strings) : 0x7fcaf666

분석 결과, 두 컨트랙트의 해당 함수들은 ID 뿐만 아니라 실제로 수행하는 행위 또한 동일하였다.

EtherRAT 컨트랙트의 setString 함수

caption - EtherRAT 컨트랙트의 setString 함수

그럼에도 불구하고 바이트 코드의 차이가 발생하는 이유는 EtherRAT의 스마트 컨트랙트에는 getString과 setString 함수만 정의된 최소한의 형태인 반면, Tsundere Botnet의 스마트 컨트랙트에는 totalSupply, allowance, transfer 등 ERC-20 표준을 준수하기 위한 함수들이 추가로 정의되어 있어 전체 코드의 구성이 달라진 것으로 확인되었다.

6. 마치며

본 글에서는 게임 모드 설치 파일로 위장해 유포되는 EtherRAT 악성코드에 대해 분석하였다. 최종적으로 실행되는 EtherRAT 악성코드는 이더리움 스마트 컨트랙트에서 C&C 서버 주소를 동적으로 받아오며, C&C 서버에서 추가 악성코드를 다운로드해 실행한다.

EtherRAT 악성코드는 처음 발견된 이후 한 달도 지나지 않았으나 리눅스, 윈도우 등 다양한 운영체제를 대상으로 유포되었고, 기능 업데이트를 진행하는 등 빠르게 진화하는 모습을 보이고 있다. 또한 총 12개의 스마트 컨트랙트를 생성 및 관리하며 공격 인프라를 지속적으로 넓혀가는 정황이 확인되었다.

이처럼 공격자는 보안 탐지를 회피하기 위해 블록체인 네트워크를 악용하고, 다양한 플랫폼을 넘나들며 공격 기법을 지속적으로 발전시켜 나가고 있다. 이러한 공격을 예방하기 위해서 사용자는 출처가 불분명한 파일의 다운로드 및 실행을 지양해야 하며, 보안 담당자는 관련 침해 지표를 지속적으로 모니터링하는 한편 비정상적인 블록체인 네트워크 트래픽에 대한 관찰과 대응이 필요하다.

7. 부록

부록 A. MITRE ATT&CK

| Tactics | Techniques |
| --- | --- |
| Execution | T1204.002: User Execution: Malicious File-nT1059.003: Command and Scripting Interpreter: Windows Command Shell-nT1059.007: Command and Scripting Interpreter: JavaScript |
| Defense Evasion | T1036: Masquerading-nT1140: Deobfuscate/Decode Files or Information-nT1027.013: Obfuscated Files or Information: Encrypted/Encoded File-nT1027.016: Obfuscated Files or Information: Junk Code Insertion-nT1564.003: Hide Artifacts: Hidden Window-nT1112: Modify Registry |
| Persistence | T1547.001: Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder |
| Discovery | T1033: System Owner/User Discovery-nT1083: File and Directory Discovery |
| Command and Control | T1105: Ingress Tool Transfer-nT1102.001: Web Service: Dead Drop Resolver-nT1071.001: Application Layer Protocol: Web Protocols-nT1571: Non-Standard Port

caption - MITRE ATT&CK

부록 B. IOCs

sha256

  • 4508a26a0a42966606cd59c558284e28e9e06b4db89fe0f8b50fd9599f4f73f1 - EtherRAT msi file

  • 9383c992abecdab53cc798940d296c0f8a5c0efe5ee8161d7c71a2dd23e374e2 - EtherRAT decryptor

  • b8d9ef87b3a7a2cf2509317296baf127100a14838d03e1c158b0d5f17ec5b41b - EtherRAT msi file

  • e38362aca79b16d588174e64a33cc688504c845d882624243fde90abd578bd7d - gfdsgsdfhfsd_ghsfdgsfdgsdfg.sh

  • e76867e7ec438165e2d629a0bfe2ae53f5320831cc1f8115b2a4f869f5240950 - EtherRAT msi file

  • 81c3d0efb9da0dd0cd7b06e1692053fdf5561b916cb2502ccc4c31f997c352f8 - EtherRAT msi file

  • 606dd4d7b4f7755136f53ed442a1eebd1c36a671eaf91c494a1627788b64e819 - 99 Nights Script.zip

  • 98da27f6667782ac7e4b629cd8bc09b193635a109f8e521ea8e2fb7ce15c2ea1 - Executor-master-v3.1.zip

  • 926ee406adc542dc21a971d4112d958f91413222fd97d2ee0422ac0568a80aa9 - EtherRAT powershell script

  • 1f715a97657a547e9eb55878bb0b946c3a2d43b6d467ca60e816853d4d727828 - Tsundere Botnet powershell script

  • 2de16fea5af78d5f1fdb8039efd7fb319d8e233cea8b4c20ea1f13ad380aea1d - Tsundere Botnet msi file

Contract Address

  • 0x22f96D61cF118efaBC7C5bF3384734FaD2f6eaD4

  • 0x195ab0A6391E2c499321F67Ba36ED8f4bDc9F5f4

  • 0x21F9a727E9668A3fC30393a344D8a3A98F4F3b8d

  • 0x277852e1C349b03c79E348018a8391bD21C412E8

  • 0x40A7d723F5Df6c88464bC95DBf7D96573fBc4f85

  • 0x429929d8fe40D2deCf618C4A87721AC2a820bA78

  • 0x47A397D9d459B05433f0d579e7842442b348eC38

  • 0x6ef160dAC69c68461879c0C3486164aF07533d17

  • 0x8a7c8497991dEa66910E70979a5961aEE347ff50

  • 0x8B08cE78a284F26eEDfE2b9B52823F8c6ab3dC4A

  • 0x97851AE6B1e2970C030Dd7d8F70d9832AcfB30fd

  • 0xF1f3Ac96E49F6a71D031444E59268c27B3511914

Wallet Address

  • 0x69A91686482dE1dF123b91106CbdA763da034d4A

  • 0xE941A9b283006F5163EE6B01c1f23AA5951c4C8D

  • 0x233F7Ac7F307D2c781be66DA432CB865Efa804e0

  • 0x6c0bdC011F31715C4FF537aa9c6a8A141F8a6119

  • 0x14afdDD627Fb0e039365554f8bbDB881eCb1C708

  • 0x434A2001adD7e414dA33612C4a8AEe745EA22968

  • 0x4F1dD066b832AF641b5F08537a5b0fC0b329D5EC

  • 0x2EB2Ec6026B63158042d27e8004957EC71783287

  • 0xeA4337aa83496F0b91CDCdD8bf2734DF9eEF1774

  • 0x6d4C034439F78cc19b4FEBdeC2c285D9B7D47e73

  • 0xF1933D62F03F56579E8362402316CBF450d30116

  • 0xF3947eeB5DB984E9498DA449c13305ed27428Bc0

  • 0x69de85F382B7855c55df3092aE36BBf75eF1f6CD

URLs

  • hxxps://api-gateway-prod[.]com

  • hxxps://gateway001kir[.]com

  • hxxp://91.221.190[.]12

  • hxxp://localhost:3000

  • hxxps://jariosos[.]com

  • hxxps://api-gateway-softupdate[.]io

  • hxxp://91.215.85[.]42:3000

  • hxxp://173.249.8[.]102/

  • hxxps://grabify.link/SEFKGU

  • hxxps://grabify.link/SEFKGU?dry87932wydes/fdsgdsfdsjfkl

엔키화이트햇

엔키화이트햇

ENKI Whitehat
ENKI Whitehat

오펜시브 시큐리티 전문 기업, 공격자 관점으로 깊이가 다른 보안을 제시합니다.

오펜시브 시큐리티 전문 기업, 공격자 관점으로 깊이가 다른 보안을 제시합니다.

빈틈없는 보안 설계의 시작, NO.1 화이트 해커의 노하우로부터

침해사고 발생 전,
지금 대비하세요

빈틈없는 보안 설계의 시작,
NO.1 화이트 해커의 노하우로부터

침해사고 발생 전,
지금 대비하세요

빈틈없는 보안 설계의 시작,
NO.1 화이트 해커의 노하우로부터

침해사고 발생 전,
지금 대비하세요

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.

Copyright © 2025. ENKI WhiteHat Co., Ltd. All rights reserved.